Minor archaeological details

Documentation history

This document was started on 28 Dec 2002 by Junichi Uekawa, trying to document what is known about pbuilder.

This documentation is available from the pbuilder source tar-ball, and from the git repository of pbuilder (web-based access is possible). A copy of this documentation can be found on the Alioth project page for pbuilder. There is also a PDF version. The homepage for pbuilder is http://pbuilder.alioth.debian.org/ hosted by alioth project.

Documentation is written using DocBook XML, with emacs PSGML mode, and using wysidocbookxml for live previewing.

Possibly inaccurate Background History of pbuilder

The following is a most possibly inaccurate account of how pbuilder came to happen, and other attempts to make something like pbuilder happen. This part of the document was originally in the AUTHORS file, to give credit to those who existed before pbuilder.

The Time Before pbuilder

There was once dbuild, which was a shell script to build Debian packages from source. Lars Wirzenius wrote that script, and it was good, short, and simple (probably). There was nothing like build-depends then (I think), and it was simple. It could have been improved, I could only find references and no actual source.

debbuild was probably written by James Troup. I don’t know it because I have never seen the actual code, I could only find some references to it on the net, and mailing list logs.

sbuild is a perl script to build Debian packages from source. It parses Build-Depends, and performs other miscellaneous checks, and has a lot of hacks to actually get things building, including a table of what package to use when virtual packages are specified (does it do that still?). It supports the use of a local database for packages which do not have build-dependencies. It was written by Ronan Hodek, and I think it was patched and fixed and extended by several people. It is part of wanna-build, and used extensively in the Debian buildd system. I think it was maintained mostly by Ryan Murray.

Birth of pbuilder

wanna-build (sbuild) was (at the time of year 2001) quite difficult to set up, and it was never a Debian package. dbuild was something that predated Build-Depends.

Building packages from source using Build-Depends information within a chroot sounded trivial; and pbuilder was born. It was initially a shell script with only a few lines, which called debootstrap and chroot and dpkg-buildpackage in the same run, but soon, it was decided that that’s too slow.

Yes, and it took almost an year to get things somewhat right, and in the middle of the process, Debian 3.0 was released. Yay. Debian 3.0 wasn’t completely buildable with pbuilder, but the amount of packages which are not buildable is steadily decreasing (I hope).

And the second year of its life

Someone wanted pbuilder to not run as root, and as User-mode-linux has become more useful as time passed, I’ve started experimenting with pbuilder-user-mode-linux. pbuilder-user-mode-linux has not stayed functional as much as I would have liked, and bootstrapping user-mode-linux environment has been pretty hard, due to the quality of user-mode-linux code or packaging at that time, which kept on breaking network support in one way or the other.

Fifth year of pbuilder

pbuilder is now widely adopted as a ‘almost standard’ tool for testing packages, and building packages in a pristine environment. There are other similar tools that do similar tasks, but they do not share the exact same goal. To commemorate this fact, pbuilder is now co-maintained with several people.

sbuild is now a well-maintained Debian package within Debian, and with pbuilder being such a slow monster, some people prefer the approach of sbuild. Development to use LVM-snapshots, cowloop, or cowdancer is hoped to improve the situation somewhat.