Receipts (Recettes des paquets)
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 et les outils). La recette d'un paquet est aussi utilisée par Tazpkg pour installer/désinstaller et donner des informations au sujet d'un paquet.tazpkg (package). Chaque recette commence par un commentaire en English :
# SliTaz package receipt.
Variables de base
Les 5 premières variables devraient toujours être présentes et configurées. Elles configure respectivement le non 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 :
PACKAGE="clex" VERSION="3.16" CATEGORY="base-apps" SHORT_DESC="Text mode file manager." MAINTAINER="pankso@slitaz.org"
Variables optionnelles
Tazwok sait aussi utiliser divers 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.
$DEPENDS: Specifie 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 :
DEPENDS="ncurses"
$BUILD_DEPENDS: Specifie 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 et Tazwok. Exemple :
BUILD_DEPENDS="ncurses-dev"
$TARBALL : L'archive source avec sont 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) :
TARBALL="$PACKAGE-$VERSION.tar.gz"
$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 :
WEB_SITE="http://www.clex.sk/"
$WGET_URL : L'url de téléchargement des l'archive source. En
générale la variable $TARBALL devraient ê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 variable de miroir souvent utilisés.
$GNU_MIRROR pour les miroir GNU, $SF_MIRROR pour SourceForge et XORG_MIRROR
pour le mirroir du serveur graphique Xorg. Exemple pour Clex :
WGET_URL="http://www.clex.sk/download/$TARBALL"
$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.
$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 astuces permet aussi de continuer à utiliser les varibables
$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.
Variables utilisables dans les fonctions
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 la fonction compile_rules et genpkg_rules décrites toutes deux dans le chapitre : Fonctions.
$src : Définit le chemin vers le répertoire des sources désarchivée.
$_pkg : Définit le chemin vers les binaires complié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.
$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.
$CONFIGURE_ARGS : Cette variables 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.
Fonctions
Une recette peut contenir 4 fonctions. Tazwok sait traiter les fonctions contenant les règles de compliation (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 automatiquements. A noter que ces deux fonctions utilisent les commandes du Cookbook de SliTaz : http://www.slitaz.org/doc/cookbook/
compile_rules()
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 fichiers de configuration de Tazwok. Pour construire le paquet il suffit généralement de lancer 'make' sans arguments et pour installer le paquet dans un répertoire _pkg/ il faut utiliser la commande 'make DESTDIR=$PWD/_pkg install'. Exemple générique :
# Rules to configure and make the package.
compile_rules()
{
cd $src
./configure --prefix=/usr --infodir=/usr/share/info \
--mandir=/usr/share/man $CONFIGURE_ARGS
make
make DESTDIR=$PWD/_pkg install
}
genpkg_rules()
Pour générer un paquet Tazpkg il faut mettre les commandes à lancer dans la
fonction genpkg_rules. Dans cet exemple on créer le répertoire
usr/ dans le pseudo système de fichiers du paquet, on copie tout
le(s) binaires(s) et on finit par un strip pour nettoyer les fichiers :
# Rules to gen a SliTaz package suitable for Tazpkg.
genpkg_rules()
{
mkdir -p $fs/usr
cp -a $_pkg/usr/bin $fs/usr
strip -s $fs/usr/bin/*
}
pre_install() et post_install()
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 commandes n'est nécessaires ces deux fonction 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) :
# Pre and post install commands for Tazpkg.
pre_install()
{
echo "Processing pre-install commands..."
}
post_install()
{
echo "Processing post-install commands..."
}