Nächste: , Vorige: , Nach oben: Zubehör   [Inhalt][Index]


9.7 guix style aufrufen

Mit dem Befehl guix style können sowohl Nutzer als auch Paketentwickler ihre Paketdefinitionen und Konfigurationsdateien entsprechend der aktuell modischen Trends umgestalten. Sie können entweder ganze Dateien mit der Befehlszeilenoption --whole-file umformatieren oder die gewählten Stilregeln auf einzelne Paketdefinitionen anwenden. Im Moment werden Regeln für die folgenden Stilfragen angeboten:

Zurzeit läuft eine Umstellung der Notation, wie Paketeingaben aufgeschrieben werden (siehe package-Referenz, für weitere Informationen zu Paketeingaben). Bis Version 1.3.0 wurden Paketeingaben im „alten Stil“ verfasst, d.h. man schrieb zu jeder Eingabe ausdrücklich eine Bezeichnung dazu, in der Regel der Paketname:

(package
  ;; …
  ;; Der „alte Stil“ (veraltet).
  (inputs `(("libunistring" ,libunistring)
            ("libffi" ,libffi))))

Der alte Stil gilt heute als veraltet. Der bevorzugte Stil sieht so aus:

(package
  ;; …
  ;; Der „neue Stil“.
  (inputs (list libunistring libffi)))

Ebenso gilt als veraltet, Eingaben mit alist-delete und seinen Freunden zu verarbeiten; bevorzugt wird modify-inputs (siehe Paketvarianten definieren für weitere Informationen zu modify-inputs).

In den allermeisten Fällen ist das eine rein mechanische Änderung der oberflächlichen Syntax und die Pakete müssen dazu nicht einmal neu erstellt werden. Diese kann guix style -S inputs für Sie übernehmen, egal ob Sie an Paketen innerhalb des eigentlichen Guix oder in einem externen Kanal arbeiten.

Die allgemeine Syntax lautet:

guix style [Optionen] Paket

Damit wird sich guix style der Analyse und Umschreibung der Definition von Paket… annehmen. Wenn Sie kein Paket angeben, nimmt es sich alle Pakete vor. Mit der Befehlszeilenoption --styling oder -S können Sie auswählen, nach welcher Stilregel guix style vorgeht. Vorgegeben ist die format-Regel, siehe unten.

Um ganze Quelldateien auf einmal umzuformatieren, lautet die Syntax:

guix style --whole-file Datei

Die verfügbaren Befehlszeilenoptionen folgen.

--dry-run
-n

Anzeigen, welche Stellen im Quellcode verändert würden, sie jedoch nicht verändern.

--whole-file
-f

Ganze Quelldateien auf einmal umformatieren. In diesem Fall werden weitere Argumente als Dateinamen aufgefasst (und eben nicht als Paketnamen) und die Befehlszeilenoption --styling ist ohne Wirkung.

Zum Beispiel können Sie so die Datei mit Ihrer Betriebssystemkonfiguration umformatieren (vorausgesetzt Sie haben die Schreibberechtigung auf der Datei):

guix style -f /etc/config.scm
--styling=Regel
-S Regel

Die Regel anwenden, die eine der folgenden Stilregeln sein muss:

format

Die angegebene Paketdefinition bzw. mehrere Paketdefinitionen formatieren. Das ist die voreingestellte Stilregel. Wenn zum Beispiel eine Paketautorin, die Guix aus einem Checkout heraus ausführt (siehe Guix vor der Installation ausführen), die Definition des Coreutils-Pakets formatieren wollte, würde sie das machen:

./pre-inst-env guix style coreutils
inputs

Paketeingaben in den oben beschriebenen „neuen Stil“ umschreiben. Hiermit würden Sie die Eingaben des Pakets oderso in Ihrem eigenen Kanal umschreiben:

guix style -L ~/eigener/kanal -S inputs oderso

Die Umschreibung geschieht auf konservative Art: Kommentare bleiben erhalten und wenn es den Code in einem inputs-Feld nicht erfassen kann, gibt guix style auf. Die Befehlszeilenoption --input-simplification ermöglicht, genau zu bestimmen, unter welchen Voraussetzungen Eingaben vereinfacht werden sollen.

arguments

Die Paketargumente werden so umgeschrieben, dass G-Ausdrücke benutzt werden (siehe G-Ausdrücke). Betrachten Sie zum Beispiel diese Paketdefinition:

(define-public mein-paket
  (package
    ;; …
    (arguments      ;der alte Stil mit quotierten Argumenten
     '(#:make-flags '("V=1")
       #:phases (modify-phases %standard-phases
                  (delete 'build))))))

Wenn Sie guix style -S arguments auf dieses Paket ausführen, würde sein arguments-Feld so umgeschrieben:

(define-public mein-paket
  (package
    ;; …
    (arguments
      (list #:make-flags #~'("V=1")
            #:phases #~(modify-phases %standard-phases
                         (delete 'build))))))

Wir weisen darauf hin, dass Änderungen durch die arguments-Regel keine Neuerstellung der betroffenen Pakete zur Folge hat. Des Weiteren wird, wenn eine Paketdefinition bereits G-Ausdrücke benutzt, nichts durch guix style verändert.

--list-stylings
-l

Alle verfügbaren Stilregeln auflisten und beschreiben und sonst nichts.

--load-path=Verzeichnis
-L Verzeichnis

Das Verzeichnis vorne an den Suchpfad für Paketmodule anfügen (siehe Paketmodule).

--expression=Ausdruck
-e Ausdruck

Das Paket umgestalten, zu dem der Ausdruck ausgewertet wird.

Zum Beispiel startet dies:

guix style -e '(@ (gnu packages gcc) gcc-5)'

ändert den Stil der Paketdefinition für gcc-5.

--input-simplification=Richtlinie

Wenn Sie die Stilregel inputs verwenden, als ‘-S inputs’, geben Sie hiermit die Richtlinie zur Vereinfachung der Paketeingaben für die Fälle an, wenn eine Eingabenbezeichnung nicht zum damit assoziierten Paketnamen passt. Die Richtlinie kann eine der folgenden sein:

silent

Die Eingaben nur vereinfachen, wenn die Änderung unmerklich sind, in dem Sinne, dass das Paket nicht aufs Neue erstellt werden muss (seine Ableitung also dieselbe bleibt).

safe

Die Eingaben nur vereinfachen, wenn dies keine Probleme mit sich bringt. Hier darf das Paket neu erstellt werden müssen, aber die Änderung daran hat keine beobachtbaren Auswirkungen.

always

Die Eingaben selbst dann vereinfachen, wenn die Eingabebezeichnungen nicht zu den Paketnamen passen, obwohl das Auswirkungen haben könnte.

Die Vorgabe ist silent, also nur unmerkliche Vereinfachungen, die keine Neuerstellung auslösen.


Nächste: guix lint aufrufen, Vorige: guix refresh aufrufen, Nach oben: Zubehör   [Inhalt][Index]