Das FreeBSD Porter-Handbuch
Zurück | Kapitel 6. Besonderheiten | Weiter

# 6.19. Verwendung von Lua

Dieser Abschnitt beschreibt den Status der Lua-Bibliotheken in den Ports und deren Einbindung in das Ports System.

## 6.19.1. Einführung

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.

## 6.19.2. Auswahl der Version

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):

Tabelle 6-34. Variablen, um die Lua-Version festzulegen

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:

Tabelle 6-35. Verfügbare Lua-Versionen

Version | Port
--- | ---
`4.0` | `lang/lua4`
`5.0` | `lang/lua50`
`5.1` | `lang/lua`

Die Variablen in Tabelle 6-34 können auf einen oder mehrere (durch Leerzeichen getrennt) der folgenden Werte gesetzt werden:

Tabelle 6-36. Spezifikationen der Lua-Versionen

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.

Tabelle 6-37. Variablen zur Festlegung der bevorzugten Lua-Version

Name | Bestimmt für
--- | ---
`WANT_LUA_VER` | den Port
`WITH_LUA_VER` | den Benutzer

Beispiel 6-9. Auswahl der Lua-Version

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

## 6.19.3. Komponentenauswahl

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:

Tabelle 6-38. Verfügbare Lua-Komponenten

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`

> Anmerkung: 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). Die folgenden Typen sind verfügbar:

Tabelle 6-39. Verfügbare Typen von Lua-Abhängigkeiten

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:

Tabelle 6-40. Standardtypen für Lua-Abhängigkeiten

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)

Beispiel 6-10. Auswahl von Lua-Komponenten

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

## 6.19.4. Feststellen der installierten Version

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.

Beispiel 6-11. Installierte Lua-Versionen und– Komponenten feststellen

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

## 6.19.5. Vordefinierte Variablen

Die folgenden Variablen sind in den Ports verfügbar (nachdem sie entsprechend Tabelle 6-34 definiert wurden).

Tabelle 6-41. Vordefinierte Variablen für Ports, die Lua verwenden

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

Beispiel 6-12. Einem Port mitteilen, in welchem Verzeichnis Lua 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}"

## 6.19.6. Verarbeitung in `bsd.port.pre.mk`

Falls die Variablen gleich nach dem Einbinden von `bsd.port.pre.mk` benutzt werden sollen, so muss die Variable `LUA_PREMK` definiert werden.

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

Beispiel 6-13. Verwendung von Lua-Variablen in Kommandos

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

> Anmerkung: Die Lua-Variablen können problemlos in Befehlen benutzt werden, falls diese in Targets ohne gesetztes `LUA_PREMK` verwendet werden.

Zurück | Zum Anfang | Weiter
wxWidgets verwenden | Nach oben | Xfce verwenden

Fragen zum FreeBSD Ports-System richten Sie bitte an <ports@FreeBSD.org>, Fragen zu diesem Dokument hingegen an <de-bsd-translators@de.FreeBSD.org>.