Multi-build via debputy with the Build-Driver interface (no dh)
Here is a version of libpam-krb5
using debputy
via the new Build-Driver
interface from dpkg
.
Notable limitations/changes to the status quo:
-
Now in unstable. -
All debhelper
provided build systems have been ported. Third-party build systems can be run via thedebhelper
build system that delegates todh_auto_*
.Onlyautoconf
is supported at the moment as a build system you can define in the manifest. While it runsdh_auto_*
under the hood for now, that will not survive the prototype (though I am considering to add adebhelper
build system for "living off the land"). -
Multiple build environments are supported (though libpam-krb5
only needs one).Only one build-environment (the default one) is supported at the moment at a manifest level (the underlying code is ready for multiple environments). Note: There is no "native" syntax for dpkg-buildflags features (like the feature areas and the STRIP/APPEND/PREAPPEND) yet. - The
debputy
build differs in how it "splits" build steps compared to debhelper. Indebputy
the "build step" (what you knew asdebian/rules build
) covers all upstream actions (what you might think of asdh_auto_configure
,dh_auto_build
anddh_auto_install
). Indebhelper
,dh_auto_install
occurs in the "binary step" (what you knew asdebian/rules binary
). This reduces the need for state management across "step boundaries". This only matters if you manually want to run thebuild
step (I think, viadpkg-buildpackage -Tbuild
) - This is so bleeding edge, but uploads are trivially possible (see
mscgen/0.20-16
in unstable).- This requires
dpkg-dev/1.22.7
so stable-backports is not possible with this feature set. This does not seem to be important tolibpam-krb5
but it is worth keeping in mind when considering this feature for other packages. - The
lintian
tool has some known minor bugs like https://bugs.debian.org/1077938 and https://bugs.debian.org/1077936 (Note: they are info or classification hints, so it should not be particularly annoying - YMMV)
- This requires
Notable features:
- All build logic is now defined in
debian/debputy.manifest
. - As a consequence, there is now no
debian/rules
and the relatedRules-Requires-Root
is gone since it is only valid for thedebian/rules
interface. - The builds are tagged with what package they are related to, so adding
Build-Profiles
to skip some of them would now be trivial (This is one is for people interested in bootstrapping)
Please take it for a spin and let me know what you think. :)
Note:
- The removal of the
discard
rule underinstallations
is becausedebputy
already does it by default (I removed it because I was updating the manifest anyway, but it is not related to this change) - The
debhelper-compat
is still relevant, since theautoconf
build system calls out to (among other)dh_autoreconf
, which will require adebhelper compat level
still. For other packages, the build dependency may become redundant.
Edited by Niels Thykier