Release Note

This service provides information on the current cross-buildability of packages in the archive. Packages are classified as 'OK', 'Maybe succesful', 'Maybe failed', and 'Failed'


  • We don't actually know which packages we're able to cross build or not.
  • We do not have good information on what class of failure packages which don't build exhibit.
  • It's hard to make people to contribute fixing the packages if we don't actually know what is broken.
  • Cross-building fixes will bitrot if they are not excercised

User stories

  • As a distro developer I want to know if new package uploads are cross buildable.
  • As a cross-tool developer I want to know which packages fall into which class of cross-build failure


We are testing cross-building against an existing binary archive including packages for build (DEB_BUILD) arch and target (DEB_HOST) arch, which supplies dependencies (cross and native). We are not testing bootstraping/staged builds.

We are not expecting the packages build to be used (or even necessaily kept) - we are just checking that the build works.

This is not about changing the native-build proceses of Debian/Ubuntu.


The service is normally used and viewed as a web-interface to a set of build statuses and build logs. Those logs are the reslts of attempted builds on cross buildd machine(s). Builds are kicked off by a controlling program which monitors an archive for source packages newer than last build attempt, and causes builds to be attempted.

Initial service is basic but has enough functionality to be useful:

  • v0.1: builds run in chroots, logs uploaded to web.
    v0.2: + builds kicked off by comparing aginst existing repo (wanna build?)
    v0.3: + WebUI for build status


The builds themselves are done with dpkg-buildpackage -a<arch>. That is the process we are primarily testing. No extra 'magic wrappers' (like xdeb) should be involved.

Build dependencies and cross-build dependencies must be satisfied in order to run that. xapt, xdeb and apt-with-multiarch are all candidates here. Their functionalities will be tested with this system.

Machines to host logs and webUI and run builds needs to be found. These could be AmazonS3 machines, or real ones.

Initially buildd will be wookey's local desktop. We can scale later as required.

Initial build-set is Ubuntu main. (900 packages)

Maximise re-use of existing code to get something up quickly. schroot+xdeb or pdebuild-cross, and uploaded logs would be minimum.

Making it easy to deploy this service locally will make it very useful to all companies/groups cross-building Debian stuff regularly. Wanna-build is famously unhelpful here. What to do about that?


The service is automatic, so the only user interaction is examining build logs and status via a web interface. examples: Debian and Ubuntu native build systems: and

There could be a control UI to ask for rebuilds of failed packages or build attempts on specific packages, but that is not initially envisaged.

The final form of user interaction is uploading sources/packages to the repository in order to cause cross-build attempts to occur.

Code Changes

The existing native tools: sbuild, wanna build, web-UI (from here: ) will probably all need minor work to be cross-ready.

A separate simple 'satisfy-depends-cross' program would be very useful to make this neat, but we can manage without it to get started.

Potential Enhancements

Semi-automatically file FTCBFS bugs with package maintainers that their packages don't cross-build.

Test/Demo Plan

It's important that we are able to test new features, and demonstrate them to users. Use this section to describe a short plan that anybody can follow that demonstrates the feature is working. This can then be used during testing, and to show off after release. Please add an entry to for tracking test coverage.

This need not be added or completed until the specification is nearing beta.

Unresolved issues

BoF agenda and discussion

LDS 2011-05 etherpad notes:

CategorySpec CategoryCrossCompile

Platform/DevPlatform/Specs/CrossBuildDaemon (last modified 2011-07-12 19:01:32)