Table of Contents

Wok & Kochwerkzeuge

Übersicht

Die Kochwerkzeuge werden verwendet, um nach den Anweisungen in einem Rezept aus Quellprogrammen ausführbare Programme zu erzeugen (kochen). Die so erzeugten Dateien werden in einem Verzeichnis abgelegt, woraus dann Tazpkg ein Paket erzeugt. Das Rezept in einem Wok unterscheidet sich im „unteren Teil“ von einem Rezept für Tazpkg: Die Kochwerkzeuge benötigen im Rezept Regeln für die Übersetzung und das Paketpacken (letztere werden an Tazpkg durchgereicht), wohingegen Tazpkg nur Regeln für das Paketpacken braucht.

Die Kochwerkzeuge sind Kommandoprozeduren, mit deren Hilfe vom SliTaz-Projekt automatisch Distributionen aus den Quellprogrammen erzeugt werden. Das Projekt enthält auch ein Archiv mit Werkzeugen, Beispielen und Konfigurationsdateien. Die Prozedur Tazlito zum Erzeugen von Distributionen kann sowohl von Anwendern als auch von Entwicklern verwendet werden; mit ihrer Hilfe kann ein ISO-Abbild transferiert, wieder erzeugt oder verändert werden, indem mithilfe einer Paketliste, einer Konfigurationsdatei und einer Beschreibung eine Variante erzeugt wird. Die Kochwerkzeuge sind alle standardmäßig auf SliTaz installiert.

Entwickler und künftige Mitwirkende können sich in der Entwickler-Abteilung über die SliTaz-Projektverwaltung informieren.

Struktur des Wok

Der Wok ist ein Verzeichnisbaum, der alle verfügbaren Pakete aufnimmt. Jedes Unterverzeichnis (für ein Paket) enthält mindestens ein Rezept, in dem beschrieben ist, wie und woher die Quellen des Pakets zu transferieren sind, wie sie entpackt werden, wie sie übersetzt werden und schließlich wie ein Paket gepackt wird. Die Kochwerkzeuge legen auch ein Verzeichnis an, wohin die Paketquellen transferiert werden (Variable SOURCES_REPOSITORY, standardmäßig /home/slitaz/src) und ein Verzeichnis, in das die gepackten Pakete abgelegt werden (Variable PACKAGES_REPOSITORY, standardmäßig /home/slitaz/packages); in der Datei /etc/slitaz/cook.conf können über die genannten Variablen andere Namen für diese Verzeichnisse festgelegt werden.

In den Mercurial-Depots gibt es mehr als nur einen Wok:

Zunächst wird jede Zulieferung in den inoffiziellen Wok wok-undigest übernommen. Wenn das Paket im Hinblick auf die automatische Erzeugung ausreichend getestet wurde, kann es in den Entwicklungswok wok übernommen werden.

Vorbereitungen

Die Entwickler-Abteilung enthält wertvolle Hintergrundinformationen. Lesen Sie diese bitte und fahren Sie erst fort, wenn Sie diese verstanden haben.

Um einen Wok verwenden zu können, müssen zunächst die Kochwerkzeuge zusammen mit den wichtigsten Entwicklerwerkzeugen (binutils, Übersetzer, libraries-dev, make) installiert werden. Dies kann durch Installation des Meta-Paketes slitaz-toolchain geschehen:

 # tazpkg recharge
 # tazpkg get-install slitaz-toolchain

Um auf die SliTaz-Depots zugreifen zu können, muss das Paket mercurial installiert werden:

 # tazpkg get-install mercurial

Weitere Informationen über das Mercurial-Versionsverwaltungssystem sind in seiner Internetpräsenz und in dem Buch Mercurial: The Definitive Guide erhältlich.

Den Wok duplizieren

Soll ein Paket erstellt werden, das später in die SliTaz-Depots übernommen werden soll, muss zunächst mit Mercurial der aktuelle Wok dupliziert werden. Dieses Duplizieren („cloning“) des Woks besteht darin, dass der ganze Wok mitsamt seiner ganzen Historie in ein Arbeitsverzeichnis (standardmäßig /home/slitaz/wok) transferiert wird.

Dies ist nicht erforderlich, wenn mit den Kochwerkzeugen nur Pakete für den privaten Gebrauch erstellt werden sollen. Das Verfahren dafür ist im Abschnitt Privaten Wok einrichten beschrieben.

 # cook setup --wok

Der Transfer kann einige Zeit dauern; danach ist der vollständige Verzeichnisbaum des Entwicklungswoks im Arbeitsverzeichnis vorhanden.

Ein Wok ist eines von vielen Projekten in den Mercurial-Depots. Einzelne Pakete sind zu größeren Projekten zusammengefasst (wok, wok-stable oder wok-undigest) und es gibt keine eigenen Unter-Projekte, sondern nur Unterverzeichnisse; Mercurial kann einzelne Teile eines Projektes (noch) nicht duplizieren, weshalb ein einzelnes Paket nicht dupliziert werden kann.

Privaten Wok einrichten

Soll ein Paket nur für den privaten Gebrauch erstellt werden, also nicht in die SliTaz-Depots übernommen werden, kann ein leerer Wok eingerichtet werden:

 # cook setup 

Übersetzen und Erzeugen von Paketen

Vor der Übersetzung eines Quell-Paketes muss den Kochwerkzeugen das Arbeitsverzeichnis bekannt gemacht werden. Standardmäßig ist dies /home/slitaz/wok. Der Pfadname kann aber geändert werden.

Die Erstellung eines SliTaz-Paketes aus den Quellprogrammen kann so zusammengefasst werden: konfigurieren, übersetzen & abreichern.

Die “make install”-artigen Schritte werden nicht ausgeführt: die erzeugten Dateien werden nicht installiert, sondern verbleiben in dem Verzeichnis ($DESTDIR), wo sie für das Paketpacken bereitstehen.

Beim Kochen Ihres ersten Paketes sollten Sie es einfach halten und das Rezept nicht ändern. M4 ist ein geeigneter Kandidat für Ihren ersten Kochversuch:

 # cook m4 

Wenn cook mit der Erstellung von M4 fertig ist, befindet sich das erzeugte Paket standardmäßig im Verzeichnis /home/slitaz/packages oder in dem in der Konfigurationsdatei angegebenen. Wenn alles funktioniert hat, kann das Paket dann installiert werden oder es kann mit Tazlito in ein ISO-Abbild übernommen werden!

Wenn Sie sich mit Rezepten und dem Kompilierungsprozess vertraut gemacht haben, können sie mit dem folgenden Kommando ein neues Paket erzeugen, wobei Sie zunächst interaktiv ein Rezept schreiben:

 # cook new <packageName> --interactive 

Um Frustrationen zu vermeiden, sollten Sie sich zuvor die Dokumentation über Rezepte und die Tazwok-Tipps durchlesen!

Mehrere Pakete aus einer Liste kochen

Mit cook können auch mehrere Pakete mit einem einzigen Kommando erzeugt werden. Dazu wird eine Kochliste verwendet, das ist eine Textdatei mit einem Paketnamen je Zeile. Mit einer Kochliste mypkgs.cooklist sieht das Kommando so aus:

 # cook list mypkgs.cooklist 

Kompilierungsoptionen

Sie können jede beliebige Option verwenden, müssen aber die FSH respektieren, die Dokumentation in /usr/share/doc und die „FreeDesktop“-Standards (.desktop) befolgen.

Paketspezifische Optionen

Paketspezifische Optionen können Sie nach Belieben verwenden; Sie können beispielsweise XML-Unterstützung deaktivieren, kleinere PHP-Objektprogramme einsetzen und auf libxml2 verzichten, was sich aber bei PHP in Anbetracht des Verlusts an Funktionalität nicht lohnt. Im Zweifel schauen Sie in die Rezepte und die Übesetzer-Optionen in compile_rules.

Optimierung

Die offiziellen SliTaz-Pakete sind für die i486-Architektur optimiert. Die Optimierungs-Optionen sind in der Variablen CONFIGURE_ARGS in der Konfigurationsdatei /etc/slitaz/cook.conf angegeben. Soll ein Paket mit anderen Optionen erzeugt werden, so kann die Konfigurationsdatei geändert werden:

CONFIGURE_ARGS="--build=i486-pc-linux-gnu --host=i486-pc-linux-gnu"

Zu übernehmende und auszuschließende Dateien

Im Allgemeinen enthalten die Basispakete keine man-, info- oder doc-Dateien und auch keine statischen Bibliotheken; diese müssen als Paket package-doc oder package-dev erzeugt werden. Beachten Sie, dass es bei SliTaz nicht vorgesehen ist, das Kommando man oder info zu verwenden; es gibt also auch keine „manual“-Seiten oder GNU-info-Dateien. Das Erstellen von Paketen mit Dokumentation ist optional. Vorzugsweise sollte Dokumentation im Handbuch hinterlegt werden, da dieses allgemein verfügbar ist und leicht aktualisiert und korrigiert werden kann.

Bei der Konfigurierung ist darauf zu achten, Basis-Konfigurationsdateien zur Verfügung zu stellen, die den sofortigen Einsatz des Paketes ermöglichen. In einigen speziellen Fällen, wie z.B. beim Webserver LightTPD, werden von SliTaz Konfigurationsdateien und Startprozeduren in /etc/init.d zur Verfügung gestellt (im Handbuch dokumentiert). Bei einem neuen Paket können Sie die Standard-Konfiguration so wählen, wie Sie es für den Endbenutzer am besten halten. In dem Verzeichnis /usr/share/examples befinden sich Beispielkonfigurationen und nützliche Informationen anderer Art.

Paket-Kategorien

Die Paket-Kategorien sind nur informativ und nicht festgelegt. Der Zweck ist, Pakete so zu klassifizieren, dass ein Programm, das Daten aus einem Paket-Rezept gewinnt, daraus (z.B. täglich) eine HTML-Seite erstellen kann. Vorübergehend sollten Entwickler-Pakete in die Kategorie 'Entwicklung', Xorg in die Kategorie 'X-Window' und neue Pakete in die Kategorie 'extra' eingeordnet werden.

Struktur eines Paketes im Wok

Die Struktur der Pakete im Wok darf nicht verändert werden, damit die Kochwerkzeuge die richtigen Dateien und Verzeichnisse finden. Mögliche Bestandteile eines Paketes (Das Verzeichnis taz wird erst beim Kochen erzeugt!) sind:

Die Kochwerkzeuge rufen automatisch Tazpkg auf, um aus dem Verzeichnis taz ein Paket zu packen. Dabei werden die Anweisungen aus dem Rezept zum Packen des Paketes übergeben.

Struktur eines SliTaz-Paketes

SliTaz-Pakete sind mit gzip komprimierte cpio-Archive, die Dateien und Dateisysteme enthalten: