Lucas Nussbaum recently did a blog post called “Debian is still changing“. I found it a very welcome continuation of his previous blog post on the same topic. I find the graphs very interesting and was very happy to learn that he included relative graphs this time.
Now I can with relatively ease say that 69% of all Debian packages are using a dh-style build (source). We have another 15% using classic debhelper, which means that at least 84% of all packages uses debhelper directly. Assuming all CDBS based packages rely on the “debhelper class”, we are at 99%! The latter is certainly an assumption, although I suspect it is probably pretty accurate[1].
Now, it is very cute to have “world dominance”, but that is not my primary interest in these numbers. Instead, we can use these numbers to determine that:
- We can deploy changes to up to 99% of all source packages via existing debhelper tools
- We can deploy changes to up to 84% of all sources packages via debhelper + CDBS if it requires a new debhelper tool.
Such as automatic dbgsym packages, indexable build-id from dbg(sym) packages via Packages files[2], and replacing maintscripts with ldconfig triggers. All of these changes happen to be changes that could be trivially deployed with very little risk and very high efficiency[3]. Notably, none of them required a compat bump (or a new debhelper tool).
Of course, I do not intend to say that every change can (or should) be deployed via debhelper and much less into an existing “dh_cmd”-tool. Notably, dh_strip is reaching its breaking point for content. And if we were to require a compat bump for your change, we can now at least see the adoption rate via lintian. :)
Nevertheless, it is nice to know that (politics aside) there is some agility in the Debian build system! :)
—
[1] I would very much love to see numbers to (dis)prove my assumption about CDBS + debhelper. In fact, an absolute number of packages not using debhelper (indirectly) in Debian would be very intriguing.
[2] New fields by default end up the Packages file. See e.g. the Packages.xz file on the debug mirror or your apt-cache via:
apt-cache show mscgen-dbgsym | grep ^Build-Ids
The latter assumes that you have the debug mirror in your sources list.
[3] Efficiency here being features people rarely override/disable.
Filed under: Debhelper, Debian
