website view fr/doc/cookbook/receipts.html @ rev 1344

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