Vorige: , Nach oben: Pakete definieren   [Inhalt][Index]


8.2.2 origin-Referenz

In diesem Abschnitt werden Paketursprünge – englisch Origins – beschrieben. Eine origin-Deklaration legt Daten fest, die „produziert“ werden müssen – normalerweise heißt das heruntergeladen. Die Hash-Prüfsumme von deren Inhalt muss dabei im Voraus bekannt sein. Ursprünge werden in erster Linie benutzt, um den Quellcode von Paketen zu repräsentieren (siehe Pakete definieren). Aus diesem Grund können Sie mit der origin-Form Patches angeben, die auf den ursprünglichen Quellcode angewandt werden sollen, oder auch Schnipsel von Code, der Veränderungen daran vornimmt.

Datentyp: origin

Mit diesem Datentyp wird ein Ursprung, von dem Quellcode geladen werden kann, beschrieben.

uri

Ein Objekt, was die URI des Quellcodes enthält. Der Objekttyp hängt von der Methode ab (siehe unten). Zum Beispiel sind, wenn die url-fetch-Methode aus (guix download) benutzt wird, die gültigen Werte für uri: eine URL dargestellt als Zeichenkette oder eine Liste solcher URLs.

method

Eine monadische Prozedur, um die angegebene URL zu benutzen. Die Prozedur muss mindestens drei Argumente akzeptieren: den Wert des uri-Feldes, den Hash-Algorithmus und den Hash-Wert, der im hash-Feld angegeben wird. Sie muss ein Store-Objekt oder eine Ableitung in der Store-Monade liefern (siehe Die Store-Monade). Die meisten Methoden liefern eine Ableitung mit fester Ausgabe (siehe Ableitungen).

Zu den häufig benutzten Methoden gehören url-fetch, das Daten von einer URL lädt, und git-fetch, das Daten aus einem Git-Repository lädt (siehe unten).

sha256

Ein Byte-Vektor mit dem SHA-256-Hash des Quellcodes. Seine Funktion ist dieselbe wie das Angeben eines content-hash-SHA256-Objekts im weiter unten beschriebenen hash-Feld.

hash

Das content-hash-Objekt des Quellcodes. Siehe unten für eine Erklärung, wie Sie content-hash benutzen.

Diese Informationen liefert Ihnen der Befehl guix download (siehe guix download aufrufen) oder guix hash (siehe guix hash aufrufen).

file-name (Vorgabe: #f)

Der Dateiname, unter dem der Quellcode abgespeichert werden soll. Wenn er auf #f steht, wird ein vernünftiger Name automatisch gewählt. Falls der Quellcode von einer URL geladen wird, wird der Dateiname aus der URL genommen. Wenn der Quellcode von einem Versionskontrollsystem bezogen wird, empfiehlt es sich, den Dateinamen ausdrücklich anzugeben, weil dann keine sprechende Benennung automatisch gefunden werden kann.

patches (Vorgabe: '())

Eine Liste von Dateinamen, Ursprüngen oder dateiähnlichen Objekten (siehe dateiartige Objekte) mit Patches, welche auf den Quellcode anzuwenden sind.

Die Liste von Patches kann nicht von Parametern der Erstellung abhängen. Insbesondere kann sie nicht vom Wert von %current-system oder %current-target-system abḧängen.

snippet (Vorgabe: #f)

Ein im Quellcode-Verzeichnis auszuführender G-Ausdruck (siehe G-Ausdrücke) oder S-Ausdruck. Hiermit kann der Quellcode bequem modifiziert werden, manchmal ist dies bequemer als mit einem Patch.

patch-flags (Vorgabe: '("-p1"))

Eine Liste der Befehlszeilenoptionen, die dem patch-Befehl übergeben werden sollen.

patch-inputs (Vorgabe: #f)

Eingabepakete oder -ableitungen für den Patch-Prozess. Bei #f werden die üblichen Patcheingaben wie GNU Patch bereitgestellt.

modules (Vorgabe: '())

Eine Liste von Guile-Modulen, die während des Patch-Prozesses und während der Ausführung des snippet-Felds geladen sein sollen.

patch-guile (Vorgabe: #f)

Welches Guile-Paket für den Patch-Prozess benutzt werden soll. Bei #f wird ein vernünftiger Vorgabewert angenommen.

Datentyp: content-hash Wert [Algorithmus]

Erzeugt ein Inhaltshash-Objekt für den gegebenen Algorithmus und benutzt dabei den Wert als dessen Hashwert. Wenn kein Algorithmus angegeben wird, wird sha256 angenommen.

Als Wert kann ein Zeichenketten-Literal, was base32-dekodiert wird, oder ein Byte-Vektor angegeben werden.

Folgende Formen sind äquivalent:

(content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj")
(content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj"
              sha256)
(content-hash (base32
               "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj"))
(content-hash (base64 "kkb+RPaP7uyMZmu4eXPVkM4BN8yhRd8BTHLslb6f/Rc=")
              sha256)

Als interne Implementierung wird für content-hash derzeit ein Makro benutzt. Es überprüft, wenn möglich, zum Zeitpunkt der Makroumschreibung, ob die Angaben in Ordnung sind, z.B. ob der Wert die richtige Größe für den angegebenen Algorithmus hat.

Wie wir oben gesehen haben, hängt es von der im method-Feld angegebenen Methode ab, wie die in einem Paketursprung verwiesenen Daten geladen werden. Das Modul (guix download) stellt die am häufigsten benutzte Methode zur Verfügung, nämlich url-fetch, die im Folgenden beschrieben wird.

Prozedur: url-fetch URL Hash-Algo Hash [Name] [#:executable? #f]

Liefert eine Ableitung mit fester Ausgabe, die Daten von der URL lädt (einer Zeichenkette oder Liste von Zeichenketten für alternativ mögliche URLs). Es wird erwartet, dass die Daten Hash als Prüfsumme haben, gemäß dem Algorithmus, der in Hash-Algo (einem Symbol) angegebenen wurde. Nach Vorgabe ergibt sich der Dateiname aus dem Basisnamen der URL; optional kann in Name ein anderslautender Name festgelegt werden. Wenn executable? wahr ist, wird die heruntergeladene Datei als ausführbar markiert.

Wenn eine der URL mit mirror:// beginnt, wird der „Host Part“ an deren Anfang als Name eines Spiegelserver-Schemas aufgefasst, wie es in %mirror-file steht.

Alternativ wird, wenn die URL mit file:// beginnt, der zugehörige Dateiname in den Store eingefügt und zurückgeliefert.

Ebenso ist im Modul (guix git-download) die git-fetch-Methode für Paketursprünge definiert. Sie lädt Daten aus einem Repository des Versionskontrollsystems Git. Der Datentyp git-reference beschreibt dabei das Repository und den daraus zu ladenden Commit.

Prozedur: git-fetch Ref Hash-Algo Hash [Name]

Liefert eine Ableitung mit fester Ausgabe, die Ref lädt, ein <git-reference>-Objekt. Es wird erwartet, dass die Ausgabe rekursiv die Prüfsumme Hash aufweist (ein „rekursiver Hash“) gemäß dem Typ Hash-Algo (einem Symbol). Als Dateiname wird Name verwendet, oder ein generischer Name, falls Name #f ist.

Prozedur: git-fetch/lfs Ref Hash-Algo Hash [Name]

Dies ist eine Variante der Prozedur git-fetch, die die Git-Erweiterung LFS (Large File Storage) unterstützt. Sie kann zum Beispiel dabei helfen, binäre Testdaten herunterzuladen, die im Testkatalog eines Pakets gebraucht werden.

Datentyp: git-reference

Dieser Datentyp steht für eine Git-Referenz, die git-fetch laden soll.

url

Die URL des zu klonenden Git-Repositorys.

commit

Diese Zeichenkette gibt entweder den zu ladenden Commit an (als Zeichenkette aus Hexadezimalzeichen) oder sie entspricht dem zu ladenden Tag. Sie können auch eine „kurze“ Commit-Zeichenkette oder einen Bezeichner wie von git describe, z.B. v1.0.1-10-g58d7909c97, verwenden.

recursive? (Vorgabe: #f)

Dieser boolesche Wert gibt an, ob Git-Submodule rekursiv geladen werden sollen.

Im folgenden Beispiel wird der Tag v2.10 des Repositorys für GNU Hello bezeichnet:

(git-reference
  (url "https://git.savannah.gnu.org/git/hello.git")
  (commit "v2.10"))

Das ist äquivalent zu folgender Referenz, wo der Commit ausdrücklich benannt wird:

(git-reference
  (url "https://git.savannah.gnu.org/git/hello.git")
  (commit "dc7dc56a00e48fe6f231a58f6537139fe2908fb9"))

Bei Mercurial-Repositorys finden Sie im Modul (guix hg-download) Definitionen für die Methode hg-fetch für Paketursprünge sowie den Datentyp hg-reference. Mit ihnen wird das Versionskontrollsystem Mercurial unterstützt.

Prozedur: hg-fetch Ref Hash-Algo Hash [Name]

Liefert eine Ableitung mit fester Ausgabe, die Ref lädt, ein <hg-reference>-Objekt. Es wird erwartet, dass die Ausgabe rekursiv die Prüfsumme Hash aufweist (ein „rekursiver Hash“) gemäß dem Typ Hash-Algo (einem Symbol). Als Dateiname wird Name verwendet, oder ein generischer Name, falls Name #f ist.

Datentyp: hg-reference

Dieser Datentyp steht für eine Mercurial-Referenz, die hg-fetch laden soll.

url

Die URL des zu klonenden Mercurial-Repositorys.

changeset

Diese Zeichenkette gibt den zu ladenden Änderungssatz an.

Bei Subversion-Repositorys finden Sie im Modul (guix svn-download) Definitionen für die Methode svn-fetch für Paketursprünge sowie den Datentyp svn-reference. Mit ihnen wird das Versionskontrollsystem Subversion unterstützt.

Prozedur: svn-fetch Ref Hash-Algo Hash [Name]

Liefert eine Ableitung mit fester Ausgabe, die Ref lädt, ein <svn-reference>-Objekt. Es wird erwartet, dass die Ausgabe rekursiv die Prüfsumme Hash aufweist (ein „rekursiver Hash“) gemäß dem Typ Hash-Algo (einem Symbol). Als Dateiname wird Name verwendet, oder ein generischer Name, falls Name #f ist.

Datentyp: svn-reference

Dieser Datentyp steht für eine Subversion-Referenz, die svn-fetch laden soll.

url

Die URL des zu klonenden Subversion-Repositorys.

revision

Diese Zeichenkette gibt die zu ladende Revision als Zahl an.

recursive? (Vorgabe: #f)

Dieser boolesche Wert gibt an, ob Subversions „externe Verweise“ rekursiv geladen werden sollen.

user-name (Vorgabe: #f)

Der Name eines Kontos mit Lesezugriff auf das Repository, wenn das Repository nicht öffentlich ist.

password (Vorgabe: #f)

Das Passwort zum Zugriff auf das Subversion-Repository, wenn nötig.

Bei Bazaar-Repositorys finden Sie im Modul (guix bzr-download) Definitionen für die Methode bzr-fetch für Paketursprünge sowie den Datentyp bzr-reference. Mit ihnen wird das Versionskontrollsystem Bazaar unterstützt.

Prozedur: bzr-fetch Ref Hash-Algo Hash [Name]

Liefert eine Ableitung mit fester Ausgabe, die Ref lädt, ein <bzr-reference>-Objekt. Es wird erwartet, dass die Ausgabe rekursiv die Prüfsumme Hash aufweist (ein „rekursiver Hash“) gemäß dem Typ Hash-Algo (einem Symbol). Als Dateiname wird Name verwendet, oder ein generischer Name, falls Name #f ist.

Datentyp: bzr-reference

Dieser Datentyp steht für eine Bazaar-Referenz, die bzr-fetch laden soll.

url

Die URL des zu klonenden Bazaar-Repositorys.

revision

Diese Zeichenkette gibt die zu ladende Revision als Zahl an.

For CVS repositories, the module (guix cvs-download) defines the cvs-fetch origin method and cvs-reference data type for support of the Concurrent Versions System (CVS).

Procedure: cvs-fetch ref hash-algo hash [name]

Liefert eine Ableitung mit fester Ausgabe, die Ref lädt, ein <cvs-reference>-Objekt. Es wird erwartet, dass die Ausgabe rekursiv die Prüfsumme Hash aufweist (ein „rekursiver Hash“) gemäß dem Typ Hash-Algo (einem Symbol). Als Dateiname wird Name verwendet, oder ein generischer Name, falls Name #f ist.

Data Type: cvs-reference

Dieser Datentyp steht für eine CVS-Referenz, die cvs-fetch laden soll.

root-directory

The CVS root directory.

module

Module to fetch.

revision

Revision to fetch.

The example below denotes a version of gnu-standards to fetch:

(cvs-reference
  (root-directory ":pserver:anonymous@cvs.savannah.gnu.org:/sources/gnustandards")
  (module "gnustandards")
  (revision "2020-11-25"))

Vorige: package-Referenz, Nach oben: Pakete definieren   [Inhalt][Index]