Yesterday I massaged KDE PIM into shape for (Open)Solaris. That means it compiles with the Sun Studio 12 compiler (which is more picky than gcc by far) with the RogueWave STL. The fixes that I committed to KDE SVN were roughly of three types:

  • Include files which are also directories, <QtDBus> in particular, are not handled properly. This is a compiler bug, but including <QtDBus/QtDBus> is a good workaround.
  • Calling the constructor of class A as A::A(). This works in gcc, but I don’t think it’s standard C++ (then again, I haven’t particularly looked at the standard about this either.)
  • Disambiguating some of the math function calls which have overloads for float and for double, but are called with int arguments.

All that is in KDE SVN because it doesn’t clutter up the codebase or change anything for others. Then there is a handful of things that stay in KDE-Solaris SVN as patches against KDE’s source because they do weird things.

  • pid_t is not a type supported by KConfig (I think it maps to long and KConfig only does int and long long).
  • In KNode I had to make some changes like this
         - a->Content::clear();
         + a->KNArticle::Content::clear();

    where I didn’t experiment with other possibilities than fully specifying the name of the method to call. I didn’t commit this because it looks a little messy, and it is shortly before the tagging.

  • KPilot has some very weird template issues, and I haven’t been able to coax a meaningful error message out of the compiler yet. My solution is to wrap a bunch of methods with inline functions that look like int _foo(A *a, B b) { return foo(a,b); } and use the wrappers as template parameters. I don’t see a difference, but the compiler does.
  • Finally the GPG things in KDE PIM have some nasty ambiguities. I have hackishly removed them, while awaiting a larger merge of GPG improvements from Jaroslaw and the KDAB folk. Obviously all these hacks can’t go into KDE SVN itself.

However, this does give us kdebase – with the workspace, konsole, dolphin, konqueror – and kdepim – for email, addresses, datebook – as a basic desktop for “regular folk” use. Actually it’s pretty much all the KDE applications I myself use. Give me a terminal – no, give me konsole – and I can be busy all day.

Even though I see KDE4 almost solely through VNC (I haven’t compiled it under FreeBSD for a while) I must say: wow . That new startup splash is something very very pretty, even though a slow connection. I suppose I have about 24 hours to fix the no-phonon-backend popup bug before the tagging, so that’s my next priority. Then it’s back to dealing with dependencies to bring out the best of KDE4 functionality. Like xine – Stefan has apparently ported nearly all of the weird-ass gas-isms in it to SS12. Then we can get down to the serious business of runtime testing.

[[ Yes, I know that KDE PIM will not release with KDE 4.0, because many of the applications (KPilot included) are just not ready. It’s still good to have it compiling and ready to run when the applications do mature. ]]

[[ For parting, Amiel’s best line of late: “daddy, you have to use the arrow keys to put me to bed.” ]]