Crafting happiness with Free Software & Hardware

Empaqueter ac-geiser pour #Guix (3)

#guix #package #français

Logo Guix

Je documente ici la poursuite du travail de l'article précédent. Ces articles font partie d'une série sur l'empaquetage de logiciels pour le gestionnaire de paquet Guix.

Pour démarrer cette nouvelle session de travail, je me replace dans un environnement de développement isolé :

$ guix environment --pure guix

Je reprends les commandes de la dernière étape de l'article précédent :

[dev]$ echo '(use-modules (guix packages) (guix build-system emacs)) (define-public ac-geiser (package (name "") (version "") (source origin) (build-system emacs-build-system) (synopsis "") (description "") license home-page))' > /tmp/emacs-ac-geiser.scm
[dev]$ ./pre-inst-env guix build -f /tmp/emacs-ac-geiser.scm 
/tmp/emacs-ac-geiser.scm:1:81: error: license: invalid field specifier

Je cherche à corriger l'erreur que me signal Guix, à savoir : le champ license qui n'est pas spécifié.

Dans la documentation, je trouve peu d'informations concernant la façon de spécifier le champ license. J'ai pu voir, dans l'exemple donné pour le logiciel hello la valeur gpl3+, or, pour l'instant, je recherche quelque chose de plus proche d'une valeur nulle, à défaut d'avoir la valeur qui convient directement à mon cas. Je pourrai essayer de bidouiller au hasard (par exemple essayer bsd3) jusqu'a tomber sur la bonne valeur, mais ce serais pas assez scientifique comme démarche, à mon goût. Je décide donc d'aller chercher dans le code source. La documentation stipule que le champ license doit être valorisé (ou spécifié) avec les valeurs tirées du module (guix licenses). Un petit tour dans le dépot git de Guix me permet de trouver le fichier source de ce module, logiquement : guix/licenses.scm .

Dans ce fichier, je vois que le module exporte le symbole bsd-3 (et non, ce n'était pas bsd3), qui conviendrait à mon paquet. Je vais donc modifier la définition que je suis en train de construire pour importer le module (guix licenses) et ainsi pouvoir spécifier le champ license avec le symbole adéquat :

[dev]$ echo '(use-modules (guix packages) (guix build-system emacs) (guix licenses)) (define-public ac-geiser (package (name "") (version "") (source origin) (build-system emacs-build-system) (synopsis "") (description "") (license bsd-3) home-page))' > /tmp/emacs-ac-geiser.scm
[dev]$ ./pre-inst-env guix build -f /tmp/emacs-ac-geiser.scm
/tmp/emacs-ac-geiser.scm:1:97: error: home-page: invalid field specifier

Guix ne me renvoit pas d'erreur avec ces modifications, donc je peux passer au dernier champ encore non spécifié : home-page. Facile, celui-ci attend une chaîne de caractères.

[dev]$ echo '(use-modules (guix packages) (guix build-system emacs) (guix licenses)) (define-public ac-geiser (package (name "") (version "") (source origin) (build-system emacs-build-system) (synopsis "") (description "") (license bsd-3) (home-page "")))' > /tmp/emacs-ac-geiser.scm
[dev]$ ./pre-inst-env guix build -f /tmp/emacs-ac-geiser.scm
guix build: error: origin: source expression failed to match any pattern

Visiblement, on en a fini avec la spécification des champs obligatoires de package. La nouvelle erreur va nous faire rentrer dans le détail de l'objet source, plus précisément, l'objet origin qui sert à le valoriser.

Mais je m'arrête là pour aujourd'hui. Je me pencherai dessus dans un prochain article. Voici la définition obtenue à ce stade :

(use-modules
 (guix packages)
 (guix build-system emacs)
 (guix licenses))

(define-public ac-geiser
  (package
   (name "")
   (version "")
   (source origin)
   (build-system emacs-build-system)
   (synopsis "")
   (description "")
   (license bsd-3)
   (home-page "")))

Merci beaucoup d'avoir lu cet article !
N'hésites pas à me donner ton avis ou laisser un commentaire.
Abonnes-toi pour ne pas manquer les prochains articles :
via une plateforme fédérée (ex: mastodon) @jeko@write.as
via RSS https://write.as/jeko/feed/

Et encore plus important, partages le blog et dis à tes amis que c'est le meilleur blog de l'histoire du logiciel libre ! Sans dec'