Das FreeBSD Porter-Handbuch
Zurück |  | Weiter

# Kapitel 4. Einen Port in aller Ruhe erstellen

Ok, das war nicht ganz einfach und der Port hat einige Veränderungen erfordert, um funktionieren zu können. In diesem Abschnitt werden wir Schritt für Schritt erklären, wie man den funktionierenden Port den Vorgaben der Ports entsprechend anpasst.

# 4.1. Die Funktionsweise

Beginnen wir mit der Abfolge der Ereignisse, die eintreten, wenn der Nutzer das erste `make` in Ihrem Portsverzeichnis ausführt. Sie empfinden es für das Verständnis vielleicht hilfreich `bsd.port.mk` in einem anderen Fenster offen zu haben, während Sie diesen Abschnitt lesen.

Aber machen Sie sich keine Sorgen, falls Sie nicht wirklich verstehen, was `bsd.port.mk` macht, die Wenigsten begreifen dies... :>

1. Das Target `fetch` wird aufgerufen. Es ist dafür verantwortlich sicherzustellen, dass der Tarball lokal im `DISTDIR` verfügbar ist. Falls `fetch` die benötigten Dateien in `DISTDIR` nicht finden kann, durchsucht es die URL `MASTER_SITES`, welche im Makefile gesetzt ist, ebenso wie unsere Haupt-FTP-Seite unter ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/ , wo wir genehmigte Distfiles als Backup aufbewahren. Danach wird versucht, so eine direkte Internetverbindung besteht, dass genannte Distfile mit `FETCH` herunterzuladen. Falls dies gelingt, wird die Datei in `DISTDIR` für weitere Nutzung abgelegt und fährt fort.

2. Das Target `extract` wird aufgerufen. Es sucht nach den Distfiles Ihres Ports (normalerweise ein gzip-komprimierter Tarball) in `DISTDIR` und entpackt diese in ein temporäres Unterverzeichnis, welches von `WRKDIR` festgelegt wird (standardmäßig `work`).

3. Das Target `patch` wird aufgerufen. Zuerst werden alle in `PATCHFILES` festgelegten Patches eingespielt. Anschließend werden, falls Patches der Form `patch-`*`` in `PATCHDIR` (standardmäßig das `files`-Unterverzeichnis) gefunden werden, diese in alphabetischer Reihenfolge eingespielt.

4. Das Target `configure` wird aufgerufen. Dieses kann viele verschiedene Dinge machen.

   1. Existiert `scripts/configure`, so wird es aufgerufen.

   2. Falls `HAS_CONFIGURE` oder `GNU_CONFIGURE` gesetzt sind, wird ``WRKSRC`/configure` ausgeführt.

   3. Falls `USE_IMAKE` gesetzt ist, wird `XMKMF` (standardmäßig `xmkmf -a`) ausgeführt.

5. Das Target `build` wird aufgerufen. Es ist für das Wechseln in das private Arbeitsverzeichnis (`WRKSRC`) und das Bauen des Ports zuständig. Ist `USE_GMAKE` gesetzt, so wird GNU `make` verwendet, sonst das System-`make`.

Die oben genannten Schritte sind die Standardaktionen. Zusätzlich können Sie `pre-`irgendwas`` oder `post-`irgendwas`` als Targets definieren oder Skripten mit diesen Namen in das `scripts`-Unterverzeichnis legen. Sie werden dann vor bzw. nach den Standardaktionen aufgerufen.

Angenommen Sie haben das Target `post-extract` in Ihrem `Makefile` definiert und eine Datei `pre-build` im `scripts` Unterverzeichnis, so wird das Target `post-extract` nach dem normalen Entpacken aufgerufen und das Skript `pre-build` ausgeführt, bevor die vordefinierten Bau-Regeln abgearbeitet sind. Es wird empfohlen, dass Sie `Makefile`-Targets verwenden, falls die Aktionen es erlauben, da es so für jemanden einfacher sein wird herauszufinden, was für eine nicht-standardmäßige Aktion der Port benötigt.

Die Standardaktionen werden aus den Targets `bsd.port.mk` `do-`irgendwas`` übernommen. Zum Beispiel sind die Befehle zum Entpacken eines Ports im Target `do-extract` zu finden. Falls Sie mit einem vorgegebenen Target nicht zufrieden sind, können Sie es verändern, indem Sie das Target `do-`irgendwas`` in Ihrem `Makefile` neu definieren.

> Anmerkung: Die ``Haupt''-Targets (z.B. `extract`, `configure` usw.) machen nicht mehr als sicherzustellen, dass bis hierhin alle Abschnitte abgeschlossen sind, um danach die eigentlichen Targets oder Skripte aufzurufen. Und es ist nicht beabsichtigt, dass diese geändert werden. Falls Sie das Entpacken verändern wollen, verändern Sie `do-extract`, aber niemals die Art, wie `extract` arbeitet!

Jetzt, da Sie verstehen, was geschieht, wenn der Benutzer `make` eingibt, lassen Sie uns durch die empfohlenen Schritte gehen, um den perfekten Port zu erstellen.

Zurück | Zum Anfang | Weiter
Den neuen Port einreichen |  | Den originalen Quelltext besorgen

Fragen zum FreeBSD Ports-System richten Sie bitte an <ports@FreeBSD.org>, Fragen zu diesem Dokument hingegen an <de-bsd-translators@de.FreeBSD.org>.