IRILL - Research and Innovation on Free Software

Multiarch crossbuilding


"Multiarch crossbuilding"
by Wookey,
on 2012-07-10 00:00:00
Download MP4 format

How to use, and what still needs work

Now that we have multiarch, cross-building in Debian has decent technical foundations, and some packages already cross-build OK. However there is still a lot of work needed to make this a genuinely useful facility, where the base system is entirely cross-buildable, new ports can easily be bootstrapped, multiarch cross-dependencies work everywhere, and any package where someone cares is likely to cross-build OK. Quite a lot of stuff just needs to be fixed, but for some things we need to firm up advice to maintainers on how to keep their packages cross-friendly, and what Debian cross-build policy should look like. This session is intended to show people how to use the tech and what they can do with it, as well as what does/doesn't work, and to explain the remaining issues. Anyone with an interest in bootstrapping, cross-building, cyclic dependencies, autobuilders or multiarch in general should find something of interest.

We now have good cross-building infrastructure in Debian, however the move from older schemes to multiarch has also introduced a few new problems which we need to deal with. We also still have a lot of work to do in order to make it really easy to 'just build stuff'. We need cross-toolchains in the archive, a cross-build-essential meta-package, multiarch cross-dependencies fixed for many tools, and architecture-dependent tools to be correctly dealt with in various places, especially in -dev packages. There are still some issues about what should be recommended to package maintainers to keep their packages cross-friendly. This session will cover the current state of play, and things which still need deciding in order to provide concrete advice for all packagers. Using sbuild and rebuildd to set up an auto-crossbuilder will also be covered, and the results of that testing examined. I will explain how the multi-arch cross-dependencies work, and what is still broken, as well as some examples of cross-builds that fail in various ways and what should be done about them. Then we will move on to issues for BOF discussion such as the degree to which qemu should be relied on to deal with issues, what to do about differing dependencies when crossing/natively building, what constitutes best practice in packaging. What we don't intend to support, what is needed to get cross-compilers into the archive, what to do about object introspection. The arm64 port will be used as a concrete example of using this tech on a new port. There will be a BOF session later in the week to firm-up our collective opinion on the outstanding isues, what will be supported/recommended and what won't.