On Sat, 09 Jun 2012 18:50:32 +0200 Gilles Filippini <pini@debian.org> wrote: > Until recently, I used to cross-build on my amd64 box a few packages for > my OpenMoko Freerunner phone (armel). What versions? > You'll find below my pdebuild-cross.rc and the multistrap configuration > files. > > If I set "arch=" (as it used to be) in the multistrap conf file, the > sources.list in the chroot are forced to amd64 and xapt don't know about > armel: > deb [arch=amd64] http://ftp.fr.debian.org/debian unstable main > deb-src http://ftp.fr.debian.org/debian unstable main > deb [arch=amd64] http://www.emdebian.org/debian squeeze main > deb-src http://www.emdebian.org/debian squeeze main The chroot is a cross-building chroot, the architecture is the architecture of the programs which need to be executed not the ones you are targeting, so amd64 is correct as far as multistrap is concerned. It probably just means that the multistrap config needs to use the foreignarches option. It's too late to get this change into wheezy. [Debian] packages=dpkg-dev binutils-multiarch build-essential dpkg-cross makedev source=http://ftp.fr.debian.org/debian keyring=debian-archive-keyring suite=unstable omitdebsrc=false [Debian-armel] packages= architecture=armel source=http://ftp.fr.debian.org/debian keyring=debian-archive-keyring suite=unstable omitdebsrc=false Debian-armel would then need to be added to aptsources. But that's for later, you've already got the chroot, no point in regenerating it. It can be tweaked. > Then I tried "arch=armel" but then pdebuild-cross-create fail with: > W: Failed to fetch > http://www.emdebian.org/debian/dists/squeeze/InRelease Unable to find > expected entry 'main/binary-armel/Packages' in Release file (Wrong There are no cross-building toolchains to install on armel. Cross-building for amd64 on armel is not recommended. > # pdebuild-cross.rc > # ----------------------------------------------- > CROSSARCH=armel Correct. > DEBBUILDOPTS="-aarmel" > MULTISTRAPFILE=/etc/multistrap/armel-sid.conf This is an amd64 chroot which is configured to have a cross-building toolchain for armel. > PBUILDERSATISFYDEPENDSOPT="-m -a armel" ... and this is what determines the architecture of the -cross packages to be created as build dependencies. > #arch= > arch=armel Wrong. arch= or arch=amd64 > packages=g++-4.4-arm-linux-gnueabi linux-libc-dev-armel-cross i.e. a cross-compiler for installation on amd64. sudo pbuilder login --configfile /etc/pdebuild-cross/pdebuild-cross.rc Then remove that [arch=] section of the sources.list and check that xapt can work. Alternatively, duplicate *only* the line relating to the Debian unstable archive and specify the arch as armel for that one and *ONLY* that one. Check that xapt can work. Once that is working, use: sudo pbuilder login --configfile /etc/pdebuild-cross/pdebuild-cross.rc --save-after-login Make the changes again but don't do any tests with xapt, this will make the sources.list changes permanent without polluting the chroot with temporary changes. It's a completely standard pbuilder chroot, so the normal pbuilder commands work - it just has a cross-compiler pre-installed. Once changed, the chroot will continue operating just fine. The complication is that the cross-compiler is from stable. (The pbuilder command above is output if pdebuild-cross-create is executed when the chroot tarball already exists.) -- Neil Williams ============= http://www.linux.codehelp.co.uk/
Attachment:
pgppUbDiTpzjV.pgp
Description: PGP signature