Crossbuilding Status Page

This page keeps track of current crossbuilding tests and status, and serves as a resource pointing to the numerous collections of patches and fixes, many of which are still not upstreamed.

Project-specific status info

Back to top of Cross-building documentation tree

  • Multiarch Cross-buildd Status


File bugs by adding this to the bug email header

Tag: cross

See for details of how to tag existing bugs.

(Yes you always need to set both user and tag - that's how the namespacing works).


The ARM ALIP/AEL recreation-in-Ubuntu effort.


Cross-build issue classification

skipping 'does my compiler work' test

at (maybe use different macro)
skippping tests

talloc, coreutils, guile-1.8, x11-apps, x11-xkb-utils, bogofilter, pango1.0, dbus, apparmour, mawk,  
*-perl, flex, insserv, xz-utils, ossp-uuid, pixman, libidn, aalib, libxcb
needs CC setting

anacron, alsa-lib, bzip2
cyrus-sasl (sets CC for samples target)
insserv, ifupdown, libcp2, liblockfile, libxml2, libxslt, mawk, mysql-5.1, net-tools, netcat-openbsd, ossp-uuid, pptp, ppp, portmap, pciutils, readline5, sqlite
wireless-tools (should probably be exported and simplified)
usb-modeswitch (maybe export + simplify?)
needs CC setting _and_ exporting

mesa (set CXX - CC magically set)
pango1.0 (CXX)
logrotate, lockfile-progs, libutempter, dosfstools
need to set correct strip/install binary: (to DEB_HOST-GNU-strip)

at, base-passwd, binutils, bzip2, cpio, dash, debianutils, diffutils, gdbm, logrotate, liblockfile, mawk, netcat-openbsd, pciutils,
portmap (maybe - patch looks broken), rsync, screen, sed, usb-modeswitch, unzip, zip
ossp-uuid (fixes up 'shtool' to use correct strip)

These are probably bugs in the packaging, eg DEB_BUILD_OPTIONS=nostrip doesn't work. We should rather fix that issue than pass "correct strip" - Riku

need to set AC_CACHE_VARS

screen (lots, never been cross-compiled)
x11-xkb-utils (actually this is just skipping a test - use generic mechanism?)
x11-apps (actually this is just skipping a test - use generic mechanism?)
Skip doc-building

  coreutils (because doc-building runs a binary)
  • skip gtk-doc-building (uses introspection)

  • skip perl pods

use native versions of tools

eggdbus: eggdbus-binding-tool (dbus has option to specify this, eggdbus should too?)
apparmour (in apxs2) (needs libtool reference in apxs2 changing on the fly)
mqsql-5.1 (gen_lex_hash)
libgcrypt11 (gpg-error-config)
Don't build some tools/libraries

ossp-uuid (perl and php interfaces)
openldap (don't build perl interface)
gss (libshishi)
shishi (libgcrypt)
need to fix up library paths

wget (libssl) (must be broken somehow - fix)
initramfs-tools (libssl again)
fontconfig (in configure)
need to fix up include paths

sqlite (sets readline and tcl include paths explicitly in configure.)
xml2 (libxml2)
packages which should build-depend on build version (due to using files from there)

eggdbus, xcursor-themes (copies /usr/share/icons/* - why?)
tcl8.5 (uses native tclsh) (Should be a DEB_STAGE thing?)
shlibs fiddling

x11-utils (shlibdeps --ignore-missing-info) (gl/mesa?)
Avoid introspection

rtkit (avoids (non-gnome) introspection, and steals build machine .xml file)
There is a Makefile.introspection makefile that apps should use. So fixups can be done centrally. (some packages don't use, and should).
(dbus has a .xml file already shipped to use).
upower (dh_girepository)
pango1.0 (exclude some libs - be nice to turn it off entirely)
udev (copies over host xml files in
policykit-1(copies over host xml files)
gnome-menus(copies over host xml files)
set python env vars

file (sets Python-env: CC and LDSHARED) will override non-GCC compilers).
apparmour (sets Python-env: CC and LDSHARED).
munge config file

tcpdump (munge pcap-config)
needs native pkg-config

tango-icon-theme-common, tango-icon-theme

recursive library linking. (Need implicit library linkage recursion to work in cross-toolchain the smae as native toolchain - fixed september 2012) See bug#


Less-common issues

  • screen sets MAKE_TARGET=mawk
  • ltrace (sets specifuc make <arch> target. sedded from DEB_HOST_GNU. Could use DEB_HOST_ARCH instead?

  • perl stuff (modules etc). really needs an upstream conf var for 'crosscompiling' - currently check if compiler is called *-gcc. (liglib-perl, libpango-perl, etc: *-perl)
  • cpio: Fix stat fn used
  • tcl8.5: removes {$misc:Depends} from control file (why?) Add Debian path to find Build tclsh native as well as target for use during build
  • python2,6, python2.7: lots of stuff to use buid/host version of pythong during bootstrap
  • xutils-dev: Make minimal xml test file to satisfy test
  • libgcrypt11: make link to gpg-error config then use native tool
  • db4.8: skip java support

Don't actually build

  • alsa-lib - some issue with cross-python
  • alsa-utils - relies on native curses headers to build

probably not upstreamable/needs work

 xcursor-themes(copies /usr/share/icons/* - why?)
 x11-xkb-utils, x11-apps (AC_CACHE VAR to skip test)
copies include files into deb - needs path fixup for dpkg-cross (fixed by multiarch)
  • xserver-xorg-viedo-fbdev, xserver-xorg-input-synaptics, xserver-xorg-input-evdev
  • udev can't find pci ids (/usr/share/pci-ids path set in configure)
  • apparmour builds an apache extension 'apxs2' - copy in build version and use it (part of the whole 'fix cross-apache' problem.
  • pcmciautils: passes CROSS=foo in debian/rules to make targets (cross-stuff already present?)
  • lsof: sets interesting conf args (LSOF_CC), but sensible patch
  • perl. set strip and cc. Set perl_to_use local perl.static
  • list of *-perl packages (which all have doc-building skipped) libglib-perl, libpango-perl, libcairo-perl, libtext-iconv-perl, libcharwidth-perl, liblocale-gettext-perl, libterm-readkey-perl, libhtml-parser-perl, libxml-parser-perl
  • cyrus-sasl: has bootstrap patches mixed in. And appears to have update of other stuff too - version skew?
  • libx11: avoid setting explicit PKGCONFIG paths, and lots of mysterious autofoo updates. Anything substantive?
  • unixodbc: has bootstrap patches mixed in
  • patches with unnecessary stuff in (tofix)

    • upower (set's cross_compile but never uses)
    • libglib-perl (sets PERL5LIB in configure to the same either way)
    • pango1.0 (CROSS_COMPILE passed down)
    • lididn (bootstrap stuff in)
    • unixodbc (has bootstrap stuff in)
    • Cyrus-sasl (has bootstrap stuff in)
    • openldap (has security fix in)
    • krb5(bootstrap stuff, multiarch stuff, and maybe some more guff?)

    TODO items

    • investigate libgl/mesa cross-libs
    • python crossing: sets LDFLAGS and LDSHARED - ugly - is there a better way?
    • gobject-introspection
    • Can we improve the $(STRIP) situation

    Problems obsoleted by multiarch

    • tcpdump(pcap-config use)?
    • perl lib path stuff?
    • flex has been multiarched, so now it just builds.
    • postgres-8.4

    Cross-dependency test table collates a set of declared and actual build-deps/cross-builddeps which can be used for tool verification

    Crossing with pdebuild-cross

    Tested with version 2.2.4ubuntu3 in maverick. (2.2.4ubuntu2 has serious bugs which break nearly all builds)

    Note that dependencies needed for debian/rules clean must be installed outside the chroot because pbuilder builds a source package in order to have the sources installed in the chroot. Various packages need makes rules and tools supplied by things outside build-essential for this step. cdbs quilt dpatch dh-autoreconf (e.g. evolution-data-server) gnome-pkg-tools (anything from gnome) dh-apport hardening-includes (openssh) mozilla-devscripts (xulrunner)

    There are no doubt more and there is no reliable way to determine them in advance. This is a rather tiresome feature of pbuilder. Some metadata, or some way for pbuilder to do this stil inside the chroot would be good.



    Failed to cross-build

    consolekit                   configure: error: --enable-pam-module requires PAM but PAM was not found
    cups-driver-gutenprint       /tmp/buildd/gutenprint-5.2.6/debian/build/src/xml/.libs/lt-extract-strings: cannot execute binary file
    dbus                         libtool:/usr/lib/ file not recognized: File format not recognized
    evolution-data-server        configure: error: Cannot find libdb
    gnome-keyring                checking for /dev/random... configure: error: cannot check for file existence when cross compiling
    gstreamer0.10-plugins-good   libtool: /usr/lib/ file not recognized: File format not recognized
    gstreamer0.10-x              libtool: //usr/lib/ file not recognized: File format not recognized
    libgnome-keyring0            libtool: /lib/ file not recognized: File format not recognized
    network-manager              configure: error: wireless-tools library and development headers >= 28pre9 not installed or not functional
    nfs-common                   arm-linux-gnueabi-strip:debian/nfs-kernel-server/usr/sbin/rpc.nfsd: File format not recognized
    notification-daemon          libtool: /lib/ file not recognized: File format not recognized
    openssh-client               configure: error: libedit not found

    Using xdeb

    version 0.6.1



    Failed (installing deps)

    doc-base                      (Unmet deps)
    evolution-data-server         (Unmet deps)
    fontconfig                    (Unmet deps)
    gnome-keyring                 (Unmet deps)
    network-manager               (Unmet deps)
    notification-daemon           (Unmet deps)

    Failed to cross-build

    None got this far

    Outstanding Problems

    Package built build tools

    Some packages build tools for use in the built process e.g. qt4-x11 builds qmake. These tools may or may not be shipped with the resulting binary packages.

    Where the tool is shipped we can just add a build dependency on the binary package containing the tool - that for the build host architecture will be installed by e.g. xdeb.

    Packages may need to be patched since most use the tools from the build tree to ensure the latest version is used.

    Where the tool is not shipped we need either

    - a mechanism within the debian building/packaging system to build these tools,

    • e.g. patch debian/rules to perform a local build and put these tools where required in the target host build tree



    - each upstream package needs patching to build host tools,

    • e.g. using BUILD_HOST_CC or similar


    Proposed debian policy:

    • All packages accepted into Debian should be bootstrappable i.e. build all tools they require during the build, rather than rely on build host installation of the matching package.

      If the upstream package is not boot-strappable, then the debian packaging should make it so.

    Source package



    genbidi genbrk gencase gencfu gencnval

    genctd gennames gennorm genpname genprop

    genprops genrb gensprep genuca icupkg

    makeconv pkgdata (at least)


    Platform/DevPlatform/CrossCompile/CurrentPackageCrossBuildStatus (last modified 2012-09-18 11:01:50)