This post is meant to provide an overview of how the KDE4.2 ports in Kongoni are structured, how they differ from Robbie’s original SlackBuild scripts and how they are (best) installed. Furthermore I hope that this will also provide a deeper level of insight into the overall workings of the kongoni ports tree and help others after the baseline release who wish to work on other big port collections (such as Gnome for example).
Beneath the kongoni ports tree lies a desktop directory, this directory currently contains only one subdirectory kde4 but we hope to expand it with other desktops at a later stage.
There are basically four directories below that: deps, kde, kdemore and kongoni_kde_desktop.
The last one is important because it’s in fact a port. It holds a meta package that while devoid of almost any content of it’s own (it literally just installs some basic docs like a README) depends on all the packages that make up the KDE desktop as it will ship in the release disks.
The current kongoni_kde_desktop package is versioned: 4.1.85.1 the first three numbers (4.1.85) indicating the KDE version it is built around, the final one the specific version of the kongoni kde desktop built on that. Thus if we add theme packages or fixes, only the last number needs to change to allow a user to upgrade only what has been modified.
Portpkg has no ordering for dependencies and will, lacking other information, simply install the in alphabetic order, so this by itself is not enough to ensure the ports are built in the right order, it is just enough to make sure the right ports get built. Each ports own internal dependencies come into play for determining build order and the ports have carefully constructed dependencies on each other to ensure that each builds before the ones that need it.
The simplest of the other three directories is kdemore. This directory holds those KDE ports that, while part of the official KDE release, is simply too big or too niche-use to go into the live cd. These packages cannot be built without the rest of KDE there and thus they all have a listed dependency on kongoni_kde_desktop but kongoni_kde_desktop will not make any attempt to build or install them. Those who want a particular package from this set, can easily do so with a single command: portpkg -n PACKAGENAME
The packages in kdemore are: kdeaccessibility, kdeartwork, kdepim, kdeutils
All of which are useful packages that many people use, but also packages that not everybody needs and some of which like kdeartwork take up a lot of disk space. Since we are intending to do our own theme for the final release, it makes little sense to ship all the stock artwork in the base install, but it does make sense to keep it available for those who want it. The default theme and artwork is included in kdebase anyway.
Next up is deps, everything in deps is installed by kongoni_kde_desktop, this location came from the fact that these packages were kept separate in slackware as they are not part of the default slackware distribution. However most of them should ultimately move up to the base or libs directories. Currently the only known bugs in the ports tree are in fact in this set, specifically with boost and QScintilla. The bug in question is that both these packages do things with their build processes (not in the port scripts, in their makefiles) which break when run under fakeroot. They install fine if you run the SlackBuild script as root, but currently the ports cannot finish building. These need to be fixed before we can reorganize the deps into their appropriate locations higher up in the tree.
Finally, there is the kde directory, this one holds everything our default desktop needs to have installed to function properly. It is basically the remainder of the KDE tree, we had a lot of build issues inside the ports with earlier version of KDE but the 4.1.85 packages have built brilliantly. The packages in kde are:
guidance-power-manager, kdeadmin, kdebase-runtime, kdebase-workspace, kdebase, kdebindings, kdegraphics, kdelibs, kdemultimedia, kdenetwork, kdepimlibs, kdeplasma-addons, lancelot
Some of these are of interest for further discussion. The first is guidance-power-manager which is in fact not part of the stock KDE distribution but comes from extragear. This is included in the slackware version upstream too and for good reason, it provides a solid power management suite for laptops built on… well solid. There is room for some debate about kdemultimedia and ultimately it may actually be moved to kdemore though it does contain the awesome dragon movie player and unless I were to stumble across a truly phenomenal alternative kde movie player, I am likely to keep it here (though of course it could become a case of splitting dragon out into a separate package – I’ll hash this debate out with my fellow developers after the baseline release.
You may wonder why kdepimlibs is in kde but kdepim is in kdemore. The reason is in fact a simple matter of dependencies. You need kdepimlibs to build support for PIM interaction in several other parts of the suite, even if you don’t install the PIM utilities it’s good to have the support for them in built into the desktop so that those who do, can get their full benefit.
Another possible trim-out is kdeplasma-addons, having plenty of nice plasmoids available in the live cd is a good way to make the desktop shiny, but it’s also a rather big package and the very important core plasmoids like folderview and the panel are in the kdebase-workspace anyway. So it is quite likely that ultimately this may move to kdemore, depending on how many of the plasmoids in there actually get used in the theme (again, splitting it up into smaller packages for this purpose is a future possibility).
Finally, there is lancelot. Lancelot is Ivan Kucic’s alternative menu system for KDE which I always intended to be the default on kongoni because it’s a really awesome menu system even if it’s not part of the stock KDE distribution. Right now it’s dependency has been removed from kongoni_kde_desktop however due to a version incompatibility in lancelot (the stable release can only build on 4.1 and the svn trunk release cannot build on the beta as it needs features added to trunk later). This should be a fairly simple problem to resolve in kongoni_kde_desktop 1.4.85.2 but in the meantime I did not wish to hold up the entire process.
I hope that this overview of what lies in the KDE ports give an idea of how things are structured, the thinking behind the structures and of course why it took so long to get this far. The good news is maintaining the ports from here on in will be fairly simple and this was the bulk of the effort. I would go so far as to say that getting the KDE ports working fine was the single biggest task in kongoni I would ever do (well have done by now) without help – since I could not release the baseline without it, it was impractical to get help on it but the remaining work on the baseline is very small and once it is out, many hands are waiting to help pick up the load.