Week 2: CacheSets and the CLPAU

Again, a week is over. On the mail front I continued to talk at cross-purposes with ADA but at some point you need to give up, I guess. I simply don’t understand the problem any longer (or did I ever understand it?) – mail seems to be not for discussion but for accumulating (new) work. 😉

Size Mismatches were a good candidate to dig deeper into the dark realms of APT: The problem was as described in the mail that integers were happily stored in a ranch of types between signed int and double. As every good Schroedinbug this becomes only a problem then you look at the code (or in cases you have an at least 2GB big deb-package). Apply some 2010-sanity by using (un)signed long long (which was not available at the time this could was written) instead of double and Co. and the problem disappeared – with the bonus that in theory apt should now be even a bit faster on my phone (Openmoko Freerunner) as it has no float-point co-processor…

But not all work which flows in by mail can be done immediately unfortunately – but stuff like Valid-Until handling is on the todo list for Week 3 -, others like Stefanos Mancoosi stuff is noted for later and sometimes you even need to do stuff which is already on your todo list (because it comes in as a mail last week). And some of these things are listed in the title: PackageSet gets a little friend: VersionSet – guess what it does and are now called CacheSets. 🙂 Both are evolving and form the CommandLine-Parsing-Astraction-Unit. This CLPAU works already great in all commands of apt-cache, so example commands like “apt-cache show apt-.*:amd64/squeeze” work as expected. 😀
But I am sure you will find more useful use cases for it, as at least the “apt-cache show package/release” or “apt-cache show package=version” thing were already requested a few times (strange enough that I found so far only one bugreport about it).
Week 3 is registered for apt-get conversion to the CacheSets – a bit more abstraction need to be implemented for this and I also need to find a good and easy way to change behavior in error cases (e.g. instead of error on virtual package, show a list of providing packages a user can choose from).

Still, cachesets is not the only thing I worked on: pkgCacheFile is the other thing I changed to get it a bit more generic (so apt-cache can use this one too) and to have a way to be able to lazyload stuff in the CacheSets if needed. Therefore all in all a good week. 🙂

And as every status report need to include MultiArch stuff: As you can see in the lovely commandline example above: an architecture modifier is parsed, accepted and understood. Yea-ha! Also, the move from some self-made cachegeneration to pkgCacheFile in apt-cache enabled me to easily load the DepCache in the policy if I need it (-o APT::Cache::Policy::DepCache=1) which is quite handy to see what the MultiArchKiller does in regards to the package status. This even already showed a (small) bug for the Week 3 agenda, installed arch:all packages get the wrong (=different) candidates which will require some good logic I guess… we will see it in the next week report. 🙂


About DonKult

computer science student at the technical university of Darmstadt (Hesse, Germany, Europe, Earth) living in Erbach (Rheingau).
This entry was posted in Debian GSoC 2009. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s