BuildDaemons

Or what happens after I upload? (Those familiar with the process by which packages enter the Debian archive will find little surprise here.)

Please note that this describes the current process, which will be completely replaced once the final infrastructure (which supports derivatives, etc) is in place.

The short version

It will take at least 1.5-2.5 hours from your upload until binaries are in the archive, depending on when exactly your upload finishes, because:

  1. Uploads are pre-processed every 5 minutes.
  2. Pre-processed uploads (source and binary) start entering the archive at 3 minutes past the hour, every hour. This process takes about 20 minutes.
  3. There are 3 build daemons for each architecture; occasionally down for maintenance activities.
  4. The build daemons are frequently idle, and just waiting for packages (and therefore sleeping for up to 5 minutes), so on a good day, they'll start building your package somewhere between 0 and 5 minutes after the source enters the archive. On a bad day, you have competition, and it takes longer.
  5. The vast majority of packages build in under 5 minutes.
  6. No human interaction is required for successful builds to enter the archive.

The auto-dependency-waiter

trivial cases

In most cases, build-depends are satisfied by what's already in the archive, or can be trivially determined. In the case where the package Build-Depends on a package that is too old in (or absent from) the archive, the package will get placed in the build daemon state 'Dependency Wait' (dep-wait for short). Most of these are done by the auto-dep-waiter. (An obvious and planned enhancement is to just not even try if we know that the build-dependencies are not met.)

not so trivial cases

There are two cases that involve manual intervention. If you suspect that your upload has fallen into either of these cases, and it's been a couple hours since you expected to see your package (remember, the build daemons may just be busy...), you will want to verify that things don't look right in the build logs, and then find a member of the launchpad-buildd-admins team on IRC.

XXX: The following descriptions need to be updated for Launchpad.

  1. One common case that is NOT handled by the auto-depwaiter is when your package Build-Depends on an arch-all package, that in turn Depends: on an arch-specific (and not present) package. These show up in the log file as 'foo Depends: on bar, but it is not going to be installed'. These packages will show up in http://people.ubuntu.com/~lamont/buildLogs/Lists/breezy.all.$architecture as 'Building'

  2. Incorrect build-depends. If you mistakenly upload a package with a bad build-dependency, it is quite likely that the auto-dep-waiter will put the package in dep-wait. Uploading a new version will not clear the dep-wait. These packages will show up in http://people.ubuntu.com/~lamont/buildLogs/Lists/breezy.all.$architecture as 'Dep-Wait', with the incorrect build-depend listed. Please upload corrected source and wait for it to arrive in the archive before asking for bad dep-waits to be cleared. (Otherwise they just come back...)

  3. Virtual packages in Build-Depends. If you use a virtual package in your build depends (and thereby leave it up to the buildd to pick one for you, maybe even the right one...), and said package is not in the archive yet, then you'll get dep-waited on the virtual package name. And it won't ever be cleared until someone uploads a package with that name, or you get lamont to clear it. Please don't build-depend on virtual packages.

The gory details

For those who want them, here are the gory details of the processing that occurs.

process-upload

Every 5 minutes (:00, :05, etc) the queue daemon runs to flush the upload queue. Source packages that are correctly signed and such are moved into the accepted queue. Binary packages from the buildds are also processed at this time. Binary uploads by other than the build daemons are rejected, as well as missigned packages, etc. (This is the step that Debian's archive management scripts do every hour...) Ubuntu does not auto-build accepted.

cron.daily (sic)

Every hour (:03) the accepted queue is pushed into the archive master, and that is propagated to the mirrors. (In Debian, this happens just before 1500 US Eastern time each day...)

Other information

BuildDaemons/LiveFilesystems describes which machines are responsible for live filesystem builds.

BuildDaemons (last edited 2008-08-06 16:18:29 by localhost)