Der zweite Teil des Makefile
beschreibt die Dateien, welche heruntergeladen werden
müssen, um den Port zu bauen und wo diese Dateien zu
finden sind.
DISTNAME
ist der Name der Applikation
wie er von den Autoren vergeben wurde.
DISTNAME
hat als Vorgabe
${PORTNAME}-${PORTVERSION}
also
überschreiben Sie diese Vorgabe nur, wenn es notwendig
ist. DISTNAME
wird nur an zwei Stellen
genutzt. Erstens: (DISTFILES
) hat als
Vorgabe
${DISTNAME}
${EXTRACT_SUFX}
.
Zweitens: Die Distributionsdatei soll in einem
Unterverzeichnis namens WRKSRC
extrahiert werden, dessen Vorgabe
work/${DISTNAME}
ist.
Manche Drittanbieter-Namen, welche nicht in das Schema
${PORTNAME}-${PORTVERSION}
passen,
können durch Setzen von DISTVERSION
automatisch behandelt werden. PORTVERSION
und DISTNAME
werden automatisch
abgeleitet, können aber natürlich manuell
überschrieben werden. Die folgende Tabelle führt
einige Beispiele auf:
DISTVERSION | PORTVERSION |
---|---|
0.7.1d | 0.7.1.d |
10Alpha3 | 10.a3 |
3Beta7-pre2 | 3.b7.p2 |
8:f_17 | 8f.17 |
PKGNAMEPREFIX
und
PKGNAMESUFFIX
beeinflussen
DISTNAME
nicht. Beachten Sie bitte
auch, dass Sie DISTNAME
unverändert lassen sollten, falls
WRKSRC
denselben Wert hat wie
work/${PORTNAME}-${PORTVERSION}
und gleichzeitig dass Archiv des originalen Quelltextes
anders benannt ist als
${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX}
.
Es ist einfacher
DISTFILES
zu definieren, als
DISTNAME
und WRKSRC
(und möglicherweise EXTRACT_SUFX
)
zu setzen.
Dokumentieren Sie das Verzeichnis der FTP/HTTP-URL,
welche auf den originalen Tarball zeigt, in der Variable
MASTER_SITES
. Bitte vergessen Sie
niemals den Schrägstrich (/
)
am Ende!
Die make
-Makros werden versuchen,
diese Festlegung für die Aufbereitung der
Distributionsdateien mittels FETCH
zu
benutzen, falls sie diese nicht schon auf dem System
finden.
Es wird empfohlen, mehrere Webseiten in dieser Liste aufzuführen, vorzugsweise auf verschiedenen Kontinenten. Dies ist ein Schutz gegen Probleme bei größeren Ausfällen im Internet. Wir planen sogar Unterstützung einzubauen, die automatisch einen Server in der Nähe zum Herunterladen bestimmt. Die Verfügbarkeit von vielen Webseiten wird dieses Vorhaben beträchtlich erleichtern.
Falls der originale Tarball Teil eines populären
Archivs ist, wie SourceForge, GNU oder Perl CPAN, können
Sie möglicherweise auf diese Seiten in einer einfachen
und kompakten Form mittels
MASTER_SITE_
(d.h., *
MASTER_SITE_SOURCEFORGE
,,
MASTER_SITE_GNU
und
MASTER_SITE_PERL_CPAN
) referenzieren.
Setzen Sie einfach MASTER_SITES
auf eine
dieser Variablen und MASTER_SITE_SUBDIR
auf den Pfad innerhalb des Archivs. Hier ist ein
Beispiel:
MASTER_SITES= ${MASTER_SITE_GNU} MASTER_SITE_SUBDIR= make
Oder verwenden Sie ein kondensiertes Format:
MASTER_SITES= GNU/make
Diese Variablen werden in
/usr/ports/Mk/bsd.sites.mk
definiert.
Es werden ständig neue Einträge hinzugefügt,
daher stellen Sie bitte unbedingt sicher, dass Sie die
neueste Version verwenden, bevor Sie einen Port
einschicken.
Für beliebte Seiten existieren sogenannte magic-Makros, die eine bestimmte Verzeichnisstruktur erstellen. Um eines dieser Makros zu verwenden, geben Sie dessen Abkürzung an und Ihr System wird versuchen, das korrekte Unterverzeichnis automatisch zu bestimmen.
MASTER_SITES= SF
Ist das Ergebnis nicht korrekt, können Sie diesen Wert auch überschreiben.
MASTER_SITES= SF/stardict/WyabdcRealPeopleTTS/${PORTVERSION}
MASTER_SITES
-MakrosMakro | Erwartetes Unterverzeichnis |
---|---|
APACHE_JAKARTA | /dist/jakarta/${PORTNAME:S,-,,/,}/source |
BERLIOS | /${PORTNAME:L} |
CHEESESHOP | /packages/source/source/${DISTNAME:C/(.).*/\1/}/${DISTNAME:C/(.*)-[0-9].*/\1/} |
DEBIAN | /debian/pool/main/${PORTNAME:C/^((lib)?.).*$/\1/}/${PORTNAME} |
GCC | /pub/gcc/releases/${DISTNAME} |
GNOME | /pub/GNOME/sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/} |
GNU | /gnu/${PORTNAME} |
MOZDEV | /pub/mozdev/${PORTNAME:L} |
PERL_CPAN | /pub/CPAN/modules/by-module/${PORTNAME:C/-.*//} |
PYTHON | /ftp/python/${PYTHON_PORTVERSION:C/rc[0-9]//} |
RUBYFORGE | /${PORTNAME:L} |
SAVANNAH | /${PORTNAME:L} |
SF | /project/${PORTNAME:L}/${PORTNAME:L}/${PORTVERSION} |
Falls Sie eine Distributionsdatei haben, die ein
eigentümliches Suffix nutzt, um die Art der
Kompression anzuzeigen, dann setzen Sie
EXTRACT_SUFX
.
Ist die Distributionsdatei zum Beispiel im Stil von
foo.tgz
anstatt des normalen
foo.tar.gz
benannt, würden Sie
schreiben:
DISTNAME= foo EXTRACT_SUFX= .tgz
Falls erforderlich, setzen die Variablen
USE_BZIP2
und USE_ZIP
automatisch EXTRACT_SUFX
auf
.tar.bz2
oder .zip
.
Falls keine der beiden gesetzt ist, dann verwendet
EXTRACT_SUFX
die Vorgabe
.tar.gz
.
Sie müssen niemals beide Variablen
EXTRACT_SUFX
und
DISTFILES
setzen.
Manchmal haben die zu ladenden Dateien keinerlei
Ähnlichkeit mit dem Namen des Ports. Es könnte
z.B. source.tar.gz
oder ähnlich
heißen. In anderen Fällen könnte der
Quelltext in mehreren Archiven sein und alle müssen
heruntergeladen werden.
Falls dies der Fall ist, setzen Sie
DISTFILES
als eine durch Leerzeichen
getrennte Liste aller Dateien, die geladen werden
müssen.
DISTFILES= source1.tar.gz source2.tar.gz
Wenn nicht ausdrücklich gesetzt, verwendet
DISTFILES
als Vorgabe
${DISTNAME}${EXTRACT_SUFX}
.
Falls nur einige der DISTFILES
extrahiert werden müssen (z.B. eine Datei ist der
Quelltext und eine andere ist ein unkomprimiertes Dokument),
dann listen Sie die zu extrahierenden Dateien in
EXTRACT_ONLY
auf.
DISTFILES= source.tar.gz manual.html EXTRACT_ONLY= source.tar.gz
Falls keine der
DISTFILES
unkomprimiert sein sollte,
dann setzen Sie EXTRACT_ONLY
auf einen
leeren String.
EXTRACT_ONLY=
Falls Ihr Port zusätzliche Patches benötigt,
welche per FTP oder HTTP verfügbar sind, dann setzen
Sie PATCHFILES
auf den Namen der Dateien
und PATCH_SITES
auf die URL des
Verzeichnisses, das diese Patches enthält (das Format
ist das gleiche wie MASTER_SITES
).
Falls ein Patch wegen einiger zusätzlicher
Pfadnamen nicht relativ zum Anfang des Quelltextbaumes
(d.h., WRKSRC
) liegt, dann setzen Sie
bitte PATCH_DIST_STRIP
entsprechend.
Wenn z.B. alle Pfadnamen in diesem Patch ein
zusätzliches foozolix-1.0/
vor ihren
Dateinamen aufweisen, dann setzen Sie bitte
PATCH_DIST_STRIP=-p1
.
Kümmern Sie sich nicht darum, ob die Patches
komprimiert sind. Sie werden automatisch dekomprimiert,
wenn die Dateinamen auf .gz
oder
.Z
enden.
Falls der Patch zusammen mit anderen Dateien in einem
gezippten Tarball verteilt wird (z.B. mit Dokumentation),
dann können Sie nicht PATCHFILES
verwenden. In diesem Fall fügen Sie den Namen und den
Ort dieses Tarballs zu DISTFILES
und
MASTER_SITES
. Benutzen Sie dann die
EXTRA_PATCHES
-Variable, um auf diese
Dateien zu zeigen und bsd.port.mk
wird automatisch diese Dateien nutzen. Kopieren Sie
niemals Patch-Dateien in das
PATCHDIR
-Verzeichnis, weil es
möglicherweise nicht beschreibbar ist.
Der Tarball wird zusammen mit dem anderen Quelltext
extrahiert werden. Eine ausdrückliche Dekomprimierung
eines mit gzip oder compress erzeugten Tarball ist nicht
notwendig. Sollten Sie dies dennoch vorgeben, so beachten
Sie bitte peinlich genau, dass Sie nichts
überschreiben, was bereits im Verzeichnis vorhanden
ist. Vergessen Sie auch nicht den kopierten Patch im
Target von pre-clean
zu
entfernen.
(Betrachten Sie es als in irgendeiner Form „fortgeschrittenes Thema“. Neulinge sollten möglicherweise diesen Abschnitt beim ersten Lesen überspringen).
Dieser Abschnitt stellt Informationen über
die Mechanismen zum Herunterladen von Dateien zur
Verfügung und behandelt die Variablen
MASTER_SITES:n
und
MASTER_SITES_NN
.
Wir beziehen uns im weiteren Text auf diese Variablen
als MASTER_SITES:n
.
Etwas Hintergrundinformation zu Beginn: OpenBSD
verfügt über eine sehr elegante Option
innerhalb der Variablen DISTFILES
und
PATCHFILES
. Sowohl Dateien als auch
Patches können mit angehängten
:n
-Bezeichnern versehen werden wobei
n
in beiden Fällen
[0-9]
sein kann und eine
Gruppenzugehörigkeit anzeigt. Ein Beispiel
hierfür ist:
DISTFILES= alpha:0 beta:1
In OpenBSD wird die Datei alpha
mit der Variable MASTER_SITES0
verknüpft anstatt dem in FreeBSD gebräuchlichen
MASTER_SITES
und
beta
mit
MASTER_SITES1
.
Das ist eine sehr interessante Möglichkeit, die endlose Suche nach der richtigen Download-Seite zu verkürzen.
Stellen Sie sich zwei Dateien in
DISTFILES
und 20 Webseiten in der
Variable MASTER_SITES
vor. Alle Seiten
sind erschreckend langsam, beta
findet sich auf allen Seiten in
MASTER_SITES
und
alpha
kann nur auf der zwanzigsten
Seite gefunden werden. Wäre es nicht reine
Verschwendung, wenn der Maintainer alle Seiten zuvor
überprüfen müsste? Kein guter
Start für das wundervolle Wochenende!
Übertragen Sie diesen Umstand auf noch mehr
DISTFILES
und mehr
MASTER_SITES
. Ganz sicher würde
unser „distfiles survey master“ die
Erleichterung sehr zu schätzen wissen, die eine
solche Verringerung der Netzwerkbelastung bringen
würde.
In den nächsten Abschnitten sehen Sie die Implementierung dieser Idee durch FreeBSD. Dabei wurde das Konzept von OpenBSD ein wenig verbessert.
Dieser Abschnitt informiert Sie, wie Sie schnell
ein fein granuliertes Herunterladen von vielen Dateien
und Fehlerbereinigungen von verschiedenen Webseiten und
Unterverzeichnissen bewerkstelligen. Wir beschreiben
hier den Fall der vereinfachten Nutzung von
MASTER_SITES:n
. Das ist für die
meisten Szenarien ausreichend. Falls Sie weitere
Informationen benötigen, sollten Sie den
nächsten Abschnitt lesen.
Einige Programme bestehen aus mehreren Dateien, welche von verschiedenen Webseiten heruntergeladen werden müssen. Zum Beispiel besteht Ghostscript aus dem Kern des Programms und einer großen Zahl von Treiberdateien, die vom Drucker des Benutzers abhängen. Einige dieser Treiberdateien werden mit der Kernapplikation mitgeliefert aber viele müssen von verschiedenen Webseiten heruntergeladen werden.
Um das zu unterstützen, muss jeder Eintrag in
DISTFILES
mit einem Komma und
einem „tag name“ abgeschlossen werden.
Jeder in MASTER_SITES
aufgeführte
Webseite folgt ein Komma und eine Marke (tag), die
anzeigt, welche Datei von dieser Webseite heruntergeladen
werden kann.
Stellen Sie sich bitte eine Applikation vor, deren
Quelltext in zwei Teile aufgeteilt ist,
source1.tar.gz
und source2.tar.gz
, welche von zwei
verschiedenen Webseiten heruntergeladen werden
müssen. Das Makefile
des Port
würde Zeilen enthalten wie in
Beispiel 5.1, „Vereinfachtes Beispiel für den Gebrauch von
MASTER_SITES:n
mit einer Datei pro
Webseite“.
MASTER_SITES:n
mit einer Datei pro
WebseiteMASTER_SITES= ftp://ftp.example1.com/:source1 \ ftp://ftp.example2.com/:source2 DISTFILES= source1.tar.gz:source1 \ source2.tar.gz:source2
Verschiedene Dateien können die gleiche Marke
aufweisen. Ausgehend vom vorherigen Beispiel nehmen wir
an, dass es noch eine dritte Datei gibt
(source3.tar.gz
), welche von
ftp.example2.com
heruntergeladen werden
soll. Das Makefile
würde dann
aussehen wie Beispiel 5.2, „Vereinfachtes Beispiel für den Gebrauch von
MASTER_SITES:n
mit mehr als einer
Datei pro Webseite“.
MASTER_SITES:n
mit mehr als einer
Datei pro WebseiteMASTER_SITES= ftp://ftp.example1.com/:source1 \ ftp://ftp.example2.com/:source2 DISTFILES= source1.tar.gz:source1 \ source2.tar.gz:source2 \ source3.tar.gz:source2
In Ordnung, das vorherige Beispiel reicht nicht
für Ihre Bedürfnisse? In diesem Abschnitt
werden wir im Detail erklären, wie der fein
granulierte Mechanismus zum Herunterladen
(MASTER_SITES:n
) funktioniert
und wie Sie Ihre Ports modifizieren, um ihn zu
nutzen.
Elemente können nachstehend bezeichnet werden
mit :n
wobei n
in diesem Falle
[^:,]+
ist. Das heißt
n
könnte theoretisch
jede alphanumerische Zeichenkette sein, aber wir
beschränken sie auf
[a-zA-Z_][0-9a-zA-Z_]+
für
diesen Moment.
Zudem ist die Zeichenkette case sensitive; d.h.
n
unterscheidet sich von
N
.
Allerdings dürfen die folgenden Wörter
nicht gebraucht werden, da sie spezielle Bedeutungen
haben: default
,
all
und ALL
(diese Wörter werden intern genutzt in Punkt
ii).
Ausserdem ist DEFAULT
ein
reserviertes Wort (beachten Sie 3).
Elemente mit angehängtem
:n
gehören zur Gruppe
n
, :m
gehört zur Gruppe m
und so weiter.
Elemente ohne Anhängsel sind gruppenlos,
d.h. sie gehören alle zu der speziellen Gruppe
DEFAULT
. Falls sie an irgendeinem
Element DEFAULT
hängen, ist
dies überflüssig, es sei denn Sie wollen,
dass ein Element sowohl zu DEFAULT
als auch anderen Gruppen gleichzeitig gehört
(beachten Sie 5).
Die folgenden Beispiele sind gleichwertig, aber das erste Beispiel ist vorzuziehen:
MASTER_SITES= alpha MASTER_SITES= alpha:DEFAULT
Gruppen sind nicht ausschliessend, d.h. ein Element kann mehreren Gruppen gleichzeitig angehören und eine Gruppe wiederum kann entweder mehrere Elemente oder überhaupt keine aufweisen. Wiederholte Elemente sind schlicht nur wiederholte Elemente.
Wenn Sie wollen, dass ein Element gleichzeitig zu
mehreren Gruppen gehört, dann können Sie
diese durch ein Komma (,
)
trennen.
Anstatt jedes Mal ein anderes Anhängsel zu
verwenden und Wiederholungen aufzuführen,
können Sie mehrere Gruppen auf einmal in einem
einzigen Anhängsel bestimmen. Zum Beispiel
markiert :m,n,o
ein Element,
welches zu den Gruppen m
,
n
und o
gehört.
Alle folgenden Beispiele sind gleichwertig, aber das erste Beispiel ist vorzuziehen:
MASTER_SITES= alpha alpha:SOME_SITE MASTER_SITES= alpha:DEFAULT alpha:SOME_SITE MASTER_SITES= alpha:SOME_SITE,DEFAULT MASTER_SITES= alpha:DEFAULT,SOME_SITE
Alle Webseiten in einer Gruppe werden
gemäß MASTER_SORT_AWK
sortiert. Alle Gruppen innerhalb von
MASTER_SITES
und
PATCH_SITES
werden genauso
sortiert.
Gruppensemantik kann benutzt werden in den
folgenden Variablen: MASTER_SITES
,
PATCH_SITES
,
MASTER_SITE_SUBDIR
,
PATCH_SITE_SUBDIR
,
DISTFILES
und
PATCHFILES
entsprechend der
folgenden Syntax:
Elemente mit MASTER_SITES
,
PATCH_SITES
,
MASTER_SITE_SUBDIR
und
PATCH_SITE_SUBDIR
müssen
mit einem Schrägstrich beendet werden (
/
). Falls Elemente zu
irgendwelchen Gruppen gehören, muss
:n
direkt nach dem Trenner /
stehen. Der
MASTER_SITES:n
-Mechanismus
verlässt sich auf das Vorhandensein des
Trennzeichens /
, um verwirrende
Elemente zu vermeiden in denen
:n
ein zulässiger
Bestandteil des Elementes ist und das Auftreten
von :n
die Gruppe
n
anzeigt. Aus
Kompatibilitätsgründen (da der
/
-Trenner sowohl in
MASTER_SITE_SUBDIR
als auch
PATCH_SITE_SUBDIR
-Elementen
nicht erforderlich ist) wird, falls das auf das
Anhängsel folgende nächste Zeichen kein
/
ist, auch
:n
als gültiger Teil des
Elementes behandelt anstatt als Gruppenzusatz,
selbst wenn ein Element ein angehängtes
:n
aufweist. Beachten Sie
sowohl Beispiel 5.3, „Ausführliches Beispiel von
MASTER_SITES:n
in
MASTER_SITE_SUBDIR
“
als auch Beispiel 5.4, „Ausführliches Beispiel von
MASTER_SITES:n
mit
Komma-Operator, mehreren Dateien, mehreren
Webseiten und mehreren
Unterverzeichnissen“.
MASTER_SITES:n
in
MASTER_SITE_SUBDIR
MASTER_SITE_SUBDIR= old:n new/:NEW
Verzeichnisse innerhalb der Gruppe
DEFAULT
->
old:n
Verzeichnisse innerhalb der Gruppe
NEW
-> new
MASTER_SITES:n
mit
Komma-Operator, mehreren Dateien, mehreren
Webseiten und mehreren
UnterverzeichnissenMASTER_SITES= http://site1/%SUBDIR%/ http://site2/:DEFAULT \ http://site3/:group3 http://site4/:group4 \ http://site5/:group5 http://site6/:group6 \ http://site7/:DEFAULT,group6 \ http://site8/%SUBDIR%/:group6,group7 \ http://site9/:group8 DISTFILES= file1 file2:DEFAULT file3:group3 \ file4:group4,group5,group6 file5:grouping \ file6:group7 MASTER_SITE_SUBDIR= directory-trial:1 directory-n/:groupn \ directory-one/:group6,DEFAULT \ directory
Das vorstehende Beispiel führt zu einem fein granulierten Herunterladen. Die Webseiten werden in der exakten Reihenfolge ihrer Nutzung aufgelistet.
file1
wird
heruntergeladen von
MASTER_SITE_OVERRIDE
http://site1/directory-trial:1/
http://site1/directory-one/
http://site1/directory/
http://site2/
http://site7/
MASTER_SITE_BACKUP
file2
wird genauso
heruntergeladen wie
file1
, da sie zur
gleichen Gruppe gehören
MASTER_SITE_OVERRIDE
http://site1/directory-trial:1/
http://site1/directory-one/
http://site1/directory/
http://site2/
http://site7/
MASTER_SITE_BACKUP
file3
wird
heruntergeladen von
MASTER_SITE_OVERRIDE
http://site3/
MASTER_SITE_BACKUP
file4
wird
heruntergeladen von
MASTER_SITE_OVERRIDE
http://site4/
http://site5/
http://site6/
http://site7/
http://site8/directory-one/
MASTER_SITE_BACKUP
file5
wird
heruntergeladen von
MASTER_SITE_OVERRIDE
MASTER_SITE_BACKUP
file6
wird
heruntergeladen von
MASTER_SITE_OVERRIDE
http://site8/
MASTER_SITE_BACKUP
Wie gruppiere ich eine der speziellen Variablen
aus bsd.sites.mk
, d.h.
MASTER_SITE_SOURCEFORGE
?
Lesen Sie Beispiel 5.5, „Ausführliches Beispiel von
MASTER_SITES:n
mit
MASTER_SITE_SOURCEFORGE
“.
MASTER_SITES:n
mit
MASTER_SITE_SOURCEFORGE
MASTER_SITES= http://site1/ ${MASTER_SITE_SOURCEFORGE:S/$/:sourceforge,TEST/} DISTFILES= something.tar.gz:sourceforge
something.tar.gz
wird von
allen Webseiten innerhalb von
MASTER_SITE_SOURCEFORGE
heruntergeladen.
Wie nutze ich dies mit
PATCH*
-Variablen.
In allen Beispielen wurden
MASTER*
-Variablen genutzt,
aber sie funktionieren exakt genauso mit
PATCH*
-Variablen, wie Sie an
Beispiel 5.6, „Vereinfachte Nutzung von
MASTER_SITES:n
mit
PATCH_SITES
.“.
sehen können.
MASTER_SITES:n
mit
PATCH_SITES
.PATCH_SITES= http://site1/ http://site2/:test PATCHFILES= patch1:test
Alle bestehenden Ports bleiben gleich. Der Code
für MASTER_SITES:n
wird nur
aktiviert, falls es Elemente mit angehängtem
:n
entsprechend den zuvor erwähnten Syntax-Regeln
wie in 7
gezeigt gibt.
Das Target des Port bleibt gleich:
checksum
,
makesum
,
patch
,
configure
,
build
etc.
Mit der offensichtlichen Ausnahme von
do-fetch
,
fetch-list
,
master-sites
und patch-sites
.
do-fetch
: nutzt die
neue Gruppierung DISTFILES
und
PATCHFILES
mit ihren darauf
zutreffenden Gruppenelementen in
MASTER_SITES
und
PATCH_SITES
welche zutreffende
Gruppenelemente sowohl in
MASTER_SITE_SUBDIR
als auch
PATCH_SITE_SUBDIR
aufweisen.
Sehen Sie hierzu Beispiel 5.4, „Ausführliches Beispiel von
MASTER_SITES:n
mit
Komma-Operator, mehreren Dateien, mehreren
Webseiten und mehreren
Unterverzeichnissen“.
fetch-list
: arbeitet
wie das alte fetch-list
mit der Ausnahme, dass es nur wie
do-fetch
gruppiert.
master-sites
und patch-sites
:
(inkompatibel zu älteren Versionen) geben
nur die Elemente der Gruppe
DEFAULT
zurück.
Beziehungsweise sie führen genau genommen
die Targets von
master-sites-default
und
patch-sites-default
aus.
Weiterhin ist der Gebrauch des Target entweder
von master-sites-all
oder
patch-sites-all
der
direkten Überprüfung von
MASTER_SITES
oder
PATCH_SITES
vorzuziehen.
Zudem ist nicht garantiert, dass das direkte
Überprüfen in zukünftigen Versionen
funktionieren wird. Sehen Sie B
für weitere Informationen zu diesen neuen
Port-Targets.
Neue Port-Targets
Es gibt
master-sites-
und
n
patch-sites-
-Targets,
welche die Elemente der jeweiligen Gruppe
n
n
innerhalb von
MASTER_SITES
und
PATCH_SITES
auflisten.
Beispielweise werden sowohl
master-sites-DEFAULT
als
auch patch-sites-DEFAULT
die Elemente der Gruppe
DEFAULT
,
master-sites-test
und
patch-sites-test
der
Gruppe test
usw.
zurückgeben.
Es gibt das neue Target
master-sites-all
und
patch-sites-all
,
welche die Arbeit der alten Targets
master-sites
und
patch-sites
übernehmen. Sie geben die Elemente aller
Gruppen zurück,als würden sie zur
gleichen Gruppe gehören - mit dem Vorbehalt,
dass sie so viele
MASTER_SITE_BACKUP
und
MASTER_SITE_OVERRIDE
auflisten
wie Gruppen mittels
DISTFILES
oder
PATCHFILES
definiert sind.
Das gleiche gilt entsprechend für
master-sites-all
und
patch-sites-all
.
Verhindern Sie, dass Ihr Port das Verzeichnis
/usr/ports/distfiles
in Unordnung
bringt. Falls Ihr Port eine ganze Reihe von Dateien
herunterladen muss oder eine Datei enthält,
die einen Namen hat, der möglicherweise mit
anderen Ports in Konflikt stehen könnte
(d.h.Makefile
), dann setzen Sie die
Variable DIST_SUBDIR
auf den Namen des
Ports (${PORTNAME}
oder
${PKGNAMEPREFIX}${PORTNAME}
sollte hervorragend funktionieren). Dies wird
DISTDIR
von der Vorgabe
/usr/ports/distfiles
auf
/usr/ports/distfiles/DIST_SUBDIR
ändern und stellt tatsächlich alle
für Ihren Port benötigten Dateien in dieses
Unterverzeichnis.
Es wird zusätzlich nach dem Unterverzeichnis mit
dem gleichen Namen auf der Sicherung der Hauptseite auf
ftp.FreeBSD.org
suchen (das
ausdrückliche Setzen von DISTDIR
in Ihrem Makefile
wird dies nicht
gewährleisten, also nutzen Sie bitte
DIST_SUBDIR
).
Dies hat keine Auswirkungen auf die Variable
MASTER_SITES
, die Sie in Ihrem
Makefile
definieren.
Falls Ihr Port binäre Distfiles benutzt und eine
Lizenz aufweist, die verlangt, dass das der Quelltext in
Form binärer Pakete verteilt werden muss, z.B. GPL,
dann wird ALWAYS_KEEP_DISTFILES
den
FreeBSD Build Cluster anweisen eine Kopie der Dateien in
DISTFILES
vorzuhalten. Nutzer dieser
Ports benötigen generell diese Dateien nicht, daher
ist es ein gutes Konzept, nur dann die Distfiles zu
DISTFILES
hinzuzufügen, wenn
PACKAGE_BUILDING
definiert ist.
ALWAYS_KEEP_DISTFILES
..if defined(PACKAGE_BUILDING)
DISTFILES+= foo.tar.gz
ALWAYS_KEEP_DISTFILES= yes
.endif
Wenn Sie zusätzliche Dateien zu
DISTFILES
hinzufügen,
dann beachten Sie bitte, dass Sie diese auch in
distinfo
aufführen.
Zudem werden die zusätzlichen Dateien normalerweise
ebenso in WRKDIR
extrahiert,
was für einige Ports zu unbeabsichtigten
Seiteneffekten führen mag und spezielle
Behandlung erfordert.
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>.