As one might imagine, the main packaging issues specific to Kubuntu are with KDE and Qt.
Kubuntu programs are mostly KDE ones. Therefore, they need to
Build-Depend on kdelibs4-dev
. Since KDE's
focus is to have programs interacting, some programs might also need to
Build-Depend on other parts of KDE, such as
kdepim-dev
. Be sure to get the list of
necessary dependencies for your program.
KDE has some specific paths. Most settings for KDE are installed in either
/etc/kde3/
or /usr/share/apps/
.
It is important to note that the general desktop files for KDE should go
to /usr/share/applications/kde/
. The install path
for the desktop files should be fixed if they do not use this (except for
desktop files like service menus).
KDE desktop files also need specific entries to fit in the KMenu. A minimal desktop file for a KDE program could be something like this:
[Desktop Entry] Encoding=UTF-8 Name=Kfoo Name[xx]=Kfoo GenericName=Bar description Exec=kfoo Icon=kfoo Terminal=false Categories=Qt;KDE;Utility;
Note that the Categories field must begin with Qt;KDE;. There are specific desktop file entries for KDE programs and modules that allow su to declare the given programs as KCModules or autostart them when logging in.
The Ubuntu translation website, Rosetta, now supports KDE, which means KDE packages need to support Rosetta by generating .pot template files for translators. If you use cdbs in Dapper, your package should now automatically build and check for a .pot file in po/ directory.
You will need the kdepot patch (or similar; it may not apply cleanly depending on the age of the admin directory).
If your package uses debhelper or cdbs and includes its own kde.mk file, you need to add the rules yourself.
For cdbs, add these lines to debian/rules:
common-post-build-arch:: mkdir -p po XGETTEXT=/usr/bin/kde-xgettext sh admin/cvs.sh extract-messages clean:: rm -rf po
For debhelper, add the following to the end of the install rule:
mkdir -p po XGETTEXT=/usr/bin/kde-xgettext sh admin/cvs.sh extract-messages
Also for debhelper, add the following to the clean rule:
rm -f po/*.pot