Week 10: That is plane wrong!
As a kid I liked Asterix as comic as well as in the animation films – I am not so fond of the actor films and haven't looked at the newer comics, but that is beside the point. I want to quote Obelix here: "These Brits are crazy!". Not because of the recent vote to leave the EU or because the english soccer team decided that this vote applies also to their play. No, I am thinking of the scene in the film in which the hero's walk down a street in search for a house and all of the houses in the street, the block, even the district look the same, but luckily they have the number, find the one and beat up the inhabitant only to be told that an 'I' is missing in the number…
After last weeks merge, I was told that "planer" doesn't mean what I thought it does. A planer is actually a type of machine to make stuff plane – which is again not making something into a plane to fly with it, but to make something plane so you don't get splinters (if its wood), all of this can be done according to a plan btw. What I meant is a "planner" – aka I was missing an 'n'. Perhaps only because I have light dyslexia, but I hate these language things. German isn't all around better in this: "The 'Planer' makes a 'Plan'." but the stuff can still be made 'plan' (even through 'planar' is what you usually hear and it hasn't the wood-meaning, you can just do this to the ground). But at least we don't drag planes or plants into this, the later being a masterpiece of word meaning all by itself… but enough of a "rant", I am pretty sure it all makes sense if I would look up history more than I did and in the end its just me trying to hide my embarrassment over such trivial mistakes being made by me for weeks…
Anyway, on the real topic of this post as I did more than just correcting this mistake (which did take a while through). Beside various things which are only slightly related or even not at all like: Not overriding an atomic file if the new file had failures in creation (oh my god, how did we miss that for so long?!?), various testing things, an overhaul of the autoremover code + implementing 'protect only the latest same-source provider' which has explicit benefits e.g. in terms of out-of-tree kernel modules (if built e.g. with module-assistant instead of dkms) as well as in other cases, fixing the handling of local deb files if it was previously already installed in that version as not behaving like a downgrade and finally a bunch of apt-key changes to make its badness more visible… which all went directly to git/master.
I started another of my wip branches for the things I am actually paid for to do: The plan was to tackle some "how apt invokes dpkg" things. Silly things like not setting --force-remove-essential on each and every remove/purge (if possible, there are non-default apt options which prevent apt from knowing which packages are essential in dpkgs view).
Also worked on codifying the --recursive usage for --unpack which sets up a symlink farm in a temporary directory and tells dpkg said directory instead of explicitly listing each and every package on the commandline explicitly (which can turn out to be quite long, see weeks earlier), but as mentioned back then this doesn't work yet unconditionally as dpkg has a bug in its ordering code, so for the time being apt needs to be nice and still help dpkg out here (that is the type of stuff I mentioned in my proposal as likely hindrance of using another planner for stretch already).
I also began saving, clearing and restoring dpkg selections before/after running dpkg so that a planner can eventually outsource the removal orders to dpkg. That is quite a dance as these selections are user settings "for the future" which we can't just discard, but we also can't just ignore them as they can include purge selections and if we would not unset them before calling dpkg in a new world order apt would implicitly instruct dpkg to perform removals the user hadn't agreed to… frankly, its a freaking mess, but the interface exists so I have to make due with what we have rather than what we "will like to be have had" if only there was a timemachine.
I am somewhere deep down in this clusterfuck, but I see light at the end of the tunnel – or perhaps that is just an oncoming train. Hopefully I am out of this by next week. I also want to give --no-triggers a chance again, a few years back I implemented support for it, but it never really saw the daylight thanks to bugs in dpkg and elsewhere, but perhaps now is a good moment for retrying. It does deal the final blow to sensible progress reporting through, so I would need to figure something out for that, too… we will see; planning plane plans isn't always working out for me.
(This weekend I have a daytrip with ~70 kids with the usual last minute emergencies and much needed decompress afterwards, so reports might be delayed and my replies/work even more off business hours than usual).