Thanks to Genesi who graciously donated smartbooks to our project, porting DoudouLinux to ARM™ has started. It is then time to host new architectures in our Debian package repository: armel for both squeeze and wheezy, armhf for wheezy only.

Although we haven't started to generate ARM™-specific packages, we can first copy our architecture independent packages. The tool reprepro that we're using to make our own repository provides a convenient function flood that copies all the packages of architecture all from one architecture to another, in the same distribution codename. The following command is copying existing squeeze packages of architecture all to armel:

$ reprepro -V --basedir debian/ flood squeeze armel

As the previous command is not talkative at all, let's check it worked well:

$ reprepro -V --basedir debian/ --architecture armel list squeeze
squeeze|main|armel: childsplay-session 1.1-1
squeeze|main|armel: dansguardian-squid 1.0-2
squeeze|main|armel: doudou-hwreport 1.1-1
squeeze|main|armel: doudou-icons-extra 1.0-1
squeeze|main|armel: doudou-installer 1.0-3
squeeze|main|armel: doudoulinux-base 1.0-2
squeeze|main|armel: doudoulinux-desktop-environment 1.0-2
squeeze|main|armel: doudoulinux-dev-artists 1.0-1
squeeze|main|armel: doudoulinux-dev-build 1.0-1
squeeze|main|armel: doudoulinux-dev-l10n 1.0-1
squeeze|main|armel: doudoulinux-dev-system 1.0-1
squeeze|main|armel: doudoulinux-games 1.0-1
squeeze|main|armel: doudoulinux-keyring 2011.01.10
squeeze|main|armel: doudoulinux-kids 1.0-2
squeeze|main|armel: doudoulinux-mouse 2.1-1
squeeze|main|armel: doudoulinux-multimedia 1.0-2
squeeze|main|armel: doudoulinux-sessions 1.1-1
squeeze|main|armel: doudoulinux-sound 2.1-1
squeeze|main|armel: doudoulinux-splashimages 1.0-4
squeeze|main|armel: doudoulinux-timezone 1.0-2
squeeze|main|armel: doudoulinux-utils 1.4-1
squeeze|main|armel: doudoulinux-work 1.0-2
squeeze|main|armel: empathy-salut-nickname 1.0-3
squeeze|main|armel: epiphany-adblock-lists 1.0-1~20111122
squeeze|main|armel: gamine-session 1.0-3
squeeze|main|armel: gcompris-session 1.0-3
squeeze|main|armel: gdm-theme-doudoulinux 1.2-1
squeeze|main|armel: gnome-backgrounds-doudoulinux 1.0-3
squeeze|main|armel: grub-splashimages-doudoulinux 2.0-1
squeeze|main|armel: kde-l10n-doudou-es 4:4.4.5-1
squeeze|main|armel: kde-l10n-doudou-fr 4:4.4.5-1
squeeze|main|armel: kde-l10n-doudou-it 4:4.4.5-1
squeeze|main|armel: kde-l10n-doudou-ru 4:4.4.5-1
squeeze|main|armel: live-boot 2.0.15-1doudou1
squeeze|main|armel: live-boot-initramfs-tools 2.0.15-1doudou1
squeeze|main|armel: live-persistence 1.0-7
squeeze|main|armel: liveusb-write 1.0-14
squeeze|main|armel: lxlauncher-session 1.8-2
squeeze|main|armel: plymouth-themes-all 0.8.3-20doudou1
squeeze|main|armel: plymouth-themes-doudoulinux 1.0-1
squeeze|main|armel: plymouth-themes-fade-in 0.8.3-20doudou1
squeeze|main|armel: plymouth-themes-glow 0.8.3-20doudou1
squeeze|main|armel: plymouth-themes-script 0.8.3-20doudou1
squeeze|main|armel: plymouth-themes-solar 0.8.3-20doudou1
squeeze|main|armel: plymouth-themes-spinfinity 0.8.3-20doudou1
squeeze|main|armel: pysycache-session 1.0-4
squeeze|main|armel: python-editobj2 0.3-1.1
squeeze|main|armel: songwrite2 0.4.1-1+0.4.2
squeeze|main|armel: soundsetting-session 1.0-1
squeeze|main|armel: tbo-common-data 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-accesories 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-all 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-arcadia 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-bubble 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-dgm 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-doodle1 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-facilware 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-guadalinex 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-linuxhispano 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-political 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-southpark 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-tbo 0.98~git20110321-0doudou2
squeeze|main|armel: ttf-lohit-font 2.4.6-1
squeeze|main|armel: tuxpaint-session 1.1-1

Everything is fine :). So now we can copy the squeeze packages to wheezy, still for the architecture all. The tool reprepro provides another convenient function copy that performs copies across different distribution code names. As we want to copy the architecture all only, we'll feed this copy command with the list of packages from the newly created armel architecture in squeeze:

$ reprepro -V --basedir debian/ copy wheezy squeeze \
    $(reprepro -V --basedir debian/ --architecture armel list squeeze | cut -d ' ' -f 2)

Finally, as wheezy has armhf while squeeze doesn't, we need to use flood again to populate armhf in wheezy:

$ reprepro -V --basedir debian/ flood wheezy armhf
$ reprepro --basedir debian/ list wheezy tuxpaint-session
wheezy|main|i386: tuxpaint-session 1.1-1
wheezy|main|amd64: tuxpaint-session 1.1-1
wheezy|main|armel: tuxpaint-session 1.1-1
wheezy|main|armhf: tuxpaint-session 1.1-1
wheezy|main|any: tuxpaint-session 1.1-1
wheezy|main|source: tuxpaint-session 1.1-1

That's it! Our first ARM™ repository is online and can be tested. Note however that all the wheezy packages may not be relevant (eg. Plymouth packages or KDE language packages). The objective is to start to play with packages that are really DoudouLinux-specific. Later we'll work on refining our ARM™ repository. We also plan to move it to a custom buildd server to avoid all the manual operations that reprepro is currently needing.