Debian’s buildd Network
Debian’s buildd Network
Debian maintains one of the largest and longest-running distributed compilation fleets in the history of computing: the buildd (Build Daemon) network.
+-----------------------------------------------------------+
| Debian's buildd Architecture |
| |
| Maintainer uploads Source Package (.dsc + .orig.tar.xz) |
| | |
| v |
| Archive Master |
| | |
| v |
| Wanna-Build Database |
| (Tracks build states: Needs-Build, Building, Uploaded) |
| | |
| +------------------+------------------+ |
| | | | |
| v v v |
| buildd worker buildd worker buildd worker |
| (x86_64 node) (arm64 node) (riscv64 node) |
| | | | |
| v v v |
| [ sbuild: Isolated chroot clean build using schroot ] |
| | | | |
| +------------------+------------------+ |
| | |
| v |
| Compiled .deb uploaded -> Incoming queue -> Archive Pool |
+-----------------------------------------------------------+
wanna-build: The Central Scheduler
The heart of Debian’s infrastructure is wanna-build. It tracks package dependencies across architectures: - When a source package is accepted into Debian unstable, wanna-build inspects its Build-Depends list. - If all required development libraries for architecture arm64 are already present in the archive, the package state moves to Needs-Build. - If a required library is missing or currently being compiled, the package state transitions to BD-Uninstallable (Build-Depends Uninstallable) and waits automatically.
sbuild: Clean Chroot Builds
When an idle worker node picks up a build task: 1. It launches sbuild, which creates an isolated LVM snapshot or tarball chroot. 2. It parses the source package’s debian/control file and executes apt-get install to install only the specific packages declared in Build-Depends. 3. It compiles the package as an unprivileged user (buildd). 4. Upon completion, the entire chroot is destroyed. 5. The resulting .deb binaries, build logs, and .buildinfo metadata are cryptographically signed and uploaded back to the central archive.