website diff fr/doc/cookbook/receipts.html @ rev 371

fr: Add doc section
author Christophe Lincoln <pankso@slitaz.org>
date Sat Apr 11 19:48:44 2009 +0200 (2009-04-11)
parents
children 81d0a30755e3
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/fr/doc/cookbook/receipts.html	Sat Apr 11 19:48:44 2009 +0200
     1.3 @@ -0,0 +1,338 @@
     1.4 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     1.5 +    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     1.6 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     1.7 +<head>
     1.8 +    <title>SliTaz Cookbook - Receipts (Recettes des paquets)</title>
     1.9 +    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    1.10 +    <meta name="description" content="SliTaz packages receipt la recette de construction d'un paquet slitaz tazpkg tazwok" />
    1.11 +    <meta name="expires" content="never" />
    1.12 +    <meta name="modified" content="2007-12-24 17:00:00" />
    1.13 +    <meta name="publisher" content="www.slitaz.org" />
    1.14 +    <meta name="author" content="Christophe Lincoln"/>
    1.15 +    <link rel="shortcut icon" href="favicon.ico" />
    1.16 +    <link rel="stylesheet" type="text/css" href="book.css" />
    1.17 +</head>
    1.18 +<body bgcolor="#ffffff">
    1.19 +
    1.20 +<!-- Header and quick navigation -->
    1.21 +<div id="header">
    1.22 +<div align="right" id="quicknav">
    1.23 +    <a name="top"></a>
    1.24 +    <a href="wok-tools.html">Wok &amp; tools</a> |
    1.25 +    <a href="index.html">Table des matières</a>
    1.26 +</div>
    1.27 +<h1><font color="#3E1220">SliTaz Cookbook</font></h1>
    1.28 +</div>
    1.29 +
    1.30 +<!-- Content. -->
    1.31 +<div id="content">
    1.32 +<div class="content-right"></div>
    1.33 +
    1.34 +
    1.35 +<h2><font color="#DF8F06">Receipts (Recettes des paquets)</font></h2>
    1.36 +<p>
    1.37 +Ce document décrit les possibilités offertes par les recettes utilisées par
    1.38 +Tazwok pour compiler et générer des paquets pour SliTaz et tazpkg, via
    1.39 +(<a href="wok-tools.html">le wok et les outils</a>). La recette d'un paquet 
    1.40 +est aussi utilisée par Tazpkg pour installer/désinstaller et donner des 
    1.41 +informations au sujet d'un paquet.tazpkg (package). Chaque recette commence 
    1.42 +par un commentaire en English :
    1.43 +</p>
    1.44 +<pre class="script">
    1.45 + # SliTaz package receipt.
    1.46 +</pre>
    1.47 +
    1.48 +<h3>Variables de base</h3>
    1.49 +<p>
    1.50 +Les 5 premières variables devraient toujours être présentes et configurées.
    1.51 +Elles configure respectivement le non du paquet ($PACKAGE), sa version, sa
    1.52 +catégorie, une courte description et le nom du mainteneur. Exemple pour le
    1.53 +paquet du gestionnaire de fichiers Clex :
    1.54 +</p>
    1.55 +<pre class="script">
    1.56 + PACKAGE="clex"
    1.57 + VERSION="3.16"
    1.58 + CATEGORY="base-apps"
    1.59 + SHORT_DESC="Text mode file manager."
    1.60 + MAINTAINER="pankso@slitaz.org"
    1.61 +</pre>
    1.62 +
    1.63 +<h3>Variables optionnelles</h3>
    1.64 +<p>
    1.65 +Tazwok sait aussi utiliser divers variables optionnelles si elles existent, il
    1.66 +peut par exemple, utiliser un autre nom pour le paquet source. Il y a aussi des
    1.67 +variables qui sont utilisées par Tazpkg pour gérer les dépendances ou donner
    1.68 +des informations sur le paquet.
    1.69 +</p>
    1.70 +<p>
    1.71 +<a name="depends"></a>
    1.72 +<code>$DEPENDS</code>: Specifie les dépendances, il peut y avoir plusieurs
    1.73 +paquets séparés par un espace ou sur plusieurs lignes. Cette variable est
    1.74 +principalement utilisée par Tazpkg lors de l'installation du paquet et Tazwok
    1.75 +pour construire de gros paquets comme Xorg. Exemple pour Clex qui dépend du
    1.76 +paquet ncurses :
    1.77 +</p>
    1.78 +<pre class="script">
    1.79 + DEPENDS="ncurses"
    1.80 +</pre>
    1.81 +<a name="build_depends"></a>
    1.82 +<code>$BUILD_DEPENDS</code>: Specifie les dépendances de compilation, séparées 
    1.83 +par un espace ou sur plusieurs lignes. Cette variable est utilisée par Tazwok
    1.84 +lors de la cuisson d'un paquet et Tazwok. Exemple :
    1.85 +</p>
    1.86 +<pre class="script">
    1.87 + BUILD_DEPENDS="ncurses-dev"
    1.88 +</pre>
    1.89 +<p>
    1.90 +<a name="suggested"></a>
    1.91 +<code>$SUGGESTED</code> : Liste les paquets pouvant être utiles sans pour
    1.92 +autant être indispensables. Ils serviront à activer des fonctionnalités
    1.93 +optionnelles.
    1.94 +</p>
    1.95 +<p>
    1.96 +<a name="tarball"></a>
    1.97 +<code>$TARBALL</code> : L'archive source avec sont extension (tar.gz, tgz ou
    1.98 +tar.bz2). En générale, les variables $PACAKAGE et $VERSION sont utilisées et
    1.99 +il suffit de modifier l'extension, cela permet de mettre à jour le paquet en
   1.100 +ne modifiant que la variable de la version. Exemple générique (voir aussi
   1.101 +la variable $SOURCE) :
   1.102 +</p>
   1.103 +<pre class="script">
   1.104 + TARBALL="$PACKAGE-$VERSION.tar.gz"
   1.105 +</pre>
   1.106 +<p>
   1.107 +<a name="web_site"></a>
   1.108 +<code>$WEB_SITE</code> : Le site web officiel du paquet. Il se peut que
   1.109 +certaines bibliothèques n'aient pas de site Web, dans ce cas il n'y a pas
   1.110 +besoin de spécifier d'URL. Tazwok et Tazpkg s'attendent a trouver l'URL
   1.111 +complet avec le http :
   1.112 +</p>
   1.113 +<pre class="script">
   1.114 + WEB_SITE="http://www.clex.sk/"
   1.115 +</pre>
   1.116 +<p>
   1.117 +<a name="wget_url"></a>
   1.118 +<code>$WGET_URL</code> : L'url de téléchargement des l'archive source. En
   1.119 +générale la variable $TARBALL devraient être utilisée pour faciliter la mise
   1.120 +à jour du paquet en ne modifiant que $VERSION. Le fichier de configuration de
   1.121 +Tazwok configure aussi, par défaut, 3 variable de miroir souvent utilisés.
   1.122 +$GNU_MIRROR pour les miroir GNU, $SF_MIRROR pour SourceForge et XORG_MIRROR
   1.123 +pour le mirroir du serveur graphique Xorg. Exemple pour Clex :
   1.124 +</p>
   1.125 +<pre class="script">
   1.126 + WGET_URL="http://www.clex.sk/download/$TARBALL"
   1.127 +</pre>
   1.128 +<p>
   1.129 +<a name="config_files"></a>
   1.130 +<code>$CONFIG_FILES</code> : Certains paquets fournissent des fichiers de
   1.131 +configuration à adapter. La variable $CONFIG_FILES donne la liste de ces
   1.132 +fichiers qui pourront être sauvegardés par la commande 'tazpkg repack-config'.
   1.133 +Ces fichiers ne seront pas écrasés lors de l'installation du paquet s'ils
   1.134 +existent déjà et le paquet pourra être récréé avec 'tazpkg repack' même s'ils
   1.135 +ont été modifiés par la suite. Exemple pour Netatalk :
   1.136 +</p>
   1.137 +<pre class="script">
   1.138 + CONFIG_FILES="/etc/netatalk/AppleVolumes.* /etc/netatalk/*.conf"
   1.139 +</pre>
   1.140 +<p>
   1.141 +<a name="wanted"></a>
   1.142 +<code>$WANTED</code> : Il y a des paquets SliTaz qui sont dépendants de la
   1.143 +compilation d'un paquet source. La recette de ces paquets ne nécessite pas de
   1.144 +règles de compilation, une variable $WANTED peut être utilisée pour copier des
   1.145 +fichiers depuis les sources du paquet voulu en utilisant la variable $src.
   1.146 +</p>
   1.147 +<p>
   1.148 +<a name="source"></a>
   1.149 +<code>$SOURCE</code> : Il se peut que le nom du paquet Tazpkg diffère du nom
   1.150 +du paquet source. C'est le cas par exemple pour les paquets d'Xorg, le nom
   1.151 +Tazpkg des bibliothèque X11 est 'xorg-libX11' et le nom du paquet source est
   1.152 +libX11. Cette astuces permet aussi de continuer à utiliser les varibables
   1.153 +$src et $_pkg lors la cuisson d'un paquet. A noter que dans le cas libX11,
   1.154 +le nom de l'archive source devient $SOURCE-$VERSION.tar.gz.
   1.155 +</p>
   1.156 +<p>
   1.157 +<a name="provide"></a>
   1.158 +<code>$PROVIDE</code> : Certains paquets offrent la même fonctionalité. Par
   1.159 +exemple, le serveur web de Slitaz fût dans un premier temps lighttpd.
   1.160 +Maintenant apache est aussi disponible. Tous les paquets dépendants d'un
   1.161 +serveur web font référence à lighttpd. La ligne <code>PROVIDE="lighttpd"</code>
   1.162 +de la recette d'apache signale qu'il peut se substituer à lighttpd, c'est à
   1.163 +dire qu'un paquet dépendant de lighttpd n'a pas à l'installer si apache est
   1.164 +déjà installé.<br>
   1.165 +Mais cette alternative peut avoir des conséquences sur le choix des paquets qui
   1.166 +en dépendent. Le paquet php est prévu pour fonctionner uniquement avec lighttpd.
   1.167 +C'est php-apache qu'il faut installer avec apache. La ligne 
   1.168 +<code>PROVIDE="php:apache"</code> dans la recette de php-apache indique qu'il
   1.169 +faut substituer php-apache à php si apache est installé.
   1.170 +Les paquets dépendants de php installeront alors php-apache ou php selon le
   1.171 +serveur web installé.<br>
   1.172 +Cette variable permet aussi d'avoir un paquet compilé avec différentes options.
   1.173 +La ligne <code>PROVIDE="epdfview:cups"</code> du paquet epdfview-cups permet
   1.174 +d'installer un package epdfview compilé avec le support de l'impression par 
   1.175 +cups.
   1.176 +On peut aussi définir des paquets virtuels avec cette variable. Les lignes
   1.177 +<code>PROVIDE="libgl"</code> du paquet <code>mesa</code> et
   1.178 +<code>PROVIDE="libgl:nvidia"</code> du paquet <code>nvidia-glx</code>
   1.179 +définissent le paquet virtuel <code>libgl</code> qui sera une version
   1.180 +optimisée lorsque le paquet <code>nvidia</code> est installé.
   1.181 +</p>
   1.182 +
   1.183 +<h3>Variables générées automatiquement par tazwok</h3>
   1.184 +<p>
   1.185 +Certaines variables ne sont connues qu'au moment la cuisson du paquet ou 
   1.186 +juste après la cuisson. Tazwok se charge de les ajouter au receipt 
   1.187 +automatiquement.
   1.188 +</p>
   1.189 +<p>
   1.190 +<a name="packed_size"></a>
   1.191 +<code>$PACKED_SIZE</code> : Taille du ficher tazpkg.
   1.192 +</p>
   1.193 +<p>
   1.194 +<a name="unpacked_size"></a>
   1.195 +<code>$UNPACKED_SIZE</code> : Taille utilisée par le paquet après son 
   1.196 +installation.
   1.197 +</p>
   1.198 +<p>
   1.199 +<a name="extraversion"></a>
   1.200 +<code>$EXTRAVERSION</code> : Certains packages ont besion de 2 numéros de
   1.201 +version distincts. C'est le cas des modules ajoutés au noyau linux comme
   1.202 +squashfs car le module produit dépend aussi de la version du noyau avec 
   1.203 +laquelle il a été compilé. Dans ce cas EXTRAVERSION contient la version du
   1.204 +noyau et tazwok le détermine à partir du contenu de /lib/modules.
   1.205 +</p>
   1.206 +
   1.207 +<h3>Variables utilisables dans les fonctions</h3>
   1.208 +<p>
   1.209 +Tazwok configure plusieurs variables permettant de faciliter la compilation et
   1.210 +la construction de paquets Tazpkg. Ces variables sont gérées automatiquement
   1.211 +par Tazwok en utilisant les informations contenues dans les recettes, elles
   1.212 +peuvent être utilisées par la fonction compile_rules et genpkg_rules décrites
   1.213 +toutes deux dans le chapitre : Fonctions.
   1.214 +</p>
   1.215 +<p>
   1.216 +<a name="src"></a>
   1.217 +<code>$src</code> : Définit le chemin vers le répertoire des sources désarchivée.
   1.218 +</p>
   1.219 +<p>
   1.220 +<a name="pkg"></a>
   1.221 +<code>$_pkg</code> : Définit le chemin vers les binaires compliés et installés
   1.222 +via la commande 'make DESTDIR=$PWD/_pkg install'. Cette variable est utilisée
   1.223 +pour copier les fichiers générés et créer des paquets tazpkg.
   1.224 +</p>
   1.225 +<p>
   1.226 +<a name="fs"></a>
   1.227 +<code>$fs</code> : Définit le chemin vers le pseudo système de fichier (fs)
   1.228 +propre à chaque paquet. Le 'fs' d'un paquet correspond à la racine du système
   1.229 +cible, un binaire tel que Clex sera par exemple dans $fs/usr/bin/clex, à noter
   1.230 +qu'il faut créer les répertoires nécessaires via la fonction genpkg_rules()
   1.231 +avant de copier des fichiers.
   1.232 +</p>
   1.233 +<p>
   1.234 +<a name="configure_args"></a>
   1.235 +<code>$CONFIGURE_ARGS</code> : Cette variables est définie dans le fichier de
   1.236 +configuration de Tazwok (tazwok.conf), elle permet de spécifier des
   1.237 +arguments d'optimisation générique lors de la configuration d'un paquet.
   1.238 +Par défaut l'architecture est i486.
   1.239 +</p>
   1.240 +
   1.241 +<h3>Fonctions</h3>
   1.242 +<p>
   1.243 +Une recette peut contenir 4 fonctions. Tazwok sait traiter les fonctions
   1.244 +contenant les règles de compliation (compile_rules) et les règles servant à
   1.245 +générer un paquet Tazpkg (genpkg_rules). Ces fonctions peuvent contenir toutes
   1.246 +sortes de commandes GNU/Linux standards tels que sed ou patch et les variables
   1.247 +configurées automatiquements. A noter que ces deux fonctions utilisent les
   1.248 +commandes du Cookbook de SliTaz : http://www.slitaz.org/doc/cookbook/
   1.249 +</p>
   1.250 +<a name="compile_rules"></a>
   1.251 +<h4>compile_rules()</h4>
   1.252 +<p>
   1.253 +Pour compiler un paquet vous pouvez utiliser la variable $src pour vous
   1.254 +déplacer (cd) dans le répertoire des sources et utiliser $CONFIGURE_ARGS
   1.255 +pour inclure les arguments depuis le fichiers de configuration de Tazwok.
   1.256 +Pour construire le paquet il suffit généralement de lancer 'make' sans
   1.257 +arguments et pour installer le paquet dans un répertoire _pkg/ il faut
   1.258 +utiliser la commande 'make DESTDIR=$PWD/_pkg install'. Exemple générique :
   1.259 +</p>
   1.260 +<pre class="script">
   1.261 +# Rules to configure and make the package.
   1.262 +compile_rules()
   1.263 +{
   1.264 +	cd $src
   1.265 +	./configure --prefix=/usr --infodir=/usr/share/info \
   1.266 +	--mandir=/usr/share/man $CONFIGURE_ARGS
   1.267 +	make
   1.268 +	make DESTDIR=$PWD/_pkg install
   1.269 +}
   1.270 +</pre>
   1.271 +<a name="genpkg_rules"></a>
   1.272 +<h4>genpkg_rules()</h4>
   1.273 +<p>
   1.274 +Pour générer un paquet Tazpkg il faut mettre les commandes à lancer dans la
   1.275 +fonction <code>genpkg_rules</code>. Dans cet exemple on créer le répertoire
   1.276 +<code>usr/</code> dans le pseudo système de fichiers du paquet, on copie tout
   1.277 +le(s) binaires(s) et on finit par un strip pour nettoyer les fichiers :
   1.278 +</p>
   1.279 +<pre class="script">
   1.280 +# Rules to gen a SliTaz package suitable for Tazpkg.
   1.281 +genpkg_rules()
   1.282 +{
   1.283 +	mkdir -p $fs/usr
   1.284 +	cp -a $_pkg/usr/bin $fs/usr
   1.285 +	strip -s $fs/usr/bin/*
   1.286 +}
   1.287 +</pre>
   1.288 +<a name="pre_install"></a>
   1.289 +<h4>pre_install() et post_install()</h4>
   1.290 +<p>
   1.291 +Ces deux fonctions sont lancées par Tazpkg lors de l'installation du paquet.
   1.292 +Il faut les définir avant de générer le paquet.tazpkg avec Tazwok. Si aucune
   1.293 +commandes n'est nécessaires ces deux fonction n'ont aucune raison d'être et
   1.294 +peuvent être supprimées. Exemple avec echo pour afficher un peu de texte
   1.295 +(aucune fonction ne doit être vide) :
   1.296 +</p>
   1.297 +<pre class="script">
   1.298 +# Pre and post install commands for Tazpkg.
   1.299 +pre_install()
   1.300 +{
   1.301 +	echo "Processing pre-install commands..."
   1.302 +}
   1.303 +post_install()
   1.304 +{
   1.305 +	echo "Processing post-install commands..."
   1.306 +}
   1.307 +</pre>
   1.308 +<a name="clean_wok"></a>
   1.309 +<h4>clean_wok()</h4>
   1.310 +<p>
   1.311 +Cette fonction est lancée par Tazwok avec la commande clean.
   1.312 +Elle permet définir des commandes supplémentaires à exécuter lors nettoyage du wok.
   1.313 +Elle est très utiles pour supprimer des fichiers ou répertoires qui ne sont pas pris en charge par Tazwok.
   1.314 +</p>
   1.315 +<pre class="script">
   1.316 +# clean commands for Tazwok.
   1.317 +clean_wok()
   1.318 +{
   1.319 +	rm -rf $WOK/$PACKAGE/vim71
   1.320 +}
   1.321 +</pre>
   1.322 +<!-- End of content -->
   1.323 +</div>
   1.324 +
   1.325 +<!-- Footer. -->
   1.326 +<div id="footer">
   1.327 +	<div class="footer-right"></div>
   1.328 +	<a href="#top">Haut de la page</a> | 
   1.329 +	<a href="index.html">Table des matières</a>
   1.330 +</div>
   1.331 +
   1.332 +<div id="copy">
   1.333 +    Copyright © 2007 <a href="http://www.slitaz.org/">SliTaz</a> -
   1.334 +    <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>;<br />
   1.335 +    Documentation publiées sous
   1.336 +    <a href="http://www.gnu.org/copyleft/fdl.html">GNU Free Documentation License</a>
   1.337 +    et codée en <a href="http://validator.w3.org/">xHTML 1.0 valide</a>.
   1.338 +</div>
   1.339 +
   1.340 +</body>
   1.341 +</html>