website annotate fr/doc/cookbook/receipts.html @ rev 669

Move year to slitaz.css
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Oct 30 21:52:02 2010 +0200 (2010-10-30)
parents 803de7c72d06
children 2120105cc07b
rev   line source
pankso@371 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
pankso@371 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
pankso@371 3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
pankso@371 4 <head>
pankso@371 5 <title>SliTaz Cookbook - Receipts (Recettes des paquets)</title>
pankso@371 6 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
pankso@371 7 <meta name="description" content="SliTaz packages receipt la recette de construction d'un paquet slitaz tazpkg tazwok" />
pankso@371 8 <meta name="expires" content="never" />
pankso@371 9 <meta name="modified" content="2007-12-24 17:00:00" />
pankso@371 10 <meta name="publisher" content="www.slitaz.org" />
pankso@371 11 <meta name="author" content="Christophe Lincoln"/>
pankso@371 12 <link rel="shortcut icon" href="favicon.ico" />
pankso@371 13 <link rel="stylesheet" type="text/css" href="book.css" />
pankso@371 14 </head>
pankso@371 15 <body bgcolor="#ffffff">
pankso@371 16
pankso@371 17 <!-- Header and quick navigation -->
pankso@371 18 <div id="header">
pankso@371 19 <div align="right" id="quicknav">
pankso@371 20 <a name="top"></a>
pankso@371 21 <a href="wok-tools.html">Wok &amp; tools</a> |
pankso@371 22 <a href="index.html">Table des matières</a>
pankso@371 23 </div>
pankso@371 24 <h1><font color="#3E1220">SliTaz Cookbook</font></h1>
pankso@371 25 </div>
pankso@371 26
pankso@371 27 <!-- Content. -->
pankso@371 28 <div id="content">
pankso@371 29 <div class="content-right"></div>
pankso@371 30
pankso@371 31
pankso@371 32 <h2><font color="#DF8F06">Receipts (Recettes des paquets)</font></h2>
pankso@371 33 <p>
pankso@371 34 Ce document décrit les possibilités offertes par les recettes utilisées par
pankso@371 35 Tazwok pour compiler et générer des paquets pour SliTaz et tazpkg, via
pankso@371 36 (<a href="wok-tools.html">le wok et les outils</a>). La recette d'un paquet
pankso@371 37 est aussi utilisée par Tazpkg pour installer/désinstaller et donner des
pierre@498 38 informations à propos d'un paquet .tazpkg (package). Chaque recette commence
pierre@498 39 par un commentaire en anglais :
pankso@371 40 </p>
pankso@371 41 <pre class="script">
pankso@371 42 # SliTaz package receipt.
pankso@371 43 </pre>
pankso@371 44
pankso@371 45 <h3>Variables de base</h3>
pankso@371 46 <p>
pankso@371 47 Les 5 premières variables devraient toujours être présentes et configurées.
pierre@498 48 Elles configurent respectivement le nom du paquet ($PACKAGE), sa version, sa
pankso@371 49 catégorie, une courte description et le nom du mainteneur. Exemple pour le
pankso@371 50 paquet du gestionnaire de fichiers Clex :
pankso@371 51 </p>
pankso@371 52 <pre class="script">
pankso@371 53 PACKAGE="clex"
pankso@371 54 VERSION="3.16"
pankso@371 55 CATEGORY="base-apps"
pankso@371 56 SHORT_DESC="Text mode file manager."
pankso@371 57 MAINTAINER="pankso@slitaz.org"
pankso@371 58 </pre>
pankso@371 59
pankso@371 60 <h3>Variables optionnelles</h3>
pankso@371 61 <p>
pierre@498 62 Tazwok sait aussi utiliser diverses variables optionnelles si elles existent, il
pankso@371 63 peut par exemple, utiliser un autre nom pour le paquet source. Il y a aussi des
pankso@371 64 variables qui sont utilisées par Tazpkg pour gérer les dépendances ou donner
pankso@371 65 des informations sur le paquet.
pankso@371 66 </p>
pankso@371 67 <p>
pankso@371 68 <a name="depends"></a>
pierre@498 69 <code>$DEPENDS</code> : spécifie les dépendances, il peut y avoir plusieurs
pankso@371 70 paquets séparés par un espace ou sur plusieurs lignes. Cette variable est
pankso@371 71 principalement utilisée par Tazpkg lors de l'installation du paquet et Tazwok
pankso@371 72 pour construire de gros paquets comme Xorg. Exemple pour Clex qui dépend du
pankso@371 73 paquet ncurses :
pankso@371 74 </p>
pankso@371 75 <pre class="script">
pankso@371 76 DEPENDS="ncurses"
pankso@371 77 </pre>
pankso@371 78 <a name="build_depends"></a>
pierre@498 79 <code>$BUILD_DEPENDS</code> : spécifie les dépendances de compilation, séparées
pankso@371 80 par un espace ou sur plusieurs lignes. Cette variable est utilisée par Tazwok
pierre@498 81 lors de la cuisson d'un paquet. Exemple :
pankso@371 82 </p>
pankso@371 83 <pre class="script">
pankso@371 84 BUILD_DEPENDS="ncurses-dev"
pankso@371 85 </pre>
pankso@371 86 <p>
pankso@371 87 <a name="suggested"></a>
pierre@498 88 <code>$SUGGESTED</code> : liste les paquets pouvant être utiles sans pour
pankso@371 89 autant être indispensables. Ils serviront à activer des fonctionnalités
pankso@371 90 optionnelles.
pankso@371 91 </p>
pankso@371 92 <p>
pankso@371 93 <a name="tarball"></a>
pierre@498 94 <code>$TARBALL</code> : l'archive source avec son extension (tar.gz, tgz ou
pankso@371 95 tar.bz2). En générale, les variables $PACAKAGE et $VERSION sont utilisées et
pankso@371 96 il suffit de modifier l'extension, cela permet de mettre à jour le paquet en
pankso@371 97 ne modifiant que la variable de la version. Exemple générique (voir aussi
pankso@371 98 la variable $SOURCE) :
pankso@371 99 </p>
pankso@371 100 <pre class="script">
pankso@371 101 TARBALL="$PACKAGE-$VERSION.tar.gz"
pankso@371 102 </pre>
pankso@371 103 <p>
pankso@371 104 <a name="web_site"></a>
pierre@498 105 <code>$WEB_SITE</code> : le site web officiel du paquet. Il se peut que
pankso@371 106 certaines bibliothèques n'aient pas de site Web, dans ce cas il n'y a pas
pankso@371 107 besoin de spécifier d'URL. Tazwok et Tazpkg s'attendent a trouver l'URL
pankso@371 108 complet avec le http :
pankso@371 109 </p>
pankso@371 110 <pre class="script">
pankso@371 111 WEB_SITE="http://www.clex.sk/"
pankso@371 112 </pre>
pankso@371 113 <p>
pankso@371 114 <a name="wget_url"></a>
pierre@498 115 <code>$WGET_URL</code> : l'url de téléchargement de l'archive source. En
pierre@498 116 générale la variable $TARBALL devrait être utilisée pour faciliter la mise
pankso@371 117 à jour du paquet en ne modifiant que $VERSION. Le fichier de configuration de
pierre@498 118 Tazwok configure aussi, par défaut, 3 variables de miroir souvent utilisées.
pierre@498 119 $GNU_MIRROR pour les miroirs GNU, $SF_MIRROR pour SourceForge et XORG_MIRROR
pierre@498 120 pour le miroir du serveur graphique Xorg. Exemple pour Clex :
pankso@371 121 </p>
pankso@371 122 <pre class="script">
pankso@371 123 WGET_URL="http://www.clex.sk/download/$TARBALL"
pankso@371 124 </pre>
pankso@371 125 <p>
pankso@371 126 <a name="config_files"></a>
pierre@498 127 <code>$CONFIG_FILES</code> : certains paquets fournissent des fichiers de
pankso@371 128 configuration à adapter. La variable $CONFIG_FILES donne la liste de ces
pankso@371 129 fichiers qui pourront être sauvegardés par la commande 'tazpkg repack-config'.
pankso@371 130 Ces fichiers ne seront pas écrasés lors de l'installation du paquet s'ils
pankso@371 131 existent déjà et le paquet pourra être récréé avec 'tazpkg repack' même s'ils
pankso@371 132 ont été modifiés par la suite. Exemple pour Netatalk :
pankso@371 133 </p>
pankso@371 134 <pre class="script">
pankso@371 135 CONFIG_FILES="/etc/netatalk/AppleVolumes.* /etc/netatalk/*.conf"
pankso@371 136 </pre>
pankso@371 137 <p>
pankso@371 138 <a name="wanted"></a>
pierre@498 139 <code>$WANTED</code> : il y a des paquets SliTaz qui sont dépendants de la
pankso@371 140 compilation d'un paquet source. La recette de ces paquets ne nécessite pas de
pankso@371 141 règles de compilation, une variable $WANTED peut être utilisée pour copier des
pierre@498 142 fichiers depuis les sources du paquet voulu, en utilisant la variable $src.
pankso@371 143 </p>
pankso@371 144 <p>
pankso@371 145 <a name="source"></a>
pierre@498 146 <code>$SOURCE</code> : il se peut que le nom du paquet Tazpkg diffère du nom
pankso@371 147 du paquet source. C'est le cas par exemple pour les paquets d'Xorg, le nom
pankso@371 148 Tazpkg des bibliothèque X11 est 'xorg-libX11' et le nom du paquet source est
pierre@498 149 libX11. Cette astuce permet aussi de continuer à utiliser les variables
pankso@371 150 $src et $_pkg lors la cuisson d'un paquet. A noter que dans le cas libX11,
pankso@371 151 le nom de l'archive source devient $SOURCE-$VERSION.tar.gz.
pankso@371 152 </p>
pankso@371 153 <p>
pankso@371 154 <a name="provide"></a>
pierre@498 155 <code>$PROVIDE</code> : certains paquets offrent la même fonctionalité. Par
pankso@371 156 exemple, le serveur web de Slitaz fût dans un premier temps lighttpd.
pankso@371 157 Maintenant apache est aussi disponible. Tous les paquets dépendants d'un
pankso@371 158 serveur web font référence à lighttpd. La ligne <code>PROVIDE="lighttpd"</code>
pierre@498 159 de la recette d'apache signale qu'il peut se substituer à lighttpd, c'est-à-
pankso@371 160 dire qu'un paquet dépendant de lighttpd n'a pas à l'installer si apache est
pankso@371 161 déjà installé.<br>
pankso@371 162 Mais cette alternative peut avoir des conséquences sur le choix des paquets qui
pankso@371 163 en dépendent. Le paquet php est prévu pour fonctionner uniquement avec lighttpd.
pankso@371 164 C'est php-apache qu'il faut installer avec apache. La ligne
pankso@371 165 <code>PROVIDE="php:apache"</code> dans la recette de php-apache indique qu'il
pankso@371 166 faut substituer php-apache à php si apache est installé.
pankso@371 167 Les paquets dépendants de php installeront alors php-apache ou php selon le
pankso@371 168 serveur web installé.<br>
pankso@371 169 Cette variable permet aussi d'avoir un paquet compilé avec différentes options.
pankso@371 170 La ligne <code>PROVIDE="epdfview:cups"</code> du paquet epdfview-cups permet
pankso@371 171 d'installer un package epdfview compilé avec le support de l'impression par
pankso@371 172 cups.
pankso@371 173 On peut aussi définir des paquets virtuels avec cette variable. Les lignes
pankso@371 174 <code>PROVIDE="libgl"</code> du paquet <code>mesa</code> et
pankso@371 175 <code>PROVIDE="libgl:nvidia"</code> du paquet <code>nvidia-glx</code>
pankso@371 176 définissent le paquet virtuel <code>libgl</code> qui sera une version
pankso@371 177 optimisée lorsque le paquet <code>nvidia</code> est installé.
pankso@371 178 </p>
pascal@539 179 <p>
pascal@539 180 <a name="self_install"></a>
pascal@539 181 <code>$SELF_INSTALL</code> : certains paquets utilisent des commandes
pascal@539 182 fournies par le paquet lui-même dans la fonction post_install.
pascal@539 183 Pour installer ce paquet dans un répertoire autre que la racine et utiliser
pascal@539 184 ces commandes, il faut qu'il ait déjà été installé dans / auparavent.
pascal@539 185 La ligne <code>SELF_INSTALL=1</code> signale à tazpkg cette particularité.
pascal@539 186 </p>
pankso@371 187
pankso@371 188 <h3>Variables générées automatiquement par tazwok</h3>
pankso@371 189 <p>
pierre@498 190 Certaines variables ne sont connues qu'au moment de la cuisson du paquet ou
pankso@371 191 juste après la cuisson. Tazwok se charge de les ajouter au receipt
pankso@371 192 automatiquement.
pankso@371 193 </p>
pankso@371 194 <p>
pankso@371 195 <a name="packed_size"></a>
pierre@498 196 <code>$PACKED_SIZE</code> : taille du ficher tazpkg.
pankso@371 197 </p>
pankso@371 198 <p>
pankso@371 199 <a name="unpacked_size"></a>
pierre@498 200 <code>$UNPACKED_SIZE</code> : taille utilisée par le paquet après son
pankso@371 201 installation.
pankso@371 202 </p>
pankso@371 203 <p>
pankso@371 204 <a name="extraversion"></a>
pierre@498 205 <code>$EXTRAVERSION</code> : certains packages ont besoin de 2 numéros de
pankso@371 206 version distincts. C'est le cas des modules ajoutés au noyau linux comme
pankso@371 207 squashfs car le module produit dépend aussi de la version du noyau avec
pankso@371 208 laquelle il a été compilé. Dans ce cas EXTRAVERSION contient la version du
pankso@371 209 noyau et tazwok le détermine à partir du contenu de /lib/modules.
pankso@371 210 </p>
pankso@371 211
pankso@371 212 <h3>Variables utilisables dans les fonctions</h3>
pankso@371 213 <p>
pankso@371 214 Tazwok configure plusieurs variables permettant de faciliter la compilation et
pankso@371 215 la construction de paquets Tazpkg. Ces variables sont gérées automatiquement
pankso@371 216 par Tazwok en utilisant les informations contenues dans les recettes, elles
pierre@498 217 peuvent être utilisées par les fonctions compile_rules et genpkg_rules décrites
pankso@371 218 toutes deux dans le chapitre : Fonctions.
pankso@371 219 </p>
pankso@371 220 <p>
pankso@371 221 <a name="src"></a>
pierre@498 222 <code>$src</code> : définit le chemin vers le répertoire des sources désarchivées.
pankso@371 223 </p>
pankso@371 224 <p>
pankso@371 225 <a name="pkg"></a>
pierre@498 226 <code>$_pkg</code> : définit le chemin vers les binaires compilés et installés
pankso@371 227 via la commande 'make DESTDIR=$PWD/_pkg install'. Cette variable est utilisée
pankso@371 228 pour copier les fichiers générés et créer des paquets tazpkg.
pankso@371 229 </p>
pankso@371 230 <p>
pankso@371 231 <a name="fs"></a>
pierre@498 232 <code>$fs</code> : définit le chemin vers le pseudo système de fichier (fs)
pankso@371 233 propre à chaque paquet. Le 'fs' d'un paquet correspond à la racine du système
pankso@371 234 cible, un binaire tel que Clex sera par exemple dans $fs/usr/bin/clex, à noter
pankso@371 235 qu'il faut créer les répertoires nécessaires via la fonction genpkg_rules()
pankso@371 236 avant de copier des fichiers.
pankso@371 237 </p>
pankso@371 238 <p>
pankso@371 239 <a name="configure_args"></a>
pierre@498 240 <code>$CONFIGURE_ARGS</code> : cette variable est définie dans le fichier de
pankso@371 241 configuration de Tazwok (tazwok.conf), elle permet de spécifier des
pankso@371 242 arguments d'optimisation générique lors de la configuration d'un paquet.
pankso@371 243 Par défaut l'architecture est i486.
pankso@371 244 </p>
pankso@371 245
pankso@371 246 <h3>Fonctions</h3>
pankso@371 247 <p>
pankso@371 248 Une recette peut contenir 4 fonctions. Tazwok sait traiter les fonctions
pankso@371 249 contenant les règles de compliation (compile_rules) et les règles servant à
pankso@371 250 générer un paquet Tazpkg (genpkg_rules). Ces fonctions peuvent contenir toutes
pankso@371 251 sortes de commandes GNU/Linux standards tels que sed ou patch et les variables
pierre@498 252 configurées automatiquement. A noter que ces deux fonctions utilisent les
pankso@371 253 commandes du Cookbook de SliTaz : http://www.slitaz.org/doc/cookbook/
pankso@371 254 </p>
pankso@371 255 <a name="compile_rules"></a>
pankso@371 256 <h4>compile_rules()</h4>
pankso@371 257 <p>
pankso@371 258 Pour compiler un paquet vous pouvez utiliser la variable $src pour vous
pankso@371 259 déplacer (cd) dans le répertoire des sources et utiliser $CONFIGURE_ARGS
pierre@498 260 pour inclure les arguments depuis le fichier de configuration de Tazwok.
pankso@371 261 Pour construire le paquet il suffit généralement de lancer 'make' sans
pierre@498 262 argument et pour installer le paquet dans un répertoire _pkg/ il faut
pankso@371 263 utiliser la commande 'make DESTDIR=$PWD/_pkg install'. Exemple générique :
pankso@371 264 </p>
pankso@371 265 <pre class="script">
pankso@371 266 # Rules to configure and make the package.
pankso@371 267 compile_rules()
pankso@371 268 {
pankso@371 269 cd $src
pankso@371 270 ./configure --prefix=/usr --infodir=/usr/share/info \
pankso@371 271 --mandir=/usr/share/man $CONFIGURE_ARGS
pankso@371 272 make
pankso@371 273 make DESTDIR=$PWD/_pkg install
pankso@371 274 }
pankso@371 275 </pre>
pankso@371 276 <a name="genpkg_rules"></a>
pankso@371 277 <h4>genpkg_rules()</h4>
pankso@371 278 <p>
pankso@371 279 Pour générer un paquet Tazpkg il faut mettre les commandes à lancer dans la
pierre@498 280 fonction <code>genpkg_rules</code>. Dans cet exemple on créé le répertoire
pierre@498 281 <code>usr/</code> dans le pseudo système de fichiers du paquet, on copie tou(t)(s)
pankso@371 282 le(s) binaires(s) et on finit par un strip pour nettoyer les fichiers :
pankso@371 283 </p>
pankso@371 284 <pre class="script">
pankso@371 285 # Rules to gen a SliTaz package suitable for Tazpkg.
pankso@371 286 genpkg_rules()
pankso@371 287 {
pankso@371 288 mkdir -p $fs/usr
pankso@371 289 cp -a $_pkg/usr/bin $fs/usr
pankso@371 290 strip -s $fs/usr/bin/*
pankso@371 291 }
pankso@371 292 </pre>
pankso@371 293 <a name="pre_install"></a>
pankso@371 294 <h4>pre_install() et post_install()</h4>
pankso@371 295 <p>
pankso@371 296 Ces deux fonctions sont lancées par Tazpkg lors de l'installation du paquet.
pankso@371 297 Il faut les définir avant de générer le paquet.tazpkg avec Tazwok. Si aucune
pierre@498 298 commande n'est nécessaire ces deux fonctions n'ont aucune raison d'être et
pankso@371 299 peuvent être supprimées. Exemple avec echo pour afficher un peu de texte
pankso@371 300 (aucune fonction ne doit être vide) :
pankso@371 301 </p>
pankso@371 302 <pre class="script">
pankso@371 303 # Pre and post install commands for Tazpkg.
pankso@371 304 pre_install()
pankso@371 305 {
pankso@371 306 echo "Processing pre-install commands..."
pankso@371 307 }
pankso@371 308 post_install()
pankso@371 309 {
pankso@371 310 echo "Processing post-install commands..."
pankso@371 311 }
pankso@371 312 </pre>
pankso@371 313 <a name="clean_wok"></a>
pankso@371 314 <h4>clean_wok()</h4>
pankso@371 315 <p>
pankso@371 316 Cette fonction est lancée par Tazwok avec la commande clean.
pierre@498 317 Elle permet de définir des commandes supplémentaires à exécuter lors du nettoyage du wok.
pierre@498 318 Elle est très utile pour supprimer des fichiers ou répertoires qui ne sont pas pris en charge par Tazwok.
pankso@371 319 </p>
pankso@371 320 <pre class="script">
pankso@371 321 # clean commands for Tazwok.
pankso@371 322 clean_wok()
pankso@371 323 {
pankso@371 324 rm -rf $WOK/$PACKAGE/vim71
pankso@371 325 }
pankso@371 326 </pre>
pankso@371 327 <!-- End of content -->
pankso@371 328 </div>
pankso@371 329
pankso@371 330 <!-- Footer. -->
pankso@371 331 <div id="footer">
pankso@371 332 <div class="footer-right"></div>
pascal@548 333 <a href="receipts.html#top">Haut de la page</a> |
pankso@371 334 <a href="index.html">Table des matières</a>
pankso@371 335 </div>
pankso@371 336
pankso@371 337 <div id="copy">
pascal@669 338 Copyright &copy; <span class="year"></span> <a href="http://www.slitaz.org/">SliTaz</a> -
pankso@371 339 <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>;<br />
pierre@498 340 Documentation publiée sous
pankso@371 341 <a href="http://www.gnu.org/copyleft/fdl.html">GNU Free Documentation License</a>
pankso@371 342 et codée en <a href="http://validator.w3.org/">xHTML 1.0 valide</a>.
pankso@371 343 </div>
pankso@371 344
pankso@371 345 </body>
pankso@371 346 </html>