Raspbian
Raspbian is a project to create a hard float port of debian for the Raspberry Pi and similar devices which use ARMv6 processors with VFPv2. The official debian armhf packages are built with ARMv7, VFPv3_D16 and Thumb2. So they are not suitable for the Pi and similar devices. To get arround this we have to change the compiler defaults (easy) and recompile everything (harder than it sounds).
Infrastructure has been set-up for building packages. We aim to stay as close to debian wheezy as possible but we will pull in packages from sid and/or make our own modifications when we deem it nessacery.
A chroot can be bootstrapped from a debian squeeze armel installation using the following commands (replace /chroots/wheezy-armhf-rpi with where you want your chroot).
debootstrap --arch=armhf wheezy /chroots/wheezy-armhf-rpi http://archive.raspbian.org/raspbian cd /chroots/wheezy-armhf-rpi wget http://archive.raspbian.org/raspbian.public.key chroot /chroots/wheezy-armhf-rpi mount -t proc proc /proc apt-key add raspbian.public.key apt-get update
If you just want to install the minimum number of packages add a --variant=minbase to the bootstrap command
Since this is running in a chroot you probably don't want it attempting to start and stop services when you update packages. To avoid this create a file /usr/sbin/policy-rc.d with the following commands
cat << EOD >/usr/sbin/policy-rc.d #!/bin/sh echo "rc.d operations disabled for chroot" exit 101 EOD chmod 0755 /usr/sbin/policy-rc.d
Modified packages
Note: this list is incomplete
Source package | Changes | Reason | Status | Notes |
---|---|---|---|---|
gettext | fixed dependency scanning | package had incorrect dependencies | bug 670588 filed in debian | |
libxslt | fixed building with build-arch | package failed to build with build-arch | bug 666333 filed in debian. | |
elfutils | testsuite disabled | testsuite failed on plugwash's build system and package was needed | local hack, hopefully we can drop later. | |
openldap | patched smbk5pwd.c | compilation failed, added nmu | known bug 664930 filed in debian. | |
gcc-4.6 | change compiler defaults | need to build binaries suitable for rpi | permanent raspbian change, not suitable for pushing upstream | |
treat wheezy the same as sid | compiler built in wheezy was passing --as-needed to the linker which we don't want | bug 670821 filed in debian | ||
gcc-4.5 | change compiler defaults | need to build binaries suitable for rpi | permanent raspbian change, not suitable for pushing upstream | |
treat wheezy the same as sid | compiler built in wheezy was passing --as-needed to the linker which we don't want | could potentially be pushed upstream to debian but given they intend to get rid of the package in the not too distant future i'm not sure there is much point | ||
disable testsuite | gcc testsuite takes ages and we don't have the resources to do anything about failures anyway, especially for a non-default compiler version | local hack, may be dropped later (but probablly won't) | ||
fetchmail | fixed building with build-arch | package failed to build with build-arch | bug 671026 filed in debian. | |
subversion | testsuite disabled | testsuite failed on plugwash's build system and package was needed | local hack, hopefully we can drop later. | |
git | testsuite disabled | testsuite failed on plugwash's build system and package was needed | local hack, hopefully we can drop later. | |
libatomic-ops | fixed support for armv6 | package failed to build with assembler errors | undecided on whether to push upstream or keep as a local change | |
d-shlibs | update dynamic linker override to match armhf linker | bug was causing libgd2 to FTBFS | already filed in debian as bug 670720 | |
ruby1.9.1 | testsuite disabled | testsuite hangs | debian seem to be having similar problems, hopefully things will get fixed on their side eventually. | |
gcj-4.6 | change compiler defaults | need to build binaries suitable for rpi | permanent raspbian change, not suitable for pushing upstream | |
disable testsuite | gcc testsuite takes ages and we don't have the resources to do anything about failures anyway, especially for a non-default compiler version | local hack, may be dropped later (but probablly won't) | ||
graphviz | disable python2.5 | python2.5 is no longer a supported python version in debian | already filed in debian as bug 669517 | |
openjdk-6 | Alter arm_port/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S for armv6 | arm version directives in the aforementioned file were making libjvm.so in openjdk-6-jre-headless come out armv7 dirty | Probablly not suitable for pushing upstream in present form, may be able to be made suitable with extra conditionalising | |
Disable icedtex6-jre-jamvm binary package | libjvm-so in icedtex6-jre-jamvm was coming out with armv7 code in it | Root cause has not been determined, if someone wants to put the effort into determining it that would be appreciated | ||
qt4-x11 | Disable neon | armv6 doesn't have neon (and not all armv7 systems do either) | Debian armhf isn't supposed to require NEON either. Working out whether this should be pushed upstream would require working out if there is any runtime checking for neon in QT which I (plugwash) don't have time for ATM. | Building documentation on raspbian seems to hang, when updating package a source+all upload should be built on amd64 or similar. The buildds can then fill in the remaining binaries. |
x264 | Disable build of neon vairant | neon variant sets of our v7 contamination checker which could possiblly obscure real problems. | Not suitable for pushing upstream. May be dropped if our contamination checker gets smarter. | |
libvpx | Disable build of neon vairant | neon variant sets of our v7 contamination checker which could possiblly obscure real problems. | Not suitable for pushing upstream. May be dropped if our contamination checker gets smarter. |