Known issues
Conventions
$ = (normal) user prompt outside scratchbox > = user prompt inside scratchbox
Kernel related issues
In linux kernels 2.6.23 onward there's support for additional security check for mmap operations which is used for example in kernel that ships with latest Ubuntu, Hardy Heron. Ubuntu ships with 65536 as a default value for mmap_min_addr, which prevents qemu from mmapping the low address spaces, thus breaking the qemu based cpu transparencies inside Scratchbox as well. The problem can fixed with assigning a reasonably low value in mmap_min_addr.
$ sudo 'echo 4096 > /proc/sys/vm/mmap_min_addr'
The host side glibc inside Scratchbox is a bit out-of-date and doesn't behave well with the new, randomized VDSO. If you get an error message like the one below when logging in scratchbox, it's about the VDSO.
Inconsistency detected by ld.so: rtld.c: 1192: dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed! Inconsistency detected by ld.so: rtld.c: 1192: dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed! Inconsistency detected by ld.so: rtld.c: 1192: dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed!
To fix this problem, use
$ sudo 'echo 0 > /proc/sys/vm/vdso_enabled'
or for the older kernels
$ sudo 'echo 0 > /proc/sys/kernel/vdso'
For the above to work, your kernel has to be compiled with
CONFIG_COMPAT_VDSO=y
If you're using a 64-bit kernel, you have to set the following kernel parameter as boot option, the VDSO setting cannot be changed later from the proc.
vdso32=0
Fakeroot related issues
You have to have loopback interface set up for fakeroot to work. If you see messages like
libfakeroot: connect: Connection timed out
make sure your loopback interface is running. You can activate the interface with
$ ifconfig lo 127.0.0.1 up
The fakeroot inside Scratchbox uses local tcp sockets to communicate with the faked daemon. If you handle many files during a fakeroot session, system may run out of sockets. If you see messages like
libfakeroot: connect: Cannot assign requested address
try increasing ip_local_port_range using
$ sudo 'echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range'
Compatibility among packages
In general you should be able to use any version of a toolchain or a devkit on top of a fairly recent (>= 1.0.3 or Apophis R1) version of scratchbox,
although it's recommended to use the latest versions within the branch (stable, legacy) you're using.
For scratchbox >= 1.0.9, it's recommended to use debian devkit 1.0.10 and maemo3 devkit 1.0.2 or later versions. Older versions should work in general, but the changes
in host_shared libraries between 1.0.8 and 1.0.9 versions of scratchbox may lead to trouble and hence the configuration is unsupported.
When using scratchbox version prior to 1.0.3, bear in mind that the cpu transparency methods are a part of scratchbox-core instead of scratchbox-devkit-cputransp.
Use always the same version of core, libs and host-gcc, they're built from the same source.
As always, using the latest versions of each component is recommended
Maemo SDK
If you're using Maemo 3.0 (Bora) SDK, do not upgrade the debian devkit beyond 1.0.7.1. For 3.1 and later, it's safe to use newer debian devkit.
If you did, you can try fixing the situation with
Reinstalling old devkit (dpkg -i <package-name>) from
Apophis download page Modify your target to use debian-sarge and maemo3-debian devkits instead of debian devkit (use sb-conf st -f or edit /targets/<target-name>.config by hand)
From 1.0.8 on the debian devkit has changed significantly
debian-sarge is now an independent devkit
added:
debian-etch
debian-lenny (depends from debian-etch)
removed:
debian
Debian environment for maemo 3.0 is now provided with a new devkit (maemo3-debian, depends from debian-sarge, provided by maemo3-devkit)
APT
If you're using apt-https devkit, you need to have one version of debian devkit selected for your target, apt won't work without it
Apt-https devkit is for accessing debian repositories over https. If you don't have such repositories, you won't need this.
There's no dependency to debian specified, because with debian devkit 1.0.8 onward, there are multiple flavors of debian available (might be feasible to think some provides/conflicts/replaces mechanism for sb-conf)
To override apt in the debian devkit, make sure apt-https devkit comes before any other (debian) devkit containing apt, ie.
> sb-conf st my-target -c my-compiler -d cputransp:perl:debian-etch:apt-https -t /scratchbox/devkits/cputransp/bin/qemu-my-arch-cvs > sb-conf in my-target -c -d -e -F -G -S > sb-conf se my-target
For maemo bora using the old debian devkit (3.0)
> sb-conf st my-bora -c cs2005q3.2-glibc2.5-arm -d cputransp:perl:debian-sarge:maemo3-debian:apt-https -t /scratchbox/devkits/cputransp/bin/qemu-arm-0.8.2-sb2 > sb-conf in my-bora -c -d -e -F -G -S > sb-conf se my-bora
Note that the order in PATH is reversed when selecting devkits
If you don't explicitly specify maemo3-debian for bora, it'll be inserted automatically by the Scratchbox configuration. The end result may not be the same, but this shouldn't matter, maemo3-debian doesn't contain apt. As long as the apt in debian-sarge is overridden (ie. apt-https is after debian-sarge in the select line), everything should work.
Be aware that the apt in apt-https is very up-to-date (lenny version), it may not work correctly with very old version of dpkg
Crocodile
From Scratchbox 1.0.7 on, flex is not regarded as a provided package when checking debian build deps
You can fix this with
$ mkdir /scratchbox/users/${USER}/targets/`sb-conf cu`_deb_list
$ cat > /scratchbox/users/${USER}/targets/`sb-conf cu`_deb_list/flex << EOF
Source: flex
Version: 2.5.31
Binary: flex
EOF
Legacy toolchains
Scratchbox 0.9.8 toolchains can be used with Scratchbox Apophis r4, but there are some known limitations when using them:
Files cannot be installed on a target before the target has been selected.
If you install files on a target after selecting it (due to the issue described in the previous bullet) and use the Debian or Debian Sarge devkit, you have to re-select the target to configure the dpkg installation architecture.
The legacy toolchains contain old device tools (such as fakeroot). Repackaged versions of some legacy toolchains with updated device tools are available from
Apophis download page.
Change logs
|
Repository |
Binary packages |
Version |
|
scratchbox-core, |
1.0.6 (updated to 1.0.11) |
|
|
scratchbox-devkit-apt-https |
1.0 (new devkit, updated to 1.0.3) |
|
|
scratchbox-devkit-cputransp |
1.0.1 (updated to 1.0.7) |
|
|
scratchbox-devkit-debian |
1.0.4 (updated to 1.0.10) |
|
|
scratchbox-devkit-doctools |
1.0.5 (updated to 1.0.9) |
|
|
scratchbox-devkit-git |
1.0 (new devkit, updated to 1.0.1) |
|
|
scratchbox-devkit-maemo3 |
1.0 (new devkit, updated to 1.0.3) |
|
|
scratchbox-devkit-svn |
1.0 (new devkit) |
|
|
scratchbox-devkit-perl |
1.0.4 |
|
|
all foreign toolchain packages |
1.0.4 (updated to 1.0.8) |