PackageKit progress, and unit tests

Some people may have noticed that there was a flurry of activity for PackageKit in the last few weeks, and then nothing for a whole week. The reason is that I've finished my internment at Red Hat and now am on a graduate program for a large defence company. This is not the end of my OSS activity, so panic not. Working for Red Hat was great, and I would recommend it to anyone interested in working with the best open source company out there. This week was my first week at my new job, and rather hectic; so if I haven't answered your email I'll catch up with it on the weekend. So PackageKit. This week I've been moving around blobs of code and refactoring stuff, removing bodges and adding self check code in the daemon. It's not particularly interesting to blog about as it's not screenshottable. The daemon is a whole lot more sane now, and the API has improved lots in my opinion. There's still some more API additions we need to make (to get the update details for a particular package_id comes to mind..) but generally I think we are nearly there. I'm going to be working on more documentation for backend writers as what I've got now is a little hard to read. Backends are now compiled .so objects with optional external helpers. This removed the horrific gobject hacks I was using before, and actually makes a nice abstraction. It should be a lot easier for new backend writers to add a new backend into the tree, and makes it easier to test as you can now select the test or dummy backends at runtime rather than having to recompile. The yum backend is nearly complete, apt is about half done, conary similar, and a preliminary box backend has also been added. There's interest in adding pacman, zypp and emerge backends also. I want to apologise a little to the backend writers. I know I keep tweaking the API, moving files about, and changing the enum defines but I believe doing this early in the project will give us a complete system that is free from bodges around premature design decisions. I need to change a few enumerated types in the next couple of days, add the internal queuing API and add a whole heap more self tests and then I probably should release 0.1.0 to the unsuspecting public. Talking of which. I know self tests are not the most interesting bits of code, but they are pretty easy to add. If you are not a great C coder, but want to get your hands dirty with PackageKit you could help me write the simple tests. Most are of the type: /* check function does not explode with NULL */ ret=function(NULL); if (!ret) abort(); /* check return type*/ ret=function2(“dave”); if (ret != ENUM_DAVE) abort(); If you look the existing tests you'll see the sort of things we test for and the simple framework that we are using to make the tests a bit easier to write. Email me and I can tell you what needs to be done. Thanks.

Published by


Richard has over 10 years of experience developing open source software. He is the maintainer of GNOME Software, PackageKit, GNOME Packagekit, GNOME Power Manager, GNOME Color Manager, colord, and UPower and also contributes to many other projects and opensource standards. Richard has three main areas of interest on the free desktop, color management, package management, and power management. Richard graduated a few years ago from the University of Surrey with a Masters in Electronics Engineering. He now works for Red Hat in the desktop group, and also manages a company selling open source calibration equipment. Richard's outside interests include taking photos and eating good food.