Difference between revisions of "Getting Started/Increased Productivity in KDE4 with Scripts (fr)"

Jump to: navigation, search
(Premier jet traduction française)
 
(Pourquoi installer en tant que simple utilisateur et non comme root?)
Line 17: Line 17:
 
== Mise en place de l'environnement ==
 
== Mise en place de l'environnement ==
  
=== Pourquoi installer en tant que simple utilisateur et non comme root? ===
+
=== Pourquoi installer en tant que simple utilisateur et non comme root ? ===
*une seule commande pour compiler+linker+installer (voir même une seule touche dans votre éditeur), pas besoin de su/sudo
+
*une seule commande pour compiler, linker et installer (voir même une seule touche dans votre éditeur), pas besoin de su/sudo ;
*pas de risque de fichiers appartenant à root dans le répertoire de build, comme cela peut arriver quand un changement force make install à recompiler des fichiers
+
*pas de risque de fichiers appartenant à root dans le répertoire de build, comme cela peut arriver quand un changement force make install à recompiler des fichiers ;
*plus sur si quelque chose tourne mal (par exemple, utiliser le mauvais prefixe écraserait le système kde3)
+
*plus sur si quelque chose tourne mal (par exemple, utiliser le mauvais prefixe écraserait le système kde3) ;
*make install est plus rapide que "make && sudo make install" puisque les Makefiles sont parsés une fois seulement
+
*make install est plus rapide que "make && sudo make install" puisque les Makefiles sont parsés une fois seulement ;
*pas d'erreur de link pendant make install à cause d'entrées manquantes pour les variables d'environnement de root dans LD_LIBRARY_PATH. Mettre en place l'environnement déjà une fois est suffisament pénible, pourquoi le faire pour deux utilisateurs?
+
*pas d'erreur de link pendant make install à cause d'entrées manquantes pour les variables d'environnement de root dans LD_LIBRARY_PATH. Mettre en place l'environnement déjà une fois est suffisamment pénible, pourquoi le faire pour deux utilisateurs ?
  
 
=== Configuration pour le développement ===
 
=== Configuration pour le développement ===

Revision as of 19:33, 26 March 2011


Contents

Getting_Started/Increased Productivity in KDE4 with Scripts


Augmenter sa productivité à l'aide de scripts
Tutorial Series   Démarrer avec KDE
Previous   Getting Started/Build/KDE4
What's Next   n/a
Further Reading   Présentation Originale par David Faure

Résumé

Le temps est précieux. Ce tutorial présente l'expérience accumulée par David Faure sur la manière de tirer parti au mieux de son temps et de ses efforts en économisant les deux à l'aide de simples scripts et techniques lors du développement de KDE 4.

Mise en place de l'environnement

Pourquoi installer en tant que simple utilisateur et non comme root ?

  • une seule commande pour compiler, linker et installer (voir même une seule touche dans votre éditeur), pas besoin de su/sudo ;
  • pas de risque de fichiers appartenant à root dans le répertoire de build, comme cela peut arriver quand un changement force make install à recompiler des fichiers ;
  • plus sur si quelque chose tourne mal (par exemple, utiliser le mauvais prefixe écraserait le système kde3) ;
  • make install est plus rapide que "make && sudo make install" puisque les Makefiles sont parsés une fois seulement ;
  • pas d'erreur de link pendant make install à cause d'entrées manquantes pour les variables d'environnement de root dans LD_LIBRARY_PATH. Mettre en place l'environnement déjà une fois est suffisamment pénible, pourquoi le faire pour deux utilisateurs ?

Configuration pour le développement

Si vous voulez vraiment utiliser un compte séparé pour le développement, voyez ici.

Mais pour économiser du temps et de nombreux problèmes, il est fortement recommandé de tout faire avec votre utilisateur courant. Tout ce dont vous avez besoin est un moyen simple de basculer entre les environnements. Allez dans ~/kde/src/4, vous voulez être dans l'environnement kde4, pas vrai?

Pour cela, copiez http://web.davidfaure.fr/scripts/cd_function dans votre .zshrc ou .bashrc, et téléchargez http://web.davidfaure.fr/scripts/findup quelquepart dans votre $PATH (par exemple dans $HOME/bin ou /usr/local/bin).

Comme ça, lorsque vous entrez dans un répertoire, le fichier .my-setup sera recherché et sourcé (cela recherche aussi dans les répertoires parents jusqu'à le trouver, et cela ne source pas deux fois le même d'affilé)

Specifiez toutes les variables d'environnement spécifiques à KDE4 (elles seront détaillées plus tard dans cette page) dans ce fichier ~/kde/src/4/.my-setup, et faites de même pour les autres environnements si nécessaire (kde3, et partout où vous avez besoin de variables d'environnement propres à projet).

Exemples de chemins

Qt

Pour Qt, par habitude de l'époque kde3 et pour gagner du temps en évitant un "make install" après un changement, je recommande d'utiliser un répertoire pour les sources, le build, et l'install. Cela se fait en configurant Qt avec --prefix=$PWD. Ce n'est cependant pas obligatoire.

Qt-Path: ~/qt/4/qt-copy

KDE

C'était pratique dans kde3, c'est devenu obligatoire dans kde4: vous avez besoin de séparer les sources du build, c'est à dire les mettre dans des répertoires différents. Cela facilite le rebuild depuis zéro, en supprimant tous les fichiers générés -même les vieux que "make clean" ne supprimerait pas. Il est plus facile de regarder dans les fichiers sources (grep,ls ... etc). Cela permet d'avoir plusieurs arbres de build avec des paramètres différents, par exemple "debug" et "release".

  1. Source: ~/kde/src/[version]
  2. Build: ~/kde/build/[version]

Donc les sources des modules pour kde4 sont récupérés dans ~/kde/src/4/ et le build a lieu dans ~/kde/build/4/.

Variables d'environnement et autres fonctions utiles

Bash

Si vous utilisez bash, jettez un oeil à ce .bashrc. C'est un exemple de configuration pour bash qui met en place toutes les variables d'environnement pour KDE4 et d'autres fonctions utiles. Vous pouvez aussi regarder ces scripts qui sont basés sur le .bashrc ci-dessus.

Les étapes ci-dessous décrivent quelques-unes de ces fonctionnalités ainsi que des alternatives et des fonctions additionnelles.

En lire plus sur compiler un module KDE.

Navigation dans les répertoires

Pour aller et venir facilement entre le répertoire des sources et de build, vous pouvez utiliser les fonctions cs et cb qui marchent ainsi: pwd

~/kde/src/4/kdebase

cb && pwd

~/kde/build/4/kdebase
# notez que ce répertoire est créé s'il n'existe pas

cs && pwd

~/kde/src/4/kdebase

Un certain nombre de scripts liés à kde devront pouvoir faire la même chose. Faites donc: export OBJ_REPLACEMENT='s#/kde/src/#/kde/build/#' Cela permet au script makeobj de kdesdk de passer de src à build. Si vous faites aussi: alias make=makeobj alors vous pouvez simplement taper "make" depuis le répertoire des sources et le build pourra se faire. C'est aussi très utile dans les éditeurs - si votre vi ou emacs utilise makeobj comme commande make, vous pouvez compiler d'une simple touche.

De plus, pour une navigation rapide vers d'autres répertoires, il est très pratique de pouvoir écrire "cs 4/kdelibs" pour aller à ~/src/4/kdelibs, de n'importe où. Par exemple vous pouvez être dans ~/kde/src/4/kdebase/workspace/kcontrol et vous décidez maintenant de regardez kdecore... Pas besoin de taper une longue série de "../.." ou de recommencer depuis le sommet. Vous pouvez simplement taper cs 4/kdelibs/kdecore.

C'est faisable à l'aide des deux fonctions cs et cb definies dans le .bashrc.

Alternative

Le code suivant permet d'utiliser cd comme cs décrit ci-dessus: export CDPATH=.:~/kde/src L'avantage d'utliser zsh est que la complétion fonctionne correctement. Essayez cd 4/kdemul et appuyez sur Tab, cela va completer en 4/kdemultimedia, peu importe où vous êtes. Cela ne marche pas dans bash par contre -mais de toutes façons vous utilisez zsh dès à présnet, n'est-ce pas? :)

Les alias minimums pour cs et cb (comme au-dessus mais sans support pour des arguments) sont: alias cb='cd `pwd | sed -e s,/kde/src/,/kde/build/,`' alias cs='cd `pwd | sed -e s,/kde/build/,/kde/src/,`'

Revenir dans le répertoire précédent

Revenir dans le répertoire précédent peut facilement se faire avec zsh. Mettez ceci dans .zshrc: setopt AUTO_PUSHD alias p=popd et vous pouvez ensuite tapez "p" pour revenir à votre répertoire précédent, autant de fois que nécessaire (tapes "dirs -v" pour voir la liste des répertoires précédents).

CMake

Vous pouvez trouver ici plus d'informations sur CMake.

CMake et sous-répertoires

cd 4/kdelibs/kio/kio ; make => rien ne se passe, le Makefile est dans le répertoire parent.

Faites utiliser à l'éditeur un script enveloppe à la place:

  1. !/bin/sh

if test "$1" = "-k"; then shift; fi cmake_in_parent=0 if test -f CMakeLists.txt; then

   if ! grep -q kde4_add CMakeLists.txt; then
       cmake_in_parent=1
       cd ..
   fi

fi if test $# -gt 0; then

   arg="$1"
   if test "$arg" != install -a $cmake_in_parent -eq 1; then
       arg=`basename $PWD`/"$arg"
   fi

fi

jvalue=1 echo "calling makeobj -j $jvalue $arg" makeobj -j $jvalue $arg

Obtenir ce script: http://web.davidfaure.fr/scripts/makefromemacs.

CMake et dépendances

touch kdecore/kapplication.h
cd kdeui ; make

=> recompile kdecore d'abord

touch kdecore/kapplication.h
cd kdeui ; make kdeui/fast

=> recompile seulement kdeui

make install/fast

Mais notez que le code normal (sans /fast) est aussi utile dans d'autres cas: Par exemple éditez

kdelibs/kio/kio/kdirmodel.cpp

et le test unitaire correspondant

kdelibs/kio/tests/kdirmodeltest.cpp

Puis, pour recompiler à la fois libkio et le test unitaire, faites simplement "make kdirmodeltest" depuis kdelibs/kio/tests.

Liste des variables d'environnement KDE 4

Ceci liste toutes les variables d'environnement que vous devriez mettre en place, par exemple dans $KDESRC/4/.my-setup

Qt

export QTDIR=/d/qt/4/qt-copy export PATH=$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH export PKG_CONFIG_PATH=$QTDIR/lib:$PKG_CONFIG_PATH

KDE

export KDEDIR=/d/kde/inst/kde4 export PATH=$KDEDIR/bin:$PATH export LD_LIBRARY_PATH=$KDEDIR/lib:$LD_LIBRARY_PATH export QT_PLUGIN_PATH=$KDEDIR/lib/kde4/plugins export KDEDIRS=$KDEDIR

Utilisateur

export KDEHOME=$HOME/.kde4

Autres

export QTEST_COLORED=1 export KDE_COLOR_DEBUG=1

Compiler un module KDE

Manuellement

Si vous utilisez un ~/.bashrc cité précedemment il est très facile de compiler un module KDE (il est requis d'avoir préalablement récupérer le code source, par ex. via SVN. voir Using Subversion with KDE): cs KDE/kdebase cmakekde

Sinon vous devrez faire ceci: mkdir -p ~/build/KDE/kdebase && cd ~/build/KDE/kdebase cmake -DKDE4_BUILD_TESTS=TRUE -DCMAKE_BUILD_TYPE=debugfull \ -DCMAKE_INSTALL_PREFIX=~/kde ~/src/KDE/kdebase make

noframe
 
Warning
Ne jamais supprimer CMakeCache.txt puis taper make; toujours ré-executez cmake avec les bonnes options après avoir supprimer CMakeCache.txt.


Utiliser kdesvn-build

kdesvn-build est un script tout-en-un: il gère la récupération des sources ou leur mise à jour depuis subversion, l'éxecution de cmake, make, make install, et le stockage de l'output dans les fichiers logs.

Copiez kdesvn-buildrc-sample en $KDE_SRC/.kdesvn-buildrc, puis éditez-le. Options globales:

  • binpath - n'oubliez pas le chemin vers icecream, la variable d'environnement PATH ne compte pas
  • qtdir, svn-server, source-dir, build-dir, kdedir

Options par module:

module qt-copy
  # kdesvn-build ajoute le préfixe à $qtdir
  configure-flags [....]
  apply-qt-patches true
  make-options -j3 sub-src sub-tools
end module

module kdelibs
  make-options -DKDE4_BUILD_TESTS=TRUE -DCMAKE_BUILD_TYPE=debugfull
end module

Programmes KDE4 dans KDE3

Xephyr -screen 1240x768 -ac :4 &
export DISPLAY=:4
sh -x startkde 2>&1 | tee kde4.log
>./list-kde4-binaries
/d/kde/inst/kde4/bin/kwin, pid 6756
/d/kde/inst/kde4/bin/kpersonalizer, pid 6757
>./kill-kde4-binaries
Killing /d/kde/inst/kde4/bin/kwin, pid 6756
Killing /d/kde/inst/kde4/bin/kpersonalizer, pid 6757

Vous pouvez obtenir les scripts list-kde4-binaries et kill-kde4-binaries dans http://web.davidfaure.fr/scripts/


KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal