SPARCing annoyance
Most of the dependencies for KDE4 have compiled on SPARC now. That’s a pretty big collection of software, including BOOST, Apache stdcxx, and Qt. Doing this run has highlighted a few issues with our patches (remember, there’s no need to futz with the definition of float_t in clucene on SPARC; unlike x86 there’s just one ). The SPARC build failed to get through kdesupport, tough, because of .. missing symbols in clucene. That’s a big annoyance, to be sure. Getting all the variations on the theme of architecture and system release done takes a lot of time and hardware and discipline. Discipline is something the rag-tag collection of machines under my desk doesn’t have.
Anyway, I’ve switched off SPARC builds again for the time being as I want to concentrate on KDE itself, not the dependencies, and that usually means that using amd64 hardware is both faster and more convenient to use.
Compiler requirements have been bumped a little: you need SS12 with patch 124864-03 now. One of the thing that fixes is that directories are not mistaken for include files of the same name, e.g. #include <QtGui>
now includes the file QtGui/QtGui instead of bailing out while trying to read the directory. This helps a lot with Qt includes, and means I won’t be doing any more annoying trivial commits to work around that. That’s good.
Another thing that has been improved is library binding. We’re trying to use the BIND_NOW flag to make sure that every library and executable binds to its dependency .so’s in one place. That prevents playing LD_LIBRARY_PATH tricks, but also avoids pulling in the wrong libfreetype.so.6 when you’ve got two of them (or more: there’s no libsuffix for 32-bit libs). Only gettext remains to be fixed with BIND_NOW. Usually that’s a matter of fiddling with the build system (auto* and libtool) to make them not eat the important linker flags). So I expect that to be done soon as well.
A positive side-effect of the BIND_NOW flags is that we can drop some of the CMakeLists.txt patches for Solaris. See, we do use linker flags that suppress transitive use of .so’s – you have to list all of them when linking except when BIND_NOW is in effect. So we have little patches like linking Soprano with krb5 (because Soprano uses redland which uses krb5) which can be dropped now. That in turn speeds up build time turnaround (when I’m fixing things in a KDE SVN module I keep building over an over again) because there’s fewer patches (re)applied every time. It’s a timestamp thing, and especially fiddling around with CMakeLists.txt all the time causes a big slowdown.
Shane of the FSFE continues his KDE4-experience-blog with being generally happy, though sometimes left out regarding documentation or some kind of introduction to what all this shininess does. I’ve said it before: I generally agree with his findings. But last night I had some kind of realization: here I was, just getting my work done on a Solaris machine running KDE4. As if that was the most normal thing in the world (and as long as I don’t hit ^C, it is). That tells me we’ve come a long way, baby.
The Wayback Machine ⏲ does not archive everything. Broken links are marked with a 💔.