Suivant: Niveau 1 : Compiler avec Guix, Monter: Développement logiciel [Table des matières][Index]
Comment entreprendre la “Guixification” d’un dépôt ? La première étape,
comme vu précédemment, consiste à ajouter un fichier guix.scm à la
racine du dépôt. Nous prendrons comme exemple Guile au long de
chapitre. Guile est (principalement) écrit en Scheme et en C, possède
plusieurs dépendances—Une suite d’outils de compilation C, des
bibliothèques C, Autoconf et sa clique, LaTeX, et ainsi de suite… Le fichier
guix.scm ressemblera à une définition de paquet traditionnelle
(voir Définition des paquets dans Manuel de référence de GNU Guix)
sans le define-public
:
;; The ‘guix.scm’ file for Guile, for use by ‘guix shell’. (use-modules (guix) (guix build-system gnu) ((guix licenses) #:prefix license:) (gnu packages autotools) (gnu packages base) (gnu packages bash) (gnu packages bdw-gc) (gnu packages compression) (gnu packages flex) (gnu packages gdb) (gnu packages gettext) (gnu packages gperf) (gnu packages libffi) (gnu packages libunistring) (gnu packages linux) (gnu packages pkg-config) (gnu packages readline) (gnu packages tex) (gnu packages texinfo) (gnu packages version-control)) (package (name "guile") (version "3.0.99-git") ;funky version number (source #f) ;no source (build-system gnu-build-system) (native-inputs (append (list autoconf automake libtool gnu-gettext flex texinfo texlive-base ;for "make pdf" texlive-epsf gperf git gdb strace readline lzip pkg-config) ;; When cross-compiling, a native version of Guile itself is ;; needed. (if (%current-target-system) (list this-package) '()))) (inputs (list libffi bash-minimal)) (propagated-inputs (list libunistring libgc)) (native-search-paths (list (search-path-specification (variable "GUILE_LOAD_PATH") (files '("share/guile/site/3.0"))) (search-path-specification (variable "GUILE_LOAD_COMPILED_PATH") (files '("lib/guile/3.0/site-ccache"))))) (synopsis "Scheme implementation intended especially for extensions") (description "Guile is the GNU Ubiquitous Intelligent Language for Extensions, and it's actually a full-blown Scheme implementation!") (home-page "https://www.gnu.org/software/guile/") (license license:lgpl3+))
Même si ça peut paraître fastidieux, une personne souhaitant bidouiller Guile n’aura désormais qu’à exécuter :
guix shell
pour obtenir un environnement d’exécution avec toutes les dépendances de
Guile : celle listées ci-dessus, mais également les dépendances
implicites : la suite d’outils GCC, GNU Make, sed, grep, etc.
Voir Invoquer guix shell dans Manuel de référence de GNU Guix pour
plus d’informations sur guix shell
.
La recommandation du chef : Nous suggérons la création d’environnements de développement comme suit :
guix shell --container --link-profile… ou plus brièvement :
guix shell -CPNous obtenons un conteneur avec toutes les dépendances qui apparaissent dans
$HOME/.guix-profile
qui permet de profiter des caches comme le config.cache (voir Cache Files dans Autoconf) ainsi que des noms de fichier absolus stockés dans les éventuelsMakefile
autogénérés ou autres. L’exécution de l’environnement logiciel dans un conteneur apporte la garantie que seuls les dépendances de Guix et le dossier courant sont accessibles ; aucun élément du système ne peut interférer avec l’environnement de développement ainsi créé.
Suivant: Niveau 1 : Compiler avec Guix, Monter: Développement logiciel [Table des matières][Index]