For the past couple of months I’ve been working on work-work and OpenSolaris packaging for KDE4. That involved porting a huge stack of packages, building up a new C++ library (using Apache RogueWave stdcxx) and massaging Qt into shape. We got 231 packages by now, including such little gems as FOSSendian (one single header file) and FOSSgiflib (Nevada doesn’t ship with any GIF library that I can find). But what I’ve been doing for the past week or so is throwing stuff away . Call it an end-of-year cleanup.
See, way back when we started, OpenSolaris / Nevada was a very different creature, and the amount of things that needed specific porting was much greater. Living together with an old GNOME 2.20 port was also strange. But things in this distro have progressed, and the current GNOME 2.24 is livable while I recompile KDE4. But over the course of a year we have accumulated much cruft. Duplicating functionality is not cool; duplicating complete packages is even less so cool. So I set out to throw away as much as possible, reducing our dependency graph from a big one to, hopefully, something a lot leaner.
I suppose the single biggest push in this direction came from the realisation that shipping a separate MIT Kerberos port with KDE4 is a non-starter from a security and system integration point of view. And following the tangled lines of our dependency graph (this one for instance, 221k) showed me more packages that might be dropped from our builds by just using the ones from the system. So I embarked on the experiment – and it is an experiment, since conflicting runtimes, STLs, linker flags and general brokenness can get in the way – of rebuilding KDE4 on Nevada while using the system packages. I installed a fresh nv104 build and started from there.
This evening, I consider the experiment a success (and the necessary changes have been pushed to the Mercurial repo). KDE4base-apps (and all its dependencies) runs on nv104 with only the stuff that’s really needed compiled into /opt/foss; for instance, sound through phonon / xine + gstreamer uses the system gstreamer and libogg. So I get that little twinkly startup sound, even – and phonon complains about switching from esd to sun output, but that’s something we’ll sort out in system integration or runtime testing.
So the rough guide is: if you have nv104 or later, optionally with CBE installed (you definitely need SFEpkgtool, CBEcmake and CBEyasm, plus some symlinks otherwise), and a fully patched SS12, then you can add –with-osol as a flag to your pktool arguments and it will try to build everything with a reduced set of dependencies. Since you’re still building stdcxx and Qt (until those are integrated by Sun this spring) it will take a while, but the end result is .. KDE4.
My normal workstation has an nVidia 8500GT with the proprietary 64-bit drvers; this just flies. The box I have newly built has an integrated ATI X1200 with the radeon drivers; this is worse than my laptop has, and it crawls. Locking Plasma widgets helps performance considerably, but desktop effects are all broken. I will have to look at Fedora 10 (Kushal had some effect, not to mention Rex and Kevin earlier this year) to see if Linux can Solve All My Problems (tm). Anyway, at this point it’s nice just to have a good desktop environment again, even if the graphics are slow; that’s not the DE’s fault.
In the spirit of the season (?) I’ll be pushing these packages out somewhere, although I don’t know where exactly. I will probably remove the existing Solaris x86 packages from BionicMutton and put the reduced-dependency ones there; if I am feeling really adventurous I’ll push IPS packages to Sun’s hosted contrib/. And then the packages can do something for you (assuming you’re one of the people who futzes with Free Software Operating Systens That Are Not Linux).
The Wayback Machine does not archive everything. Broken image links are marked with a 💔.