6.3. Build-Mechanismen

6.3.1. Paralleles Bauen von Ports

Das Ports-Framework von FreeBSD unterstützt das parallele Bauen von Ports, indem es mehrere make-Instanzen ausführt, damit SMP-Systeme ihre gesamte CPU-Rechenleistung ausnützen können und so das Bauen von Ports schneller und effektiver werden kann.

Dies ermöglicht der Parameter -jX an make(1), wenn Code von Drittanbietern kompiliert wird. Leider können nicht alle Ports wirklich gut mit dem Parallelbau umgehen. Deshalb ist es erforderlich, dass dieses Feature explizit durch MAKE_JOBS_SAFE=yes irgendwo unterhalb des Abschnitts für Abhängigkeiten im Makefile aktiviert wird.

Eine weitere Möglichkeit im Umgang mit dieser Option besteht für den Maintainer darin, MAKE_JOBS_UNSAFE=yes zu setzen. Diese Variable wird dann verwendet, wenn ein Port bekannterweise mit -jX nicht gebaut werden kann, der Benutzer jedoch für alle Ports den Mehrprozessorbau durch FORCE_MAKE_JOBS=yes in /etc/make.conf erzwingt.

6.3.2. make, gmake und imake

Wenn Ihr Port GNU make benutzt, dann setzen Sie bitte USE_GMAKE=yes.

Tabelle 6.1. Port-Variablen im Zusammenhang mit gmake
VariableBedeutung
USE_GMAKEDer Port benötigt gmake für den Build.
GMAKEDer ganze Pfad zu gmake, wenn es nicht im PATH ist.

Wenn Ihr Port eine X-Applikation ist, die Makefile-Dateien aus Imakefile-Dateien mit imake erzeugt, dann setzen Sie USE_IMAKE=yes. Das sorgt dafür, dass die Konfigurationsphase automatisch ein xmkmf -a ausführt. Wenn das Flag -a ein Problem für Ihren Port darstellt, setzen Sie XMKMF=xmkmf. Wenn der Port imake benutzt, aber das install.man-Target nicht versteht, dann sollte NO_INSTALL_MANPAGES=yes gesetzt werden.

Wenn das Makefile im Quelltext Ihres Ports etwas anderes als all als Haupt-Build-Target hat, setzen Sie ALL_TARGET entsprechend. Das Gleiche gilt für install und INSTALL_TARGET.

6.3.3. configure Skript

Wenn Ihr Port ein configure-Skript benutzt, um Makefile-Dateien aus Makefile.in-Dateien zu erzeugen, setzen Sie GNU_CONFIGURE=yes. Wenn Sie dem configure-Skript zusätzliche Argumente übergeben wollen (das Vorgabeargument ist --prefix=${PREFIX} --infodir=${PREFIX}/${INFO_PATH} --mandir=${MANPREFIX}/man --build=${CONFIGURE_TARGET}), setzen Sie diese zusätzlichen Argumente in CONFIGURE_ARGS. Zusätzliche Umgebungsvariablen können überdie Variable CONFIGURE_ENV übergeben werden.

Tabelle 6.2. Variablen für Ports, die configure benutzen
VariableBedeutung
GNU_CONFIGUREDer Port benutzt ein configure-Skript, um das Bauen vorzubereiten.
HAS_CONFIGUREWie GNU_CONFIGURE, nur dass kein Standard-Konfigurations-Target zu CONFIGURE_ARGS hinzugefügt wird.
CONFIGURE_ARGSZusätzliche Argumente für das configure-Skript.
CONFIGURE_ENVZusätzliche Umgebungsvariablen für die Abarbeitung des configure-Skriptes.
CONFIGURE_TARGETErsetzt das Standard-Konfigurations-Target. Vorgabewert ist ${MACHINE_ARCH}-portbld-freebsd${OSREL}.

6.3.4. Benutzung von scons

Wenn Ihr Port SCons benutzt, definieren Sie USE_SCONS=yes.

Tabelle 6.3. Variablen für Ports, die scons benutzen
VariableBedeutung
SCONS_ARGSPort-spezifische SCons-Argumente, die der SCons-Umgebung übergeben werden.
SCONS_BUILDENVVariablen, die in der System-Umgebung gesetzt werden sollen.
SCONS_ENVVariablen, die in der SCons-Umgebung gesetzt werden sollen.
SCONS_TARGETLetztes Argument, das SCons übergeben wird – ähnlich MAKE_TARGET.

Um SConstruct im Quelltext alles, was SCons in SCONS_ENV übergeben wird, respektieren zu lassen (das ist hauptsächlich CC/CXX/CFLAGS/CXXFLAGS), patchen Sie SConstruct, sodass das Build Environment wie folgt konstruiert wird:

env = Environment(**ARGUMENTS)

Es kann dann mit env.Append und env.Replace modifiziert werden.

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>.