Skip to content

Multi-build via debputy with the Build-Driver interface (no dh)

Niels Thykier requested to merge debputy-prototype into debian/unstable

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 the debhelper build system that delegates to dh_auto_*. Only autoconf is supported at the moment as a build system you can define in the manifest. While it runs dh_auto_* under the hood for now, that will not survive the prototype (though I am considering to add a debhelper 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. In debputy the "build step" (what you knew as debian/rules build) covers all upstream actions (what you might think of as dh_auto_configure, dh_auto_build and dh_auto_install). In debhelper, dh_auto_install occurs in the "binary step" (what you knew as debian/rules binary). This reduces the need for state management across "step boundaries". This only matters if you manually want to run the build step (I think, via dpkg-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 to libpam-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)

Notable features:

  • All build logic is now defined in debian/debputy.manifest.
  • As a consequence, there is now no debian/rules and the related Rules-Requires-Root is gone since it is only valid for the debian/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 under installations is because debputy 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 the autoconf build system calls out to (among other) dh_autoreconf, which will require a debhelper compat level still. For other packages, the build dependency may become redundant.
Edited by Niels Thykier

Merge request reports

Loading