Nächste: Stufe 3: Kontinuierliche Integration einrichten, Vorige: Stufe 2: Das Repository als Kanal, Nach oben: Software-Entwicklung [Inhalt][Index]
Jetzt, wo wir es zu einem richtigen Kanal gebracht haben (siehe Stufe 2: Das Repository als Kanal), drängt sich die Frage auf, warum er nur ein Paket enthält. Da geht mehr, denn wir können gleich mehrere Paketvarianten (siehe Paketvarianten definieren in Referenzhandbuch zu GNU Guix) in unserer Datei guile-package.scm festlegen, und zwar Varianten, die wir Entwickler von Guile gerne testen würden – wofür wir oben noch Paketumwandlungsoptionen gebraucht haben. Wir können Sie auf diese Weise eintragen:
;; Dies ist die Datei ‚.guix/modules/guile-package.scm‘. (define-module (guile-package) …) (define-public guile …) (define (package-with-configure-flags p flags) "Liefert P erweitert um die 'configure'-Optionen in FLAGS." (package/inherit p (arguments (substitute-keyword-arguments (package-arguments p) ((#:configure-flags original-flags #~(list)) #~(append #$original-flags #$flags)))))) (define-public guile-without-threads (package (inherit (package-with-configure-flags guile #~(list "--without-threads"))) (name "guile-without-threads"))) (define-public guile-without-networking (package (inherit (package-with-configure-flags guile #~(list "--disable-networking"))) (name "guile-without-networking"))) ;; Das oben definierte Paketobjekt muss am Modulende zurückgeliefert werden. guile
Sobald wir den Kanal mit guix pull
aktiviert haben, können wir
diese Varianten als normale Pakete erstellen. Es geht aber auch, einen
Befehl wie hier in einem Checkout von Guile auf oberster Ebene auszuführen:
guix build -L $PWD/.guix/modules guile-without-threads