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.
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...
:>
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.
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
).
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.
Das Target configure
wird
aufgerufen. Dieses kann viele verschiedene Dinge
machen.
Existiert scripts/configure
,
so wird es aufgerufen.
Falls HAS_CONFIGURE
oder
GNU_CONFIGURE
gesetzt sind, wird
WRKSRC/configure
ausgeführt.
Falls USE_IMAKE
gesetzt ist,
wird XMKMF
(standardmäßig xmkmf -a
)
ausgeführt.
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-
oder
irgendwas
post-
als Targets definieren oder Skripten mit diesen
Namen in das irgendwas
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-
übernommen. Zum Beispiel sind die Befehle
zum Entpacken eines Ports im Target
irgendwas
do-extract
zu finden. Falls Sie mit
einem vorgegebenen Target nicht zufrieden sind, können
Sie es verändern, indem Sie das Target
do-
in Ihrem irgendwas
Makefile
neu
definieren.
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.
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.