And it’s not dbus this time, I promise!
As a developer, I do like to use GTK+ as my graphical toolkit of choice. As much as I dislike Gnome, I have no real issues with the toolkit it uses — it’s lightweight, simple to use, and can be done in a huge variety of languages, including plain C (so many these days require C++, for some odd reason). One of the nice utilities for coding in GTK+ is a program called Glade, a user interface designer that you can simply load in a text-based file to your application and reference the named parts of your GUI in your program to automatically create a GUI quickly and simply. Good for rapid development, and even good for prototyping even if you’re doing everything manually in C (which I end up doing most of the time).
Emerging Glade in Gentoo brought up a strange dependency, however — Scrollkeeper, a method to catalog documentation, and something I neither wanted nor needed. Why the strange dependency, I wondered? Looking at the source tree, I found out why: it “depended” on Scrollkeeper for the sole purpose of updating Scrollkeeper itself! This strange bit of logic gave me an instant headache, and made me wonder why the build process for Glade didn’t simply check to see if Scrollkeeper existed on the system and only updated it if it did. Apparently the very notion of someone having a system with no Scrollkeeper on it was foreign to the developers of Glade — what kind of fevered madman would have a Linux system without Scrollkeeper! — and they plowed ahead secure in their delusion, checking for Scrollkeeper in the configure process and giving the user an error if it wasn’t found, since obviously it needed Scrollkeeper to update Scrollkeeper!
So a bit of hacking on some of the files in the source tree to keep the configure process from dying and the make process from erroring out when it didn’t find Scrollkeeper (the hard way — I just removed all references to it), and the program built, installed, and ran just fine.
Developers, we don’t all want all of this unnecessary fluff on our systems. Please keep this in mind when you create your packages.