It was a very long story getting to a functional KDE 4.2.4 on BeleniX. The amount of effort needed to integrate KDE 4 and iron out issues is immense indeed and needed months of effort not least because of the humongous dependency tree of KDE 4. Of course the work is still ongoing and there are still bugs to fix and update to the latest 4.3 release. Thanks to several guys like Sriram Narayanan, Kunal Ghosh, Kaya Saman and others who helped to test and find bugs/workarounds. Of course all this is part-time (weekend, evening) effort outside of my day job.
The above screenshot shows KDE 4.2.4 desktop on BeleniX running Konqueror with Webkit as the rendering engine, Krdc, and Lotus Notes inside Wine with the Clock from Google Gadgets.
One of the simplifying but interesting things was the usage of Gcc 4.4 and the new Graphite optimizations in some places. In addition I borrowed patches and build recipes from the KDE-Solaris teams efforts and the Fedora repository. There were many challenges and there is still quite a bit of work to do. There are several patches that I’d have to submit to upstream KDE projects.
One of the most recent adventures was to get Amarok2 built properly. At first, I needed MySQL embedded, so I hacked the MySQL 5.0 Makefile in the SFW consolidation to build it. However Amarok would refuse to start first giving symbolic errors and then, after a few hacks, coring somewhere in libQtCore after trying to initialize Innodb. The attempt to initialize Innodb confused me till I read the Amarok2 build guide which states 5.1 is needed. So back to the SFW repository when it hit me again. SFW repo compiles using Studio and MySQL uses C++ stuff. Arrgh. I spent a whole day creating a new Spec file for building MySQL 5.1 with Gcc4. That was quite challenging to get right and also get embedded MySQL as a shared lib. Anyway the Innodb thing went away after that but coring persisted.
It was coring because the dynamic_cast operator was failing to cast a SqlCollection Object to one of it’s parents, SqlStorage. Weird! Eventually I played with the compiler options and changed -march=pentium3 to -march=pentiumpro, added -frtti and finally dynamic_cast started working again. Then the Amarok2 screen finally came up and then it cored again after 10 seconds. This time embedded MySQL was linked into Amarok2 as a static lib, so I rewhacked the Spec file to build a shared lib and got it right after several attempts. Finally made a silent prayer and had Amarok2 working without coring. This can be a Gcc 4.4.0 issue as well. We will be moving to Gcc 4.4.1 shortly with the patch to let it build Wine added.
BeleniX uses package from the SFW repo. One of the onging activities is to migrate package builds from SFW to spec files in BeleniX CVS repo and build with Gcc. The SFW gate packaging is weird in some respects. Not all features are enabled for some packages like no embedded server in MySQL. In addition the most horrible thing is that “11.11” is used as the package version for every package! What sense does it make to do this ? It requires ugliness in spkg version comparison. There should be other ways to tie SFW package builds to ON build releases.
Another intention of ours is to get a working Firefox 3.5.x build on BeleniX using Gcc4.4. We are able to get a working debug enabled build but the release build crashes in a stub function. In addition since SUN Java is being used, the Java plugin won’t work in a Gcc Firefox build on OpenSolaris. This is because SUN Java for osol is built using SUN Studio C++ compiler. We will have to investigate getting OpenJDK built using Gcc4 on opensolaris. We do have XULRunner built however since that is needed by Google Gadgets.
Well that is enough for now, more stories later.