Debian now have over 22 000 source packages and 45 500 binary packages. To counter that, the FTP masters and I have created a dak tool to automatically remove packages from unstable! This is also much more efficient than only removing them from testing! :)
The primary goal of the auto-decrufter is to remove a regular manual work flow from the FTP masters. Namely, the removal of the common cases of cruft, such as “Not Built from Source” (NBS) and “Newer Version In Unstable” (NVIU). With the auto-decrufter in place, such cruft will be automatically removed when there are no reverse dependencies left on any architecture and nothing Build-Depends on it any more.
Despite the implication in the “opening” of this post, this will in fact not substantially reduce the numbers of packages in unstable. :) Nevertheless, it is still very useful for the FTP masters, the release team and packaging Debian contributors.
The reason why the release team benefits greatly from this tool, is that almost every transition generates one piece of “NBS”-cruft. Said piece of cruft currently must be removed from unstable before the transition can progress into its final phase. Until recently that removal has been 100% manual and done by the FTP masters.
The restrictions on auto-decrufter means that we will still need manual decrufts. Notably, the release team will often complete transitions even when some reverse dependencies remain on non-release architectures. Nevertheless, it is definitely an improvement.
Omelettes and eggs: As an old saying goes “You cannot make an omelette without breaking eggs”. Less so when the only “test suite” is production. So here are some of the “broken eggs” caused by implementation of the auto-decrufter:
- About 30 minutes of “dak rm” (without –no-action) would unconditionally crash.
- A broken dinstall when “dak auto-decruft” was run without “–dry-run” for the first time.
- A boolean condition inversion causing removals to remove the “override” for partial removals (and retain it for “full” removals).
- Side-effect, this broke Britney a couple of times because dak now produced some “unexpected” Packages files for unstable.
- Not to mention the “single digit bug closure” bug.
Of the 3, the boolean inversion was no doubt the worst. By the time we had it fixed, at least 50 (unique) binary packages had lost their “override”. Fortunately, it was possible to locate these issues using a database query and they have now been fixed.
Before I write any more non-trivial patches for dak, I will probably invest some time setting up a basic test framework for dak first.