Construire son SliTaz

Chaque paquet et chaque image SliTaz est construit à partir de simples recettes en shell, avec des outils installés sur SliTaz même. Ce chapitre donne les premiers pas ; les manuels des outils donnent les détails, et les pages développeurs du site expliquent comment fonctionne le projet : le wok, l'hôte de construction, Mercurial et comment contribuer.

Paquets avec cookutils

Cookutils construit les paquets à partir de recettes (fichiers receipt) rangées dans le wok, /home/slitaz/wok. Il est présent sur SliTaz Core et Firefox x86_64 ; ailleurs, installez-le :

# spk-add cookutils
# grep ^ARCH /etc/slitaz/cook.conf    # doit correspondre à votre système
# cook setup                 # répertoires et outils de construction
# cook setup --wok           # clone aussi le wok officiel (demande mercurial)
# cook new mypkg             # nouvelle recette dans /home/slitaz/wok/mypkg/
# nano /home/slitaz/wok/mypkg/receipt
# cook mypkg
# spk-add /home/slitaz/packages/mypkg-1.0-x86_64.tazpkg

Sur x86_64, vérifiez que ARCH="x86_64" est bien défini dans /etc/slitaz/cook.conf : le paquet 5.1 y met i486. Le log de construction est /home/slitaz/log/mypkg.log. cook doctor vérifie l'environnement de construction et cook-tui est une interface en mode texte. Les réglages sont dans /etc/slitaz/cook.conf. Sur un système en marche, cook travaille dans une couche jetable posée sur le système : les dépendances de construction installées pour le cook disparaissent à la fin, et rien n'est installé sur le système tant que vous ne le faites pas.

La recette

Une recette est un fichier shell avec quelques variables et fonctions :

# SliTaz package receipt.

PACKAGE="hello"
VERSION="2.12"
CATEGORY="misc"
SHORT_DESC="The GNU Hello program."
MAINTAINER="you@example.org"
LICENSE="GPL3"
WEB_SITE="https://www.gnu.org/software/hello/"
TARBALL="$PACKAGE-$VERSION.tar.gz"
WGET_URL="https://ftp.gnu.org/gnu/$PACKAGE/$TARBALL"

DEPENDS=""
BUILD_DEPENDS=""

compile_rules()
{
	./configure --prefix=/usr &&
	make && make DESTDIR=$DESTDIR install
}

genpkg_rules()
{
	mkdir -p $fs/usr
	cp -a $install/usr/bin $fs/usr
}

compile_rules compile et installe dans $install, genpkg_rules copie dans $fs ce qui appartient au paquet. Le manuel de Cookutils décrit toutes les variables, le format de recette v2 avec paquets multiples, et cooker, le robot de construction.

Construire dans un chroot

Pour construire dans un système propre qui ne dépend pas de ce qui est installé sur le vôtre, utilisez un chroot. tazdev en crée un et y entre :

# spk-add slitaz-dev-tools
# tazdev gen-chroot --arch=x86_64 \
	--mirror=https://mirror.slitaz.org/x86_64/cooking/packages/
# tazdev chroot --arch=x86_64

Quitter le shell du chroot le démonte. Pour i486, utilisez --arch=i486 et le miroir i486. Pour construire des paquets SliTaz depuis une autre distribution GNU/Linux, utilisez tazlab (spk-add tazlab sur SliTaz).

Images live avec tazlito

Une saveur (flavor) décrit une image : une liste de paquets, des fichiers ajoutés au système de fichiers racine et au CD, et une recette. Les saveurs officielles sont dans le dépôt flavors. Pour construire une image i486 à partir d'une saveur avec tazlito, sur un système ou un chroot i486 :

# spk-add mercurial
# mkdir -p /home/slitaz/$(cat /etc/slitaz-release)
# cd /home/slitaz/$(cat /etc/slitaz-release)
# hg clone https://hg.slitaz.org/flavors
# tazlito pack-flavor core
# tazlito get-flavor core
# tazlito gen-distro

Modifiez la saveur (packages.list, rootfs/) avant de l'empaqueter pour en faire la vôtre. tazlito gen-iso reconstruit l'image après une modification de l'arborescence dans distro/, et tazlito clean-distro la supprime. Voir le manuel de Tazlito.

Tazlito construit les images i486 officielles. Les images hybrides x86_64 BIOS et UEFI sont construites avec un outil plus récent, metier, pas encore disponible en paquet.

Remasteriser un système live

À partir d'un système live i486 que vous avez personnalisé (paquets, réglages, fichiers dans /home), tazlito peut en écrire une nouvelle image :

# tazlito writeiso lzma my-slitaz

Le noyau et les fichiers de démarrage sont pris sur le support live, qui doit être monté sur /media/cdrom.