Baukasten-Lösung
Systementwicklung mit T2
Neue Pakete anlegen
Damit das T2-Build-System ein Paket einbinden kann, benötigt es einige Meta-Informationen wie Download-Ort, Checksumme, Autor, T2-Maintainer sowie eine Paketbeschreibung. Zur besseren Wartbarkeit haben die Entwickler hierfür ein Tag-basierendes Plaintext-Format gewählt (Listing 1).
[COPY] — T2-COPYRIGHT-NOTE-BEGIN — [COPY] T2 SDE: package/…/exact-image/exact-image.desc [COPY] Copyright (C) 2004 - 2007 The T2 SDE Project [COPY] — T2-COPYRIGHT-NOTE-END — [I] A fast imaging library including command line frontend [T] ExactImage is a fast imaging library including a command line frontend. [U] http://www.exactcode.de/oss/exact-image/ [A] Rene Rebe <rene@exactcode.de> [M] Rene Rebe <rene@exactcode.de> [C] extra/multimedia [F] CROSS [L] GPL [S] Beta [V] 0.4.1 [P] X —--5—9 500.000 [D] 3315365482 exact-image-0.4.1.tar.bz2 http://dl.exactcode.de/oss/exact-image/
Das Paketmanagement teilt die Pakete in verschiedene Rubriken auf, wobei sich die Paketbeschreibungen in einem weiteren Unterverzeichnis befinden. Der Verzeichnisname entspricht dabei stets dem offiziellen Paketnamen und wird komplett klein geschrieben.
Um ein neues Paket anzulegen, kopieren Sie am besten die Beschreibungsdatei eines ähnlichen, bestehenden Pakets in das neue Unterverzeichnis und passen sie dann für das neuen Paket an. Eine detaillierte Beschreibung der wichtigsten Tags finden Sie in der Tabelle "T2-.desc-Tags".
T2-.desc-Tags
| Tag | Funktion |
|---|---|
| [COPY] | beschreibt das T2-SDE-Copyright und eventuell weitere Copyright-Informationen hinsichtlich der speziellen Paketquellen. Das T2-Build-System erzeugt ihn automatisch, Sie können ihn aber auch manuell mithilfe von ./scripts/Create-CopyPatch anlegen
|
| [I] | kurze Paketbeschreibung, kann nur einmal verwendet werden |
| [T] | detaillierte Paketbeschreibung, kann mehrfach verwendet werden. |
| [U] | verweist auf die Homepage des Pakets, kann mehrfach verwendet werden |
| [A] | Originalautor des Pakets (Name, E-Mail-Adresse, Funktion). Normalerweise findet sich hier nur der Hauptautor, optional jedoch bis zu vier Ersteller. Es sollte zumindest eine E-Mail-Adresse angegeben sein, um möglichst einfach Patches veröffentlichen zu können. |
| [M] | aktuelle Informationen zum T2-Maintainer des Pakets |
| [C] | Sortierung des Pakets; eine Liste aller möglichen Kategorien liefert die Datei misc/share/PKG-CATEGORIES
|
| [F] | optional, signalisiert Besonderheiten eines Pakets; eine Auswahlliste aller Flags liefert die Datei misc/share/PKG-FLAGS
|
| [L] | gibt Auskunft über Lizenzbestimmungen des Pakets; alle möglichen Lizenzabkürzungen liefert die Datei misc/share/REGISTER
|
| [S] | aktueller Entwicklungsstatus der Paketversion |
| [V] | aktuelle Paketversion, optional eine Revisionsnummer |
| [P] | Priorität im T2-Build-System. Das erste Feld signalisiert, ob das Paket übersetzt werden soll oder nicht ((in Listing 1: X=on, übersetzen). Das zweite und dritte Feld bestimmen, in welcher Stage und in welchem Build-Auftrag das Build-System das Paket übersetzen soll.
|
| [D] | Angaben zum Download des Pakets. Besteht es aus mehreren Dateien, stehen die entsprechenden Verweise mit jeweils voranstehenden [D]-Tag untereinander. Die führende Prüfsumme muss beim Anlegen des Pakets auf 0 gesetzt werden.
|
Nach dem Anlegen der Beschreibungsdatei starten Sie als nächstes das T2-Build-System, um die neuen Paket Informationen einzulesen. Das erledigt der Befehl
$ ./scripts/Config -old-config
Anschließend können Sie das neue Paket das erste Mal übersetzen. Dazu dient der Aufruf:
$ ./scripts/Emerge-Pkg Paketname
Während der Kompilierung erzeugt das Build-System im Verzeichnis /var/adm/cache die passende Cache-Datei mit den Informationen zu den Abhängigkeiten des Pakets. Diese Datei kopieren Sie nach der erfolgreichen Übersetzung ins neue Paket-Verzeichnis:
$ cp /var/adm/cache/Paketname package/graphic/Paketname/Paketname .cache
Anschließend erzeugen Sie noch die passende Checksumme für das Paket mit dem Aufruf
$ ./scripts/Create-CkSumPatch Paketname | patch -p1
Damit haben Sie auch schon alle Arbeiten zum Einbinden der neuen Software abgeschlossen: So schnell kann man mit T2 Pakete anlegen.
Praktische Helfer
| Aufruf | Funktion |
|---|---|
./scripts/Find-Pkg Paketname oder Stichwörter
|
sucht nach passenden Paketen |
./scripts/Download Paketname
|
lädt nur den Quelltext des genannten Pakets |
./scripts/Update-Pkg Paketname_mit_neuer_Versionsnummer
|
aktualisiert die Beschreibungsdatei |
Optimierung
Viele Pakete versuchen in ihrem configure-Skript oder Makefile, das System und den Prozessor zu erkennen und würden bei der Übersetzung beispielsweise auf einem Athlon Optimierungen für die i686-Architektur verwenden, obwohl der Benutzer tatsächlich Binaries für den i486-Prozessor eines Routers erstellen möchte. Damit alle Programme mit den vom Benutzer ausgewählten Optimierungen übersetzt werden, gibt es in T2 Wrapper-Programme, welche die Kommandozeilenargumente des Compilers und die Linker-Aufrufe verändern. Sie ersetzen alle für die Optimierung relevanten Optionen durch die in der T2-Build-Umgebung ausgewählten.
T2 bietet auch Unterstützung für einige alternative C-Bibliotheken, mit denen sich Systeme mit sehr schlankem Footprint erzeugen lassen — typischerweise für eingebettete Systeme. Als Init-Systeme kennt T2 neben dem klassischen Sysvinit auch noch Minit, Runit, Upstart und einige weitere. Diese bietet durch paralleles Starten der Dienste und andere Funktionen teilweise schnellere Bootzeiten.



