NOM

Tazwok - Outils SliTaz pour compiler les sources et préparer les paquets.

SYNTAXE

 tazwok [command] [package|list|category|dir|arg] [--option]

AVERTISSEMENT

Cette version de tazwok (tazwok-3.9.*) est actuellement sujette à un développement actif et certaines parties de programme n'ont pas encore été complétement revues et corrigées. Dans son état actuel, vous ne devriez cependant pas rencontrer de problème majeur durant son utilisation. Toutes suggestions/commentaires/contribution sont les bienvenues: vous trouverez l'adresse courriel du mainteneur à la fin de ce document.

DESCRIPTION

Tazwok est un outil en ligne de commande permettant de configurer et de compiler un paquet depuis les sources. Tazwok permet aussi de créer des paquets prêts à être utilisé par Tazpkg, le gestionnaire de paquets créé pour SliTaz. Pour fonctionner, Tazwok utilise un fichier contenant la recette et toutes les informations nécessaires à la construction du paquet. Cette recette est aussi utilisée par Tazpkg et se compose de différentes variables et fonctions. Tazwok utilise un fichier de configuration (/etc/slitaz/tazwok.conf) pour connaître le chemin vers le wok, les paquets sources et les paquets (.tazpkg) générés. Il est aussi capable de générer une liste paquets avec leurs sommes md5, de créer un nouveau paquet de manière interactive, de faire une recherche, de nettoyer les fichiers générés ou encore de cuire plusieurs paquets en une seule fois (Voir les commandes disponibles). Tazwok peut être utilisé pour recompiler SliTaz entièrement depuis les sources.

Tazwok est écrit en script shell depuis rien (from scratch), compatible Bash, et fonctionnant avec Ash du projet Busybox. Tazwok est distribué sous licence libre GNU gpl v3. Les recettes avec leurs commandes sont basées sur le livre de cuisine de SliTaz (le Cookbook) qui fournit aussi de la documentation au sujet de Tazwok et du développement de SliTaz.

OPTIONS GÉNÉRALES

Trois options peuvent être utilisées avec presque toutes les commandes de tazwok. Elles permettent de définir le dépôt auquel appliquer la commande, c'est à dire le dossier contenant les sous-dossiers clean-wok, wok, packages, packages-incoming, src, log, éventuellement chroot. Il s'agit de : SLITAZ_DIR: le répertoire dans lequel se situent les dépôts (par défaut: /home/slitaz tel que définit dans /etc/slitaz/slitaz.conf) SLITAZ_VERSION: nom de la version de référence, par exemple stable, cooking, ... (par défaut: la version que vous utilisez telle que définie dans /etc/slitaz-release) undigest: Indique l'utilisation d'un dépôt secondaire, pour lequel SLITAZ_VERSION est la référence.

En l'absence de l'option undigest, l'adresse du dépôt utilisé sera $SLITAZ_DIR/$SLITAZ_VERSION (par exemple ce sera /home/slitaz/cooking par défaut si vous utilisez cooking) Si l'option undigest est présente, ce sera $SLITAZ_DIR/$undigest L'option undigest a son importance pour certaines commandes (par exemple configure-chroot, build-depends, etc.), lorsque les paquets manquants dans le dépôt secondaire, ou les informations les concernant, doivent être trouvées dans le dépôt de référence. Dans d'autre cas l'utilisation d'undigest ou de SLITAZ_VERSION donne le même résultat.

 #tazwok build-depends linux --SLITAZ_DIR=/home/pas-slitaz --SLITAZ_VERSION=cooking --undigest=undigest

COMMANDES

usage

La commande 'usage' affiche la liste des commandes disponibles avec une petite description en English :

 # tazwok usage

stats

Stats affiche les informations contenues dans le fichier de configuration et le nombre de paquets disponibles dans le wok :

 # tazwok stats

list

La commande 'list' permet de lister l'ensemble des paquets contenus dans le wok ou de lister les catégories par défaut (vous pouvez créer la votre). Elle permet aussi de lister les paquets d'une catégorie :

 # tazwok list
 # tazwok list category

info

Cette commande donne des informations sur le paquet, nom, version, etc. Info se base sur la recette du paquet pour connaître les informations, se sont les mêmes infos affichées par Tazpkg et les paquets installés :

 # tazwok info package

check-log

Lors de la compilation et génération du paquet binaire, Tazwok génére quelques messages de log stockés dans un fichier 'process.log'. Pour les afficher :

 # tazwok check-log package

search

Search permet de faire une recherche de paquet dans le wok. Vous pouvez spécifier un terme ou un nom de paquet :

 # tazwok search name

compile

Compile va compiler. Cette commande utilise les régles de compilation (compile_rules) spécifiées dans la recette du paquet en question, pour compiler les sources. A noter qu'il n'y a pas forcement de régles de compilation, des paquets sont directement générés par 'genpkg' et que la commande 'cook' permet de compiler les sources et générer le paquet binaire en une seule fois. Exemple :

 # tazwok compile package

genpkg

Genpkg pour Generate package, va générer le paquet (.tazpkg) en utilisant la fonction 'genpkg_rules' trouvée dans sa recette et compresser les fichiers. Une fois le paquet généré, il est stocké dans le dépôt des paquets temporaire (PACKAGES_INCOMING) spécifié dans le fichier de configuration ('tazwok stats' pour afficher la configuration courante). Le paquet peut être déplacé vers le dépôt de paquets définitif avec 'check-incoming'. Le paquet peut ensuite facilement s'installer via Tazpkg ou être utilisé par Tazlito pour générer une distribution LiveCD automatiquement. A noter que les fichiers standards tels que les locales, le pixmap ou le fichier.desktop sont automatiquement copiés dans $fs/usr/share, si les chemins sont standards ou si le fichier existe dans /stuff. Utilisation de 'genpkg' :

 # tazwok genpkg package

cook

Cook va simplement compiler et empaqueter le paquet en une seule fois :

 # tazwok cook package

cook-list

Cette commande va lancer 'tazwok cook' sur tous les paquets contenus dans la liste spécifiée en argument, ainsi que leurs dépendances de cuisson si elles sont manquantes ou ont besoin d'une mise à jour. Cook-list est utilisée par exemple, pour cuire le système de base, les applications de base, le système X, les paquets d'une saveur, etc. Cooklist peut aussi être utilisé sur un seul paquet grâce à l'option --pkg. L'option --forced peut être utilisée pour recuire l'ensemble des dépendances de cuisson nécéssaires, même si elles sont déjà disponible et à jour, exepté la chaîne d'outils (voir SLITAZ_CORE_TOOLCHAIN dans /etc/slitaz/tazwok.conf). Sans argument, cook-list utilise la liste de cuisson par défaut, située dans le dossier 'package'.

 # tazwok cook-list
 # tazwok cook-list packages.cooklist --forced
 # tazwok cook-list --pkg=firefox

cook-commit

La commande 'cook-commit' cherche les paquets dont les recettes/stuff/descriptions ont été modifiés et les met à jour en utilisant cook. La recherche de changements utilise les données md5 (identification en mesurant différentes caractéristiques des fichiers) des éléments utilisés lors de la précédente cuisson des paquets. Ces informations sont conservés dans le wok, si elles sont absentes elles sont obtenus depuis les paquets déjà préparés. L'option --forced oblige check-commit à utiliser les données md5 depuis les paquets, ce qui est utile pour récupérer des informations cohérentes si vous aviez modifié les listes commit/cooklist manuellement (cas rare). Par défaut, check-commit ne cible que les paquets qui sont déjà présents dans les dépôts de paquets. L'option --missing permet de scanner la totalité du wok, et d'ajouter tous les paquets qui n'ont pas encore été cuits à la liste.

 # tazwok cook-commit # Cuit les paquets qui ont besoin d'une mise à jour
 # tazwok cook-commit --forced # Idem, en corrigeant d'éventuelles incohérence dans les données
 # tazwok cook-commit --missing # Cuit les paquets qui ont besoin d'une mise à jour + les paquets manquants.
 # tazwok cook-commit --missing --forced

cook-all

Le commande 'cook-all' permet de recuire tous des paquets du wok. Sans options, elle est identique à cook-commit: recuit seulement les paquets dont les receipts/description.txt/stuffs ont été modifiés. L'option --missing a également le même effet que dans cook-commit: ajoute tous les paquets qui n'ont pas encore été préparés. La différence se situe dans l'option --forced: ici, elle signifie recuire l'ensemble des paquets, même s'ils n'ont pas été mis à jour depuis la dernière cuisson. Comme expliqué ci-dessous, le coeur de la chaîne d'outils ne sera jamais recuite par cette commande.

 # tazwok cook-all # identique à tazwok cook-commit
 # tazwok cook-all --missing # identique à tazwok cook-commit --missing
 # tazwok cook-all --forced # recuit tous les paquets déjà existant dans votre dépôt, excepté le coeur de la chaîne d'outils
 # tazwok cook-all --forced --missing # Recuit tous les paquets du wok, excepté le coeur de la chaîne d'outils

Cook-toolchain est la commande dédiée à la cuisson des paquets qui permettent la préparations de tous les autres. En effet, les paquets au coeur de la chaîne d'outils (pour SliTaz linux-api-headers/glibc/binutils/gcc) ne peuvent/doivent pas être cuits autrement dans SliTaz. Le processus de préparation de la chaîne d'outils est particulier, et utilise le script 'cook-toolchain' de 'tazchroot'. La méthode employée est une adaptation de celle présentée dans le livre Linux From Scratch: une première chaîne d'outils temporaire et sans lien avec le matériel/système utilisé est préparée, puis sert à la cuisson des paquets de la "véritable" chaîne d'outils. Il est à noter que cette opération est assez longue (plusieurs heures à plusieurs dizaines d'heures selon le matériel utilisé). C'est la première étape à réaliser pour compiler SliTaz entièrement depuis les sources.

 # tazwok cook-toolchain

clean

Clean permet simplement de supprimer tous les fichiers générés par la compilation et l'empaquetage. Les différentes commandes 'cook' l'utilisent automatiquement:

 # tazwok clean package

new-tree

La commande 'new-tree' permet de créer un nouveau paquet dans le wok et peut s'utiliser de manière interactive. New-tree va créer le répertoire du paquet et une recette modèle (receipt), cette recette peur être éditée avec votre éditeur de texte préféré et peut se configurer via l'option '--interactive'. Pour vous aider vous pouvez regarder des recettes existantes et lire la documentation du Cookbook. Exemple d'utilisation :

 # tazwok new-tree package
 # tazwok new-tree package --interactive

edit

Lance l'éditeur définit dans la configuration de tazwok (variable EDITOR) pour éditer la recette du paquet précisé en argument.

 # tazwok edit sylpheed

gen-list

La commande 'gen-list' permet de générer une liste de paquets (packages.list), leurs sommes md5 (packages.md5) et une liste de paquets contenant plus d'informations (packages.txt). Les listes sont créées en se basant sur les paquets contenus dans un répertoire. Vous avez la possibilité de spécifier le répertoire à utiliser sur la ligne de commande. Si vous ne le faites pas, les deux dépôts de paquets (permanent 'packages' et temporaire 'packages-incoming') seront ciblés. Dans la plupart des cas, 'check-list' remplit la même fonction plus rapidement, donc 'gen-list' n'est réellement utile qu'en cas de corruption des fichiers. Utilisation de la commande 'gen-list' :

 # tazwok gen-list
 # tazwok gen-list /path/to/repository

check-list

La commande 'check-list' remplit la même fonction que 'gen-list', mais elle recherche les paquets dont les informations doivent être mises à jour. Pour cette raison elle est généralement plus rapide, en particulier quand peu de paquets ont été modifiés. Les commandes cook l'utilisent automatiquement. Comme pour 'gen-list', si vous ne précisez pas de cible, 'packages' et 'packages-incoming' seront toutes deux mises à jour.

 # tazwok check-list
 # tazwok check-list /path/to/repository

gen-wok-db

'wok-db' désigne des fichiers utilisés pour obtenir rapidement les relations de dépendance entre les recettes. Ces informations sont généralement ajoutées chaque fois que nécéssaire, et automatiquement, par tazwok. 'gen-wok-db' sert à les ré-génerer en cas de corruption des fichiers (ex: vous avez tué tazwok pendant qu'il générait automatiquement ces fichiers).

 # tazwok gen-wok-db

report

Affiche le contenu des listes: commit/cooklist/broken/blocked, ou seulement de la liste demandée en argument.

 # tazwok report
 # tazwok report cooklist

gen-clean-wok et clean-wok

La commande 'gen-clean-wok' produit une copie du wok courant, sans les fichiers liés à la compilation des paquets. Cette commande est utile pour sauvegarder une version du wok ou copier un wok pour tester avec un autre. Quand à la commande 'clean-wok', elle va nettoyer tous les paquets du wok courant et supprimer tous les fichiers générés. Pour récupérer un wok propre ou nettoyer le wok actuel :

 # tazwok gen-clean-wok path/to/new-wok
 # tazwok clean-wok

remove

Supprime le paquet spécifié du wok, avec tous les fichiers, stuff et recette compris :

 # tazwok remove package

build-depends

Build-depends génère une liste de paquets nécessaires pour compiler le wok. Avec un paquet en argument, elle affiche la liste complète des dépendances de cuisson de ce paquet.

 # tazwok build-depends
 # tazwok build-depends midori

check-commit

'check-commit' scanne le wok pour trouver les recettes qui ont été modifiées et les ajoute à la cooklist par défaut. Les options --forced et --missing jouent ici le même rôle que pour cook-commit.

 # tazwok check-commit
 # tazwok check-commit --forced
 # tazwok check-commit --missing

check

Recherche les erreurs courantes dans les receipts :

 # tazwok check

update-wok

'update-wok' télécharge ou met à jour le wok contenu dans le dossier clean-wok du dépôt. Ensuite, il copie les éléments nouveaux dans le wok de cuisson (dossier wok) et retire ceux qui n'existent plus dans la nouvelle version. Les adresses et la méthode (tarball ou hg) utilisée par cette commande sont définies dans tazwok.conf. L'option --local permet d'effectuer seulement la seconde opération (copie des fichiers dans le wok). Cela est utile si vous avez apporté des modifications locales dans le clean-wok et voulez les ajouter à votre wok de cuisson. Ceci est particulièrement pratique pour les utilisateurs de mercurial (hg), puisque cet outils est beaucoup plus rapide avec un wok qui ne contient aucun fichiers liés à la compilation. Dans ce cas, effectuer les modifications dans le clean-wok puis: tazwok update-wok --local.

 # tazwok update-wok
 # tazwok update-wok --local

webserver

'webserver' est la commande qui permet de créer une interface php qui informe sur l'état des dépôts. Plusieurs dépôts peuvent être ajoutés/retirés en utilisant les options --SLITAZ_VERSION/--undigest. L'argument 'on' permet d'ajouter un dépôt à l'interface web, tandis que l'option 'off' le retire (au cas par cas). En utilisant la configuration par défaut, l'interface sera disponible dans votre navigateur à l'adresse http://localhost/vhosts/bb/. Le paquet 'php' doit être installé pour utiliser cette commande.

# tazwok webserver on
# tazwok webserver off

MAINTENEURS

Antoine Bodin <gokhlayeh at slitaz.org>
Christophe Lincoln <pankso at slitaz.org>