website view doc/cookbook/receipts.html @ rev 295

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