website annotate doc/cookbook/receipts.html @ rev 262

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