Improve the cross-compilation story in Ubuntu

Registered by Steve Langasek on 2012-10-18

We now have cross-compilers in Ubuntu, and interesting cross-compilation targets in Ubuntu. It's time to step up the best practices around them and make sure we have a good working solution for the packages that are part of the image.

Blueprint information

Not started
Steve Langasek
Matthias Klose
Matthias Klose
Series goal:
Accepted for raring
Milestone target:

Related branches



What is the standard way that users should be setting up cross-compilation environments now? <>? What's the state of xdeb today?

See for previous discussion

Cross-buildability status of quantal packages:

[xnox] Is mingw-w64 discussions appropriate here? Or is it more about the well behaved suspects: armhf, aarch64, x32, powerpc...

[vorlon] this is primarily about the well-behaved suspects. But there's no reason this work can't be extended to target architectures that aren't part of Ubuntu.

== session notes ==

Standard method of cross compilation
 * create a host-arch chroot for the host arch
 * install crossbuild-essential-<target-arch>

Two paths for cross-building:
 - install qemu-user-static in the chroot
 - use DEB_BUILD_OPTIONS=nocheck
   - but debian/rules should check for this itself
 - best practices to have the test suite checked at build time whether it can run

Importing Linaro cross notes to Ubuntu wiki:
 - also: overview doc: (needs updating)
 - ping wookey & achiang when initial pass is done

Outstanding issues for multiarch build paths:
 - others?


Work Items

Work items:
[vorlon] open a bug for rpath issue in toolchain, assign to hrw (bug 923779): DONE
[vorlon] concrete recommendations for test running: nocheck vs. qemu-user-static, add to cross build pages on TODO
[vorlon] provide two profiles for mk-sbuild: one for qemu, and one for nocheck: TODO
[jk-ozlabs] import wookey's cross build docs to INPROGRESS
[wookey] check jk's import of cross build docs: TODO
[achiang] check jk's import of cross build docs & do some test builds: TODO
[jk-ozlabs] define package sets: core, GUI, server (talk to rsalveti, achiang for input). Send email to vorlon, cjwatson, doko: TODO
[doko] fix the cross compiler default include paths to be multiarch compatible: DONE
[adconrad] check out apache build environment: INPROGRESS
[jk-ozlabs] bug adconrad regularly about apache build environment: DONE
[wookey] upstream overrides INPROGRESS
[doko] investigate how to dump config.cache in the build log (sbuild?): TODO
[doko] followup with wgrant about blhc scans: TODO

Dependency tree

* Blueprints in grey have been implemented.