slitaz-doc-wiki-data annotate pages/fr/cookbook/receipt.txt @ rev 142

Updated en:handbook:start to 4.0
author Christian Mesh meshca@clarkson.edu
date Mon Mar 19 22:02:10 2012 +0000 (2012-03-19)
parents 7011c4a257d7
children
rev   line source
slaxemulator@17 1 ======= Recettes =======
slaxemulator@4 2
slaxemulator@4 3
slaxemulator@17 4 Ce document décrit les possibilités offertes par les recettes utilisées par Tazwok pour compiler et générer des paquets pour SliTaz et tazpkg, via le wok. La recette d'un paquet est aussi utilisée par Tazpkg pour installer/désinstaller et donner des informations à propos d'un paquet .tazpkg (package). Chaque recette commence par un commentaire en anglais :
slaxemulator@4 5
slaxemulator@17 6 <file># SliTaz package receipt.</file>
slaxemulator@4 7
slaxemulator@17 8 ===== Variables =====
slaxemulator@4 9
slaxemulator@4 10
slaxemulator@4 11 Les 5 premières variables devraient toujours être présentes et configurées. Elles configurent respectivement le nom du paquet ($PACKAGE), sa version, sa catégorie, une courte description et le nom du mainteneur. Exemple pour le paquet du gestionnaire de fichiers Clex :
slaxemulator@4 12
slaxemulator@17 13 <file>
slaxemulator@17 14 PACKAGE="clex"
slaxemulator@4 15 VERSION="3.16"
slaxemulator@4 16 CATEGORY="base-apps"
slaxemulator@4 17 SHORT_DESC="Text mode file manager."
slaxemulator@17 18 MAINTAINER="pankso@slitaz.org"
slaxemulator@17 19 </file>
slaxemulator@4 20 ===== Variables optionnelles =====
slaxemulator@4 21
slaxemulator@4 22
slaxemulator@4 23 Tazwok sait aussi utiliser diverses variables optionnelles si elles existent, il peut par exemple, utiliser un autre nom pour le paquet source. Il y a aussi des variables qui sont utilisées par Tazpkg pour gérer les dépendances ou donner des informations sur le paquet.
slaxemulator@4 24
slaxemulator@4 25 * **$DEPENDS :** spécifie les dépendances, il peut y avoir plusieurs paquets séparés par un espace ou sur plusieurs lignes. Cette variable est principalement utilisée par Tazpkg lors de l'installation du paquet et Tazwok pour construire de gros paquets comme Xorg. Exemple pour Clex qui dépend du paquet ncurses :
slaxemulator@4 26
slaxemulator@17 27 <file>DEPENDS="ncurses"</file>
slaxemulator@4 28
slaxemulator@4 29 * **$BUILD_DEPENDS :** spécifie les dépendances de compilation, séparées par un espace ou sur plusieurs lignes. Cette variable est utilisée par Tazwok lors de la cuisson d'un paquet. Exemple :
slaxemulator@4 30
slaxemulator@17 31 <file>BUILD_DEPENDS="ncurses-dev"</file>
slaxemulator@4 32
slaxemulator@4 33 * **$TARBALL :** l'archive source avec son extension (tar.gz, tgz ou tar.bz2). En générale, les variables $PACAKAGE et $VERSION sont utilisées et il suffit de modifier l'extension, cela permet de mettre à jour le paquet en ne modifiant que la variable de la version. Exemple générique (voir aussi la variable $SOURCE) :
slaxemulator@4 34
slaxemulator@17 35 <file>TARBALL="$PACKAGE-$VERSION.tar.gz"</file>
slaxemulator@4 36
slaxemulator@4 37 * **$WEB_SITE :** le site web officiel du paquet. Il se peut que certaines bibliothèques n'aient pas de site Web, dans ce cas il n'y a pas besoin de spécifier d'URL. Tazwok et Tazpkg s'attendent a trouver l'URL complet avec le http :
slaxemulator@4 38
slaxemulator@17 39 <file>WEB_SITE="http://www.clex.sk/"</file>
slaxemulator@4 40
slaxemulator@4 41 * **$WGET_URL :** l'url de téléchargement de l'archive source. En générale la variable $TARBALL devrait être utilisée pour faciliter la mise à jour du paquet en ne modifiant que $VERSION. Le fichier de configuration de Tazwok configure aussi, par défaut, 3 variables de miroir souvent utilisées. $GNU_MIRROR pour les miroirs GNU, $SF_MIRROR pour SourceForge et XORG_MIRROR pour le miroir du serveur graphique Xorg. Exemple pour Clex :
slaxemulator@4 42
slaxemulator@17 43 <file>WGET_URL="http://www.clex.sk/download/$TARBALL"</file>
slaxemulator@4 44
slaxemulator@4 45 * **$CONFIG_FILES :** certains paquets fournissent des fichiers de configuration à adapter. La variable $CONFIG_FILES donne la liste de ces fichiers qui pourront être sauvegardés par la commande 'tazpkg repack-config'. Ces fichiers ne seront pas écrasés lors de l'installation du paquet s'ils existent déjà et le paquet pourra être récréé avec 'tazpkg repack' même s'ils ont été modifiés par la suite. Exemple pour Netatalk :
slaxemulator@4 46
slaxemulator@17 47 <file>CONFIG_FILES="/etc/netatalk/AppleVolumes.* /etc/netatalk/*.conf"</file>
slaxemulator@17 48
slaxemulator@17 49 * **$SUGGESTED :** liste les paquets pouvant être utiles sans pour autant être indispensables. Ils serviront à activer des fonctionnalités optionnelles.
slaxemulator@4 50
slaxemulator@4 51 * **$WANTED :** il y a des paquets SliTaz qui sont dépendants de la compilation d'un paquet source. La recette de ces paquets ne nécessite pas de règles de compilation, une variable $WANTED peut être utilisée pour copier des fichiers depuis les sources du paquet voulu, en utilisant la variable $src.
slaxemulator@4 52
slaxemulator@4 53 * **$SOURCE :** il se peut que le nom du paquet Tazpkg diffère du nom du paquet source. C'est le cas par exemple pour les paquets d'Xorg, le nom Tazpkg des bibliothèque X11 est 'xorg-libX11' et le nom du paquet source est libX11. Cette astuce permet aussi de continuer à utiliser les variables $src et $_pkg lors la cuisson d'un paquet. A noter que dans le cas libX11, le nom de l'archive source devient $SOURCE-$VERSION.tar.gz.
slaxemulator@4 54
slaxemulator@4 55 * **$PROVIDE :** certains paquets offrent la même fonctionalité. Par exemple, le serveur web de Slitaz fût dans un premier temps lighttpd. Maintenant apache est aussi disponible. Tous les paquets dépendants d'un serveur web font référence à lighttpd. La ligne //PROVIDE="lighttpd"// de la recette d'apache signale qu'il peut se substituer à lighttpd, c'est-à- dire qu'un paquet dépendant de lighttpd n'a pas à l'installer si apache est déjà installé. Mais cette alternative peut avoir des conséquences sur le choix des paquets qui en dépendent. Le paquet php est prévu pour fonctionner uniquement avec lighttpd. C'est php-apache qu'il faut installer avec apache. La ligne //PROVIDE="php:apache"// dans la recette de php-apache indique qu'il faut substituer php-apache à php si apache est installé. Les paquets dépendants de php installeront alors php-apache ou php selon le serveur web installé. Cette variable permet aussi d'avoir un paquet compilé avec différentes options. La ligne //PROVIDE="epdfview:cups"// du paquet epdfview-cups permet d'installer un paquet epdfview compilé avec le support de l'impression par cups. \\
slaxemulator@4 56 On peut aussi définir des paquets virtuels avec cette variable. Les lignes //PROVIDE="libgl"// du paquet mesa et //PROVIDE="libgl:nvidia"// du paquet ''nvidia-glx'' définissent le paquet virtuel libgl qui sera une version optimisée lorsque le paquet nvidia est installé.
slaxemulator@4 57
slaxemulator@4 58 * **$SELF_INSTALL :** certains paquets utilisent des commandes fournies par le paquet lui-même dans la fonction post_install. Pour installer ce paquet dans un répertoire autre que la racine et utiliser ces commandes, il faut qu'il ait déjà été installé dans / auparavant. La ligne //SELF_INSTALL=1// signale à tazpkg cette particularité.
slaxemulator@4 59
slaxemulator@4 60 ===== Variables générées automatiquement par tazwok =====
slaxemulator@4 61
slaxemulator@4 62 Certaines variables ne sont connues qu'au moment de la cuisson du paquet ou juste après la cuisson. Tazwok se charge de les ajouter à la recette automatiquement.
slaxemulator@4 63
slaxemulator@4 64 * **$PACKED_SIZE :** taille du ficher tazpkg.
slaxemulator@4 65
slaxemulator@4 66 * **$UNPACKED_SIZE :** taille utilisée par le paquet après son installation.
slaxemulator@4 67
slaxemulator@4 68 * **$EXTRAVERSION :** certains paquets ont besoin de 2 numéros de version distincts. C'est le cas des modules ajoutés au noyau Linux comme squashfs car le module produit dépend aussi de la version du noyau avec laquelle il a été compilé. Dans ce cas $EXTRAVERSION contient la version du noyau et tazwok le détermine à partir du contenu de **/lib/modules**.
slaxemulator@4 69
slaxemulator@4 70 ===== Variables utilisables dans les fonctions =====
slaxemulator@4 71
slaxemulator@4 72 Tazwok configure plusieurs variables permettant de faciliter la compilation et la construction de paquets Tazpkg. Ces variables sont gérées automatiquement par Tazwok en utilisant les informations contenues dans les recettes, elles peuvent être utilisées par les fonctions compile_rules et genpkg_rules décrites toutes deux dans le chapitre : Fonctions.
slaxemulator@4 73
slaxemulator@4 74 * **$src :** définit le chemin vers le répertoire des sources dés-archivées.
slaxemulator@4 75
slaxemulator@4 76 * **$_pkg :** définit le chemin vers les binaires compilés et installés via la commande 'make DESTDIR=$PWD/_pkg install'. Cette variable est utilisée pour copier les fichiers générés et créer des paquets tazpkg.
slaxemulator@4 77
slaxemulator@4 78 * **$fs :** définit le chemin vers le pseudo système de fichier (fs) propre à chaque paquet. Le 'fs' d'un paquet correspond à la racine du système cible, un binaire tel que Clex sera par exemple dans $fs/usr/bin/clex, à noter qu'il faut créer les répertoires nécessaires via la fonction genpkg_rules() avant de copier des fichiers.
slaxemulator@4 79
slaxemulator@4 80 * **$CONFIGURE_ARGS :** cette variable est définie dans le fichier de configuration de Tazwok (tazwok.conf), elle permet de spécifier des arguments d'optimisation générique lors de la configuration d'un paquet. Par défaut l'architecture est i486.
slaxemulator@4 81
slaxemulator@4 82 ===== Fonctions =====
slaxemulator@4 83
slaxemulator@4 84
slaxemulator@4 85 Une recette peut contenir 4 fonctions. Tazwok sait traiter les fonctions contenant les règles de compilation (compile_rules) et les règles servant à générer un paquet Tazpkg (genpkg_rules). Ces fonctions peuvent contenir toutes sortes de commandes GNU/Linux standards tels que sed ou patch et les variables configurées automatiquement. A noter que ces deux fonctions utilisent les commandes du [[fr:cookbook:start|Cookbook]] de SliTaz
slaxemulator@4 86 === compile_rules() ===
slaxemulator@4 87
slaxemulator@4 88
slaxemulator@4 89 Pour compiler un paquet vous pouvez utiliser la variable $src pour vous déplacer (cd) dans le répertoire des sources et utiliser $CONFIGURE_ARGS pour inclure les arguments depuis le fichier de configuration de Tazwok. Pour construire le paquet il suffit généralement de lancer 'make' sans argument et pour installer le paquet dans un répertoire _pkg/ il faut utiliser la commande 'make DESTDIR=$PWD/_pkg install'. Exemple générique :
slaxemulator@4 90
slaxemulator@17 91 <file>
slaxemulator@17 92 # Rules to configure and make the package.
slaxemulator@4 93 compile_rules()
slaxemulator@4 94 {
slaxemulator@4 95 cd $src
slaxemulator@4 96 ./configure --prefix=/usr --infodir=/usr/share/info \
slaxemulator@4 97 --mandir=/usr/share/man $CONFIGURE_ARGS
slaxemulator@4 98 make
slaxemulator@4 99 make DESTDIR=$PWD/_pkg install
slaxemulator@17 100 }
slaxemulator@17 101 </file>
slaxemulator@4 102
slaxemulator@4 103 === genpkg_rules() ===
slaxemulator@4 104
slaxemulator@4 105
slaxemulator@4 106 Pour générer un paquet Tazpkg il faut mettre les commandes à lancer dans la fonction genpkg_rules. Dans cet exemple on créé le répertoire usr/ dans le pseudo système de fichiers du paquet, on copie tou(t)(s) le(s) binaires(s) et on finit par un strip pour nettoyer les fichiers :
slaxemulator@4 107
slaxemulator@17 108 <file>
slaxemulator@17 109 # Rules to gen a SliTaz package suitable for Tazpkg.
slaxemulator@4 110 genpkg_rules()
slaxemulator@4 111 {
slaxemulator@4 112 mkdir -p $fs/usr
slaxemulator@4 113 cp -a $_pkg/usr/bin $fs/usr
slaxemulator@4 114 strip -s $fs/usr/bin/*
slaxemulator@17 115 }
slaxemulator@17 116 </file>
slaxemulator@4 117
slaxemulator@4 118 === pre_install() et post_install() ===
slaxemulator@4 119
slaxemulator@4 120
slaxemulator@4 121 Ces deux fonctions sont lancées par Tazpkg lors de l'installation du paquet. Il faut les définir avant de générer le paquet tazpkg avec Tazwok. Si aucune commande n'est nécessaire ces deux fonctions n'ont aucune raison d'être et peuvent être supprimées. Exemple avec echo pour afficher un peu de texte (aucune fonction ne doit être vide) :
slaxemulator@4 122
slaxemulator@17 123 <file>
slaxemulator@17 124 # Pre and post install commands for Tazpkg.
slaxemulator@4 125 pre_install()
slaxemulator@4 126 {
slaxemulator@4 127 echo "Processing pre-install commands..."
slaxemulator@4 128 }
slaxemulator@4 129 post_install()
slaxemulator@4 130 {
slaxemulator@4 131 echo "Processing post-install commands..."
slaxemulator@17 132 }
slaxemulator@17 133 </file>
slaxemulator@17 134
slaxemulator@17 135 === pre_remove() and post_remove() ===
slaxemulator@17 136
slaxemulator@17 137 Ces fonctions sont lancées par Tazpkg lors de la suppression du paquet.Elles doivent être définies avant de générer le paquet .tazpkg avec Tazwok. Si aucune règle n'est nécessaire pour ces fonctions, elles n'ont pas raison d'être et peuvent être supprimées. Exemple utilisant echo pour afficher un texte (aucune fonction ne doit être vide):
slaxemulator@17 138 <file>
slaxemulator@17 139 # Pre and post remove commands for Tazpkg.
slaxemulator@17 140 pre_remove()
slaxemulator@17 141 {
slaxemulator@17 142 echo "Processing pre-remove commands..."
slaxemulator@17 143 }
slaxemulator@17 144 post_remove()
slaxemulator@17 145 {
slaxemulator@17 146 echo "Processing post-remove commands..."
slaxemulator@17 147 }
slaxemulator@17 148 </file>
slaxemulator@4 149
slaxemulator@4 150 === clean_wok() ===
slaxemulator@4 151
slaxemulator@4 152
slaxemulator@4 153 Cette fonction est lancée par Tazwok avec la commande clean. Elle permet de définir des commandes supplémentaires à exécuter lors du nettoyage du wok. Elle est très utile pour supprimer des fichiers ou répertoires qui ne sont pas pris en charge par Tazwok.
slaxemulator@4 154
slaxemulator@17 155 <file>
slaxemulator@17 156 # clean commands for Tazwok.
slaxemulator@4 157 clean_wok()
slaxemulator@4 158 {
slaxemulator@4 159 rm -rf $WOK/$PACKAGE/vim71
slaxemulator@17 160 }
slaxemulator@17 161 </file>