Table of Contents

Recettes

Ce document décrit les possibilités offertes par les recettes utilisées par Cookutils 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 :

# SliTaz package receipt.

Variables

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 :

PACKAGE="clex"
VERSION="3.16"
CATEGORY="base-apps"
SHORT_DESC="Text mode file manager."
MAINTAINER="pankso@slitaz.org"

Variables optionnelles

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.

DEPENDS="ncurses"
BUILD_DEPENDS="ncurses-dev"
TARBALL="$PACKAGE-$VERSION.tar.gz"
WEB_SITE="http://www.clex.sk/"
WGET_URL="http://www.clex.sk/download/$TARBALL"
CONFIG_FILES="/etc/netatalk/AppleVolumes.* /etc/netatalk/*.conf"

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é.

Variables générées automatiquement par tazwok

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.

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 les fonctions compile_rules et genpkg_rules décrites toutes deux dans le chapitre : Fonctions.

Fonctions

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 Cookbook de SliTaz

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 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 :

# 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éé 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 :

# 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 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) :

# Pre and post install commands for Tazpkg.
pre_install()
{
	echo "Processing pre-install commands..."
}
post_install()
{
	echo "Processing post-install commands..."
}

pre_remove() et post_remove()

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):

# Pre and post remove commands for Tazpkg.
pre_remove()
{
	echo "Processing pre-remove commands..."
}
post_remove()
{
	echo "Processing post-remove commands..."
}

clean_wok()

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.

# clean commands for Tazwok.
clean_wok()
{
	rm -rf $WOK/$PACKAGE/vim71
}