Dieser Abschnitt beschreibt den Status der Lua-Bibliotheken in den Ports und deren Einbindung in das Ports System.
Es gibt viele Probleme bei der gleichzeitigen Verwendung unterschiedlicher Versionen von Lua-Bibliotheken (Dateien unterschiedlicher Versionen haben denselben Dateinamen). In den Ports wurde das Problem gelöst, indem jede Version unter einem eigenen Namen mit der Versionsnummer als Suffix installiert wird.
Der offensichtliche Nachteil dabei ist, dass jede Anwendung so verändert werden muss, dass sie die erwartete Version vorfindet. Dies kann jedoch durch zusätzliche Flags für Compiler und Linker gelöst werden.
Um festzulegen, welche Version von Lua verwendet werden soll, gibt es zwei Variablen (falls nur eine der beiden definiert ist, so wird die andere auf einen Standardwert gesetzt):
Variable | Beschreibung | Standardwert |
---|---|---|
USE_LUA | Liste der Versionen, welche der Port verwenden kann | Alle verfügbaren Versionen |
USE_LUA_NOT | Liste der Versionen, die der Port nicht verwenden kann | Nichts |
Es folgt eine Liste an möglichen Lua-Versionen und deren zugehöriger Port:
Die Variablen in Tabelle 6.34, „Variablen, um die Lua-Version festzulegen“ können auf einen oder mehrere (durch Leerzeichen getrennt) der folgenden Werte gesetzt werden:
Beschreibung | Beispiel |
---|---|
Spezielle Version | 4.0 |
Aufsteigende Versionen | 5.0+ |
Absteigende Versionen | 5.0- |
Versionenintervall (muss aufsteigend sein) | 5.0-5.1 |
Desweiteren gibt es Variablen, über die eine bevorzugte Version festgelegt werden kann. Die Versionen können als Liste angegeben werden, wobei die Reihenfolge der Priorisierung entspricht.
Name | Bestimmt für |
---|---|
WANT_LUA_VER | den Port |
WITH_LUA_VER | den Benutzer |
Der folgende Ausschnitt entspricht einem Port, der
Lua in den Versionen
5.0
oder 5.1
verwenden kann und standardmäßig
5.0
verwendet. Diese Einstellung kann
durch die benutzerdefinierte Variable
WITH_LUA_VER
überschrieben
werden.
USE_LUA= 5.0-5.1 WANT_LUA_VER= 5.0
Desweiteren gibt es Anwendungen, die nicht direkt
Lua-Bibliotheken sind, aber
trotzdem mit diesen zusammenhängen. Diese Anwendungen
können über die Variable
LUA_COMPS
festgelegt werden. Die
folgenden Komponenten sind verfügbar:
Name | Beschreibung | Versionseinschränkungen |
---|---|---|
lua | Hauptbibliothek | Keine |
tolua | Bibliothek für die Unterstützung von C/C++-Code | 4.0-5.0 |
ruby | Ruby-Bindungen | 4.0-5.0 |
Es gibt weitere Komponenten, die jedoch Module für den Interpreter sind und nicht von Anwendungen benutzt werden (nur von anderen Modulen).
Der Typ der Abhängigkeit kann für jede Komponente durch Hinzufügen eines Suffix (durch Strichpunkt getrennt) festgelegt werden. Falls der Typ nicht angegeben wird, wird ein Standardwert verwendet (siehe Tabelle 6.40, „Standardtypen für Lua-Abhängigkeiten“). Die folgenden Typen sind verfügbar:
Name | Beschreibung |
---|---|
build | Komponente wird zum Bau
benötigt – äquivalent zu
BUILD_DEPENDS |
run | Komponente wird zum Ausführen
benötigt – äquivalent zu
RUN_DEPENDS |
lib | Komponente wird zum Bau und zum Ausführen
benötigt – äquivalent zu
LIB_DEPENDS |
Die Standardwerte für die einzelnen Komponenten sind in der folgenden Tabelle aufgeführt:
Komponente | Typ der Abhängigkeit |
---|---|
lua | lib für
4.0-5.0 (shared) und
build für 5.1
(static) |
tolua | build (static) |
ruby | lib (shared) |
Der folgende Ausschnitt entspricht einem Port,
welcher die Lua-Version
4.0
und die zugehörigen
Ruby-Bindungen
verwendet.
USE_LUA= 4.0 LUA_COMPS= lua ruby
Um eine bereits installierte Version zu finden, muss
WANT_LUA
definiert werden. Falls diese
Variable nicht auf eine bestimmte Versionsnummer gesetzt
wird, werden die Komponenten einen Suffix mit der
Versionsnummer tragen. Die Variable
HAVE_LUA
wird gesetzt, falls eine
installierte Version vorgefunden wurde.
Der folgende Ausschnitt kann in einem Port verwendet werden, der Lua benutzt, falls es installiert ist oder eine Option dafür ausgewählt wurde.
WANT_LUA= yes .include <bsd.port.pre.mk> .if defined(WITH_LUA5) || ${HAVE_LUA:Mlua-5.[01]} != "" USE_LUA= 5.0-5.1 CONFIGURE_ARGS+=--enable-lua5 .endif
Der folgende Ausschnitt kann verwendet werden, um die Unterstützung für tolua zusätzlich zu der von Lua zu aktivieren (beide in Version 4.0), wenn dies installiert ist oder die Option ausgewählt wurde.
USE_LUA= 4.0 LUA_COMPS= lua WANT_LUA= 4.0 .include <bsd.port.pre.mk> .if defined(WITH_TOLUA) || ${HAVE_LUA:Mtolua} != "" LUA_COMPS+= tolua CONFIGURE_ARGS+=--enable-tolua .endif
Die folgenden Variablen sind in den Ports verfügbar (nachdem sie entsprechend Tabelle 6.34, „Variablen, um die Lua-Version festzulegen“ definiert wurden).
Name | Beschreibung |
---|---|
LUA_VER | Die Lua-Version, die
verwendet wird (z.B. 5.1 ) |
LUA_VER_SH | Die Hauptversion für
shared-Lua-Bibliotheken (z.B.
1 ) |
LUA_VER_STR | Die Lua-Version ohne die
Punkte (z.B. 51 ) |
LUA_PREFIX | Der Präfix, unter dem Lua (und Komponenten) installiert ist |
LUA_SUBDIR | Das Verzeichnis unter
${PREFIX}/bin ,
${PREFIX}/share und
${PREFIX}/lib , in welchem
Lua installiert ist |
LUA_INCDIR | Das Verzeichnis, in dem Lua- und tolua-Header-Dateien installiert sind |
LUA_LIBDIR | Das Verzeichnis, in dem Lua– und tolua-Bibliotheken installiert sind |
LUA_MODLIBDIR | Das Verzeichnis, in dem
Lua Modul-Bibliotheken
(.so ) installiert sind |
LUA_MODSHAREDIR | Das Verzeichnis, in dem
Lua-Module
(.lua ) installiert sind |
LUA_PKGNAMEPREFIX | Der Paketnamen-Präfix, der von Lua-Modulen verwendet wird |
LUA_CMD | Das Verzeichnis, in dem der Lua-Interpreter liegt |
LUAC_CMD | Das Verzeichnis, in dem der Lua-Compiler liegt |
TOLUA_CMD | Das Verzeichnis, in dem das tolua-Programm liegt |
Der folgende Ausschnitt zeigt, wie einem Port, welcher ein configure-Skript verwendet, mitgeteilt werden kann, wo die Lua-Header-Dateien und Bibliotheken liegen.
USE_LUA= 4.0 GNU_CONFIGURE= yes CONFIGURE_ENV= CPPFLAGS="-I${LUA_INCDIR}" LDFLAGS="-L${LUA_LIBDIR}"
Falls die Variablen gleich nach dem Einbinden von
bsd.port.pre.mk
benutzt werden sollen,
so muss die Variable LUA_PREMK
definiert
werden.
Falls LUA_PREMK
definiert ist, so
werden Version, Abhängigkeiten, Komponenten und
vordefinierte Variablen nicht geändert, wenn die
Variablen des Lua-Ports
nach dem Einbinden von
bsd.port.pre.mk
geändert
werden.
Der folgende Ausschnitt zeigt die Verwendung von
LUA_PREMK
durch Ausführen des
Lua-Interpreters, um die
vollständige Version als Zeichenkette zu erhalten,
diese dann einer Variablen zuzuweisen und die Variable
schließlich einem Programm zu übergeben.
USE_LUA= 5.0 LUA_PREMK= yes .include <bsd.port.pre.mk> .if exists(${LUA_CMD}) VER_STR!= ${LUA_CMD} -v CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}" .endif
Die Lua-Variablen
können problemlos in Befehlen benutzt werden, falls
diese in Targets ohne gesetztes
LUA_PREMK
verwendet 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>.