Qt 4.4 - crunchy on the outside
I’ve been crunching through Qt 4.4 (well, qt-copy from KDE4, which is copied again into the KDE Solaris SVN) in order to get it to compile. I previously blogged about errors that needed solving along the way. Thiago very helpfully responded, and over the past few days I’ve cracked most of the nut that is webkit. That doesn’t mean that Qt 4.4 is done, though, on OpenSolaris with the environment that the KDE-Solaris team has picked out.
The main issue remaining is the way in which third-party software is included. We have CLucene installed (0.9.19), but the Qt assistant uses the internal copy bundled in 3rdparty (I can’t tell quickly what version that is). The versions are different enough that they don’t mix, leading to cruft like this:
"/opt/foss/include/CLucene/config/CompilerGcc.h", line 65: Error: A declaration does not specify a tag or an identifier.
"/opt/foss/include/CLucene/config/CompilerGcc.h", line 65: Error: Use ";" to terminate declarations.
"/opt/foss/include/CLucene/config/CompilerGcc.h", line 65: Error: A declaration does not specify a tag or an identifier.
"/opt/foss/include/CLucene/StdHeader.h", line 62: Error: #error "Neither unistd.h or (io.h & direct.h) were available".
Here the fix is to take out the explicit -I/opt/foss/include that points to where all our other dependencies are installed. On systems where system clucene is installed in /usr (or
somewhere else in the compiler’s standard search path) the paths used during the Qt compile take precedence, but here our “system” include directory sneaks in ahead of the Qt ones.
For the purposes of our packaging, this means editing one more Makefile after configure. Not a big deal, really, but something that makes me wish for a CLucene configure check.
Speaking of checks, I suppose it’s time for a brain check, because having spent a day fixing up webkit, I finally discovered that I was fixing webkit for Cstd, the old and broken STL on Solaris and not for stdcxx, the new and doesn’t-need-fixing STL that KDE-Solaris uses.