Construction de KDE 4 depuis trunk : Partie 1

KDE LogoIl y a plusieurs mois j’utilisais une Debian Lenny / Sid et j’avais l’habitude d’utiliser KDE 3.5.x. KDE 4.0 était sur le point d’être lancé, mais il n’était pas utilisable pour la production. J’ai donc décidé d’utiliser KDE 4, d’après les instructions du site TechBase. Aujourd’hui, je suis sous KDE 4.2.4 depuis les dépôts de Debian Sid. Néanmoins, le support de KDE 4 sous Debian est toujours un affreux désordre. De nombreux logiciels ne sont pas encore disponibles pour KDE 4 même si une version stable existe (par exemple, Amarok ou Kile). En plus, la stabilité du bureau de base est horrible et de nombreux bugs sont spécifiques à Debian (la version OpenSuse est très stable). Je ne veux pas quitter Debian car mon système est encore assez rapide et plus fiable que dans le passé avec openSUSE.

Un autre point est que j’ai besoin d’une version de développement (à partir de SVN) de KDE 4 et d’être en mesure de faire quelques tests. Après discussion avec de nombreux développeurs sur le canal IRC de KDE, j’ai été convaincu que la version SVN de KDE 4 (l’actuel trunk est la future version 4.4) est assez stable pour être utilisée pour la production.

Maintenant, voici mes projets…

La version de Qt fournis par Debian (4.5.1) a des dépendances avec Phonon, et j’ai besoin de construire une version SVN de Phonon (la version de Debian est trop ancienne). J’ai donc besoin de supprimer tous les logiciels dépendant de Qt, en utilisant aptitude ou synaptic sous une session non KDE (j’utilise Xfce pour ça). Notez tous les logiciels basé su Qt ou KDE doivent être fermées avant la désinstallation, sinon, vous pourriez avoir une étrange réaction de votre système. Lorsque aptitude ou synaptic vous montre la liste des logiciels qu’il est sur le point de désinstaller, il est préférable de le noter pour être capable de récupérer tout ce dont vous avez besoin. Vous aurez à compiler et installer tous ces logiciels manuellement.

Le site Web TechBase de KDE fournis de très bonnes instructions de compilation et d’installation, mais il propose de l’installation sous un compte utilisateur spécial ce que je ne veux pas. Je vais devoir faire autrement. D’abord, le meilleur moyen pour fixer des variables d’environnement pour tous les utilisateurs est de créer un script d’initialisation. Je décide de l’exécuter principalement dans le niveau d’exécution 3 car le serveur X peut être exécuté manuellement toute façon, même si nous ne sommes pas en niveau 5. J’ai donc créer le fichier “/etc/rc3.d/S40kde4”:

# Begin /etc/rc3.d/S40kde4
if [ ! -d /tmp/${USER}-kde4 ]; then
mkdir /tmp/${USER}-kde4
fi
export KDEDIR=/usr/
export KDEDIRS=$KDEDIR
export KDETMP=/tmp/$USER-kde4
export STRIGI_HOME=${KDEDIR}
export QT_PLUGINS_DIR=$KDEDIR/lib/kde4/plugins:$QTDIR/lib${QT_PLUGINS_DIR+:}$QT_PLUGINS_DIR
export PATH="${PATH}:${KDEDIR}/bin"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}${PKG_CONFIG_PATH+:}${KDEDIR}/lib/pkgconfig"

# End /etc/rc3.d/S40kde4

Vous pouvez modifier le chemin de base si vous le voulez, mais celui que j’utilise, respecte les directives Debian. Notez que la variable KDEHOME est définie par Debian dans un autre script. Il n’est donc pas sûr de la redéfinir. Lorsque le fichier est enregistré (vous devez être root), vous devez le rendre exécutable et il est aussi plus sûr de copier ce script pour l’exécuter dans certains autres niveau. Ceci est réalisé en exécutant les commandes suivantes en tant que root:

chmod -v +x /etc/rc3.d/S40kde4
cp -v /etc/rc3.d/S40kde4 /etc/rc2.d/
cp -v /etc/rc3.d/S40kde4 /etc/rc4.d/
cp -v /etc/rc3.d/S40kde4 /etc/rc5.d/

Il n’est pas utile de le copier dans les répertoires de niveau d’exécution 0, 1 ou 6 (respectivement arrêt, mono-utilisateur et redémarrer). Ensuite, vous devez mettre à jour votre profil général et la session utilisateur, si vous ne voulez pas redémarrer:

/etc/rc3.d/S40kde4
source /etc/profile

Avant de continuer sur l’une des prochaines étapes, vous devez installer toutes les dépendances de construction en suivant les étapes indiquées ici.

Si vous avez un message d’erreur à ce stade, vous devriez vérifier votre configuration et les étapes précédentes. Une fois ceci fait, vous êtes prêt à compiler, mais pour rendre la tache plus facile, il est préférable de créer un script de compilation automatique. J’ai fait celui-ci, appelé «kdemake.sh”:

# Begin /usr/bin/kdemake.sh
if test -n "$1"; then
                # Source folder is defined via command line argument
                srcFolder="$1"
        else
                # srcFolder is the current dir
                srcFolder=`pwd`

# default build directory is a build subdir inside the source folder
# -DCMAKE_INSTALL_PREFIX is forcing install prefix to the above definition
# -DKDE4_BUILD_TESTS=TRUE is optional and build test suite
# -DCMAKE_BUILD_TYPE=debugfull is optional and build full debugging information
cmake ${srcFolder} ${srcFolder}/build/ -DCMAKE_INSTALL_PREFIX=$KDEDIR -DKDE4_BUILD_TESTS=TRUE -DCMAKE_BUILD_TYPE=debugfull
cd ${srcFolder}/build/

# nice make -j3 force make à utiliser deux processeur (pour les dual core) remplacer par -j2 si vous avez un système mono-processeur
nice make -j3 && sudo make install
# note that sudo will ask you root password to install

# End /usr/bin/kdemake.sh

Rendre le script exécutable avec:

chmod -v +x /usr/bin/kdemake.sh

Si vous exécutez ce (très simple) script, il est supposé que tous les répertoires de construction ont été créées comme des enfants des répertoires contenant les sources… Alors, voici un exemple pour la compilation du paquet kdelibs:

svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs
cd kdelibs
mkdir build
kdemake.sh

Ceci ne sera fait que la première compilation, ensuite, il vous suffira de mettre à jour et compiler ce qui est nécessaire (c’est pourquoi cmake est tellement bon), en faisant ceci:

cd /kdelibs
svn up
kdemake.sh

Si, comme moi, vous préférez procéder manuellement, oubliez tout ceci. Par contre, c’est une bonne idée de créer une variable contenant les paramètres systématique de cmake (de cette manière vous pouvez passer d’autres paramètres comme vous le souhaitez). Pour moi, je l’appelle “CM”. L’autre chose très utile consiste à créer un alias pour make, appelée fmake pour “fast make”, lui permettant d’utiliser les deux processeurs de votre dual core si vous avez un (le problème est que fmake n’acceptera pas d’autres paramètres comme le ferais make à cause de la commande nice qui les prendrais pour elle) :

export CM=-DCMAKE_INSTALL_PREFIX=$KDEDIR -DKDE4_BUILD_TESTS=TRUE -DCMAKE_BUILD_TYPE=debugfull
alias fmake=nice make -j3

Vous pouvez ajouter ces lignes dans le script d’initialisation ci-dessus, de cette façon ce qui y est déclaré sera toujours disponible. Ensuite vous pourrez faire le même boulot qu’au dessus, de cette façon:

svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs
cd kdelibs
mkdir ../build
cd ../build
cmake ../kdelibs $CM
fmake
make install

Le système minimum de KDE est kdesupport, kdelibs, kdepimlibs et kdebase. Vous devrez le compiler dans cet ordre en raison des dépendances. Pour installer le bureau KDE complet vous devrez compiler kdeadmin, kdeaccessibility, kdeartwork, addons kdebindings, kdeedu, kdegames, kdegraphics, kdemultimedia, kdenetwork kdepim, kdeplasma, kdesdk, kdetoys, kdeutils, KDevelop, kdevplatform et kdewebdev. Vous pouvez compiler certains de ceux-ci ou tout dans aucun ordre particulier. La seule exception est kdevplatform requis par KDevelop et kdewebdev qui doit être compilé en premier. Après cela, vous pouvez explorer le WebSVN de KDE pour trouver plus de logiciels qui pourrais vous intéresser. Vérifier les répertoires playground, extragear, koffice pour la suite bureautique de KDE et l10n-kde4 pour la localisation dans votre langue.
Quand tout sera construit pour moi, testé et approuvé, la deuxième partie sera là comme rapport de l’expérience (de même qu’avec les vôtres via vos commentaires) et correction des erreurs contenues dans ces instruction.
That’s all folks… pour le moment !