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.
Wenn Ihr Port GNU make benutzt, dann setzen Sie bitte USE_GMAKE=yes.
Tabelle 6-1. Port-Variablen im Zusammenhang mit gmake
Variable | Bedeutung |
---|---|
USE_GMAKE | Der Port benötigt gmake für den Build. |
GMAKE | Der 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.
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
Variable | Bedeutung |
---|---|
GNU_CONFIGURE | Der Port benutzt ein configure-Skript, um das Bauen vorzubereiten. |
HAS_CONFIGURE | Wie GNU_CONFIGURE, nur dass kein Standard-Konfigurations-Target zu CONFIGURE_ARGS hinzugefügt wird. |
CONFIGURE_ARGS | Zusätzliche Argumente für das configure-Skript. |
CONFIGURE_ENV | Zusätzliche Umgebungsvariablen für die Abarbeitung des configure-Skriptes. |
CONFIGURE_TARGET | Ersetzt das Standard-Konfigurations-Target. Vorgabewert ist ${MACHINE_ARCH}-portbld-freebsd${OSREL}. |
Wenn Ihr Port SCons benutzt, definieren Sie USE_SCONS=yes.
Tabelle 6-3. Variablen für Ports, die scons benutzen
Variable | Bedeutung |
---|---|
SCONS_ARGS | Port-spezifische SCons-Argumente, die der SCons-Umgebung übergeben werden. |
SCONS_BUILDENV | Variablen, die in der System-Umgebung gesetzt werden sollen. |
SCONS_ENV | Variablen, die in der SCons-Umgebung gesetzt werden sollen. |
SCONS_TARGET | Letztes 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.
Zurück | Zum Anfang | Weiter |
Ports mit beschränkter Verbreitung | Nach oben | Benutzung von GNU autotools |