Week 5: Let there be shortcuts
The week started late and Thursday was another holiday here (Fronleichnam, better known elsewhere as "Corpus Christi") so I was a bit worried for what I would get done, but it turned out good thanks to a lot of shortcuts being used by me and others.
"First", I looked into #825396 which I had cloned from aptitude. Locales, downloading and aptitude… doesn't sound much like ordering? Yes. It does sound like effecting our text interfaces through which is a huge deal as we have plenty of them. Turns out EDSP (and EIPP) aren't effected as they use a lower API, so I had to work on this in my "free time", but okay. At least I could use new funky C++11 stuff – which made me both requiring at least GCC-5 for compiling and document a requirement which always existed but was never explicitly said in public.
But back to EIPP: After all this refactoring (merged to git master this week) and creating the first part (the scenario generation) in the last weeks my secret goal for this one was to dash out code that eats the scenario and spits out an order apt would parse and call dpkg according to it. The reason for this goal was simple: The sooner I can get that up and running, I can run our testcases against it as well as use it in "production" to see how well all that stuff works. I wouldn't use it in production yet, but it seems to work as good as I was expecting it to: barely.
The code looks also… pretty. The shortcut used here is the C++ friend keyword to befriend a non-member function so it is allowed to access internals (protected/private) fields and methods of the befriending class. You want to avoid such things for obvious reasons usually, but for such a PoC its good enough.
The goals for next week is to clean up that mess (a bit) and to actually run it against our testsuite (well, I did 19 failures in 216 testcases, not too bad, but given that most do not deal with "real" installations its also not that great) and adept/extend accordingly.
The code e.g. currently completely ignores most of the (very involved) [pseudo-]essential handling, silently ignores downgrades, gets sent actions it shouldn't get (purges of rc-only packages) and all these silly details I will have to work on the next few weeks… So, far from done, but I am happy for this week. 🙂