Cowbuilder is nice tool to build Debian packages in a defined environment. It makes sure all build-dependencies are specified correctly by building the package in a clean chroot. As its cousin Pbuilder it can be extended via hooks to (e.g. run autopkg tests) but doesn't need a tarball unpacked but uses copy on write tree to speed up the build.
Since Cowbuilder uses different command line arguments than Debuild and Dpkg-buildpackage, we can't simply pass the options to run it on the command line. To simplifiy the integration we use a separate helper named git-pbuilder. gbp has it's own command line option for this:
gbp buildpackage --git-pbuilder
This will set the build command to run git-pbuilder (which
invokes Cowbuilder by default) and the clean command
to /bin/true. It also activates the parsing
of several git-pbuilder related options
like --git-dist
, --git-arch
and
--git-pbuilder-options
.
We can make git-pbuilder usage the default by adding it to
~/.gbp.conf
:
cat <<EOF > ~/.gbp.conf
[DEFAULT]
# We invoke cowbuilder via git-pbuilder. Arguments passed to gbp buildpackage
# will be passed to dpkg-buildpackage in the chroot
pbuilder = True
EOF
git-pbuilder defaults to building a package for the
sid
distribution. If you want to build for another
distribution, pass this in the --git-dist
option:
gbp buildpackage --git-pbuilder --git-dist=jessie
If you want to use debuild again (without
modifying ~/.gbp.conf
), you can use:
gbp buildpackage --git-no-pbuilder
In order for all of the above to work you have to create a base chroot first using git-pbuilder:
git-pbuilder create
This can later be updated using:
git-pbuilder update