Maemo SDK+ installation on Debian (AMD64)
| This article is out-of-date, and needs to be updated. Please see the talk page for discussion. |
The Maemo SDK+ package includes scratchbox 2 and Qt, but it will only install on 32-bit platforms. If you're running Debian with a 64-bit kernel, Maemo SDK+ can be installed into a chrooted 32-bit environment that sits on top of your 64-bit platform. This guide takes you through all the steps to the point of compilation and running the test.
Building the chrooted platform
All steps in this section are executed as root, directly on the host.
# aptitude install debootstrap # debootstrap --arch i386 lenny /srv/lenny-ia32 http://ftp.debian.org/debian/ # echo "deb http://maemo-sdk.garage.maemo.org/download/host debian-lenny free" >> /srv/lenny-ia32/etc/apt/sources.list # aptitude install schroot# cat >> /etc/schroot/schroot.conf <<EOF [lenny] description=Debian lenny type=directory location=/srv/lenny-ia32 priority=3 users=<YOUR_USERNAME_HERE!!> (A comma-separated list of users on the host which are allowed access to the chroot) groups=<YOUR_USER_GROUPNAME_HERE!!> (A comma-separated list of groups on the host which are allowed access to the chroot. probably "users") root-groups=root aliases=stable,default EOF# eval $(sed -rne '/^(FIRST|LAST)_.ID/p' /etc/adduser.conf) # USER_LIST=$(sed -e 's/ /,/' <<< $(awk -F: $FIRST_UID'<=$3 && $3<='$LAST_UID' {print $1}' /etc/passwd)) # GROUP_LIST=$(sed -e 's/ /,/' <<< $(awk -F: $FIRST_GID'<=$3 && $3<='$LAST_GID' {print $1}' /etc/passwd)) # echo -e "[lenny] description=Debian lenny type=directory directory=/srv/lenny-ia32 priority=3 users=$USER_LIST groups=$GROUP_LIST root-groups=root aliases=stable,default" >> /etc/schroot/schroot.conf # echo "export PS1='(lenny)\w \\$ '" >> /srv/lenny-ia32/root/.bashrc
Installing Maemo SDK+
While still logged in as root on the host:
# schroot -c lenny (lenny)~ #
or
# chroot /srv/lenny-ia32/ /bin/bash (lenny)/ #
You are now logged in as root in the chrooted environment as root.
(lenny)~ # aptitude update (lenny)~ # aptitude install maemo-sdk (lenny)~ # maemo-sdk list available tools etch etch-2008 lenny-2009-1 (lenny)~ # maemo-sdk install tools lenny-2009-1 (lenny)~ # maemo-sdk list available toolchains arm-2005q3 arm-2007q3 i386-2007q3 (lenny)~ # maemo-sdk install toolchain arm-2005q3
As the SDK needs to use sudo to gain root access later, we need to configure sudo:
(lenny)~ # visudo
You will be in an editor session now. Modify the file so that it looks like this (remove the comment sign in front of the last lign):
Defaults env_reset root ALL=(ALL) ALL %sudo ALL=NOPASSWD: ALL
Now, log out of the schroot section, log out of the root account, and as a normal user on the host, log in to the chroot:
(lenny)~ # logout # logout $ schroot -c lenny (lenny)~ $
You are now logged in as root in to the chrooted environment as a normal (non-root) user.
Now, choose a rootstrap to install:
(lenny)~ $ maemo-sdk list available rootstraps
You get a list of rootstraps
diablo4.1.2_armel diablo4.1.2_i386 diablo4.1.1_armel diablo4.1.1_i386 diablo4.1_armel diablo4.1_i386 fremantle5.0minimal_armel fremantle5.0minimal_i386 fremantle5.0beta1_armel fremantle5.0beta1_i386 scirocco2.2_armel scirocco2.2_i386 mistral2.0_armel
Now, install your desired rootstrap. For example
(lenny)~ $ maemo-sdk install rootstrap diablo4.1.2_armel (lenny)~ $ sb2 -eR apt-get update (lenny)~ $ sb2 -eR apt-get install maemo-sdk-runtime maemo-sdk-dev maemo-sdk-dbg
Preparing host for target GUI
As root on the host:
# aptitude install xserver-xephyr
Building Maemopad to test the build environment
As a normal (non-root) user on the host:
$ schroot -c lenny
You are now logged in as root in to the chrooted environment as a normal (non-root) user.
(lenny)~ $ mkdir -p ~/src/mytest (lenny)~ $ cd ~/src/mytest (lenny)~/src/mytest $ sb2 -eR apt-get update (lenny)~/src/mytest $ sb2 apt-get source maemopad (lenny)~/src/mytest $ cd maemopad-2.4 (lenny)~/src/mytest/maemopad-2.4 $ export SBOX_REDIRECT_FORCE=/usr/bin/perl (lenny)~/src/mytest/maemopad-2.4 $ sb2 dpkg-buildpackage -rfakeroot -d -b
Running Maemopad
As user on the host:
$ Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac & $ schroot -c lenny
You are now logged in as root in to the chrooted environment as a normal (non-root) user.
(lenny)~ $ export DISPLAY=:2 (lenny)~ $ cd ~/src/mytest/ (lenny)~/src/mytest $ sb2 -eR dpkg -i maemopad_2.4_armel.deb (lenny)~/src/mytest $ maemo-sdk start gui
Notice that Maemopad appears in the x11 window.
Now you can launch MaemoPad from the Extras menu in the Xephyr window.
(lenny)~/src/mytest $ maemo-sdk stop gui
Installing Qt
As root in the chrooted environment:
(lenny)~ # aptitude install qt4-dev-tools
Known Issues
The procedures above work quite well, other than the fact that the following scripts are missing from the chrooted environment:
* run-standalone.sh * af-sb-init.sh
They don't seem to be important.. just a cosmetic matter.
Guides used as a source for this document
Parts of the following sites were used to compose this guide. These sites should be visited to get more detail on the process.
- https://alioth.debian.org/docman/view.php/30192/21/debian-amd64-howto.html
- http://www.debian-administration.org/articles/566
- http://nion.modprobe.de/blog/archives/539-Setting-up-build-chroots-on-Debian.html
- http://repository.maemo.org/stable/4.1.2/INSTALL.txt
- http://maemo-sdk.garage.maemo.org/install-debian.html