Das FreeBSD Porter-Handbuch
Zurück |  | Weiter

# Kapitel 7. Fortgeschrittene `pkg-plist`-Methoden

# 7.1. Änderungen an `pkg-plist` mit Hilfe von make-Variablen

Einige Ports, insbesondere die `p5-`-Ports, müssen, abhängig von ihren Konfigurationsoptionen (oder im Falle der p5-Ports von der `perl`-Version), die `pkg-plist` verändern. Um dies zu vereinfachen, werden für jeden Eintrag in `pkg-plist` die Variablen `%%OSREL%%`, `%%PERL_VER%%` und `%%PERL_VERSION%%` durch die jeweiligen Werte ersetzt. Der Wert von `%%OSREL%%` ist die Revisionsnummer des Betriebssystems (z.B. `4.9`). `%%PERL_VERSION%%` und `%%PERL_VER%%` geben die vollständige Versionsnummer von `perl` (z.B. `5.8.9`) an. Weitere, die Dokumentationsdateien des Ports betreffende `%%`VARS`%%`, werden im entsprechenden Abschnitt erläutert.

Falls Sie weitere Ersetzungen von Variablen durchführen müssen, können Sie in der Variable `PLIST_SUB` eine Liste von ``VAR`=`VALUE``-Paaren angeben, wobei in der `pkg-plist` `%%`VAR`%%` durch `VALUE` ersetzt wird.

Wenn Sie z.B. einen Port haben, der viele Dateien in ein versionsspezifisches Unterverzeichnis installiert, dann können Sie etwas wie

    OCTAVE_VERSION= 2.0.13
    PLIST_SUB=      OCTAVE_VERSION=${OCTAVE_VERSION}

in das `Makefile` schreiben und `%%OCTAVE_VERSION%%` verwenden, unabhängig davon, wo die Variable in `pkg-plist` verwendet wird. In diesem Fall müssen Sie bei einem Upgrade des Ports nicht dutzende (oder manchmal sogar hunderte) Zeilen in `pkg-plist` anpassen.

Falls Ihr Port in Abhängigkeit von den ausgewählten Optionen Dateien installiert, ist es üblich, den entsprechenden Zeilen in der `pkg-plist` eine Zeichenfolge `%%TAG%%` voranzustellen, wobei der Platzhalter `TAG` der Variablen `PLIST_SUB` im `Makefile` bei gleichzeitiger Zuweisung des speziellen Werts `@comment` hinzugefügt wird, der die Paket-Werkzeuge die Zeile ignorieren lässt:

    .if defined(WITH_X11)
    PLIST_SUB+= X11=""
    .else
    PLIST_SUB+= X11="@comment "
    .endif

und in der `pkg-plist`:

    %%X11%%bin/foo-gui

Diese Ersetzung (ebenso wie das Hinzufügen weiterer Manualpages) wird zwischen den `pre-install`- und `do-install`-Targets ausgeführt, indem aus ``PLIST`` gelesen und in ``TMPPLIST`` geschrieben wird (Standard: ``WRKDIR`/.PLIST.mktmp`). Falls Ihr Port also ``PLIST`` während dem Erstellen generiert, so sollte dies vor oder in `pre-install` geschehen. Muss Ihr Port die resultierende Datei verändern, so sollte dies in `post-install` mit der Ausgabedatei ``TMPPLIST`` erfolgen.

Eine weitere Möglichkeit, die Paketliste eines Ports zu verändern, besteht darin die Variablen `PLIST_FILES` und `PLIST_DIRS` zu setzen. Der Wert jeder der beiden Variablen stellt eine Liste von Pfadnamen dar, die zusammen mit dem Inhalt von ``PLIST`` in ``TMPPLIST`` geschrieben wird. Dabei unterliegen die Namen in `PLIST_FILES` und `PLIST_DIRS` der weiter oben beschriebenen Substitution von `%%`VAR`%%`. Die Namen aus `PLIST_FILES` werden ansonsten unverändert in die endgültige Paketliste übernommen, während den Namen aus `PLIST_DIRS` noch der Wert von `@dirrm` vorangestellt wird. Damit die Verwendung von `PLIST_FILES` und `PLIST_DIRS` überhaupt möglich ist, müssen diese gesetzt werden, bevor ``TMPPLIST`` geschrieben wird – z.B. in `pre-install` oder vorher.

Zurück | Zum Anfang | Weiter
Von Kernelquellen abhängige Ports |  | Leere Verzeichnisse

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