QtMoko/CrossBuildingOnDebian
From Openmoko
(→Building the QtMoko package) |
(→Tools needed) |
||
Line 6: | Line 6: | ||
* no bluetooth. | * no bluetooth. | ||
===Tools needed=== | ===Tools needed=== | ||
− | + | Most of the magic is handled by the ''pdebuild-cross'' package: | |
− | Most of the magic is handled by the ''pdebuild-cross'' package | + | $ sudo apt-get install pdebuild-cross |
+ | |||
===Configuration=== | ===Configuration=== | ||
The toolchain comes from the [http://emdebian.org Emdebian project]. Two configuration files from the ''multistrap'' package (pulled in by pdebuild-cross) are needed. It is best to copy them because they're not part of /etc: | The toolchain comes from the [http://emdebian.org Emdebian project]. Two configuration files from the ''multistrap'' package (pulled in by pdebuild-cross) are needed. It is best to copy them because they're not part of /etc: |
Revision as of 00:16, 9 November 2011
Contents |
Cross-building QtMoko on Debian
It is possible to cross-build QtMoko on a Debian box using only (em)debian tools.
This is a work in progress. The resulting package isn't fully functionnal yet:
- no sound
- no bluetooth.
Tools needed
Most of the magic is handled by the pdebuild-cross package:
$ sudo apt-get install pdebuild-cross
Configuration
The toolchain comes from the Emdebian project. Two configuration files from the multistrap package (pulled in by pdebuild-cross) are needed. It is best to copy them because they're not part of /etc:
$ sudo mkdir /etc/multistrap $ sudo cp /usr/share/multistrap/{armel,crosschroot}.conf /etc/multistrap
Then modify the armel.conf file to use the Squeeze toolchain (with g++-4.4; the Lenny toolchain with g++-4.2 doesn't work for QtMoko) and to load our copy of crosschroot.conf:
[General] include=/etc/multistrap/crosschroot.conf omitrequired=false configscript= setupscript=/usr/share/multistrap/setcrossarch.sh debootstrap=Debian Base Toolchains aptsources=Debian Toolchains tarballname=pdebuild-cross.tgz [Toolchains] packages=g++-4.4-arm-linux-gnueabi linux-libc-dev-armel-cross reinstall=binutils-multiarch source=http://www.emdebian.org/debian keyring=emdebian-archive-keyring suite=squeeze
You may also want to change the Debian mirror URIs in crosschroot.conf to use one near your location. I use a french one:
# Example multistrap configuration file for a sid build chroot # Need to use cascading to select the toolchain for a cross arch. [General] arch= directory= # same as --tidy-up option if set to true cleanup=true # same as --no-auth option if set to true # keyring packages listed in each debootstrap will # still be installed. noauth=false # whether to add the /suite to be explicit about where apt # needs to look for packages. Default is false. explicitsuite=true # extract all downloaded archives (default is true) unpack=true # the order of sections is not important. # the debootstrap option determines which repository # is used to calculate the list of Priority: required packages. debootstrap=Debian Base aptsources=Debian Base # Lenny toolchains need -base from Lenny. [Base] packages=gcc-4.2-base source=http://ftp.fr.debian.org/debian keyring=debian-archive-keyring suite=lenny omitdebsrc=false [Debian] packages=dpkg-dev binutils-multiarch build-essential dpkg-cross aptitude source=http://ftp.fr.debian.org/debian keyring=debian-archive-keyring suite=unstable omitdebsrc=false
Finally update the MULTISTRAPFILE variable in your pdebuild-cross' configuration file (/etc/pdebuild-cross/pdebuild-cross.rc) to point to your multistrap armel config:
# this is your configuration file for pdebuild-cross. # /etc/pdebuild-cross/pdebuild-cross.rc is the one meant for editing. # # read pbuilderrc (5) and pdebuild-cross (1) for notes on specific options. # remember to change CROSSARCH, DEBBUILDOPTS and MULTISTRAPFILE to # change your target cross-building architecture from armel. CROSSARCH=armel DEBBUILDOPTS="-aarmel" MULTISTRAPFILE=/home/pini/debian/multistrap/armel.conf BASETGZ=/var/lib/pdebuild-cross/pdebuild-cross.tgz BUILDPLACE=/var/lib/pdebuild-cross/build/ BUILDRESULT=.. APTCACHE=/var/lib/pdebuild-cross/aptcache/ #HOOKDIR=/usr/share/pdebuild-cross/hookdir/ APTCACHEHARDLINK=no PBUILDERSATISFYDEPENDSCMD=/usr/sbin/embuilddeps PBUILDERSATISFYDEPENDSOPT="-m -a armel" USEDEVPTS=yes AUTO_DEBSIGN=no # Only use when testing Xorg apps, not when building # also remember to copy ~/.Xauthority into /home/$SUDO_USER/ # (mkdir /home/$SUDO_USER if necessary). #BINDMOUNTS="/tmp"
You may want to change the BUILDPLACE path as well in case you're short of space in /var.
Creating the pbuilder chroot
As simple as:
$ sudo pdebuild-cross-create
Setting up the git workspace
First clone the QtMoko repo:
$ git clone -r git://github.com/radekp/qtmoko.git
Create you own branch:
$ cd qtmoko $ git branch <my branch>
Merge in the translations branch
$ git merge origin/translations
Patch the debian files
$ wget -c http://wiki.openmoko.org/images/c/c7/QtMoko-pdebuild-cross-patch.txt $ patch -p1 < QtMoko-pdebuild-cross-patch.txt
Building the QtMoko package
Create the orig tarball (once after each git merge):
$ tar czf ../qtmoko_36.orig.tar.gz -C .. --exclude .git --exclude .pc --exclude qtmoko/debian --transform 's:\./qtmoko:qtmoko-36:' ./qtmoko
Build:
$ pdebuild-cross
On my Zotac ZBox (amd64) the whole build takes five hours.