# -*- mode: org -*-
#+TITLE: Contrôler un environnement logiciel avec Guix
#+DATE: August, 2019
#+STARTUP: overview indent
#+OPTIONS: num:nil toc:t
#+PROPERTY: header-args :eval never-export

* Point de départ
Pour utiliser Guix, il faut évidemment l'installer. Il y a deux façons d'y arriver:

1. Installer [[https://guix.gnu.org/manual/en/html_node/System-Installation.html][Guix System]] sur votre ordinateur, à la place d'une distribution Linux plus traditionelle comme Debian ou Ubuntu. Tout votre système est alors géré avec Guix, ce qui a des avantages (notamment la reproductibilité totale de votre configuration), mais aussi des inconvénients (il y a moins que logiciels disponibles pour Guix que pour une vieille distribution genre Debian).

2. Installer [[https://guix.gnu.org/manual/en/html_node/Binary-Installation.html][le gestionnaire de paquets Guix]] sur un ordinateur qui tourne déjà sous Linux. Vous pouvez alors utiliser Guix en parallèle avec le gestionnaire de paquets de votre distribution, ce qui donne beaucoup de flexibilité, mais il faut bien sûr faire attention à quel paquet est installé comment, et éviter des doublons. *Si vous utilisez Guix avec une autre distribution pour suivre ce tutoriel, assurez-vous de n'avoir installé ni Python ni Jupyter par un autre moyen que Guix, sinon des erreurs incomréhensibles sont presque garanties !*

* Séquence 2: Créer son propre environnement, automatiser sa construction et le partage
** 2.2 Installer tous les paquets dont on a besoin
Une installation Guix de base ne contient même pas python,
il va donc falloir l'installer ainsi que =jupyter= et différents paquets
comme =matplotlib=, =pandas=, =numpy=, =statsmodels=... L'installation
se fait à l'aide de la commande =guix install <nom_du_paquet>=. Comment
faire pour trouver le nom du paquet Guix qui contient ce qui vous intéresse ?
Avec la commande =guix search "<un truc lié au nom de ce que vous cherchez>"=.

D'abord, je cherchertout ce qui a trait à jupyter
#+begin_src shell :session *docker* :results output :exports both 
guix search jupyter
#+end_src

#+RESULTS:
#+begin_example
name: jupyter
version: 1.0.0
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python-ipykernel@5.1.1 python-ipywidgets@5.2.2
+ python-jupyter-console@6.0.0 python-nbconvert@5.0.0b1 python-notebook@5.7.4
+ python-qtconsole@4.4.3
location: gnu/packages/python-xyz.scm:7899:2
homepage: https://jupyter.org
license: Modified BSD
synopsis: Web application for interactive documents  
description: The Jupyter Notebook is a web application that allows you to create and
+ share documents that contain live code, equations, visualizations and explanatory text.
+ Uses include: data cleaning and transformation, numerical simulation, statistical
+ modeling, machine learning and much more.
relevance: 22

hint: Run `guix search ... | less' to view all the results.
#+end_example

C'est déjà prometteur, mais voyons comme proposé la totalité des résultats. Dans Emacs, nous remplaçons =less= par =cat=:

#+begin_src sh :results output :exports both
guix search jupyter | cat
#+end_src

#+RESULTS:
#+begin_example
name: jupyter
version: 1.0.0
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python-ipykernel@5.1.1 python-ipywidgets@5.2.2
+ python-jupyter-console@6.0.0 python-nbconvert@5.0.0b1 python-notebook@5.7.4
+ python-qtconsole@4.4.3
location: gnu/packages/python-xyz.scm:7899:2
homepage: https://jupyter.org
license: Modified BSD
synopsis: Web application for interactive documents  
description: The Jupyter Notebook is a web application that allows you to
+ create and share documents that contain live code, equations, visualizations
+ and explanatory text.  Uses include: data cleaning and transformation,
+ numerical simulation, statistical modeling, machine learning and much more.
relevance: 22

name: python2-jupyter-client
version: 5.2.4
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: iproute2@5.2.0 python2-jupyter-core@4.4.0 python2-pyzmq@17.1.2
+ python2-traitlets@4.3.2
location: gnu/packages/python-xyz.scm:5121:2
homepage: http://jupyter.org/
license: Modified BSD
synopsis: Jupyter protocol implementation and client libraries  
description: The `jupyter_client' package contains the reference
+ implementation of the Jupyter protocol.  It also provides client and kernel
+ management APIs for working with kernels, and the `jupyter kernelspec'
+ entrypoint for installing `kernelspec's for use with Jupyter frontends.
relevance: 15

name: python-jupyter-client
version: 5.2.4
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: iproute2@5.2.0 python-jupyter-core@4.4.0 python-pyzmq@17.1.2
+ python-traitlets@4.3.2
location: gnu/packages/python-xyz.scm:5121:2
homepage: http://jupyter.org/
license: Modified BSD
synopsis: Jupyter protocol implementation and client libraries  
description: The `jupyter_client' package contains the reference
+ implementation of the Jupyter protocol.  It also provides client and kernel
+ management APIs for working with kernels, and the `jupyter kernelspec'
+ entrypoint for installing `kernelspec's for use with Jupyter frontends.
relevance: 15

name: python2-jupyter-core
version: 4.4.0
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python2-traitlets@4.3.2
location: gnu/packages/python-xyz.scm:5096:2
homepage: http://jupyter.org/
license: Modified BSD
synopsis: Jupyter base package  
description: Jupyter core is the base package on which Jupyter projects rely.
relevance: 11

name: python2-jupyter-console
version: 5.2.0
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python2-ipykernel@5.1.0 python2-jupyter-client@5.2.4
+ python2-nose@1.3.7 python2-prompt-toolkit@1.0.15 python2-pygments@2.4.2
location: gnu/packages/python-xyz.scm:7809:2
homepage: https://jupyter.org
license: Modified BSD
synopsis: Jupyter terminal console  
description: This package provides a terminal-based console frontend for
+ Jupyter kernels.  It also allows for console-based interaction with non-Python
+ Jupyter kernels such as IJulia and IRKernel.
relevance: 11

name: python-jupyter-core
version: 4.4.0
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python-traitlets@4.3.2
location: gnu/packages/python-xyz.scm:5096:2
homepage: http://jupyter.org/
license: Modified BSD
synopsis: Jupyter base package  
description: Jupyter core is the base package on which Jupyter projects rely.
relevance: 11

name: python-jupyter-console
version: 6.0.0
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python-ipykernel@5.1.1 python-jupyter-client@5.2.4
+ python-nose@1.3.7 python-prompt-toolkit@2.0.7 python-pygments@2.4.2
location: gnu/packages/python-xyz.scm:7783:2
homepage: https://jupyter.org
license: Modified BSD
synopsis: Jupyter terminal console  
description: This package provides a terminal-based console frontend for
+ Jupyter kernels.  It also allows for console-based interaction with non-Python
+ Jupyter kernels such as IJulia and IRKernel.
relevance: 11

name: jupyter-guile-kernel
version: 0.0.0-1.a7db924
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: guile-json@1.2.0 guile-simple-zmq@0.0.0-3.68bedb6 guile@2.2.4
+ openssl@1.0.2p
location: gnu/packages/guile-xyz.scm:770:4
homepage: https://github.com/jerry40/guile-kernel
license: GPL 3+
synopsis: Guile kernel for the Jupyter Notebook  
description: This package provides a Guile 2.x kernel for the Jupyter
+ Notebook.  It allows users to interact with the Guile REPL through Jupyter.
relevance: 11

name: python-pari-jupyter
version: 1.3.2
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: pari-gp@2.11.2 python-ipykernel@5.1.1 readline@7.0.5
location: gnu/packages/python-xyz.scm:5241:2
homepage: https://github.com/jdemeyer/pari_jupyter
license: GPL 3+
synopsis: A Jupyter kernel for PARI/GP  
description: The package provides a PARI/GP kernel for Jupyter.
relevance: 9

name: r-irkernel
version: 1.0.2
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: jupyter@1.0.0 r-crayon@1.3.4 r-digest@0.6.20 r-evaluate@0.14
+ r-irdisplay@0.7.0 r-jsonlite@1.6 r-pbdzmq@0.3-3 r-repr@1.0.1 r-uuid@0.1-2
location: gnu/packages/cran.scm:12125:2
homepage: https://cran.r-project.org/web/packages/IRkernel/
license: Expat
synopsis: Native R kernel for Jupyter  
description: The R kernel for the Jupyter environment executes R code which
+ the front-end (Jupyter Notebook or other front-ends) submits to the kernel via
+ the network.
relevance: 7

name: r-irdisplay
version: 0.7.0
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: r-repr@1.0.1
location: gnu/packages/cran.scm:12102:2
homepage: https://cran.r-project.org/web/packages/IRdisplay/
license: Expat
synopsis: Jupyter display machinery  
description: This package provides an interface to the rich display
+ capabilities of Jupyter front-ends (e.g.  Jupyter Notebook).  It is designed
+ to be used from a running IRkernel session.
relevance: 7

name: ruby-iruby
version: 0.3
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python-ipython@7.5.0 ruby-bond@0.5.1 ruby-cztop@0.12.2
+ ruby-data_uri@0.1.0 ruby-mimemagic@0.3.2 ruby-multi-json@1.13.1
+ ruby-pry@0.11.3
location: gnu/packages/ruby.scm:394:2
homepage: https://github.com/SciRuby/iruby
license: Expat
synopsis: Ruby kernel for Jupyter/IPython  
description: This package provides a Ruby kernel for Jupyter/IPython frontends
+ (e.g.  notebook).
relevance: 5

name: python2-widgetsnbextension
version: 3.4.2
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python2-certifi@2019.3.9 python2-ipykernel@5.1.1
+ python2-nose@1.3.7 python2-notebook@5.7.4
location: gnu/packages/python-xyz.scm:7726:2
homepage: https://ipython.org
license: Modified BSD
synopsis: IPython HTML widgets for Jupyter  
description: This package provides interactive HTML widgets for Jupyter
+ notebooks.
relevance: 5

name: python2-nbformat
version: 4.4.0
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python2-ipython-genutils@0.1.0 python2-jsonschema@3.0.1
+ python2-jupyter-core@4.4.0 python2-traitlets@4.3.2
location: gnu/packages/python-xyz.scm:7517:2
homepage: http://jupyter.org
license: Modified BSD
synopsis: Jupyter Notebook format  
description: This package provides the reference implementation of the Jupyter
+ Notebook format and Python APIs for working with notebooks.
relevance: 5

name: python2-nbconvert
version: 5.0.0b1
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python2-bleach@1.4.3 python2-entrypoints@0.3
+ python2-jinja2@2.10.1 python2-jupyter-core@4.4.0 python2-mistune@0.8.4
+ python2-nbformat@4.4.0 python2-pygments@2.4.2 python2-pytest@3.8.0
+ python2-traitlets@4.3.2
location: gnu/packages/python-xyz.scm:7607:2
homepage: http://jupyter.org
license: Modified BSD
synopsis: Converting Jupyter Notebooks  
description: The `nbconvert' tool, {jupyter nbconvert
relevance: 5

name: python2-ipywidgets
version: 5.2.2
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python2-ipython@7.5.0 python2-nose@1.3.7 python2-pytest@3.8.0
+ python2-traitlets@4.3.2 python2-widgetsnbextension@3.4.2
location: gnu/packages/python-xyz.scm:7753:2
homepage: https://ipython.org
license: Modified BSD
synopsis: IPython HTML widgets for Jupyter  
description: Ipywidgets are interactive HTML widgets for Jupyter notebooks and
+ the IPython kernel.  Notebooks come alive when interactive widgets are used.
+ Users gain control of their data and can visualize changes in the data.
relevance: 5

name: python2-ipykernel
version: 5.1.0
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python2-ipython@5.8.0 python2-jupyter-client@5.2.4
+ python2-nose@1.3.7 python2-pytest@3.8.0
location: gnu/packages/python-xyz.scm:5208:2
homepage: https://ipython.org
license: Modified BSD
synopsis: IPython Kernel for Jupyter  
description: This package provides the IPython kernel for Jupyter.
relevance: 5

name: python-widgetsnbextension
version: 3.4.2
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python-certifi@2019.3.9 python-ipykernel@5.1.1 python-nose@1.3.7
+ python-notebook@5.7.4
location: gnu/packages/python-xyz.scm:7726:2
homepage: https://ipython.org
license: Modified BSD
synopsis: IPython HTML widgets for Jupyter  
description: This package provides interactive HTML widgets for Jupyter
+ notebooks.
relevance: 5

name: python-slurm-magic
version: 0.0-0.73dd1a2
outputs: out
systems: x86_64-linux i686-linux aarch64-linux mips64el-linux
dependencies: python-ipython@7.5.0 python-pandas@0.24.2 slurm@17.11.3
location: gnu/packages/parallel.scm:199:4
homepage: https://github.com/NERSC/slurm-magic
license: Modified BSD
synopsis: Control the SLURM batch scheduler from Jupyter Notebook  
description: This package implements Jupyter/IPython magic commands
+ (http://ipython.readthedocs.io/en/stable/interactive/magics.html) for
+ interacting with the SLURM workload manager.  SLURM magic simply wraps
+ command-line executables and the commands themselves should look like their
+ command-line counterparts.  Commands are spawned via `subprocess' and output
+ captured in the notebook.  Whatever arguments are accepted by a SLURM command
+ line executable are also accepted by the corresponding magic command---e.g.,
+ `%salloc', `%sbatch', etc.
relevance: 5

name: python-qtconsole
version: 4.4.3
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python-ipykernel@5.1.1 python-ipython@7.5.0 python-pytest@3.8.0
location: gnu/packages/python-xyz.scm:7863:2
homepage: http://jupyter.org
license: Modified BSD
synopsis: Jupyter Qt console  
description: This package provides a Qt-based console for Jupyter with support
+ for rich media output.
relevance: 5

name: python-nbformat
version: 4.4.0
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python-ipython-genutils@0.1.0 python-jsonschema@3.0.1
+ python-jupyter-core@4.4.0 python-traitlets@4.3.2
location: gnu/packages/python-xyz.scm:7517:2
homepage: http://jupyter.org
license: Modified BSD
synopsis: Jupyter Notebook format  
description: This package provides the reference implementation of the Jupyter
+ Notebook format and Python APIs for working with notebooks.
relevance: 5

name: python-nbconvert
version: 5.0.0b1
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python-bleach@1.4.3 python-entrypoints@0.3 python-jinja2@2.10.1
+ python-jupyter-core@4.4.0 python-mistune@0.8.4 python-nbformat@4.4.0
+ python-pygments@2.4.2 python-pytest@3.8.0 python-traitlets@4.3.2
location: gnu/packages/python-xyz.scm:7607:2
homepage: http://jupyter.org
license: Modified BSD
synopsis: Converting Jupyter Notebooks  
description: The `nbconvert' tool, {jupyter nbconvert
relevance: 5

name: python-ipywidgets
version: 5.2.2
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python-ipython@7.5.0 python-nose@1.3.7 python-pytest@3.8.0
+ python-traitlets@4.3.2 python-widgetsnbextension@3.4.2
location: gnu/packages/python-xyz.scm:7753:2
homepage: https://ipython.org
license: Modified BSD
synopsis: IPython HTML widgets for Jupyter  
description: Ipywidgets are interactive HTML widgets for Jupyter notebooks and
+ the IPython kernel.  Notebooks come alive when interactive widgets are used.
+ Users gain control of their data and can visualize changes in the data.
relevance: 5

name: python-ipykernel
version: 5.1.1
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python-ipython@7.5.0 python-jupyter-client@5.2.4
+ python-nose@1.3.7 python-pytest@3.8.0
location: gnu/packages/python-xyz.scm:5165:2
homepage: https://ipython.org
license: Modified BSD
synopsis: IPython Kernel for Jupyter  
description: This package provides the IPython kernel for Jupyter.
relevance: 5

name: python2-ipython-genutils
version: 0.1.0
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: 
location: gnu/packages/python-xyz.scm:5028:2
homepage: https://ipython.org
license: Modified BSD
synopsis: Vestigial utilities from IPython  
description: This package provides retired utilities from IPython.  No
+ packages outside IPython/Jupyter should depend on it.
+ 
+ This package shouldn't exist.  It contains some common utilities shared by
+ Jupyter and IPython projects during The Big Split.  As soon as possible, those
+ packages will remove their dependency on this, and this package will go away.
relevance: 4

name: python-ipython-genutils
version: 0.1.0
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: 
location: gnu/packages/python-xyz.scm:5028:2
homepage: https://ipython.org
license: Modified BSD
synopsis: Vestigial utilities from IPython  
description: This package provides retired utilities from IPython.  No
+ packages outside IPython/Jupyter should depend on it.
+ 
+ This package shouldn't exist.  It contains some common utilities shared by
+ Jupyter and IPython projects during The Big Split.  As soon as possible, those
+ packages will remove their dependency on this, and this package will go away.
relevance: 4

name: python2-notebook
version: 5.7.4
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python2-jupyter-core@4.4.0 python2-mock@2.0.0
+ python2-nbconvert@5.0.0b1 python2-nbformat@4.4.0 python2-nose@1.3.7
+ python2-prometheus-client@0.5.0 python2-requests@2.22.0
+ python2-send2trash@1.5.0 python2-sphinx@1.7.7 python2-terminado@0.8.1
location: gnu/packages/python-xyz.scm:7708:4
homepage: http://jupyter.org/
license: Modified BSD
synopsis: Web-based notebook environment for interactive computing  
description: The Jupyter HTML notebook is a web-based notebook environment for
+ interactive computing.
relevance: 2

name: python-notebook
version: 5.7.4
outputs: out
systems: x86_64-linux i686-linux armhf-linux aarch64-linux mips64el-linux
dependencies: python-jupyter-core@4.4.0 python-nbconvert@5.0.0b1
+ python-nbformat@4.4.0 python-nose@1.3.7 python-prometheus-client@0.5.0
+ python-requests@2.22.0 python-send2trash@1.5.0 python-sphinx@2.1.2
+ python-terminado@0.8.1
location: gnu/packages/python-xyz.scm:7661:2
homepage: http://jupyter.org/
license: Modified BSD
synopsis: Web-based notebook environment for interactive computing  
description: The Jupyter HTML notebook is a web-based notebook environment for
+ interactive computing.
relevance: 2

#+end_example

Aouch! Ça fait beaucoup. Dans le tas, il y a un paquet qui s'appelle
=jupyter=. C'est un bon point de départ. Installons-le et voyons ce qu'on peut faire avec. Attention, ce qui se passe quand vous lancez la commande suivante peut être très variable. Dans le meilleur cas, Guix télécharge une version précompilée de Jupyter. Au pire, Guix compile Jupyter à partir de son code source. Et si vous n'avez vraiement pas de chance, Guix va d'abord compiler juste la bonne version des compilateurs qu'il faut pour compiler Jupyter. Dans ce cas, vous devez attendre longtemps - mais à la fin, vous aurez ce que vous avez demandé.

Alors... allons-y !
#+begin_src sh :results output :exports both
guix install jupyter
#+end_src

#+RESULTS:
: 85 packages in profile

Ceux qui ont l'habitude d'une distribution classique étaient peut-être tentés de rajouter =sudo= devant la commande, parce que l'installation d'un logiciel, ça relève des privilèges d'un administrateur. Ce n'est pas le cas avec Guix. Sous Guix, chaque utilisateur gère ses logiciels de façon autonome. Le =jupyter= que je viens d'installer n'est accessible que pour moi. En fait, l'annonce des "85 paquets dans mon profil" veut dire qu'il y a 85 paquets installés à mon nom, un "profil" étant une collection de paquets installés (et on peut même en avoir plusieurs, mais ça dépasse le cadre de ce tutoriel).

Pour tester, lançons =jupyter=:
#+begin_src sh :results output :exports both
jupyter notebook
#+end_src
Un essai rapide confirme que tout est là pour créer un notebook en langage Python 3, donc tout va bien.

Il reste à faire la même chose avec =matplotlib=, =pandas=, =numpy= et =statsmodels=. Je trouve les noms des paquets avec =guix search=, et puis j'installe tout avec une seule commande:

#+begin_src sh :results output :exports both
guix install python-matplotlib python-numpy python-pandas python-statsmodels
#+end_src

#+RESULTS:
: 89 packages in profile

Je rajoute le paquet =python-nbconvert= qui permet de
convertir les notebooks en ligne de commande sans passer par
l'interface graphique, ça peut toujours servir:
#+begin_src sh :results output :exports both
guix install python-nbconvert
#+end_src

#+RESULTS:
: 90 packages in profile


** 2.4 Automatiser la construction de son environnement
Vous remarquerez que dans tout ce qui a précédé, j'ai noté dans mon
journal de ce que j'ai effectué mais vous n'avez aucune garantie que
je n'ai rien oublié. De plus, si vous voulez refaire cet environnement
vous même, il vous faudra suivre ces instructions scrupuleusement en
espérant que rien n'aille de travers.

Je vais donc maintenant introduire alors la notion du =manifest= qui
va réaliser la préparation de l'environnement automatiquement à l'aide
de la commande =guix environment=. Un =manifest= est une spécification
complète d'un environnement de calcul. Voyons à quoi ça ressemble.

#+begin_src shell :results output :exports none
mkdir -p moocrr_guix_jupyter
#+end_src

#+RESULTS:

Je crée un fichier [[file:moocrr_guix_jupyter/manifest.scm][moocrr_guix_jupyter/manifest.scm]] dont voici
le contenu.

#+begin_src sh :results output :exports both
cat moocrr_guix_jupyter/manifest.scm
#+end_src

#+RESULTS:
: (specifications->manifest
:  '("jupyter"
:    "python-matplotlib"
:    "python-numpy"
:    "python-pandas"
:    "python-statsmodels"
:    "python-nbconvert"))
: 

C'est essentiellement la liste des paquets que j'ai installé à la main auparavant, mais dans un format un peu particulier qu'il faut respecter scrupuleusement. En fait, ce format n'est rien d'autre que le langage de programmation [[https://fr.wikipedia.org/wiki/Scheme][Scheme]]. Guix est écrit en Scheme, et exprimer une liste de paquets en Scheme a le grand avantage qu'on peut utiliser des fonctionnalités avancées de Guix pour définir son environnement. Par exemple, je pourrais demander que tous mes paquets, en commençant par Python, soient compilés avec =gcc 7= plutôt qu'avec le compilateur par défaut de Guix, qui est actuellement =gcc 5=.

Je peux alors créer un environnement contenant ces paquets avec
#+begin_src sh :session *jupyter-env* :results output :exports both
guix environment -m ./moocrr_guix_jupyter/manifest.scm
#+end_src

#+RESULTS:

Ceci me lance une shell (=bash=, plus précisement) de laquelle Jupyter est accessible et configuré avec tous les modules Python demandés:
#+begin_src sh :session *jupyter-env* :results output :exports both
jupyter notebook
#+end_src

#+RESULTS:

Mais il est encore plus pratique de lancer directement Jupyter plutôt de passer par une shell::
#+begin_src sh :results output :exports both
guix environment -m ./moocrr_guix_jupyter/manifest.scm -- jupyter notebook
#+end_src

Pour faire encore mieux, rajoutons l'option =–pure=:
#+begin_src sh :results output :exports both
guix environment –pure -m ./moocrr_guix_jupyter/manifest.scm -- jupyter notebook
#+end_src

Un environnement "pur" ne contient que les paquets définis dans le manifeste, pendant qu'un environnement "standard" contient aussi tout ce qu'on a disponible par défaut par la ligne de commande, donc des utilitaires comme =ls=, =cp=, etc. Avec un environnement pur, on est sûr de n'utiliser rien qui n'est pas listé dans le manifeste, même pas par erreur.

** 2.5 Mieux connaître son environnement
J'ai bien choisi les paquets qui seront dans mon environnement, mais je n'ai pas choisi les versions. Contrairement à des gestionnaires de paquet traditionnels, guix peux gérer plusieurs versions d'un même paquet dans la distribution, et c'est à l'utilisateur de choisir laquelle installer. En pratique, Guix contient seulement la version la plus récente de chaque paquet, pour faciliter la maintenance. Une exception est faite pour quelques paquets particulièrement importants dont il y a ses versions différentes qui restent d'actualité. L'exemple typique est =gcc=, la colletion des compilateurs GNU. Dans mon environnement, il n'y a rien de cette catégorie. J'ai donc installé les seules versions définies dans l'état actuel de Guix.

Il est pourtant important de savoir quelles versions on utilise, et il est fortement conseillé d'inclure cette information dans toute publication scientifique. La commande pour accéder à ces informations est =guix package -I=. Pour l'exécuter correctement dans mon environnement, je rentre d'abord dans une shell comme montré ci-dessus:
#+begin_src sh :session *guix*:results output :exports both
guix environment -m ./moocrr_guix_jupyter/manifest.scm
#+end_src

#+RESULTS:

Puis je lance ma requête:
#+begin_src sh :session *guix*:results output :exports both
guix package -p $GUIX_ENVIRONMENT -I
#+end_src

#+RESULTS:
| python-nbconvert   | 5.0.0b1 | out | /gnu/store/rxhw14ypd8pw2cp977rd343g2z65smmx-python-nbconvert-5.0.0b1 |
| python-statsmodels |   0.9.0 | out | /gnu/store/rqzrss511rlzby1yr9a0ykprz19njqfq-python-statsmodels-0.9.0 |
| python-pandas      |  0.24.2 | out | /gnu/store/5idv0zrqhp0xwf7lfayn4qbj9jllzvml-python-pandas-0.24.2     |
| python-numpy       |  1.15.4 | out | /gnu/store/mk36fvdahkdr1516jak6sm92bc0cyv6k-python-numpy-1.15.4      |
| python-matplotlib  |   2.2.3 | out | /gnu/store/cg7ji7bk8jldywq993jkafkisc7979jn-python-matplotlib-2.2.3  |
| jupyter            |   1.0.0 | out | /gnu/store/7zjyybfcck06nd27gbmfkv780x1ddcg0-jupyter-1.0.0            |


La derniére colonne montre les répertoires où se trouvent les paquets. Ceci est utile par exemple pour regarder les modules Python qui en font partie.

Reste à comprendre à quoi sert l'argument =-p $GUIX_ENVIRONMENT=. Normalement, l'option =-p= sert à choisir un "profil", ce qui est un environnement permanent. Dnas un environnement temporaire, c'est =$GUIX_ENVIRONMENT= qui pointe vers l'endroit approprié. Dans l'argument =-p $GUIX_ENVIRONMENT=, guix afficherait autant les paquets dans mon profil permanent (le profil par défaut de mon compte) en plus des paquets qui font partie de mon environnement temporaire.

Ma petite liste ci-dessus contient seulement les paquets que j'ai installés explicitement. Chaque paquet dans cette liste a des dépendances, que Guix a rajouté automatiquement. Leurs versions comptent tout autant, car elle peuvent influencer les résultats de mes calculs. Pour ne citer qu'un exemple, =python-statsmodels= dépend de =python-patsy=, qui fournit le cadre pour définir des modèles statistiques. Une erreur dans =python-patsy= peut donc fausser mes résultats. Il faudrait alors idéalement connaître les versions de toutes les dépendances, directes et indirectes.

A ma connaissance, Guix ne propose pas de commande pour récupérer cette liste. Je vais la récupérer par un petit script en langage Guile, le langage de Guix. Je vous le montre sans explication:
#+begin_src guile :exports both :tangle moocrr_guix_jupyter/installed-dependencies.scm
(use-modules (guix profiles)
             (gnu packages)
             (srfi srfi-1))

(define manifest
  (specifications->manifest
   '("jupyter"
     "python-matplotlib"
     "python-numpy"
     "python-pandas"
     "python-statsmodels"
     "python-nbconvert")))

(define (manifest-entry-name-and-version entry)
  (string-append (manifest-entry-name entry)
                 "@"
                 (manifest-entry-version entry)
                 "\n"))

(define transitive-entries
  (manifest-transitive-entries manifest))

(define transitive-packages
  (delete-duplicates
   (stable-sort
    (map manifest-entry-name-and-version transitive-entries)
    string<)))

(format #t "~a packages:\n" (length transitive-packages))
(format #t "~a"
 (apply string-append transitive-packages))
#+end_src

Et le résultat est...
#+begin_src sh :results output :exports both
guile -s moocrr_guix_jupyter/installed-dependencies.scm
#+end_src

#+RESULTS:
: 118 packages:
: cairo@1.16.0
: expat@2.2.6
: fontconfig@2.13.1
: freetype@2.9.1
: glib@2.56.3
: gobject-introspection@1.56.1
: jupyter@1.0.0
: libffi@3.2.1
: libpng@1.6.34
: libpthread-stubs@0.4
: libx11@1.6.6
: libxau@1.0.8
: libxcb@1.13
: libxdmcp@1.1.2
: libxext@1.3.3
: libxrender@0.9.10
: pcre@8.42
: pixman@0.36.0
: python-asn1crypto@0.24.0
: python-attrs@19.1.0
: python-automat@0.7.0
: python-babel@2.7.0
: python-backcall@0.1.0
: python-bleach@1.4.3
: python-cairocffi@0.9.0
: python-certifi@2019.3.9
: python-cffi@1.11.5
: python-chardet@3.0.4
: python-constantly@15.1.0
: python-cryptography@2.7
: python-cycler@0.10.0
: python-dateutil@2.7.3
: python-decorator@4.3.0
: python-docutils@0.14
: python-entrypoints@0.3
: python-et-xmlfile@1.0.1
: python-html5lib@0.999
: python-hyperlink@19.0.0
: python-idna@2.8
: python-imagesize@1.1.0
: python-incremental@17.5.0
: python-ipaddress@1.0.22
: python-ipykernel@5.1.1
: python-ipython-genutils@0.1.0
: python-ipython@7.5.0
: python-ipywidgets@5.2.2
: python-iso8601@0.1.12
: python-jdcal@1.4
: python-jedi@0.13.3
: python-jinja2@2.10.1
: python-jsonschema@3.0.1
: python-jupyter-client@5.2.4
: python-jupyter-console@6.0.0
: python-jupyter-core@4.4.0
: python-kiwisolver@1.0.1
: python-markupsafe@1.1.1
: python-matplotlib@2.2.3
: python-mistune@0.8.4
: python-nbconvert@5.0.0b1
: python-nbformat@4.4.0
: python-notebook@5.7.4
: python-numpy@1.15.4
: python-numpydoc@0.8.0
: python-olefile@0.46
: python-openpyxl@2.6.2
: python-packaging@19.0
: python-pandas@0.24.2
: python-parso@0.3.1
: python-patsy@0.4.1
: python-pexpect@4.6.0
: python-pickleshare@0.7.5
: python-pillow@5.4.1
: python-prometheus-client@0.5.0
: python-prompt-toolkit@2.0.7
: python-ptyprocess@0.5.2
: python-pycairo@1.17.1
: python-pycparser@2.19
: python-pygments@2.4.2
: python-pygobject@3.28.3
: python-pyhamcrest@1.9.0
: python-pyopenssl@19.0.0
: python-pyparsing@2.3.1
: python-pyrsistent@0.14.11
: python-pysocks@1.7.0
: python-pytz@2019.1
: python-pyzmq@17.1.2
: python-qtconsole@4.4.3
: python-requests@2.22.0
: python-scipy@1.2.2
: python-send2trash@1.5.0
: python-simplegeneric@0.8.1
: python-six@1.11.0
: python-snowballstemmer@1.2.1
: python-sphinx-alabaster-theme@0.7.12
: python-sphinx@2.1.2
: python-sphinxcontrib-applehelp@1.0.1
: python-sphinxcontrib-devhelp@1.0.1
: python-sphinxcontrib-htmlhelp@1.0.2
: python-sphinxcontrib-jsmath@1.0.1
: python-sphinxcontrib-qthelp@1.0.2
: python-sphinxcontrib-serializinghtml@1.1.3
: python-statsmodels@0.9.0
: python-terminado@0.8.1
: python-tornado@5.1.1
: python-traitlets@4.3.2
: python-twisted@19.2.1
: python-urllib3@1.25.3
: python-wcwidth@0.1.7
: python-webencodings@0.5.1
: python-widgetsnbextension@3.4.2
: python-xcffib@0.6.0
: python-xlrd@1.0.0
: python-zope-interface@4.6.0
: python@3.7.0
: util-linux@2.32.1
: util-macros@1.19.2
: xorgproto@2018.4
: zlib@1.2.11

Il faut donc 118 paquets en total pour construire mon environnement! Et ce sont seulement les paquets qui doivent être en mémoire pour utiliser l'environnement. D'autres paquets ont été déployés pour construire ces 118 paquets. Par exemple, pour construire le paquet =python= il a fallu un compilateur C. Une erreur dans ce compilateur peut aussi fausser mes résultats, donc je devrais le rajouter à ma liste de paquets dont il faut noter les versions. Alors... encore un petit script pour faire la liste complète !

#+begin_src guile :exports both :tangle moocrr_guix_jupyter/all-dependencies.scm
(use-modules (guix profiles)
             (guix packages)
             (gnu packages)
             (srfi srfi-1))

(define manifest
  (specifications->manifest
   '("jupyter"
     "python-matplotlib"
     "python-numpy"
     "python-pandas"
     "python-statsmodels"
     "python-nbconvert")))

(define (manifest-entry->package entry)
  (car
   (find-packages-by-name
    (manifest-entry-name entry)
    (manifest-entry-version entry))))

(define (package->name-and-version entry)
  (string-append (package-name entry)
                 "@"
                 (package-version entry)
                 "\n"))

(define packages-in-manifest
  (map manifest-entry->package (manifest-entries manifest)))

(define closure-of-manifest
  (package-closure packages-in-manifest))

(define package-names-in-closure
  (stable-sort
   (delete-duplicates (map package->name-and-version closure-of-manifest))
   string<))

(format #t "~a packages:\n" (length package-names-in-closure))
(format #t "~a"
 (apply string-append package-names-in-closure))
#+end_src

Et le résultat est...
#+begin_src sh :results output :exports both
guile -s moocrr_guix_jupyter/all-dependencies.scm
#+end_src

#+RESULTS:
#+begin_example
586 packages:
acl@2.2.52
aspell@0.60.6.1
at-spi2-atk@2.32.0
at-spi2-core@2.32.1
atk@2.32.0
atkmm@2.24.2
attr@2.4.47
autoconf-wrapper@2.69
autoconf@2.69
automake@1.16.1
avahi@0.7
bash-minimal@4.4.23
bash-static@4.4.23
bash@4.4.23
bc@1.07.1
bdb@5.3.28
bdb@6.2.32
binutils-bootstrap@0
binutils-cross-boot0@2.31.1
binutils@2.31.1
bison@3.0.5
boost@1.69.0
bootstrap-binaries@0
bzip2@1.0.6
c-ares@1.14.0
cairo@1.16.0
cairomm@1.12.2
cmake@3.13.1
coreutils@8.30
cunit@2.1-3
cups-filters@1.25.1
cups-minimal@2.2.11
cups@2.2.11
curl@7.63.0
cyrus-sasl@2.1.27
dblatex@0.3.10
dbus@1.12.12
diffutils-boot0@3.6
diffutils@3.6
docbook-xml@4.2
docbook-xml@4.3
docbook-xml@4.5
docbook-xsl@1.79.1
doxygen@1.8.15
ed@1.14.2
elfutils@0.176
eudev@3.2.8
expat@2.2.6
fftw@3.3.8
file-boot0@5.33
file@5.33
findutils-boot0@4.6.0
findutils@4.6.0
flex@2.6.1
flex@2.6.4
font-dejavu@2.37
fontconfig@2.13.1
fontforge@20190317
freeglut@3.0.0
freetype@2.9.1
fribidi@1.0.5
gawk@4.2.1
gcc-bootstrap@0
gcc-cross-boot0-wrapped@5.5.0
gcc-cross-boot0@5.5.0
gcc@5.5.0
gcc@7.4.0
gd@2.2.5
gdbm@1.18
gdk-pixbuf+svg@2.38.1
gdk-pixbuf@2.38.1
gettext-boot0@0.19.8.1
gettext-minimal@0.19.8.1
gfortran@5.5.0
ghostscript-with-cups@9.26
ghostscript@9.26
giflib@5.1.4
glib@2.56.3
glibc-bootstrap@0
glibc-intermediate@2.28
glibc-utf8-locales@2.28
glibc@2.28
glibmm@2.56.0
glslang@7.11.3214
glu@9.0.1
gmp@6.1.2
gnutls@3.6.5
gobject-introspection@1.56.1
gperf@3.1
graphite2@1.3.12
graphviz@2.40.1
grep@3.1
groff-minimal@1.22.3
groff@1.22.3
gs-fonts@8.11
gsl@2.5
gss@1.0.3
gtk+@2.24.32
gtk+@3.24.10
gtk-doc@1.28
gtkmm@2.24.5
gts@0.7.6
guile-bootstrap@2.0
guile@2.0.14
guile@2.2.4
gzip@1.9
harfbuzz@2.2.0
help2man@1.47.6
icu4c@63.1
ijs@9.26
imagemagick@6.9.10-58
indent@2.2.10
inkscape@0.92.4
intltool@0.51.0
iproute2@5.2.0
iptables@1.6.2
isl@0.18
isl@0.19
itstool@2.0.2
jansson@2.12
jbig2dec@0.15
jemalloc@5.1.0
json-glib@1.4.4
jupyter@1.0.0
kmod@26
lapack@3.7.1
lcms@2.9
ld-wrapper-boot0@0
ld-wrapper-boot3@0
ld-wrapper@0
less@530
libarchive@3.3.2
libatomic-ops@7.6.6
libbsd@0.9.1
libcap@2.25
libcroco@0.6.12
libdaemon@0.14
libdmx@1.1.4
libdrm@2.4.99
libelf@0.8.13
libepoxy@1.5.3
libev@4.24
libffi@3.2.1
libfontenc@1.1.4
libgc@7.6.6
libgcrypt@1.8.3
libgpg-error@1.32
libgsf@1.14.46
libice@1.0.9
libidn2@2.0.5
libidn@1.35
libjpeg-turbo@2.0.1
libjpeg@9c
libltdl@2.4.6
libmnl@1.0.4
libnftnl@1.1.3
libpaper@1.1.24
libpciaccess@0.16
libpipeline@1.5.1
libpng@1.6.34
libpthread-stubs@0.4
librsvg@2.40.20
libsigc++@2.10.2
libsigsegv@2.12
libsm@1.2.2
libspectre@0.2.8
libspiro@0.5.20150702
libssh2@1.8.0
libstdc++-boot0@4.9.4
libstdc++@5.5.0
libtasn1@4.13
libtiff@4.0.10
libtool@2.4.6
libungif@4.1.4
libuninameslist@20190305
libunistring@0.9.10
libuv@1.24.0
libva-without-mesa@2.5.0
libvdpau@1.2
libwebp@1.0.3
libx11@1.6.6
libxau@1.0.8
libxaw@1.0.13
libxcb@1.13
libxcomposite@0.4.5
libxcursor@1.2.0
libxdamage@1.1.4
libxdmcp@1.1.2
libxext@1.3.3
libxfixes@5.0.3
libxfont@2.0.3
libxft@2.3.2
libxi@1.7.9
libxinerama@1.1.4
libxkbcommon@0.8.4
libxkbfile@1.1.0
libxml2@2.9.8
libxmu@1.1.2
libxpm@3.5.12
libxrandr@1.5.1
libxrender@0.9.10
libxres@1.2.0
libxshmfence@1.3
libxslt@1.1.32
libxt@1.1.5
libxtst@1.2.3
libxv@1.0.11
libxvmc@1.0.11
libxxf86vm@1.1.4
linux-libre-headers@4.14.67
linux-pam@1.2.1
llvm@8.0.0
lzip@1.20
lzo@2.10
m4@1.4.18
make-boot0@4.2.1
make@4.2.1
makedepend@1.0.6
man-db@2.8.5
mesa@19.1.4
meson-for-build@0.50.0
mit-krb5@1.16.2
mpc@1.1.0
mpfr@4.0.1
nasm@2.13.03
ncurses@6.1
net-base@5.3
net-tools@1.60-0.479bb4a
nettle@3.4.1
nghttp2@1.35.1
ninja@1.9.0
openblas@0.3.5
openjpeg@2.3.0
openldap@2.4.46
openssl@1.0.2p
pango@1.42.4
pangomm@2.40.1
patch@2.7.6
pciutils@3.6.2
pcre@8.42
perl-boot0@5.28.0
perl-xml-parser@2.44
perl@5.28.0
pixman@0.36.0
pkg-config@0.29.2
poppler@0.72.0
popt@1.16
potrace@1.15
psutils@17
python-asn1crypto@0.24.0
python-atomicwrites@1.1.5
python-attrs-bootstrap@17.4.0
python-attrs@19.1.0
python-automat@0.7.0
python-babel@2.7.0
python-backcall@0.1.0
python-beautifulsoup4@4.7.1
python-bleach@1.4.3
python-cairocffi@0.9.0
python-certifi@2019.3.9
python-cffi@1.11.5
python-chardet@3.0.4
python-constantly@15.1.0
python-coverage@4.4.1
python-cryptography-vectors@2.7
python-cryptography@2.7
python-cycler@0.10.0
python-cython@0.29.13
python-dateutil@2.7.3
python-decorator@4.3.0
python-docopt@0.6.2
python-docutils@0.14
python-entrypoints@0.3
python-et-xmlfile@1.0.1
python-flake8@3.5.0
python-flaky@3.5.3
python-freezegun@0.3.12
python-graphviz@0.8.4
python-html5lib@0.999
python-html5lib@1.0.1
python-hyperlink@19.0.0
python-hypothesis@3.70.3
python-idna@2.8
python-imagesize@1.1.0
python-incremental@17.5.0
python-ipaddress@1.0.22
python-ipykernel@5.1.1
python-ipython-genutils@0.1.0
python-ipython@7.5.0
python-ipywidgets@5.2.2
python-iso8601@0.1.12
python-jdcal@1.4
python-jedi@0.13.3
python-jinja2@2.10.1
python-jsonschema@3.0.1
python-jupyter-client@5.2.4
python-jupyter-console@6.0.0
python-jupyter-core@4.4.0
python-kiwisolver@1.0.1
python-linecache2@1.0.0
python-lxml@4.2.5
python-m2r@0.2.1
python-mako@1.1.0
python-markupsafe@1.1.1
python-matplotlib@2.2.3
python-mccabe@0.6.1
python-minimal-wrapper@3.7.0
python-minimal@3.7.0
python-mistune@0.8.4
python-mock@2.0.0
python-more-itertools@4.3.0
python-nbconvert@5.0.0b1
python-nbformat@4.4.0
python-nose@1.3.7
python-notebook@5.7.4
python-numpy@1.15.4
python-numpydoc@0.8.0
python-olefile@0.46
python-openpyxl@2.6.2
python-packaging@19.0
python-pandas@0.24.2
python-parso@0.3.1
python-patsy@0.4.1
python-pbr-minimal@3.0.1
python-pexpect@4.6.0
python-pickleshare@0.7.5
python-pillow@5.4.1
python-pluggy@0.7.1
python-pretend@1.0.9
python-prometheus-client@0.5.0
python-prompt-toolkit@2.0.7
python-ptyprocess@0.5.2
python-py@1.5.4
python-pycairo@1.17.1
python-pycodestyle@2.4.0
python-pycparser@2.19
python-pyflakes@2.0.0
python-pygments@2.4.2
python-pygobject@3.28.3
python-pyhamcrest@1.9.0
python-pympler@0.5
python-pyopenssl@19.0.0
python-pyparsing@2.3.1
python-pyrsistent@0.14.11
python-pysocks@1.7.0
python-pytest-bootstrap@3.8.0
python-pytest-cov@2.6.1
python-pytest-mock@1.10.1
python-pytest-runner@4.2
python-pytest@3.8.0
python-pytz@2019.1
python-pyzmq@17.1.2
python-qtconsole@4.4.3
python-requests@2.22.0
python-scipy@1.2.2
python-send2trash@1.5.0
python-setuptools-scm@3.1.0
python-simplegeneric@0.8.1
python-six-bootstrap@1.11.0
python-six@1.11.0
python-snowballstemmer@1.2.1
python-soupsieve@1.9.2
python-sphinx-alabaster-theme@0.7.12
python-sphinx@2.1.2
python-sphinxcontrib-applehelp@1.0.1
python-sphinxcontrib-devhelp@1.0.1
python-sphinxcontrib-htmlhelp@1.0.2
python-sphinxcontrib-jsmath@1.0.1
python-sphinxcontrib-qthelp@1.0.2
python-sphinxcontrib-serializinghtml@1.1.3
python-statsmodels@0.9.0
python-terminado@0.8.1
python-testpath@0.2
python-tornado@5.1.1
python-traceback2@1.4.0
python-traitlets@4.3.2
python-twisted@19.2.1
python-unittest2@1.1.0
python-urllib3@1.25.3
python-wcwidth@0.1.7
python-webencodings@0.5.1
python-widgetsnbextension@3.4.2
python-wrapper@3.7.0
python-xcffib@0.6.0
python-xlrd@1.0.0
python-zope-event@4.1.0
python-zope-interface@4.6.0
python2-atomicwrites@1.1.5
python2-attrs-bootstrap@17.4.0
python2-configparser@3.5.0
python2-coverage@4.4.1
python2-enum34@1.1.6
python2-flake8@3.5.0
python2-fonttools@3.28.0
python2-funcsigs-bootstrap@1.0.2
python2-funcsigs@1.0.2
python2-functools32@3.2.3-2
python2-hypothesis@3.70.3
python2-libxml2@2.9.8
python2-linecache2@1.0.0
python2-mccabe@0.6.1
python2-mock@2.0.0
python2-more-itertools@4.3.0
python2-nose@1.3.7
python2-pathlib2-bootstrap@2.3.2
python2-pathlib2@2.3.2
python2-pbr-minimal@3.0.1
python2-pluggy@0.7.1
python2-py@1.5.4
python2-pycodestyle@2.4.0
python2-pyflakes@2.0.0
python2-pytest-bootstrap@3.8.0
python2-pytest-runner@4.2
python2-pytest@3.8.0
python2-scandir@1.9.0
python2-setuptools-scm@3.1.0
python2-six-bootstrap@1.11.0
python2-six@1.11.0
python2-traceback2@1.4.0
python2-unittest2@1.1.0
python2@2.7.15
python@3.7.0
qpdf@8.4.0
readline@7.0.5
rhash@1.3.6
ruby@2.5.3
sed@4.5
shared-mime-info@1.9
shishi@1.0.2
source-highlight@3.1.8
sqlite@3.24.0
swig@3.0.12
tar@1.30
tcl@8.6.8
tcsh@6.20.00
teckit@2.5.9
texinfo@6.5
texlive-amsfonts@49435
texlive-bin@20180414
texlive-cm@49435
texlive-dehyph-exptl@49435
texlive-docstrip@49435
texlive-dvips@49435
texlive-etex@49435
texlive-fontname@49435
texlive-fonts-ec@49435
texlive-fonts-knuth-lib@49435
texlive-fonts-latex@49435
texlive-fonts-rsfs@49435
texlive-fonts-stmaryrd@49435
texlive-generic-babel-english@49435
texlive-generic-ifxetex@49435
texlive-graphics-cfg@49435
texlive-graphics-def@49435
texlive-hyph-utf8@49435
texlive-hyphen-afrikaans@49435
texlive-hyphen-ancientgreek@49435
texlive-hyphen-armenian@49435
texlive-hyphen-base@49435
texlive-hyphen-basque@49435
texlive-hyphen-belarusian@49435
texlive-hyphen-bulgarian@49435
texlive-hyphen-catalan@49435
texlive-hyphen-chinese@49435
texlive-hyphen-churchslavonic@49435
texlive-hyphen-coptic@49435
texlive-hyphen-croatian@49435
texlive-hyphen-czech@49435
texlive-hyphen-danish@49435
texlive-hyphen-dutch@49435
texlive-hyphen-english@49435
texlive-hyphen-esperanto@49435
texlive-hyphen-estonian@49435
texlive-hyphen-ethiopic@49435
texlive-hyphen-finnish@49435
texlive-hyphen-french@49435
texlive-hyphen-friulan@49435
texlive-hyphen-galician@49435
texlive-hyphen-georgian@49435
texlive-hyphen-german@49435
texlive-hyphen-greek@49435
texlive-hyphen-hungarian@49435
texlive-hyphen-icelandic@49435
texlive-hyphen-indic@49435
texlive-hyphen-indonesian@49435
texlive-hyphen-interlingua@49435
texlive-hyphen-irish@49435
texlive-hyphen-italian@49435
texlive-hyphen-kurmanji@49435
texlive-hyphen-latin@49435
texlive-hyphen-latvian@49435
texlive-hyphen-lithuanian@49435
texlive-hyphen-mongolian@49435
texlive-hyphen-norwegian@49435
texlive-hyphen-occitan@49435
texlive-hyphen-piedmontese@49435
texlive-hyphen-polish@49435
texlive-hyphen-portuguese@49435
texlive-hyphen-romanian@49435
texlive-hyphen-romansh@49435
texlive-hyphen-russian@49435
texlive-hyphen-sanskrit@49435
texlive-hyphen-serbian@49435
texlive-hyphen-slovak@49435
texlive-hyphen-slovenian@49435
texlive-hyphen-spanish@49435
texlive-hyphen-swedish@49435
texlive-hyphen-thai@49435
texlive-hyphen-turkish@49435
texlive-hyphen-turkmen@49435
texlive-hyphen-ukrainian@49435
texlive-hyphen-uppersorbian@49435
texlive-hyphen-welsh@49435
texlive-kpathsea@49435
texlive-latex-amscls@49435
texlive-latex-amsmath@49435
texlive-latex-anysize@49435
texlive-latex-appendix@49435
texlive-latex-babel@49435
texlive-latex-base@49435
texlive-latex-changebar@49435
texlive-latex-colortbl@49435
texlive-latex-cyrillic@49435
texlive-latex-eepic@49435
texlive-latex-eso-pic@49435
texlive-latex-fancybox@49435
texlive-latex-fancyhdr@49435
texlive-latex-fancyvrb@49435
texlive-latex-filecontents@49435
texlive-latex-float@49435
texlive-latex-footmisc@49435
texlive-latex-graphics@49435
texlive-latex-hyperref@6.84a2
texlive-latex-jknapltx@49435
texlive-latex-listings@49435
texlive-latex-multirow@49435
texlive-latex-oberdiek@49435
texlive-latex-overpic@49435
texlive-latex-pdfpages@49435
texlive-latex-psnfss@49435
texlive-latex-subfigure@49435
texlive-latex-titlesec@49435
texlive-latex-tools@49435
texlive-latex-url@49435
texlive-latex-wasysym@49435
texlive-latexconfig@49435
texlive-metafont-base@49435
texlive-mkpattern@49435
texlive-ruhyphen@49435
texlive-tetex@49435
texlive-tex-fontinst-base@49435
texlive-tex-ini-files@49435
texlive-tex-plain@49435
texlive-ukrhyph@49435
texlive-unicode-data@49435
texlive-union@49435
tk@8.6.8
tzdata@2018g
unzip@6.0
util-linux@2.32.1
util-macros@1.19.2
vala@0.40.9
vulkan-headers@1.1.114
vulkan-loader@1.1.114
wayland-protocols@1.17
wayland@1.17.0
which@2.21
xcb-proto@1.13
xcb-util-image@0.4.0
xcb-util-keysyms@0.4.0
xcb-util-renderutil@0.3.9
xcb-util-wm@0.4.1
xcb-util@0.4.0
xinput@1.6.2
xkbcomp-intermediate@1.4.2
xkbcomp@1.4.2
xkeyboard-config@2.27
xmlto@0.0.28
xorg-server@1.20.5
xorgproto@2018.4
xtrans@1.3.5
xz@5.2.4
zeromq@4.0.7
zip@3.0
zlib@1.2.11
zziplib@0.13.69
#+end_example

** 2.6 Mettre son environnement à disposition
L'environnement étant défini par le manifeste, il suffit de mettre ce petit fichier à disposition de ses collègues pour leur permettre de travailler dans un environnement identique. Sauf que... les versions qu'ils auront ne sont peut-être pas les mêmes ! Peu après la publication d'une nouvelle version de Jupyter, Guix adoptera cette nouvelle version, et l'environnement créé par mon manifest ne sera plus le même. Ceci est d'ailleurs voulu: souvent on veut tout juste avoir la dernière version de tout. Mais pour la reproductibilité, on veut tout à l'identique.

L'information qu'il faut rajouter, c'est la version de Guix à laquelle le manifeste fait référence. On l'obtient avec
#+begin_src sh :results output :exports both
guix describe
#+end_src

#+RESULTS:
: Generation 24	août 16 2019 10:40:19	(current)
:   guix 44881ca
:     repository URL: https://git.savannah.gnu.org/git/guix.git
:     branch: master
:     commit: 44881cad93801de9462d469500d582af79b99959

Ceci me dit d'abord que je suis dans la génération 24 de Guix, ce qui veut dire que j'ai mis à jour Guix 23 fois depuis la première installation. Guix garde une trace de mes mise à jour et me permet de revenir en arrière si je le souhaite. Mais ce qui nous intéresse maintenant, c'est la suite. La version de Guix que j'utilise, c'est la =44881ca=. En tant qu'habitués de =git=, vous devinez peut-être ce que c'est, et vous avez raison: c'est bien un commit. Guix est développé sous git, et on peut donc identifier une version précise par son identifiant de commit. Les trois dernières lignes donnent un peu plus de précision, dont notamment l'URL où on peut récupérer le dépôt.

Pour notre exercice de reproductibilité, il vaut mieux utiliser une petite variante qui affiche les mêmes informations autrement:
#+begin_src sh :results output :exports both
guix describe -f channels
#+end_src

#+RESULTS:
: (list (channel
:         (name 'guix)
:         (url "https://git.savannah.gnu.org/git/guix.git")
:         (commit
:           "44881cad93801de9462d469500d582af79b99959")))

Et oui, c'est encore Scheme comme notation. Un "channel" est une collection de définitions de paquets. Ici nous avons seulement la distribution de base, le canal "guix", mais on peut rajouter des paquets qui viennent d'autres sources, et avec l'option =-f channels= on obtient toujours une description complète et lisible par Guix.

On va alors mettre cette description dans un fichier:
#+begin_src sh :results output :exports both
guix describe -f channels > moocrr_guix_jupyter/guix-channels.scm
cat moocrr_guix_jupyter/guix-channels.scm
#+end_src

#+RESULTS:
: (list (channel
:         (name 'guix)
:         (url "https://git.savannah.gnu.org/git/guix.git")
:         (commit
:           "44881cad93801de9462d469500d582af79b99959")))

Les deux fichiers dans mon répértoire =moocrr_guix_jupyter= permettent donc de reconstruire mon environnement à l'identique, à tout moment, tant qu'il y aura des ordinateurs avec Guix.

** 2.7 Reconstruire un environnement
Maintenant je me place du côté du consommateur. J'ai reçu un notebook Jupyter accompagné d'un répértoire =moocrr_guix_jupyter= contenant un fichier =guix-channels.scm= et un fichier =manifest.scm=. Au travail!

D'abord je demande à Guix de se restorer les définitions des paquets:
#+begin_src sh :results output :exports both
guix pull -C moocrr_guix_jupyter/guix-channels.scm
#+end_src

#+RESULTS:
: 1 package in profile
: 

Normalement, =guix pull= sert à mettre à jour Guix, et la ressemblance avec =git pull= n'est pas un accident. Avec l'option =-C=, je télécharge aussi l'historique récente de Guix, mais je me place au commit demandé plutôt au dernier, ce qui ressemble plutôt à =git checkout=. Je crée ainsi une nouvelle génération de Guix, mais comme je peux facilement revenir en arrière, pas de souci. Maintenant je peux exécuter Jupyter dans son environnement d'origine, exactement comme on a vu avant:
#+begin_src sh :results output :exports both
guix environment –pure -m ./moocrr_guix_jupyter/manifest.scm -- jupyter notebook
#+end_src

Attention, la première fois que je lance =guix environment= après =guix pull=, il se peut que Guix se met à compiler Jupyter. Mieux vaut prévoir du temps!

Une fois que j'ai terminé mon exploration, je peux revenir à la version de Guix que j'avais avant:
#+begin_src sh :results output :exports both
guix pull --roll-back
#+end_src

#+RESULTS:
: switched from generation 25 to 24

** 2.8 Mettre son environnement à disposition sous forme d'une image Docker
Il reste un problème que vous pouvez rencontrer: vos collègues n'utilisent pas Guix, peut-être même pas Linux. Les deux petits fichiers dans =moocrr_guix_jupyter= ne vont pas leur être utiles. En attendant qu'ils se mettent à installer Guix, vous pouvez leur fournir votre environnement sous forme d'une image Docker. Ce n'est pas compliqué du tout:
#+begin_src sh :results output :exports both
guix pack -f docker -m ./moocrr_guix_jupyter/manifest.scm
#+end_src

#+RESULTS:
: /gnu/store/kg8sy0x5nyc0j1dak50dmspqmlqqbcnb-docker-pack.tar.gz

La commande nous affiche le nom du fichier qui contient l'image Docker. Il peut paraître un peu bizarre, tout comme le répertoire =/gnu/store= dans lequel le fichier se trouve. Quand on comprend le fonctionnement de Guix un peu mieux, tout ça s'explique facilement mais pour ce tutoriel, je vais me contenter à le copier ailleurs avec un nom plus parlant:

#+begin_src sh :results output :exports both
cp /gnu/store/kg8sy0x5nyc0j1dak50dmspqmlqqbcnb-docker-pack.tar.gz moocrr-jupyter-docker.tar.gz
#+end_src

#+RESULTS:

Sur une machine avec Docker installé, l'image est chargée avec
#+begin_src sh :results output :exports both
docker load -i moocrr-jupyter-docker.tar.gz
#+end_src

#+RESULTS:
: Loaded image: profile:2vv9d6l2m3aj1h216fxisq3agmavy3i5

puis Jupyter est executé avec
#+begin_src sh :results output :exports both
docker run -it -p 8888:8888 profile:2vv9d6l2m3aj1h216fxisq3agmavy3i5 jupyter notebook --ip=127.0.0.1 --allow-root
#+end_src

** 2.9 Modifier son environnement
Je vous ai montré comment vous pouvez installer des logiciels avec Guix avec toutes leurs dépendances, et comment archiver et reconstruire un tel environnement. Ceci couvre une grande partie des opérations nécessaires pour pratiquer la recherche reproductible. Mais comment faire si vous voulez (ou devez) modifier un environnement donné, que ce soit le vôtre ou un environnement récupéré sous forme d'un manifeste ?

Commençons avec la situation la plus simple: vous voulez mettre à jour tous les logiciels à la dernière version. Pour cela il suffit un simple
#+begin_src sh :results output :exports both
guix pull
#+end_src
et la prochaine fois que vous faites
#+begin_src sh :session *jupyter-env* :results output :exports both
guix environment -m ./moocrr_guix_jupyter/manifest.scm
#+end_src
vous utilisez les versions indiquées dans la toute dernière version de Guix. Mais que faire s'il vous faut une combinaison de versions qui ne se trouve nulle part dans l'historique de Guix? Par exemple, pour chercher la cause d'un bug introduit récement par un changement dans votre environnement, vous voulez combiner la dernière version de =python-statsmodels= avec une version plus ancienne de =python-pandas=.

Avant de passer à l'acte, il faut bien comprendre que ce genre de modification est risqué. Rien ne promet que la combinaison de versions que vous envisagez est installable, et encore moins qu'elle fonctionne. Vous pouvez rencontrer un grand nombre de problèmes sur votre chemin, et c'est à vous de trouver une solution. Dans la vaste majorité des "petites" modifications, ou on remplace une version rélativement stable d'un logiciel avec une version proche dans l'historique, la procédure que je vais montrer fonctionne sans difficulté, mais on n'est jamais à l'abri de mauvaises surprises!

Guix propose plusieurs façons d'introduire des modifications. Je vais vous montrer la façon la plus générale, et aussi celle qui vous apprend le plus sur le fonctionnement interne de Guix. En appliquant cette méthode, vous pouvez aussi contribuer vos modifications aux versions grand public de Guix! Mais sachez qu'il y a quelques raccourcis, notamment pour les développeurs qui travaillent sur leur propre code en l'intégrant régulièrement dans Guix.

Pour démarrer, je vais cloner le dépôt avec le code source de Guix:
#+begin_src sh :session *guix-edit* :results output :exports both
cd /tmp
git clone https://git.savannah.gnu.org/git/guix.git
#+end_src

#+RESULTS:
#+begin_example
Cloning into 'guix'...
remote: Counting objects: 294785, done.        
remote: Compressing objects:   0% (1/66394)           echo 'org_babel_sh_eoe'
remote: Compressing objects: 100% (66394/66394), done.        
remote: Total 294785 (delta 229497), reused 292377 (delta 227607)        
Receiving objects: 100% (294785/294785), 103.47 MiB | 4.40 MiB/s, done.
Resolving deltas: 100% (229497/229497), done.
#+end_example

Pour travailler avec ce code source, il me faut un environnement qui contient toutes les dépendances de Guix, et aussi tous les outils nécessaires pour travailler avec Guix (compilateurs etc.). On les trouve... dans Guix! Tout ce qu'il faut c'est
#+begin_src sh :session *guix-edit* :results output :exports both
guix environment guix
#+end_src

#+RESULTS:

Nous avons déjà vu =guix environment=, mais ici je l'utilise d'une façon différente, plus adaptée au développement logiciel qu'à la recherche reproductible. L'environnement n'est pas défini par un manifeste qui donne la liste des paquets à installer. A sa place, il y a juste le nom =guix=. Ceci veut dire l'environnement pour le développement de Guix, donc l'environnement défini par les dépendances et les outils de construction du paquet =guix=.

Cette commande donne un avant-goût de la difficulté principale de ce qui va suivre: maintenir une vue claire de que le nom =guix= veut dire à chaque instant. Dans la dernière ligne de commande, il y a =guix= à gauche qui est un logiciel exécutable sur votre ordinateur, mais à droite, =guix= est le nom d'un paquet. Le contenu du paquet est bien sûr le logiciel, mais en générale, le paquet peut définir une autre version que celle que vous avez installée. Le dépôt que nous venons de cloner, c'est aussi =guix=, ou plus précisement son code source. Ce qui est important de comprendre, c'est que Guix n'est pas un gestionnaire de paquets définis quelque part ailleurs. Guix est le gestionnaire *et* la définition des paquets. Les définitions des paquets, que nous verrons bientôt, se trouvent dans des modules du logiciel Guix.

Pour continuer, je vais suivre [[https://guix.gnu.org/manual/en/guix.html#Building-from-Git][les instructions pour compiler Guix de son code source]]. D'abord quelques préparatifs:

#+begin_src sh :session *guix-edit* :results output :exports both
cd guix
./bootstrap
./configure --localstatedir=/var
#+end_src

#+RESULTS:
#+begin_example

++ xargs -n 1 '-I{}' basename '{}' .po
++ sed -e 's,guix-manual\.,,'
++ find po/doc -type f -name 'guix-manual*.po'
+ langs='zh_CN
es
ru
de
fr'
{langs}
+ '[' '!' -e doc/guix.zh_CN.texi ']'
+ echo '@setfilename guix.zh_CN.info'
+ echo '@include version-zh_CN.texi'
+ touch po/doc/guix-manual.zh_CN.po
{langs}
+ '[' '!' -e doc/guix.es.texi ']'
+ echo '@setfilename guix.es.info'
+ echo '@include version-es.texi'
+ touch po/doc/guix-manual.es.po
{langs}
+ '[' '!' -e doc/guix.ru.texi ']'
+ echo '@setfilename guix.ru.info'
+ echo '@include version-ru.texi'
+ touch po/doc/guix-manual.ru.po
{langs}
+ '[' '!' -e doc/guix.de.texi ']'
+ echo '@setfilename guix.de.info'
+ echo '@include version-de.texi'
+ touch po/doc/guix-manual.de.po
{langs}
+ '[' '!' -e doc/guix.fr.texi ']'
+ echo '@setfilename guix.fr.info'
+ echo '@include version-fr.texi'
+ touch po/doc/guix-manual.fr.po
++ xargs -n 1 '-I{}' basename '{}' .po
++ sed -e 's,guix-manual\.,,'
++ find po/doc -type f -name 'guix-cookbook*.po'
+ langs=
+ exec autoreconf -vfi
autoreconf: Entering directory `.'
autoreconf: running: autopoint --force
Copying file ABOUT-NLS
Copying file build-aux/config.rpath
Copying file m4/codeset.m4
Copying file m4/fcntl-o.m4
Copying file m4/gettext.m4
Copying file m4/glibc2.m4
Copying file m4/glibc21.m4
Copying file m4/iconv.m4
Copying file m4/intdiv0.m4
Copying file m4/intl.m4
Copying file m4/intldir.m4
Copying file m4/intlmacosx.m4
Copying file m4/intmax.m4
Copying file m4/inttypes-pri.m4
Copying file m4/inttypes_h.m4
Copying file m4/lcmessage.m4
Copying file m4/lib-ld.m4
Copying file m4/lib-link.m4
Copying file m4/lib-prefix.m4
Copying file m4/lock.m4
Copying file m4/longlong.m4
Copying file m4/nls.m4
Copying file m4/po.m4
Copying file m4/printf-posix.m4
Copying file m4/progtest.m4
Copying file m4/size_max.m4
Copying file m4/stdint_h.m4
Copying file m4/threadlib.m4
Copying file m4/uintmax_t.m4
Copying file m4/visibility.m4
Copying file m4/wchar_t.m4
Copying file m4/wint_t.m4
Copying file m4/xsize.m4
Copying file po/guix/Makefile.in.in
Copying file po/packages/Makefile.in.in
Copying file po/guix/Makevars.template
Copying file po/packages/Makevars.template
Copying file po/guix/Rules-quot
Copying file po/packages/Rules-quot
Copying file po/guix/boldquot.sed
Copying file po/packages/boldquot.sed
Copying file po/guix/en@boldquot.header
Copying file po/packages/en@boldquot.header
Copying file po/guix/en@quot.header
Copying file po/packages/en@quot.header
Copying file po/guix/insert-header.sin
Copying file po/packages/insert-header.sin
Copying file po/guix/quot.sed
Copying file po/packages/quot.sed
Copying file po/guix/remove-potcdate.sin
Copying file po/packages/remove-potcdate.sin
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /gnu/store/rfaqi3a9ls7adr4y7bgwvln3iaf69qwj-autoconf-2.69/bin/autoconf --force
autoreconf: running: /gnu/store/rfaqi3a9ls7adr4y7bgwvln3iaf69qwj-autoconf-2.69/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:23: warning: The 'AM_PROG_MKDIR_P' macro is deprecated, and its use is discouraged.
configure.ac:23: You should use the Autoconf-provided 'AC_PROG_MKDIR_P' macro instead,
(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.
config-daemon.ac:8: installing 'build-aux/ar-lib'
configure.ac:21: installing 'build-aux/compile'
configure.ac:23: installing 'build-aux/config.guess'
configure.ac:23: installing 'build-aux/config.sub'
configure.ac:11: installing 'build-aux/install-sh'
configure.ac:11: installing 'build-aux/missing'
Makefile.am: installing './INSTALL'
Makefile.am:628: warning: AM_GNU_GETTEXT used but 'po' not in SUBDIRS
Makefile.am: installing 'build-aux/depcomp'
doc/local.mk:24: installing 'build-aux/mdate-sh'
Makefile.am:631:   'doc/local.mk' included from here
doc/local.mk:24: installing 'build-aux/texinfo.tex'
Makefile.am:631:   'doc/local.mk' included from here
parallel-tests: installing 'build-aux/test-driver'
autoreconf: Leaving directory `.'
checking for a BSD-compatible install... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/mkdir -p
checking for gawk... gawk
(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking whether make supports the include directive... yes (GNU style)
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/grep
checking for egrep... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking whether NLS is requested... yes
checking for msgfmt... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt
checking for gmsgfmt... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt
checking for xgettext... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/xgettext
checking for msgmerge... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for ld used by GCC... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/ld
checking if the linker (/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/ld) is GNU ld... yes
checking for shared library run path origin... done
checking for CFPreferencesCopyAppValue... no
checking for CFLocaleCopyCurrent... no
checking for GNU gettext in libc... yes
checking whether to use NLS... yes
checking where the gettext function comes from... libc
checking for sed... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/sed
checking for the Guix system type... x86_64-linux
checking for the store directory... /gnu/store
checking the length of the installed socket file name... 30
checking for unit test root directory... /tmp/guix/test-tmp
checking the length of the socket file name used in tests... 50
checking the length of a typical hash bang line... 73
checking the length of a hash bang line used in tests... 87
checking for pkg-config... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
configure: checking for guile 2.2
configure: found guile 2.2
checking for guile-2.2... no
checking for guile2.2... no
checking for guile-2... no
checking for guile2... no
checking for guile... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/guile
= 2.2... 2.2.4
checking for guild... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/guild
checking for guile-config... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/guile-config
checking if (gnutls) is available... yes
checking if (git) is available... yes
checking whether Guile-JSON is available and recent enough... yes
checking whether Guile-Sqlite3 is available and recent enough... yes
checking if (gcrypt hash) is available... yes
checking if (newt) is available... no
checking whether /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/guile provides feature 'regex'... yes
checking whether /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/guile provides feature 'posix'... yes
checking whether /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/guile provides feature 'socket'... yes
checking whether /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/guile provides feature 'net-db'... yes
checking whether /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/guile provides feature 'threads'... yes
checking whether 'equal?' works for syntax objects... yes
checking for a sed that does not truncate output... (cached) /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/sed
checking for gzip... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/gzip
checking for bzip2... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/bzip2
checking for xz... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/xz
checking for nix-hash... no
checking for Nixpkgs source tree... not found
checking for libgcrypt-config... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/libgcrypt-config
checking libgcrypt's library directory... /gnu/store/87fdwmippyfs01870x5hq7v2lcyfczpi-libgcrypt-1.8.3/lib
checking zlib's library directory... /gnu/store/nq4lsyipmfb0q7g26ra45rwwqrh3x8zw-zlib-1.2.11/lib
checking for zlib's shared library name... /gnu/store/nq4lsyipmfb0q7g26ra45rwwqrh3x8zw-zlib-1.2.11/lib/libz
checking lzlib's file name... /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/lib/liblz.so.1
checking whether Guile-SSH is available and recent enough... yes
checking whether to build daemon... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking for ar... ar
checking the archiver (ar) interface... ar
checking whether g++ supports C++11... yes
checking for ranlib... ranlib
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for gzdopen in -lz... yes
checking how to run the C++ preprocessor... g++ -E
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
checking for BZ2_bzWriteOpen in -lbz2... yes
checking bzlib.h usability... yes
checking bzlib.h presence... yes
checking for bzlib.h... yes
= 3.6.19... yes
checking for gcry_md_open in -lgcrypt... yes
checking gcrypt.h usability... yes
checking gcrypt.h presence... yes
checking for gcrypt.h... yes
checking for chroot... yes
checking for unshare... yes
checking sched.h usability... yes
checking sched.h presence... yes
checking for sched.h... yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/mount.h usability... yes
checking sys/mount.h presence... yes
checking for sys/mount.h... yes
checking sys/syscall.h usability... yes
checking sys/syscall.h presence... yes
checking for sys/syscall.h... yes
checking for lutimes... yes
checking for lchown... yes
checking for posix_fallocate... yes
checking for sched_setaffinity... yes
checking for statvfs... yes
checking for nanosleep... yes
checking for strsignal... yes
checking whether it is possible to create a link to a symlink... yes
checking locale usability... yes
checking locale presence... yes
checking for locale... yes
checking sys/personality.h usability... yes
checking sys/personality.h presence... yes
checking for sys/personality.h... yes
checking linux/fs.h usability... yes
checking linux/fs.h presence... yes
checking for linux/fs.h... yes
checking for default substitute URLs... https://ci.guix.gnu.org
checking whether Guile-SSH is available and recent enough... (cached) yes
checking for unit test root directory... (cached) /tmp/guix/test-tmp
checking for guile... (cached) /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/guile
checking the current installation's localstatedir... /var
checking for emacs... /home/hinsen/.guix-profile/bin/emacs
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating po/guix/Makefile.in
config.status: creating po/packages/Makefile.in
config.status: creating etc/guix-daemon.cil
config.status: creating guix/config.scm
config.status: creating test-env
config.status: creating pre-inst-env
config.status: creating etc/indent-code.el
config.status: creating nix/config.h
config.status: executing depfiles commands
config.status: executing po-directories commands
config.status: creating po/guix/POTFILES
config.status: creating po/guix/Makefile
config.status: creating po/packages/POTFILES
config.status: creating po/packages/Makefile
#+end_example

Et la compilation avec l'exécution des tests pour vérifier que tout s'est bien passé. Attention, ça va être long, mais on ne le fait qu'une fois !
#+begin_src sh :session *guix-edit* :results output :exports both
make check
#+end_src

#+RESULTS:
#+begin_example
GEN      doc/os-config-bare-bones.texi
  GEN      doc/os-config-desktop.texi
  GEN      doc/os-config-lightweight-desktop.texi
  PO4A doc/contributing.de.texi
Your input po file po/doc/guix-manual.de.po seems outdated (The amount of entries differ between files: 7994 is not 228
). Please consider running po4a-updatepo to refresh it.
  POXREF doc/contributing.de.texi
mv "doc/contributing.de.texi.tmp" "doc/contributing.de.texi"
  PO4A doc/guix.de.texi
Your input po file po/doc/guix-manual.de.po seems outdated (The amount of entries differ between files: 7994 is not 8149
). Please consider running po4a-updatepo to refresh it.
(basename "doc/guix.de.texi" | sed 's|texi$|info|')|" "doc/guix.de.texi.tmp"
  POXREF doc/guix.de.texi
mv "doc/guix.de.texi.tmp" "doc/guix.de.texi"
  PO4A doc/contributing.es.texi
Your input po file po/doc/guix-manual.es.po seems outdated (The amount of entries differ between files: 7994 is not 228
). Please consider running po4a-updatepo to refresh it.
  POXREF doc/contributing.es.texi
mv "doc/contributing.es.texi.tmp" "doc/contributing.es.texi"
  PO4A doc/guix.es.texi
Your input po file po/doc/guix-manual.es.po seems outdated (The amount of entries differ between files: 7994 is not 8149
). Please consider running po4a-updatepo to refresh it.
(basename "doc/guix.es.texi" | sed 's|texi$|info|')|" "doc/guix.es.texi.tmp"
  POXREF doc/guix.es.texi
mv "doc/guix.es.texi.tmp" "doc/guix.es.texi"
  PO4A doc/contributing.fr.texi
Your input po file po/doc/guix-manual.fr.po seems outdated (The amount of entries differ between files: 7994 is not 228
). Please consider running po4a-updatepo to refresh it.
  POXREF doc/contributing.fr.texi
mv "doc/contributing.fr.texi.tmp" "doc/contributing.fr.texi"
  PO4A doc/guix.fr.texi
Your input po file po/doc/guix-manual.fr.po seems outdated (The amount of entries differ between files: 7994 is not 8149
). Please consider running po4a-updatepo to refresh it.
(basename "doc/guix.fr.texi" | sed 's|texi$|info|')|" "doc/guix.fr.texi.tmp"
  POXREF doc/guix.fr.texi
mv "doc/guix.fr.texi.tmp" "doc/guix.fr.texi"
  PO4A doc/contributing.ru.texi
Your input po file po/doc/guix-manual.ru.po seems outdated (The amount of entries differ between files: 7994 is not 228
). Please consider running po4a-updatepo to refresh it.
  POXREF doc/contributing.ru.texi
mv "doc/contributing.ru.texi.tmp" "doc/contributing.ru.texi"
  PO4A doc/guix.ru.texi
Your input po file po/doc/guix-manual.ru.po seems outdated (The amount of entries differ between files: 7994 is not 8149
). Please consider running po4a-updatepo to refresh it.
(basename "doc/guix.ru.texi" | sed 's|texi$|info|')|" "doc/guix.ru.texi.tmp"
  POXREF doc/guix.ru.texi
mv "doc/guix.ru.texi.tmp" "doc/guix.ru.texi"
  PO4A doc/contributing.zh_CN.texi
Your input po file po/doc/guix-manual.zh_CN.po seems outdated (The amount of entries differ between files: 7994 is not 228
). Please consider running po4a-updatepo to refresh it.
  POXREF doc/contributing.zh_CN.texi
mv "doc/contributing.zh_CN.texi.tmp" "doc/contributing.zh_CN.texi"
  PO4A doc/guix.zh_CN.texi
Your input po file po/doc/guix-manual.zh_CN.po seems outdated (The amount of entries differ between files: 7994 is not 8149
). Please consider running po4a-updatepo to refresh it.
(basename "doc/guix.zh_CN.texi" | sed 's|texi$|info|')|" "doc/guix.zh_CN.texi.tmp"
  POXREF doc/guix.zh_CN.texi
mv "doc/guix.zh_CN.texi.tmp" "doc/guix.zh_CN.texi"
  GEN      nix/libstore/schema.sql.hh
".version-t" && mv ".version-t" ".version"
make  check-recursive
make[1]: Entering directory '/tmp/guix'
Making check in po/guix
make[2]: Entering directory '/tmp/guix/po/guix'
make guix.pot-update
make[3]: Entering directory '/tmp/guix/po/guix'
/d' remove-potcdate.sin > t-remove-potcdate.sed
mv t-remove-potcdate.sed remove-potcdate.sed
/dev/null | grep -v 'libtool:' >/dev/null; then \
  package_gnu='GNU '; \
else \
  package_gnu=''; \
fi; \
if test -n 'ludo@gnu.org' || test 'bug-guix@gnu.org' = '@'PACKAGE_BUGREPORT'@'; then \
  msgid_bugs_address='ludo@gnu.org'; \
else \
  msgid_bugs_address='bug-guix@gnu.org'; \
fi; \
case `/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/xgettext --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
  '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
    /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/xgettext --default-domain=guix --directory=../.. \
      --add-comments=TRANSLATORS: --from-code=UTF-8 --keyword=G_ --keyword=N_:1,2 --keyword=message --keyword=description --keyword=n_  \
      --files-from=./POTFILES.in \
      --copyright-holder='Ludovic Courtès' \
msgid_bugs_address" \
    ;; \
  ,*) \
    /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/xgettext --default-domain=guix --directory=../.. \
      --add-comments=TRANSLATORS: --from-code=UTF-8 --keyword=G_ --keyword=N_:1,2 --keyword=message --keyword=description --keyword=n_  \
      --files-from=./POTFILES.in \
      --copyright-holder='Ludovic Courtès' \
{package_gnu}guix" \
      --package-version='1.0.1.3995-2b2f7' \
msgid_bugs_address" \
    ;; \
esac
test ! -f guix.po || { \
  if test -f ./guix.pot; then \
guix.1po && \
guix.2po && \
/dev/null 2>&1; then \
      rm -f guix.1po guix.2po guix.po; \
    else \
      rm -f guix.1po guix.2po ./guix.pot && \
      mv guix.po ./guix.pot; \
    fi; \
  else \
    mv guix.po ./guix.pot; \
  fi; \
}
make[3]: Leaving directory '/tmp/guix/po/guix'
test ! -f ./guix.pot || \
  test -z "cs.gmo da.gmo de.gmo en@boldquot.gmo en@quot.gmo eo.gmo es.gmo fr.gmo hu.gmo pl.gmo pt_BR.gmo sr.gmo sv.gmo vi.gmo zh_CN.gmo" || make cs.gmo da.gmo de.gmo en@boldquot.gmo en@quot.gmo eo.gmo es.gmo fr.gmo hu.gmo pl.gmo pt_BR.gmo sr.gmo sv.gmo vi.gmo zh_CN.gmo
make[3]: Entering directory '/tmp/guix/po/guix'
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=cs cs.po guix.pot
................................................................................................................................................................................................................. done.
rm -f cs.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o cs.gmo cs.po
cs.po: 60 translated messages, 120 fuzzy translations, 736 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=da da.po guix.pot
............................................................................................................................... done.
rm -f da.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o da.gmo da.po
da.po: 741 translated messages, 53 fuzzy translations, 122 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=de de.po guix.pot
................................................................................................................................. done.
rm -f de.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o de.gmo de.po
de.po: 853 translated messages, 37 fuzzy translations, 26 untranslated messages.
make[4]: Entering directory '/tmp/guix/po/guix'
make en@boldquot.po-update
make[5]: Entering directory '/tmp/guix/po/guix'
/d' -e 's/HEADER/en@boldquot.header/g' ./insert-header.sin > en@boldquot.insert-header
en@boldquot:
en@boldquot:
msgmerge  --lang=en@boldquot en@boldquot.po guix.pot -o en@boldquot.new.po
............................................................................................ done.
make[5]: Leaving directory '/tmp/guix/po/guix'
make[4]: Leaving directory '/tmp/guix/po/guix'
rm -f en@boldquot.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o en@boldquot.gmo en@boldquot.po
en@boldquot.po: 916 translated messages.
make[4]: Entering directory '/tmp/guix/po/guix'
make en@quot.po-update
make[5]: Entering directory '/tmp/guix/po/guix'
/d' -e 's/HEADER/en@quot.header/g' ./insert-header.sin > en@quot.insert-header
en@quot:
en@quot:
msgmerge  --lang=en@quot en@quot.po guix.pot -o en@quot.new.po
............................................................................................ done.
make[5]: Leaving directory '/tmp/guix/po/guix'
make[4]: Leaving directory '/tmp/guix/po/guix'
rm -f en@quot.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o en@quot.gmo en@quot.po
en@quot.po: 916 translated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=eo eo.po guix.pot
........................................................................................................................................................................................................................................................................................................ done.
eo.po:837: warning: internationalized messages should not contain the '\r' escape sequence
eo.po:837: warning: internationalized messages should not contain the '\r' escape sequence
rm -f eo.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o eo.gmo eo.po
eo.po: 200 translated messages, 204 fuzzy translations, 512 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=es es.po guix.pot
................................................................................................................................. done.
rm -f es.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o es.gmo es.po
es.po: 853 translated messages, 37 fuzzy translations, 26 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=fr fr.po guix.pot
.................................................................................................................................. done.
rm -f fr.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o fr.gmo fr.po
fr.po: 853 translated messages, 38 fuzzy translations, 25 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=hu hu.po guix.pot
........................................................................................................................................................................................................................................................................................................ done.
rm -f hu.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o hu.gmo hu.po
hu.po: 148 translated messages, 204 fuzzy translations, 564 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=pl pl.po guix.pot
...................................................................................................................................................... done.
rm -f pl.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o pl.gmo pl.po
pl.po: 70 translated messages, 60 fuzzy translations, 786 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=pt_BR pt_BR.po guix.pot
............................................................................................................................................................................................................. done.
rm -f pt_BR.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o pt_BR.gmo pt_BR.po
pt_BR.po: 565 translated messages, 113 fuzzy translations, 238 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=sr sr.po guix.pot
.............................................................................................................................................................................................................................................................................................. done.
rm -f sr.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o sr.gmo sr.po
sr.po: 128 translated messages, 203 fuzzy translations, 585 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=sv sv.po guix.pot
........................................................................................................... done.
rm -f sv.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o sv.gmo sv.po
sv.po: 478 translated messages, 15 fuzzy translations, 423 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=vi vi.po guix.pot
............................................................................................................................................................................................................................................................................................................. done.
rm -f vi.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o vi.gmo vi.po
vi.po: 177 translated messages, 209 fuzzy translations, 530 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=zh_CN zh_CN.po guix.pot
............................................................................................................................................. done.
rm -f zh_CN.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o zh_CN.gmo zh_CN.po
zh_CN.po: 79 translated messages, 81 fuzzy translations, 756 untranslated messages.
make[3]: Leaving directory '/tmp/guix/po/guix'
touch stamp-po
make[2]: Leaving directory '/tmp/guix/po/guix'
Making check in po/packages
make[2]: Entering directory '/tmp/guix/po/packages'
make guix-packages.pot-update
make[3]: Entering directory '/tmp/guix/po/packages'
/d' remove-potcdate.sin > t-remove-potcdate.sed
mv t-remove-potcdate.sed remove-potcdate.sed
/dev/null | grep -v 'libtool:' >/dev/null; then \
  package_gnu='GNU '; \
else \
  package_gnu=''; \
fi; \
if test -n 'ludo@gnu.org' || test 'bug-guix@gnu.org' = '@'PACKAGE_BUGREPORT'@'; then \
  msgid_bugs_address='ludo@gnu.org'; \
else \
  msgid_bugs_address='bug-guix@gnu.org'; \
fi; \
case `/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/xgettext --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
  '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
    /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/xgettext --default-domain=guix-packages --directory=../.. \
      --add-comments=TRANSLATORS: --language=Scheme --from-code=UTF-8 --keyword=synopsis --keyword=description  \
      --files-from=./POTFILES.in \
      --copyright-holder='Ludovic Courtès' \
msgid_bugs_address" \
    ;; \
  ,*) \
    /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/xgettext --default-domain=guix-packages --directory=../.. \
      --add-comments=TRANSLATORS: --language=Scheme --from-code=UTF-8 --keyword=synopsis --keyword=description  \
      --files-from=./POTFILES.in \
      --copyright-holder='Ludovic Courtès' \
{package_gnu}guix" \
      --package-version='1.0.1.3995-2b2f7' \
msgid_bugs_address" \
    ;; \
esac
test ! -f guix-packages.po || { \
  if test -f ./guix-packages.pot; then \
guix-packages.1po && \
guix-packages.2po && \
/dev/null 2>&1; then \
      rm -f guix-packages.1po guix-packages.2po guix-packages.po; \
    else \
      rm -f guix-packages.1po guix-packages.2po ./guix-packages.pot && \
      mv guix-packages.po ./guix-packages.pot; \
    fi; \
  else \
    mv guix-packages.po ./guix-packages.pot; \
  fi; \
}
make[3]: Leaving directory '/tmp/guix/po/packages'
test ! -f ./guix-packages.pot || \
  test -z "da.gmo de.gmo en@boldquot.gmo en@quot.gmo eo.gmo es.gmo fr.gmo hu.gmo pl.gmo pt_BR.gmo sr.gmo vi.gmo zh_CN.gmo" || make da.gmo de.gmo en@boldquot.gmo en@quot.gmo eo.gmo es.gmo fr.gmo hu.gmo pl.gmo pt_BR.gmo sr.gmo vi.gmo zh_CN.gmo
make[3]: Entering directory '/tmp/guix/po/packages'
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=da da.po guix-packages.pot
.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. done.
rm -f da.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o da.gmo da.po
da.po: 652 translated messages, 96 fuzzy translations, 3223 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=de de.po guix-packages.pot
...................................................................................................................................................................................................................................................................................................................................................................................................................................... done.
rm -f de.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o de.gmo de.po
de.po: 25 translated messages, 24 fuzzy translations, 3922 untranslated messages.
make[4]: Entering directory '/tmp/guix/po/packages'
make en@boldquot.po-update
make[5]: Entering directory '/tmp/guix/po/packages'
/d' -e 's/HEADER/en@boldquot.header/g' ./insert-header.sin > en@boldquot.insert-header
en@boldquot:
en@boldquot:
msgmerge  --lang=en@boldquot en@boldquot.po guix-packages.pot -o en@boldquot.new.po
.............................................................................................................................................................................................................................................................................................................................................................................................................. done.
make[5]: Leaving directory '/tmp/guix/po/packages'
make[4]: Leaving directory '/tmp/guix/po/packages'
rm -f en@boldquot.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o en@boldquot.gmo en@boldquot.po
en@boldquot.po: 3971 translated messages.
make[4]: Entering directory '/tmp/guix/po/packages'
make en@quot.po-update
make[5]: Entering directory '/tmp/guix/po/packages'
/d' -e 's/HEADER/en@quot.header/g' ./insert-header.sin > en@quot.insert-header
en@quot:
en@quot:
msgmerge  --lang=en@quot en@quot.po guix-packages.pot -o en@quot.new.po
.............................................................................................................................................................................................................................................................................................................................................................................................................. done.
make[5]: Leaving directory '/tmp/guix/po/packages'
make[4]: Leaving directory '/tmp/guix/po/packages'
rm -f en@quot.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o en@quot.gmo en@quot.po
en@quot.po: 3971 translated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=eo eo.po guix-packages.pot
......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... done.
rm -f eo.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o eo.gmo eo.po
eo.po: 173 translated messages, 235 fuzzy translations, 3563 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=es es.po guix-packages.pot
................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. done.
rm -f es.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o es.gmo es.po
es.po: 900 translated messages, 169 fuzzy translations, 2902 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=fr fr.po guix-packages.pot
.................................................................................................................................................................................................................................................................................................................................................................................................................................................... done.
rm -f fr.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o fr.gmo fr.po
fr.po: 552 translated messages, 38 fuzzy translations, 3381 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=hu hu.po guix-packages.pot
........................................................................................................................................................................................................................................................................................................................................................................................................................................................................... done.
rm -f hu.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o hu.gmo hu.po
hu.po: 243 translated messages, 61 fuzzy translations, 3667 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=pl pl.po guix-packages.pot
................................................................................................................................................................................................................................................................................................................................................................................................................................................................ done.
rm -f pl.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o pl.gmo pl.po
pl.po: 42 translated messages, 50 fuzzy translations, 3879 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=pt_BR pt_BR.po guix-packages.pot
.................................................................................................................................................................................................................................................................................................................................................................................................................................... done.
rm -f pt_BR.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o pt_BR.gmo pt_BR.po
pt_BR.po: 16 translated messages, 22 fuzzy translations, 3933 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=sr sr.po guix-packages.pot
......................................................................................................................................................................................................................................................................................................................................................................................................................................... done.
rm -f sr.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o sr.gmo sr.po
sr.po: 26 translated messages, 27 fuzzy translations, 3918 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=vi vi.po guix-packages.pot
.................................................................................................................................................................................................................................................................................................................................................................................................................................. done.
rm -f vi.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o vi.gmo vi.po
vi.po: 15 translated messages, 20 fuzzy translations, 3936 untranslated messages.
/gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgmerge --update  --lang=zh_CN zh_CN.po guix-packages.pot
......................................................................................................................................................................................................................................................................................................................................................................................................................... done.
rm -f zh_CN.gmo && /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/msgfmt -c --statistics --verbose -o zh_CN.gmo zh_CN.po
zh_CN.po: 30 translated messages, 11 fuzzy translations, 3930 untranslated messages.
make[3]: Leaving directory '/tmp/guix/po/packages'
touch stamp-po
make[2]: Leaving directory '/tmp/guix/po/packages'
make[2]: Entering directory '/tmp/guix'
make[3]: Entering directory '/tmp/guix'
make[3]: Leaving directory '/tmp/guix'
Updating ./doc/version.texi
  MAKEINFO doc/guix.info
Updating ./doc/version-de.texi
  MAKEINFO doc/guix.de.info
Updating ./doc/version-es.texi
  MAKEINFO doc/guix.es.info
Updating ./doc/version-fr.texi
  MAKEINFO doc/guix.fr.info
Updating ./doc/version-ru.texi
  MAKEINFO doc/guix.ru.info
./doc/guix.ru.texi:924: warning: accent command `@,' must not be followed by whitespace
Wide character in warn at /gnu/store/hzzsmxv7ns6z2znn0fn5aw5mq66w59p7-profile/bin/makeinfo line 720.
./doc/guix.ru.texi:3940: warning: `.' or `,' must follow @xref, not д
Updating ./doc/version-zh_CN.texi
  MAKEINFO doc/guix.zh_CN.info
  MAKEINFO doc/guix-cookbook.info
  CXX      nix/nix-daemon/guix_daemon-nix-daemon.o
  CXX      nix/nix-daemon/guix_daemon-guix-daemon.o
  CXX      nix/libstore/libstore_a-gc.o
  CXX      nix/libstore/libstore_a-globals.o
  CXX      nix/libstore/libstore_a-misc.o
  CXX      nix/libstore/libstore_a-references.o
  CXX      nix/libstore/libstore_a-store-api.o
  CXX      nix/libstore/libstore_a-optimise-store.o
  CXX      nix/libstore/libstore_a-local-store.o
  CXX      nix/libstore/libstore_a-build.o
  CXX      nix/libstore/libstore_a-pathlocks.o
  CXX      nix/libstore/libstore_a-derivations.o
  CXX      nix/libstore/libstore_a-builtins.o
  CXX      nix/libstore/libstore_a-sqlite.o
  AR       libstore.a
ar: `u' modifier ignored since `D' is the default (see `U')
  CXX      nix/libutil/libutil_a-archive.o
  CXX      nix/libutil/libutil_a-affinity.o
  CXX      nix/libutil/libutil_a-serialise.o
  CXX      nix/libutil/libutil_a-util.o
  CXX      nix/libutil/libutil_a-hash.o
  CXX      nix/libutil/libutil_a-gcrypt-hash.o
  AR       libutil.a
ar: `u' modifier ignored since `D' is the default (see `U')
  CXX      nix/boost/format/libformat_a-free_funcs.o
  CXX      nix/boost/format/libformat_a-parsing.o
  CXX      nix/boost/format/libformat_a-format_implementation.o
  AR       libformat.a
ar: `u' modifier ignored since `D' is the default (see `U')
  CXXLD    guix-daemon
  GEN      scripts/guix
Compiling Scheme modules...
] LOAD     guix/base16.scm
] LOAD     guix/base32.scm
] LOAD     guix/base64.scm
] LOAD     guix/ci.scm
] LOAD     guix/cpio.scm
] LOAD     guix/deprecation.scm
] LOAD     guix/docker.scm
] LOAD     guix/json.scm
] LOAD     guix/records.scm
] LOAD     guix/pki.scm
] LOAD     guix/progress.scm
] LOAD     guix/combinators.scm
] LOAD     guix/memoization.scm
] LOAD     guix/utils.scm
] LOAD     guix/sets.scm
] LOAD     guix/modules.scm
] LOAD     guix/download.scm
] LOAD     guix/discovery.scm
] LOAD     guix/bzr-download.scm
] LOAD     guix/git-download.scm
] LOAD     guix/hg-download.scm
] LOAD     guix/swh.scm
] LOAD     guix/monads.scm
] LOAD     guix/monad-repl.scm
] LOAD     guix/gexp.scm
] LOAD     guix/profiles.scm
] LOAD     guix/serialization.scm
] LOAD     guix/nar.scm
] LOAD     guix/derivations.scm
] LOAD     guix/grafts.scm
] LOAD     guix/repl.scm
] LOAD     guix/inferior.scm
] LOAD     guix/describe.scm
] LOAD     guix/channels.scm
] LOAD     guix/gnu-maintenance.scm
] LOAD     guix/self.scm
] LOAD     guix/upstream.scm
] LOAD     guix/licenses.scm
] LOAD     guix/lint.scm
] LOAD     guix/glob.scm
] LOAD     guix/git.scm
] LOAD     guix/graph.scm
] LOAD     guix/cache.scm
] LOAD     guix/cve.scm
] LOAD     guix/workers.scm
] LOAD     guix/zlib.scm
] LOAD     guix/lzlib.scm
] LOAD     guix/build-system.scm
] LOAD     guix/build-system/android-ndk.scm
] LOAD     guix/build-system/ant.scm
] LOAD     guix/build-system/cargo.scm
] LOAD     guix/build-system/clojure.scm
] LOAD     guix/build-system/cmake.scm
] LOAD     guix/build-system/dub.scm
] LOAD     guix/build-system/dune.scm
] LOAD     guix/build-system/emacs.scm
] LOAD     guix/build-system/font.scm
] LOAD     guix/build-system/go.scm
] LOAD     guix/build-system/meson.scm
] LOAD     guix/build-system/minify.scm
] LOAD     guix/build-system/asdf.scm
] LOAD     guix/build-system/glib-or-gtk.scm
] LOAD     guix/build-system/gnu.scm
] LOAD     guix/build-system/guile.scm
] LOAD     guix/build-system/haskell.scm
] LOAD     guix/build-system/julia.scm
] LOAD     guix/build-system/linux-module.scm
] LOAD     guix/build-system/node.scm
] LOAD     guix/build-system/perl.scm
] LOAD     guix/build-system/python.scm
] LOAD     guix/build-system/ocaml.scm
] LOAD     guix/build-system/waf.scm
] LOAD     guix/build-system/r.scm
] LOAD     guix/build-system/rakudo.scm
] LOAD     guix/build-system/ruby.scm
] LOAD     guix/build-system/scons.scm
] LOAD     guix/build-system/texlive.scm
] LOAD     guix/build-system/trivial.scm
] LOAD     guix/ftp-client.scm
] LOAD     guix/http-client.scm
] LOAD     guix/gnupg.scm
] LOAD     guix/elf.scm
] LOAD     guix/profiling.scm
] LOAD     guix/store.scm
] LOAD     guix/cvs-download.scm
] LOAD     guix/svn-download.scm
] LOAD     guix/colors.scm
] LOAD     guix/i18n.scm
] LOAD     guix/diagnostics.scm
] LOAD     guix/ui.scm
] LOAD     guix/status.scm
] LOAD     guix/build/android-ndk-build-system.scm
] LOAD     guix/build/ant-build-system.scm
] LOAD     guix/build/download.scm
] LOAD     guix/build/download-nar.scm
] LOAD     guix/build/cargo-build-system.scm
] LOAD     guix/build/cargo-utils.scm
] LOAD     guix/build/cmake-build-system.scm
] LOAD     guix/build/dub-build-system.scm
] LOAD     guix/build/dune-build-system.scm
] LOAD     guix/build/emacs-build-system.scm
] LOAD     guix/build/meson-build-system.scm
] LOAD     guix/build/minify-build-system.scm
] LOAD     guix/build/font-build-system.scm
] LOAD     guix/build/go-build-system.scm
] LOAD     guix/build/asdf-build-system.scm
] LOAD     guix/build/bzr.scm
] LOAD     guix/build/git.scm
] LOAD     guix/build/hg.scm
] LOAD     guix/build/glib-or-gtk-build-system.scm
] LOAD     guix/build/gnu-build-system.scm
] LOAD     guix/build/gnu-dist.scm
] LOAD     guix/build/guile-build-system.scm
] LOAD     guix/build/node-build-system.scm
] LOAD     guix/build/perl-build-system.scm
] LOAD     guix/build/python-build-system.scm
] LOAD     guix/build/ocaml-build-system.scm
] LOAD     guix/build/r-build-system.scm
] LOAD     guix/build/rakudo-build-system.scm
] LOAD     guix/build/ruby-build-system.scm
] LOAD     guix/build/scons-build-system.scm
] LOAD     guix/build/texlive-build-system.scm
] LOAD     guix/build/waf-build-system.scm
] LOAD     guix/build/haskell-build-system.scm
] LOAD     guix/build/julia-build-system.scm
] LOAD     guix/build/linux-module-build-system.scm
] LOAD     guix/build/store-copy.scm
] LOAD     guix/build/json.scm
] LOAD     guix/build/utils.scm
] LOAD     guix/build/union.scm
] LOAD     guix/build/profiles.scm
] LOAD     guix/build/compile.scm
] LOAD     guix/build/rpath.scm
] LOAD     guix/build/cvs.scm
] LOAD     guix/build/svn.scm
] LOAD     guix/build/syscalls.scm
] LOAD     guix/build/gremlin.scm
] LOAD     guix/build/debug-link.scm
] LOAD     guix/build/clojure-build-system.scm
] LOAD     guix/build/clojure-utils.scm
] LOAD     guix/build/emacs-utils.scm
] LOAD     guix/build/java-utils.scm
] LOAD     guix/build/lisp-utils.scm
] LOAD     guix/build/graft.scm
] LOAD     guix/build/bournish.scm
] LOAD     guix/build/qt-utils.scm
] LOAD     guix/build/make-bootstrap.scm
] LOAD     guix/search-paths.scm
] LOAD     guix/packages.scm
] LOAD     guix/import/cabal.scm
] LOAD     guix/import/cpan.scm
] LOAD     guix/import/cran.scm
] LOAD     guix/import/crate.scm
] LOAD     guix/import/elpa.scm
] LOAD     guix/import/gem.scm
] LOAD     guix/import/github.scm
] LOAD     guix/import/gnome.scm
] LOAD     guix/import/gnu.scm
] LOAD     guix/import/hackage.scm
] LOAD     guix/import/json.scm
] LOAD     guix/import/kde.scm
] LOAD     guix/import/launchpad.scm
] LOAD     guix/import/opam.scm
] LOAD     guix/import/print.scm
] LOAD     guix/import/pypi.scm
] LOAD     guix/import/snix.scm
] LOAD     guix/import/stackage.scm
] LOAD     guix/import/texlive.scm
] LOAD     guix/import/utils.scm
] LOAD     guix/scripts.scm
] LOAD     guix/scripts/download.scm
] LOAD     guix/scripts/perform-download.scm
] LOAD     guix/scripts/build.scm
] LOAD     guix/scripts/archive.scm
] LOAD     guix/scripts/import.scm
] LOAD     guix/scripts/package.scm
] LOAD     guix/scripts/install.scm
] LOAD     guix/scripts/remove.scm
] LOAD     guix/scripts/upgrade.scm
] LOAD     guix/scripts/search.scm
] LOAD     guix/scripts/show.scm
] LOAD     guix/scripts/gc.scm
] LOAD     guix/scripts/hash.scm
] LOAD     guix/scripts/pack.scm
] LOAD     guix/scripts/pull.scm
] LOAD     guix/scripts/processes.scm
] LOAD     guix/scripts/substitute.scm
] LOAD     guix/scripts/authenticate.scm
] LOAD     guix/scripts/refresh.scm
] LOAD     guix/scripts/repl.scm
] LOAD     guix/scripts/describe.scm
] LOAD     guix/scripts/system.scm
] LOAD     guix/scripts/system/search.scm
] LOAD     guix/scripts/system/reconfigure.scm
] LOAD     guix/scripts/lint.scm
] LOAD     guix/scripts/challenge.scm
;;; Failed to autoload make-page-map in (charting):
;;; missing interface for module (charting)
;;; Failed to autoload make-page-map in (charting):
;;; missing interface for module (charting)
] LOAD     guix/scripts/import/crate.scm
] LOAD     guix/scripts/import/cran.scm
] LOAD     guix/scripts/import/elpa.scm
] LOAD     guix/scripts/import/gem.scm
] LOAD     guix/scripts/import/gnu.scm
] LOAD     guix/scripts/import/hackage.scm
] LOAD     guix/scripts/import/json.scm
] LOAD     guix/scripts/import/nix.scm
] LOAD     guix/scripts/import/opam.scm
] LOAD     guix/scripts/import/pypi.scm
] LOAD     guix/scripts/import/stackage.scm
] LOAD     guix/scripts/import/texlive.scm
] LOAD     guix/scripts/environment.scm
] LOAD     guix/scripts/publish.scm
] LOAD     guix/scripts/edit.scm
] LOAD     guix/scripts/size.scm
] LOAD     guix/scripts/graph.scm
] LOAD     guix/scripts/weather.scm
] LOAD     guix/scripts/container.scm
] LOAD     guix/scripts/container/exec.scm
] LOAD     guix/scripts/deploy.scm
] LOAD     guix.scm
] LOAD     gnu.scm
] LOAD     gnu/artwork.scm
] LOAD     gnu/bootloader.scm
] LOAD     gnu/bootloader/grub.scm
] LOAD     gnu/bootloader/extlinux.scm
] LOAD     gnu/bootloader/u-boot.scm
] LOAD     gnu/bootloader/depthcharge.scm
] LOAD     gnu/ci.scm
] LOAD     gnu/packages.scm
] LOAD     gnu/packages/abduco.scm
] LOAD     gnu/packages/abiword.scm
] LOAD     gnu/packages/accessibility.scm
] LOAD     gnu/packages/acct.scm
] LOAD     gnu/packages/acl.scm
] LOAD     gnu/packages/ada.scm
] LOAD     gnu/packages/admin.scm
] LOAD     gnu/packages/adns.scm
] LOAD     gnu/packages/agda.scm
] LOAD     gnu/packages/algebra.scm
] LOAD     gnu/packages/aidc.scm
] LOAD     gnu/packages/android.scm
] LOAD     gnu/packages/animation.scm
] LOAD     gnu/packages/anthy.scm
] LOAD     gnu/packages/antivirus.scm
] LOAD     gnu/packages/apl.scm
] LOAD     gnu/packages/apr.scm
] LOAD     gnu/packages/arcan.scm
] LOAD     gnu/packages/aspell.scm
] LOAD     gnu/packages/assembly.scm
] LOAD     gnu/packages/astronomy.scm
] LOAD     gnu/packages/attr.scm
] LOAD     gnu/packages/audio.scm
] LOAD     gnu/packages/augeas.scm
] LOAD     gnu/packages/authentication.scm
] LOAD     gnu/packages/autogen.scm
] LOAD     gnu/packages/autotools.scm
] LOAD     gnu/packages/avahi.scm
] LOAD     gnu/packages/avr.scm
] LOAD     gnu/packages/axoloti.scm
] LOAD     gnu/packages/backup.scm
] LOAD     gnu/packages/base.scm
] LOAD     gnu/packages/bash.scm
] LOAD     gnu/packages/batik.scm
] LOAD     gnu/packages/bdw-gc.scm
] LOAD     gnu/packages/benchmark.scm
] LOAD     gnu/packages/bioconductor.scm
] LOAD     gnu/packages/bioinformatics.scm
] LOAD     gnu/packages/bittorrent.scm
] LOAD     gnu/packages/bison.scm
] LOAD     gnu/packages/boost.scm
] LOAD     gnu/packages/bootloaders.scm
] LOAD     gnu/packages/bootstrap.scm
] LOAD     gnu/packages/build-tools.scm
] LOAD     gnu/packages/busybox.scm
] LOAD     gnu/packages/c.scm
] LOAD     gnu/packages/calcurse.scm
] LOAD     gnu/packages/ccache.scm
] LOAD     gnu/packages/cdrom.scm
] LOAD     gnu/packages/cedille.scm
] LOAD     gnu/packages/certs.scm
] LOAD     gnu/packages/check.scm
] LOAD     gnu/packages/chemistry.scm
] LOAD     gnu/packages/chez.scm
] LOAD     gnu/packages/chromium.scm
] LOAD     gnu/packages/ci.scm
] LOAD     gnu/packages/cinnamon.scm
] LOAD     gnu/packages/clojure.scm
] LOAD     gnu/packages/cluster.scm
] LOAD     gnu/packages/cmake.scm
] LOAD     gnu/packages/cobol.scm
] LOAD     gnu/packages/code.scm
] LOAD     gnu/packages/commencement.scm
] LOAD     gnu/packages/compression.scm
] LOAD     gnu/packages/compton.scm
] LOAD     gnu/packages/conky.scm
] LOAD     gnu/packages/connman.scm
] LOAD     gnu/packages/cook.scm
] LOAD     gnu/packages/coq.scm
] LOAD     gnu/packages/cpio.scm
] LOAD     gnu/packages/cpp.scm
] LOAD     gnu/packages/cppi.scm
] LOAD     gnu/packages/cran.scm
] LOAD     gnu/packages/crates-io.scm
] LOAD     gnu/packages/cross-base.scm
] LOAD     gnu/packages/crypto.scm
] LOAD     gnu/packages/cryptsetup.scm
] LOAD     gnu/packages/cups.scm
] LOAD     gnu/packages/curl.scm
] LOAD     gnu/packages/cvassistant.scm
] LOAD     gnu/packages/cyrus-sasl.scm
] LOAD     gnu/packages/databases.scm
] LOAD     gnu/packages/datamash.scm
] LOAD     gnu/packages/datastructures.scm
] LOAD     gnu/packages/dav.scm
] LOAD     gnu/packages/dbm.scm
] LOAD     gnu/packages/dc.scm
] LOAD     gnu/packages/debian.scm
] LOAD     gnu/packages/debug.scm
] LOAD     gnu/packages/dejagnu.scm
] LOAD     gnu/packages/dico.scm
] LOAD     gnu/packages/dictionaries.scm
] LOAD     gnu/packages/diffoscope.scm
] LOAD     gnu/packages/digest.scm
] LOAD     gnu/packages/direct-connect.scm
] LOAD     gnu/packages/disk.scm
] LOAD     gnu/packages/distributed.scm
] LOAD     gnu/packages/display-managers.scm
] LOAD     gnu/packages/django.scm
] LOAD     gnu/packages/djvu.scm
] LOAD     gnu/packages/dlang.scm
] LOAD     gnu/packages/dns.scm
] LOAD     gnu/packages/docbook.scm
] LOAD     gnu/packages/docker.scm
] LOAD     gnu/packages/documentation.scm
] LOAD     gnu/packages/dunst.scm
] LOAD     gnu/packages/dvtm.scm
] LOAD     gnu/packages/easyrpg.scm
] LOAD     gnu/packages/ebook.scm
] LOAD     gnu/packages/ed.scm
] LOAD     gnu/packages/education.scm
] LOAD     gnu/packages/efi.scm
] LOAD     gnu/packages/electronics.scm
] LOAD     gnu/packages/elf.scm
] LOAD     gnu/packages/elixir.scm
] LOAD     gnu/packages/elm.scm
] LOAD     gnu/packages/embedded.scm
] LOAD     gnu/packages/emacs.scm
] LOAD     gnu/packages/emacs-xyz.scm
] LOAD     gnu/packages/emulators.scm
] LOAD     gnu/packages/enchant.scm
] LOAD     gnu/packages/engineering.scm
] LOAD     gnu/packages/enlightenment.scm
] LOAD     gnu/packages/entr.scm
] LOAD     gnu/packages/erlang.scm
] LOAD     gnu/packages/fabric-management.scm
] LOAD     gnu/packages/fcitx.scm
] LOAD     gnu/packages/figlet.scm
] LOAD     gnu/packages/file.scm
] LOAD     gnu/packages/file-systems.scm
] LOAD     gnu/packages/finance.scm
] LOAD     gnu/packages/firmware.scm
] LOAD     gnu/packages/flashing-tools.scm
] LOAD     gnu/packages/flex.scm
] LOAD     gnu/packages/fltk.scm
] LOAD     gnu/packages/fonts.scm
] LOAD     gnu/packages/fontutils.scm
] LOAD     gnu/packages/fpga.scm
] LOAD     gnu/packages/forth.scm
] LOAD     gnu/packages/freedesktop.scm
] LOAD     gnu/packages/freeipmi.scm
] LOAD     gnu/packages/ftp.scm
] LOAD     gnu/packages/fribidi.scm
] LOAD     gnu/packages/fvwm.scm
] LOAD     gnu/packages/game-development.scm
] LOAD     gnu/packages/games.scm
] LOAD     gnu/packages/gawk.scm
] LOAD     gnu/packages/gcal.scm
] LOAD     gnu/packages/gcc.scm
] LOAD     gnu/packages/gd.scm
] LOAD     gnu/packages/gdb.scm
] LOAD     gnu/packages/genealogy.scm
] LOAD     gnu/packages/genimage.scm
] LOAD     gnu/packages/geo.scm
] LOAD     gnu/packages/gettext.scm
] LOAD     gnu/packages/ghostscript.scm
] LOAD     gnu/packages/gimp.scm
] LOAD     gnu/packages/gkrellm.scm
] LOAD     gnu/packages/gl.scm
] LOAD     gnu/packages/glib.scm
] LOAD     gnu/packages/gnome.scm
] LOAD     gnu/packages/gnu-doc.scm
] LOAD     gnu/packages/gnucash.scm
] LOAD     gnu/packages/gnunet.scm
] LOAD     gnu/packages/gnupg.scm
] LOAD     gnu/packages/gnustep.scm
] LOAD     gnu/packages/gnuzilla.scm
] LOAD     gnu/packages/gnu-pw-mgr.scm
] LOAD     gnu/packages/gobby.scm
] LOAD     gnu/packages/golang.scm
] LOAD     gnu/packages/gperf.scm
] LOAD     gnu/packages/gpodder.scm
] LOAD     gnu/packages/gprolog.scm
] LOAD     gnu/packages/gps.scm
] LOAD     gnu/packages/graph.scm
] LOAD     gnu/packages/graphics.scm
] LOAD     gnu/packages/graphviz.scm
] LOAD     gnu/packages/groff.scm
] LOAD     gnu/packages/groovy.scm
] LOAD     gnu/packages/gsasl.scm
] LOAD     gnu/packages/gstreamer.scm
] LOAD     gnu/packages/gtk.scm
] LOAD     gnu/packages/guile.scm
] LOAD     gnu/packages/guile-wm.scm
] LOAD     gnu/packages/guile-xyz.scm
] LOAD     gnu/packages/gv.scm
] LOAD     gnu/packages/gxmessage.scm
] LOAD     gnu/packages/hardware.scm
] LOAD     gnu/packages/haskell.scm
] LOAD     gnu/packages/haskell-apps.scm
] LOAD     gnu/packages/haskell-check.scm
] LOAD     gnu/packages/haskell-crypto.scm
] LOAD     gnu/packages/haskell-web.scm
] LOAD     gnu/packages/haskell-xyz.scm
] LOAD     gnu/packages/ham-radio.scm
] LOAD     gnu/packages/hexedit.scm
] LOAD     gnu/packages/hugs.scm
] LOAD     gnu/packages/hurd.scm
] LOAD     gnu/packages/hyperledger.scm
] LOAD     gnu/packages/i2p.scm
] LOAD     gnu/packages/ibus.scm
] LOAD     gnu/packages/icu4c.scm
] LOAD     gnu/packages/idris.scm
] LOAD     gnu/packages/idutils.scm
] LOAD     gnu/packages/image.scm
] LOAD     gnu/packages/image-processing.scm
] LOAD     gnu/packages/image-viewers.scm
] LOAD     gnu/packages/imagemagick.scm
] LOAD     gnu/packages/inklingreader.scm
] LOAD     gnu/packages/inkscape.scm
] LOAD     gnu/packages/ipfs.scm
] LOAD     gnu/packages/irc.scm
] LOAD     gnu/packages/iso-codes.scm
] LOAD     gnu/packages/java.scm
] LOAD     gnu/packages/java-compression.scm
] LOAD     gnu/packages/java-maths.scm
] LOAD     gnu/packages/javascript.scm
] LOAD     gnu/packages/jemalloc.scm
] LOAD     gnu/packages/jrnl.scm
] LOAD     gnu/packages/jose.scm
] LOAD     gnu/packages/julia.scm
] LOAD     gnu/packages/jupyter.scm
] LOAD     gnu/packages/kawa.scm
] LOAD     gnu/packages/kde.scm
] LOAD     gnu/packages/kde-frameworks.scm
] LOAD     gnu/packages/kde-plasma.scm
] LOAD     gnu/packages/kerberos.scm
] LOAD     gnu/packages/key-mon.scm
] LOAD     gnu/packages/kodi.scm
] LOAD     gnu/packages/language.scm
] LOAD     gnu/packages/lego.scm
] LOAD     gnu/packages/less.scm
] LOAD     gnu/packages/lesstif.scm
] LOAD     gnu/packages/libbsd.scm
] LOAD     gnu/packages/libcanberra.scm
] LOAD     gnu/packages/libdaemon.scm
] LOAD     gnu/packages/libedit.scm
] LOAD     gnu/packages/libevent.scm
] LOAD     gnu/packages/libffcall.scm
] LOAD     gnu/packages/libffi.scm
] LOAD     gnu/packages/libftdi.scm
] LOAD     gnu/packages/license.scm
] LOAD     gnu/packages/calendar.scm
] LOAD     gnu/packages/libidn.scm
] LOAD     gnu/packages/libphidget.scm
] LOAD     gnu/packages/libreoffice.scm
] LOAD     gnu/packages/libsigsegv.scm
] LOAD     gnu/packages/libunistring.scm
] LOAD     gnu/packages/libusb.scm
] LOAD     gnu/packages/libunwind.scm
] LOAD     gnu/packages/lighting.scm
] LOAD     gnu/packages/linux.scm
] LOAD     gnu/packages/lirc.scm
] LOAD     gnu/packages/lisp.scm
] LOAD     gnu/packages/llvm.scm
] LOAD     gnu/packages/lout.scm
] LOAD     gnu/packages/logging.scm
] LOAD     gnu/packages/logo.scm
] LOAD     gnu/packages/lolcode.scm
] LOAD     gnu/packages/lsof.scm
] LOAD     gnu/packages/lua.scm
] LOAD     gnu/packages/lxde.scm
] LOAD     gnu/packages/lxqt.scm
] LOAD     gnu/packages/m4.scm
] LOAD     gnu/packages/machine-learning.scm
] LOAD     gnu/packages/magic-wormhole.scm
] LOAD     gnu/packages/man.scm
] LOAD     gnu/packages/mastodon.scm
] LOAD     gnu/packages/mail.scm
] LOAD     gnu/packages/make-bootstrap.scm
] LOAD     gnu/packages/markup.scm
] LOAD     gnu/packages/marst.scm
] LOAD     gnu/packages/mate.scm
] LOAD     gnu/packages/maths.scm
] LOAD     gnu/packages/maven.scm
] LOAD     gnu/packages/mc.scm
] LOAD     gnu/packages/mcrypt.scm
] LOAD     gnu/packages/medical.scm
] LOAD     gnu/packages/mes.scm
] LOAD     gnu/packages/messaging.scm
] LOAD     gnu/packages/mingw.scm
] LOAD     gnu/packages/microcom.scm
] LOAD     gnu/packages/moe.scm
] LOAD     gnu/packages/motti.scm
] LOAD     gnu/packages/monitoring.scm
] LOAD     gnu/packages/mono.scm
] LOAD     gnu/packages/moreutils.scm
] LOAD     gnu/packages/mpd.scm
] LOAD     gnu/packages/mp3.scm
] LOAD     gnu/packages/mpi.scm
] LOAD     gnu/packages/multiprecision.scm
] LOAD     gnu/packages/music.scm
] LOAD     gnu/packages/musl.scm
] LOAD     gnu/packages/mtools.scm
] LOAD     gnu/packages/nano.scm
] LOAD     gnu/packages/ncdu.scm
] LOAD     gnu/packages/ncurses.scm
] LOAD     gnu/packages/netpbm.scm
] LOAD     gnu/packages/nettle.scm
] LOAD     gnu/packages/networking.scm
] LOAD     gnu/packages/nfs.scm
] LOAD     gnu/packages/nickle.scm
] LOAD     gnu/packages/nim.scm
] LOAD     gnu/packages/ninja.scm
] LOAD     gnu/packages/node.scm
] LOAD     gnu/packages/noweb.scm
] LOAD     gnu/packages/nss.scm
] LOAD     gnu/packages/ntp.scm
] LOAD     gnu/packages/nutrition.scm
] LOAD     gnu/packages/nvi.scm
] LOAD     gnu/packages/ocaml.scm
] LOAD     gnu/packages/ocr.scm
] LOAD     gnu/packages/onc-rpc.scm
] LOAD     gnu/packages/opencl.scm
] LOAD     gnu/packages/openbox.scm
] LOAD     gnu/packages/openldap.scm
] LOAD     gnu/packages/openstack.scm
] LOAD     gnu/packages/orpheus.scm
] LOAD     gnu/packages/ots.scm
] LOAD     gnu/packages/package-management.scm
] LOAD     gnu/packages/parallel.scm
] LOAD     gnu/packages/password-utils.scm
] LOAD     gnu/packages/patchutils.scm
] LOAD     gnu/packages/pciutils.scm
] LOAD     gnu/packages/pcre.scm
] LOAD     gnu/packages/pdf.scm
] LOAD     gnu/packages/pem.scm
] LOAD     gnu/packages/perl.scm
] LOAD     gnu/packages/perl-check.scm
] LOAD     gnu/packages/perl-compression.scm
] LOAD     gnu/packages/perl-web.scm
] LOAD     gnu/packages/perl6.scm
] LOAD     gnu/packages/photo.scm
] LOAD     gnu/packages/phabricator.scm
] LOAD     gnu/packages/php.scm
] LOAD     gnu/packages/pkg-config.scm
] LOAD     gnu/packages/plotutils.scm
] LOAD     gnu/packages/poedit.scm
] LOAD     gnu/packages/polkit.scm
] LOAD     gnu/packages/popt.scm
] LOAD     gnu/packages/printers.scm
] LOAD     gnu/packages/profiling.scm
] LOAD     gnu/packages/pth.scm
] LOAD     gnu/packages/pulseaudio.scm
] LOAD     gnu/packages/pumpio.scm
] LOAD     gnu/packages/pretty-print.scm
] LOAD     gnu/packages/protobuf.scm
] LOAD     gnu/packages/pure.scm
] LOAD     gnu/packages/pv.scm
] LOAD     gnu/packages/python.scm
] LOAD     gnu/packages/python-check.scm
] LOAD     gnu/packages/python-compression.scm
] LOAD     gnu/packages/python-crypto.scm
] LOAD     gnu/packages/python-web.scm
] LOAD     gnu/packages/python-xyz.scm
] LOAD     gnu/packages/toys.scm
] LOAD     gnu/packages/tryton.scm
] LOAD     gnu/packages/qt.scm
] LOAD     gnu/packages/ragel.scm
] LOAD     gnu/packages/rails.scm
] LOAD     gnu/packages/ratpoison.scm
] LOAD     gnu/packages/rdesktop.scm
] LOAD     gnu/packages/rdf.scm
] LOAD     gnu/packages/re2c.scm
] LOAD     gnu/packages/readline.scm
] LOAD     gnu/packages/rednotebook.scm
] LOAD     gnu/packages/regex.scm
] LOAD     gnu/packages/robotics.scm
] LOAD     gnu/packages/rrdtool.scm
] LOAD     gnu/packages/rsync.scm
] LOAD     gnu/packages/ruby.scm
] LOAD     gnu/packages/rush.scm
] LOAD     gnu/packages/rust.scm
] LOAD     gnu/packages/samba.scm
] LOAD     gnu/packages/sagemath.scm
] LOAD     gnu/packages/sawfish.scm
] LOAD     gnu/packages/scanner.scm
] LOAD     gnu/packages/scheme.scm
] LOAD     gnu/packages/screen.scm
] LOAD     gnu/packages/scribus.scm
] LOAD     gnu/packages/scsi.scm
] LOAD     gnu/packages/sdcc.scm
] LOAD     gnu/packages/sdl.scm
] LOAD     gnu/packages/search.scm
] LOAD     gnu/packages/security-token.scm
] LOAD     gnu/packages/selinux.scm
] LOAD     gnu/packages/serialization.scm
] LOAD     gnu/packages/serveez.scm
] LOAD     gnu/packages/shells.scm
] LOAD     gnu/packages/shellutils.scm
] LOAD     gnu/packages/simh.scm
] LOAD     gnu/packages/simulation.scm
] LOAD     gnu/packages/skarnet.scm
] LOAD     gnu/packages/skribilo.scm
] LOAD     gnu/packages/slang.scm
] LOAD     gnu/packages/smalltalk.scm
] LOAD     gnu/packages/sml.scm
] LOAD     gnu/packages/speech.scm
] LOAD     gnu/packages/sphinx.scm
] LOAD     gnu/packages/spice.scm
] LOAD     gnu/packages/sqlite.scm
] LOAD     gnu/packages/squirrel.scm
] LOAD     gnu/packages/ssh.scm
] LOAD     gnu/packages/sssd.scm
] LOAD     gnu/packages/stalonetray.scm
] LOAD     gnu/packages/statistics.scm
] LOAD     gnu/packages/stb.scm
] LOAD     gnu/packages/storage.scm
] LOAD     gnu/packages/suckless.scm
] LOAD     gnu/packages/swig.scm
] LOAD     gnu/packages/sync.scm
] LOAD     gnu/packages/syncthing.scm
] LOAD     gnu/packages/synergy.scm
] LOAD     gnu/packages/syndication.scm
] LOAD     gnu/packages/task-management.scm
] LOAD     gnu/packages/tbb.scm
] LOAD     gnu/packages/tcl.scm
] LOAD     gnu/packages/telephony.scm
] LOAD     gnu/packages/terminals.scm
] LOAD     gnu/packages/terraform.scm
] LOAD     gnu/packages/texinfo.scm
] LOAD     gnu/packages/tex.scm
] LOAD     gnu/packages/textutils.scm
] LOAD     gnu/packages/text-editors.scm
] LOAD     gnu/packages/tigervnc.scm
] LOAD     gnu/packages/time.scm
] LOAD     gnu/packages/tls.scm
] LOAD     gnu/packages/tmux.scm
] LOAD     gnu/packages/tor.scm
] LOAD     gnu/packages/tv.scm
] LOAD     gnu/packages/uml.scm
] LOAD     gnu/packages/unrtf.scm
] LOAD     gnu/packages/upnp.scm
] LOAD     gnu/packages/usb-modeswitch.scm
] LOAD     gnu/packages/uucp.scm
] LOAD     gnu/packages/valgrind.scm
] LOAD     gnu/packages/version-control.scm
] LOAD     gnu/packages/video.scm
] LOAD     gnu/packages/vim.scm
] LOAD     gnu/packages/virtualization.scm
] LOAD     gnu/packages/vpn.scm
] LOAD     gnu/packages/vulkan.scm
] LOAD     gnu/packages/w3m.scm
] LOAD     gnu/packages/wdiff.scm
] LOAD     gnu/packages/web.scm
] LOAD     gnu/packages/web-browsers.scm
] LOAD     gnu/packages/webkit.scm
] LOAD     gnu/packages/wget.scm
] LOAD     gnu/packages/wicd.scm
] LOAD     gnu/packages/wine.scm
] LOAD     gnu/packages/wireservice.scm
] LOAD     gnu/packages/wm.scm
] LOAD     gnu/packages/wordnet.scm
] LOAD     gnu/packages/wv.scm
] LOAD     gnu/packages/wxwidgets.scm
] LOAD     gnu/packages/xfig.scm
] LOAD     gnu/packages/xiph.scm
] LOAD     gnu/packages/xml.scm
] LOAD     gnu/packages/xnee.scm
] LOAD     gnu/packages/xdisorg.scm
] LOAD     gnu/packages/xorg.scm
] LOAD     gnu/packages/xfce.scm
] LOAD     gnu/packages/zile.scm
] LOAD     gnu/packages/zwave.scm
] LOAD     gnu/services.scm
] LOAD     gnu/services/admin.scm
] LOAD     gnu/services/audio.scm
] LOAD     gnu/services/auditd.scm
] LOAD     gnu/services/avahi.scm
] LOAD     gnu/services/base.scm
] LOAD     gnu/services/certbot.scm
] LOAD     gnu/services/cgit.scm
] LOAD     gnu/services/configuration.scm
] LOAD     gnu/services/cuirass.scm
] LOAD     gnu/services/cups.scm
] LOAD     gnu/services/databases.scm
] LOAD     gnu/services/dbus.scm
] LOAD     gnu/services/desktop.scm
] LOAD     gnu/services/dict.scm
] LOAD     gnu/services/dns.scm
] LOAD     gnu/services/docker.scm
] LOAD     gnu/services/authentication.scm
] LOAD     gnu/services/games.scm
] LOAD     gnu/services/getmail.scm
] LOAD     gnu/services/guix.scm
] LOAD     gnu/services/kerberos.scm
] LOAD     gnu/services/lirc.scm
] LOAD     gnu/services/virtualization.scm
] LOAD     gnu/services/mail.scm
] LOAD     gnu/services/mcron.scm
] LOAD     gnu/services/messaging.scm
] LOAD     gnu/services/monitoring.scm
] LOAD     gnu/services/networking.scm
] LOAD     gnu/services/nix.scm
] LOAD     gnu/services/nfs.scm
] LOAD     gnu/services/security-token.scm
] LOAD     gnu/services/shepherd.scm
] LOAD     gnu/services/sound.scm
] LOAD     gnu/services/herd.scm
] LOAD     gnu/services/pm.scm
] LOAD     gnu/services/rsync.scm
] LOAD     gnu/services/sddm.scm
] LOAD     gnu/services/spice.scm
] LOAD     gnu/services/ssh.scm
] LOAD     gnu/services/sysctl.scm
] LOAD     gnu/services/telephony.scm
] LOAD     gnu/services/version-control.scm
] LOAD     gnu/services/vpn.scm
] LOAD     gnu/services/web.scm
] LOAD     gnu/services/xorg.scm
] LOAD     gnu/system.scm
] LOAD     gnu/system/accounts.scm
] LOAD     gnu/system/file-systems.scm
] LOAD     gnu/system/install.scm
] LOAD     gnu/system/keyboard.scm
] LOAD     gnu/system/linux-container.scm
] LOAD     gnu/system/linux-initrd.scm
] LOAD     gnu/system/locale.scm
] LOAD     gnu/system/mapped-devices.scm
] LOAD     gnu/system/nss.scm
] LOAD     gnu/system/pam.scm
] LOAD     gnu/system/shadow.scm
] LOAD     gnu/system/uuid.scm
] LOAD     gnu/system/vm.scm
] LOAD     gnu/machine.scm
] LOAD     gnu/machine/ssh.scm
] LOAD     gnu/build/accounts.scm
] LOAD     gnu/build/activation.scm
] LOAD     gnu/build/bootloader.scm
] LOAD     gnu/build/cross-toolchain.scm
] LOAD     gnu/build/file-systems.scm
] LOAD     gnu/build/install.scm
] LOAD     gnu/build/linux-boot.scm
] LOAD     gnu/build/linux-container.scm
] LOAD     gnu/build/linux-initrd.scm
] LOAD     gnu/build/linux-modules.scm
] LOAD     gnu/build/marionette.scm
] LOAD     gnu/build/vm.scm
] LOAD     gnu/tests.scm
] LOAD     gnu/tests/audio.scm
] LOAD     gnu/tests/base.scm
] LOAD     gnu/tests/databases.scm
] LOAD     gnu/tests/desktop.scm
] LOAD     gnu/tests/dict.scm
] LOAD     gnu/tests/docker.scm
random seed for tests: 1570070944
] LOAD     gnu/tests/guix.scm
] LOAD     gnu/tests/monitoring.scm
] LOAD     gnu/tests/nfs.scm
] LOAD     gnu/tests/install.scm
] LOAD     gnu/tests/ldap.scm
] LOAD     gnu/tests/mail.scm
] LOAD     gnu/tests/messaging.scm
] LOAD     gnu/tests/networking.scm
] LOAD     gnu/tests/reconfigure.scm
] LOAD     gnu/tests/rsync.scm
] LOAD     gnu/tests/security-token.scm
] LOAD     gnu/tests/singularity.scm
] LOAD     gnu/tests/ssh.scm
] LOAD     gnu/tests/version-control.scm
] LOAD     gnu/tests/virtualization.scm
] LOAD     gnu/tests/web.scm
] LOAD     guix/ssh.scm
] LOAD     guix/remote.scm
] LOAD     guix/scripts/copy.scm
] LOAD     guix/store/ssh.scm
] LOAD     guix/scripts/offload.scm
] LOAD     guix/store/database.scm
] LOAD     guix/store/deduplication.scm
] LOAD     guix/store/roots.scm
] LOAD     guix/config.scm
] LOAD     guix/tests.scm
] LOAD     guix/tests/http.scm
] LOAD     guix/tests/git.scm
] GUILEC   guix/base16.go
] GUILEC   guix/base32.go
] GUILEC   guix/base64.go
] GUILEC   guix/ci.go
] GUILEC   guix/cpio.go
] GUILEC   guix/deprecation.go
] GUILEC   guix/docker.go
] GUILEC   guix/json.go
] GUILEC   guix/records.go
] GUILEC   guix/pki.go
] GUILEC   guix/progress.go
] GUILEC   guix/combinators.go
] GUILEC   guix/memoization.go
] GUILEC   guix/utils.go
] GUILEC   guix/sets.go
] GUILEC   guix/modules.go
] GUILEC   guix/download.go
] GUILEC   guix/discovery.go
] GUILEC   guix/bzr-download.go
] GUILEC   guix/git-download.go
] GUILEC   guix/hg-download.go
] GUILEC   guix/swh.go
] GUILEC   guix/monads.go
] GUILEC   guix/monad-repl.go
] GUILEC   guix/gexp.go
] GUILEC   guix/profiles.go
] GUILEC   guix/serialization.go
] GUILEC   guix/nar.go
] GUILEC   guix/derivations.go
] GUILEC   guix/grafts.go
] GUILEC   guix/repl.go
] GUILEC   guix/inferior.go
] GUILEC   guix/describe.go
] GUILEC   guix/channels.go
] GUILEC   guix/gnu-maintenance.go
] GUILEC   guix/self.go
] GUILEC   guix/upstream.go
] GUILEC   guix/licenses.go
] GUILEC   guix/lint.go
] GUILEC   guix/glob.go
] GUILEC   guix/git.go
] GUILEC   guix/graph.go
] GUILEC   guix/cache.go
] GUILEC   guix/cve.go
] GUILEC   guix/workers.go
] GUILEC   guix/zlib.go
] GUILEC   guix/lzlib.go
] GUILEC   guix/build-system.go
] GUILEC   guix/build-system/android-ndk.go
] GUILEC   guix/build-system/ant.go
] GUILEC   guix/build-system/cargo.go
] GUILEC   guix/build-system/clojure.go
] GUILEC   guix/build-system/cmake.go
] GUILEC   guix/build-system/dub.go
] GUILEC   guix/build-system/dune.go
] GUILEC   guix/build-system/emacs.go
] GUILEC   guix/build-system/font.go
] GUILEC   guix/build-system/go.go
] GUILEC   guix/build-system/meson.go
] GUILEC   guix/build-system/minify.go
] GUILEC   guix/build-system/asdf.go
] GUILEC   guix/build-system/glib-or-gtk.go
] GUILEC   guix/build-system/gnu.go
] GUILEC   guix/build-system/guile.go
] GUILEC   guix/build-system/haskell.go
] GUILEC   guix/build-system/julia.go
] GUILEC   guix/build-system/linux-module.go
] GUILEC   guix/build-system/node.go
] GUILEC   guix/build-system/perl.go
] GUILEC   guix/build-system/python.go
] GUILEC   guix/build-system/ocaml.go
] GUILEC   guix/build-system/waf.go
] GUILEC   guix/build-system/r.go
] GUILEC   guix/build-system/rakudo.go
] GUILEC   guix/build-system/ruby.go
] GUILEC   guix/build-system/scons.go
] GUILEC   guix/build-system/texlive.go
] GUILEC   guix/build-system/trivial.go
] GUILEC   guix/ftp-client.go
] GUILEC   guix/http-client.go
] GUILEC   guix/gnupg.go
] GUILEC   guix/elf.go
] GUILEC   guix/profiling.go
] GUILEC   guix/store.go
] GUILEC   guix/cvs-download.go
] GUILEC   guix/svn-download.go
] GUILEC   guix/colors.go
] GUILEC   guix/i18n.go
] GUILEC   guix/diagnostics.go
] GUILEC   guix/ui.go
] GUILEC   guix/status.go
] GUILEC   guix/build/android-ndk-build-system.go
] GUILEC   guix/build/ant-build-system.go
] GUILEC   guix/build/download.go
] GUILEC   guix/build/download-nar.go
] GUILEC   guix/build/cargo-build-system.go
] GUILEC   guix/build/cargo-utils.go
] GUILEC   guix/build/cmake-build-system.go
] GUILEC   guix/build/dub-build-system.go
] GUILEC   guix/build/dune-build-system.go
] GUILEC   guix/build/emacs-build-system.go
] GUILEC   guix/build/meson-build-system.go
] GUILEC   guix/build/minify-build-system.go
] GUILEC   guix/build/font-build-system.go
] GUILEC   guix/build/go-build-system.go
] GUILEC   guix/build/asdf-build-system.go
] GUILEC   guix/build/bzr.go
] GUILEC   guix/build/git.go
] GUILEC   guix/build/hg.go
] GUILEC   guix/build/glib-or-gtk-build-system.go
] GUILEC   guix/build/gnu-build-system.go
] GUILEC   guix/build/gnu-dist.go
] GUILEC   guix/build/guile-build-system.go
] GUILEC   guix/build/node-build-system.go
] GUILEC   guix/build/perl-build-system.go
] GUILEC   guix/build/python-build-system.go
] GUILEC   guix/build/ocaml-build-system.go
] GUILEC   guix/build/r-build-system.go
] GUILEC   guix/build/rakudo-build-system.go
] GUILEC   guix/build/ruby-build-system.go
] GUILEC   guix/build/scons-build-system.go
] GUILEC   guix/build/texlive-build-system.go
] GUILEC   guix/build/waf-build-system.go
] GUILEC   guix/build/haskell-build-system.go
] GUILEC   guix/build/julia-build-system.go
] GUILEC   guix/build/linux-module-build-system.go
] GUILEC   guix/build/store-copy.go
] GUILEC   guix/build/json.go
] GUILEC   guix/build/utils.go
] GUILEC   guix/build/union.go
] GUILEC   guix/build/profiles.go
] GUILEC   guix/build/compile.go
guix/build/compile.scm:46:14: warning: possibly unbound variable `tree-il-optimizations'
guix/build/compile.scm:49:14: warning: possibly unbound variable `cps-optimizations'
] GUILEC   guix/build/rpath.go
] GUILEC   guix/build/cvs.go
] GUILEC   guix/build/svn.go
] GUILEC   guix/build/syscalls.go
] GUILEC   guix/build/gremlin.go
] GUILEC   guix/build/debug-link.go
] GUILEC   guix/build/clojure-build-system.go
] GUILEC   guix/build/clojure-utils.go
] GUILEC   guix/build/emacs-utils.go
] GUILEC   guix/build/java-utils.go
] GUILEC   guix/build/lisp-utils.go
] GUILEC   guix/build/graft.go
] GUILEC   guix/build/bournish.go
] GUILEC   guix/build/qt-utils.go
] GUILEC   guix/build/make-bootstrap.go
] GUILEC   guix/search-paths.go
] GUILEC   guix/packages.go
] GUILEC   guix/import/cabal.go
] GUILEC   guix/import/cpan.go
] GUILEC   guix/import/cran.go
] GUILEC   guix/import/crate.go
] GUILEC   guix/import/elpa.go
] GUILEC   guix/import/gem.go
] GUILEC   guix/import/github.go
] GUILEC   guix/import/gnome.go
] GUILEC   guix/import/gnu.go
] GUILEC   guix/import/hackage.go
] GUILEC   guix/import/json.go
] GUILEC   guix/import/kde.go
] GUILEC   guix/import/launchpad.go
] GUILEC   guix/import/opam.go
] GUILEC   guix/import/print.go
] GUILEC   guix/import/pypi.go
] GUILEC   guix/import/snix.go
] GUILEC   guix/import/stackage.go
] GUILEC   guix/import/texlive.go
] GUILEC   guix/import/utils.go
] GUILEC   guix/scripts.go
] GUILEC   guix/scripts/download.go
] GUILEC   guix/scripts/perform-download.go
] GUILEC   guix/scripts/build.go
] GUILEC   guix/scripts/archive.go
] GUILEC   guix/scripts/import.go
] GUILEC   guix/scripts/package.go
] GUILEC   guix/scripts/install.go
] GUILEC   guix/scripts/remove.go
] GUILEC   guix/scripts/upgrade.go
] GUILEC   guix/scripts/search.go
] GUILEC   guix/scripts/show.go
] GUILEC   guix/scripts/gc.go
] GUILEC   guix/scripts/hash.go
] GUILEC   guix/scripts/pack.go
] GUILEC   guix/scripts/pull.go
] GUILEC   guix/scripts/processes.go
] GUILEC   guix/scripts/substitute.go
] GUILEC   guix/scripts/authenticate.go
] GUILEC   guix/scripts/refresh.go
] GUILEC   guix/scripts/repl.go
] GUILEC   guix/scripts/describe.go
] GUILEC   guix/scripts/system.go
] GUILEC   guix/scripts/system/search.go
] GUILEC   guix/scripts/system/reconfigure.go
] GUILEC   guix/scripts/lint.go
] GUILEC   guix/scripts/challenge.go
] GUILEC   guix/scripts/import/crate.go
] GUILEC   guix/scripts/import/cran.go
] GUILEC   guix/scripts/import/elpa.go
] GUILEC   guix/scripts/import/gem.go
] GUILEC   guix/scripts/import/gnu.go
] GUILEC   guix/scripts/import/hackage.go
] GUILEC   guix/scripts/import/json.go
] GUILEC   guix/scripts/import/nix.go
] GUILEC   guix/scripts/import/opam.go
] GUILEC   guix/scripts/import/pypi.go
] GUILEC   guix/scripts/import/stackage.go
] GUILEC   guix/scripts/import/texlive.go
] GUILEC   guix/scripts/environment.go
] GUILEC   guix/scripts/publish.go
] GUILEC   guix/scripts/edit.go
] GUILEC   guix/scripts/size.go
;;; Failed to autoload make-page-map in (charting):
;;; missing interface for module (charting)
;;; Failed to autoload make-page-map in (charting):
;;; missing interface for module (charting)
;;; Failed to autoload make-page-map in (charting):
;;; missing interface for module (charting)
guix/scripts/size.scm:222:2: warning: possibly unbound variable `make-page-map'
;;; Failed to autoload make-page-map in (charting):
;;; missing interface for module (charting)
;;; Failed to autoload make-page-map in (charting):
;;; missing interface for module (charting)
] GUILEC   guix/scripts/graph.go
] GUILEC   guix/scripts/weather.go
] GUILEC   guix/scripts/container.go
] GUILEC   guix/scripts/container/exec.go
] GUILEC   guix/scripts/deploy.go
] GUILEC   guix.go
] GUILEC   gnu.go
] GUILEC   gnu/artwork.go
] GUILEC   gnu/bootloader.go
] GUILEC   gnu/bootloader/grub.go
] GUILEC   gnu/bootloader/extlinux.go
] GUILEC   gnu/bootloader/u-boot.go
] GUILEC   gnu/bootloader/depthcharge.go
] GUILEC   gnu/ci.go
] GUILEC   gnu/packages.go
] GUILEC   gnu/packages/abduco.go
] GUILEC   gnu/packages/abiword.go
] GUILEC   gnu/packages/accessibility.go
] GUILEC   gnu/packages/acct.go
] GUILEC   gnu/packages/acl.go
] GUILEC   gnu/packages/ada.go
] GUILEC   gnu/packages/admin.go
] GUILEC   gnu/packages/adns.go
] GUILEC   gnu/packages/agda.go
] GUILEC   gnu/packages/algebra.go
] GUILEC   gnu/packages/aidc.go
] GUILEC   gnu/packages/android.go
] GUILEC   gnu/packages/animation.go
] GUILEC   gnu/packages/anthy.go
] GUILEC   gnu/packages/antivirus.go
] GUILEC   gnu/packages/apl.go
] GUILEC   gnu/packages/apr.go
] GUILEC   gnu/packages/arcan.go
] GUILEC   gnu/packages/aspell.go
] GUILEC   gnu/packages/assembly.go
] GUILEC   gnu/packages/astronomy.go
] GUILEC   gnu/packages/attr.go
] GUILEC   gnu/packages/audio.go
] GUILEC   gnu/packages/augeas.go
] GUILEC   gnu/packages/authentication.go
] GUILEC   gnu/packages/autogen.go
] GUILEC   gnu/packages/autotools.go
] GUILEC   gnu/packages/avahi.go
] GUILEC   gnu/packages/avr.go
] GUILEC   gnu/packages/axoloti.go
] GUILEC   gnu/packages/backup.go
] GUILEC   gnu/packages/base.go
] GUILEC   gnu/packages/bash.go
] GUILEC   gnu/packages/batik.go
] GUILEC   gnu/packages/bdw-gc.go
] GUILEC   gnu/packages/benchmark.go
] GUILEC   gnu/packages/bioconductor.go
] GUILEC   gnu/packages/bioinformatics.go
] GUILEC   gnu/packages/bittorrent.go
] GUILEC   gnu/packages/bison.go
] GUILEC   gnu/packages/boost.go
] GUILEC   gnu/packages/bootloaders.go
] GUILEC   gnu/packages/bootstrap.go
] GUILEC   gnu/packages/build-tools.go
] GUILEC   gnu/packages/busybox.go
] GUILEC   gnu/packages/c.go
] GUILEC   gnu/packages/calcurse.go
] GUILEC   gnu/packages/ccache.go
] GUILEC   gnu/packages/cdrom.go
] GUILEC   gnu/packages/cedille.go
] GUILEC   gnu/packages/certs.go
] GUILEC   gnu/packages/check.go
] GUILEC   gnu/packages/chemistry.go
] GUILEC   gnu/packages/chez.go
] GUILEC   gnu/packages/chromium.go
] GUILEC   gnu/packages/ci.go
] GUILEC   gnu/packages/cinnamon.go
] GUILEC   gnu/packages/clojure.go
] GUILEC   gnu/packages/cluster.go
] GUILEC   gnu/packages/cmake.go
] GUILEC   gnu/packages/cobol.go
] GUILEC   gnu/packages/code.go
] GUILEC   gnu/packages/commencement.go
] GUILEC   gnu/packages/compression.go
] GUILEC   gnu/packages/compton.go
] GUILEC   gnu/packages/conky.go
] GUILEC   gnu/packages/connman.go
] GUILEC   gnu/packages/cook.go
] GUILEC   gnu/packages/coq.go
] GUILEC   gnu/packages/cpio.go
] GUILEC   gnu/packages/cpp.go
] GUILEC   gnu/packages/cppi.go
] GUILEC   gnu/packages/cran.go
] GUILEC   gnu/packages/crates-io.go
] GUILEC   gnu/packages/cross-base.go
] GUILEC   gnu/packages/crypto.go
] GUILEC   gnu/packages/cryptsetup.go
] GUILEC   gnu/packages/cups.go
] GUILEC   gnu/packages/curl.go
] GUILEC   gnu/packages/cvassistant.go
] GUILEC   gnu/packages/cyrus-sasl.go
] GUILEC   gnu/packages/databases.go
] GUILEC   gnu/packages/datamash.go
] GUILEC   gnu/packages/datastructures.go
] GUILEC   gnu/packages/dav.go
] GUILEC   gnu/packages/dbm.go
] GUILEC   gnu/packages/dc.go
] GUILEC   gnu/packages/debian.go
] GUILEC   gnu/packages/debug.go
] GUILEC   gnu/packages/dejagnu.go
] GUILEC   gnu/packages/dico.go
] GUILEC   gnu/packages/dictionaries.go
] GUILEC   gnu/packages/diffoscope.go
] GUILEC   gnu/packages/digest.go
] GUILEC   gnu/packages/direct-connect.go
] GUILEC   gnu/packages/disk.go
] GUILEC   gnu/packages/distributed.go
] GUILEC   gnu/packages/display-managers.go
] GUILEC   gnu/packages/django.go
] GUILEC   gnu/packages/djvu.go
] GUILEC   gnu/packages/dlang.go
] GUILEC   gnu/packages/dns.go
] GUILEC   gnu/packages/docbook.go
] GUILEC   gnu/packages/docker.go
] GUILEC   gnu/packages/documentation.go
] GUILEC   gnu/packages/dunst.go
] GUILEC   gnu/packages/dvtm.go
] GUILEC   gnu/packages/easyrpg.go
] GUILEC   gnu/packages/ebook.go
] GUILEC   gnu/packages/ed.go
] GUILEC   gnu/packages/education.go
] GUILEC   gnu/packages/efi.go
] GUILEC   gnu/packages/electronics.go
] GUILEC   gnu/packages/elf.go
] GUILEC   gnu/packages/elixir.go
] GUILEC   gnu/packages/elm.go
] GUILEC   gnu/packages/embedded.go
] GUILEC   gnu/packages/emacs.go
] GUILEC   gnu/packages/emacs-xyz.go
] GUILEC   gnu/packages/emulators.go
] GUILEC   gnu/packages/enchant.go
] GUILEC   gnu/packages/engineering.go
] GUILEC   gnu/packages/enlightenment.go
] GUILEC   gnu/packages/entr.go
] GUILEC   gnu/packages/erlang.go
] GUILEC   gnu/packages/fabric-management.go
] GUILEC   gnu/packages/fcitx.go
] GUILEC   gnu/packages/figlet.go
] GUILEC   gnu/packages/file.go
] GUILEC   gnu/packages/file-systems.go
] GUILEC   gnu/packages/finance.go
] GUILEC   gnu/packages/firmware.go
] GUILEC   gnu/packages/flashing-tools.go
] GUILEC   gnu/packages/flex.go
] GUILEC   gnu/packages/fltk.go
] GUILEC   gnu/packages/fonts.go
] GUILEC   gnu/packages/fontutils.go
] GUILEC   gnu/packages/fpga.go
] GUILEC   gnu/packages/forth.go
] GUILEC   gnu/packages/freedesktop.go
] GUILEC   gnu/packages/freeipmi.go
] GUILEC   gnu/packages/ftp.go
] GUILEC   gnu/packages/fribidi.go
] GUILEC   gnu/packages/fvwm.go
] GUILEC   gnu/packages/game-development.go
] GUILEC   gnu/packages/games.go
] GUILEC   gnu/packages/gawk.go
] GUILEC   gnu/packages/gcal.go
] GUILEC   gnu/packages/gcc.go
] GUILEC   gnu/packages/gd.go
] GUILEC   gnu/packages/gdb.go
] GUILEC   gnu/packages/genealogy.go
] GUILEC   gnu/packages/genimage.go
] GUILEC   gnu/packages/geo.go
] GUILEC   gnu/packages/gettext.go
] GUILEC   gnu/packages/ghostscript.go
] GUILEC   gnu/packages/gimp.go
] GUILEC   gnu/packages/gkrellm.go
] GUILEC   gnu/packages/gl.go
] GUILEC   gnu/packages/glib.go
] GUILEC   gnu/packages/gnome.go
] GUILEC   gnu/packages/gnu-doc.go
] GUILEC   gnu/packages/gnucash.go
] GUILEC   gnu/packages/gnunet.go
] GUILEC   gnu/packages/gnupg.go
] GUILEC   gnu/packages/gnustep.go
] GUILEC   gnu/packages/gnuzilla.go
] GUILEC   gnu/packages/gnu-pw-mgr.go
] GUILEC   gnu/packages/gobby.go
] GUILEC   gnu/packages/golang.go
] GUILEC   gnu/packages/gperf.go
] GUILEC   gnu/packages/gpodder.go
] GUILEC   gnu/packages/gprolog.go
] GUILEC   gnu/packages/gps.go
] GUILEC   gnu/packages/graph.go
] GUILEC   gnu/packages/graphics.go
] GUILEC   gnu/packages/graphviz.go
] GUILEC   gnu/packages/groff.go
] GUILEC   gnu/packages/groovy.go
] GUILEC   gnu/packages/gsasl.go
] GUILEC   gnu/packages/gstreamer.go
] GUILEC   gnu/packages/gtk.go
] GUILEC   gnu/packages/guile.go
] GUILEC   gnu/packages/guile-wm.go
] GUILEC   gnu/packages/guile-xyz.go
] GUILEC   gnu/packages/gv.go
] GUILEC   gnu/packages/gxmessage.go
] GUILEC   gnu/packages/hardware.go
] GUILEC   gnu/packages/haskell.go
] GUILEC   gnu/packages/haskell-apps.go
] GUILEC   gnu/packages/haskell-check.go
] GUILEC   gnu/packages/haskell-crypto.go
] GUILEC   gnu/packages/haskell-web.go
] GUILEC   gnu/packages/haskell-xyz.go
] GUILEC   gnu/packages/ham-radio.go
] GUILEC   gnu/packages/hexedit.go
] GUILEC   gnu/packages/hugs.go
] GUILEC   gnu/packages/hurd.go
] GUILEC   gnu/packages/hyperledger.go
] GUILEC   gnu/packages/i2p.go
] GUILEC   gnu/packages/ibus.go
] GUILEC   gnu/packages/icu4c.go
] GUILEC   gnu/packages/idris.go
] GUILEC   gnu/packages/idutils.go
] GUILEC   gnu/packages/image.go
] GUILEC   gnu/packages/image-processing.go
] GUILEC   gnu/packages/image-viewers.go
] GUILEC   gnu/packages/imagemagick.go
] GUILEC   gnu/packages/inklingreader.go
] GUILEC   gnu/packages/inkscape.go
] GUILEC   gnu/packages/ipfs.go
] GUILEC   gnu/packages/irc.go
] GUILEC   gnu/packages/iso-codes.go
] GUILEC   gnu/packages/java.go
] GUILEC   gnu/packages/java-compression.go
] GUILEC   gnu/packages/java-maths.go
] GUILEC   gnu/packages/javascript.go
] GUILEC   gnu/packages/jemalloc.go
] GUILEC   gnu/packages/jrnl.go
] GUILEC   gnu/packages/jose.go
] GUILEC   gnu/packages/julia.go
] GUILEC   gnu/packages/jupyter.go
] GUILEC   gnu/packages/kawa.go
] GUILEC   gnu/packages/kde.go
] GUILEC   gnu/packages/kde-frameworks.go
] GUILEC   gnu/packages/kde-plasma.go
] GUILEC   gnu/packages/kerberos.go
] GUILEC   gnu/packages/key-mon.go
] GUILEC   gnu/packages/kodi.go
] GUILEC   gnu/packages/language.go
] GUILEC   gnu/packages/lego.go
] GUILEC   gnu/packages/less.go
] GUILEC   gnu/packages/lesstif.go
] GUILEC   gnu/packages/libbsd.go
] GUILEC   gnu/packages/libcanberra.go
] GUILEC   gnu/packages/libdaemon.go
] GUILEC   gnu/packages/libedit.go
] GUILEC   gnu/packages/libevent.go
] GUILEC   gnu/packages/libffcall.go
] GUILEC   gnu/packages/libffi.go
] GUILEC   gnu/packages/libftdi.go
] GUILEC   gnu/packages/license.go
] GUILEC   gnu/packages/calendar.go
] GUILEC   gnu/packages/libidn.go
] GUILEC   gnu/packages/libphidget.go
] GUILEC   gnu/packages/libreoffice.go
] GUILEC   gnu/packages/libsigsegv.go
] GUILEC   gnu/packages/libunistring.go
] GUILEC   gnu/packages/libusb.go
] GUILEC   gnu/packages/libunwind.go
] GUILEC   gnu/packages/lighting.go
] GUILEC   gnu/packages/linux.go
] GUILEC   gnu/packages/lirc.go
] GUILEC   gnu/packages/lisp.go
] GUILEC   gnu/packages/llvm.go
] GUILEC   gnu/packages/lout.go
] GUILEC   gnu/packages/logging.go
] GUILEC   gnu/packages/logo.go
] GUILEC   gnu/packages/lolcode.go
] GUILEC   gnu/packages/lsof.go
] GUILEC   gnu/packages/lua.go
] GUILEC   gnu/packages/lxde.go
] GUILEC   gnu/packages/lxqt.go
] GUILEC   gnu/packages/m4.go
] GUILEC   gnu/packages/machine-learning.go
] GUILEC   gnu/packages/magic-wormhole.go
] GUILEC   gnu/packages/man.go
] GUILEC   gnu/packages/mastodon.go
] GUILEC   gnu/packages/mail.go
] GUILEC   gnu/packages/make-bootstrap.go
] GUILEC   gnu/packages/markup.go
] GUILEC   gnu/packages/marst.go
] GUILEC   gnu/packages/mate.go
] GUILEC   gnu/packages/maths.go
] GUILEC   gnu/packages/maven.go
] GUILEC   gnu/packages/mc.go
] GUILEC   gnu/packages/mcrypt.go
] GUILEC   gnu/packages/medical.go
] GUILEC   gnu/packages/mes.go
] GUILEC   gnu/packages/messaging.go
] GUILEC   gnu/packages/mingw.go
] GUILEC   gnu/packages/microcom.go
] GUILEC   gnu/packages/moe.go
] GUILEC   gnu/packages/motti.go
] GUILEC   gnu/packages/monitoring.go
] GUILEC   gnu/packages/mono.go
] GUILEC   gnu/packages/moreutils.go
] GUILEC   gnu/packages/mpd.go
] GUILEC   gnu/packages/mp3.go
] GUILEC   gnu/packages/mpi.go
] GUILEC   gnu/packages/multiprecision.go
] GUILEC   gnu/packages/music.go
] GUILEC   gnu/packages/musl.go
] GUILEC   gnu/packages/mtools.go
] GUILEC   gnu/packages/nano.go
] GUILEC   gnu/packages/ncdu.go
] GUILEC   gnu/packages/ncurses.go
] GUILEC   gnu/packages/netpbm.go
] GUILEC   gnu/packages/nettle.go
] GUILEC   gnu/packages/networking.go
] GUILEC   gnu/packages/nfs.go
] GUILEC   gnu/packages/nickle.go
] GUILEC   gnu/packages/nim.go
] GUILEC   gnu/packages/ninja.go
] GUILEC   gnu/packages/node.go
] GUILEC   gnu/packages/noweb.go
] GUILEC   gnu/packages/nss.go
] GUILEC   gnu/packages/ntp.go
] GUILEC   gnu/packages/nutrition.go
] GUILEC   gnu/packages/nvi.go
] GUILEC   gnu/packages/ocaml.go
] GUILEC   gnu/packages/ocr.go
] GUILEC   gnu/packages/onc-rpc.go
] GUILEC   gnu/packages/opencl.go
] GUILEC   gnu/packages/openbox.go
] GUILEC   gnu/packages/openldap.go
] GUILEC   gnu/packages/openstack.go
] GUILEC   gnu/packages/orpheus.go
] GUILEC   gnu/packages/ots.go
] GUILEC   gnu/packages/package-management.go
] GUILEC   gnu/packages/parallel.go
] GUILEC   gnu/packages/password-utils.go
] GUILEC   gnu/packages/patchutils.go
] GUILEC   gnu/packages/pciutils.go
] GUILEC   gnu/packages/pcre.go
] GUILEC   gnu/packages/pdf.go
] GUILEC   gnu/packages/pem.go
] GUILEC   gnu/packages/perl.go
] GUILEC   gnu/packages/perl-check.go
] GUILEC   gnu/packages/perl-compression.go
] GUILEC   gnu/packages/perl-web.go
] GUILEC   gnu/packages/perl6.go
] GUILEC   gnu/packages/photo.go
] GUILEC   gnu/packages/phabricator.go
] GUILEC   gnu/packages/php.go
] GUILEC   gnu/packages/pkg-config.go
] GUILEC   gnu/packages/plotutils.go
] GUILEC   gnu/packages/poedit.go
] GUILEC   gnu/packages/polkit.go
] GUILEC   gnu/packages/popt.go
] GUILEC   gnu/packages/printers.go
] GUILEC   gnu/packages/profiling.go
] GUILEC   gnu/packages/pth.go
] GUILEC   gnu/packages/pulseaudio.go
] GUILEC   gnu/packages/pumpio.go
] GUILEC   gnu/packages/pretty-print.go
] GUILEC   gnu/packages/protobuf.go
] GUILEC   gnu/packages/pure.go
] GUILEC   gnu/packages/pv.go
] GUILEC   gnu/packages/python.go
] GUILEC   gnu/packages/python-check.go
] GUILEC   gnu/packages/python-compression.go
] GUILEC   gnu/packages/python-crypto.go
] GUILEC   gnu/packages/python-web.go
] GUILEC   gnu/packages/python-xyz.go
] GUILEC   gnu/packages/toys.go
] GUILEC   gnu/packages/tryton.go
] GUILEC   gnu/packages/qt.go
] GUILEC   gnu/packages/ragel.go
] GUILEC   gnu/packages/rails.go
] GUILEC   gnu/packages/ratpoison.go
] GUILEC   gnu/packages/rdesktop.go
] GUILEC   gnu/packages/rdf.go
] GUILEC   gnu/packages/re2c.go
] GUILEC   gnu/packages/readline.go
] GUILEC   gnu/packages/rednotebook.go
] GUILEC   gnu/packages/regex.go
] GUILEC   gnu/packages/robotics.go
] GUILEC   gnu/packages/rrdtool.go
] GUILEC   gnu/packages/rsync.go
] GUILEC   gnu/packages/ruby.go
] GUILEC   gnu/packages/rush.go
] GUILEC   gnu/packages/rust.go
] GUILEC   gnu/packages/samba.go
] GUILEC   gnu/packages/sagemath.go
] GUILEC   gnu/packages/sawfish.go
] GUILEC   gnu/packages/scanner.go
] GUILEC   gnu/packages/scheme.go
] GUILEC   gnu/packages/screen.go
] GUILEC   gnu/packages/scribus.go
] GUILEC   gnu/packages/scsi.go
] GUILEC   gnu/packages/sdcc.go
] GUILEC   gnu/packages/sdl.go
] GUILEC   gnu/packages/search.go
] GUILEC   gnu/packages/security-token.go
] GUILEC   gnu/packages/selinux.go
] GUILEC   gnu/packages/serialization.go
] GUILEC   gnu/packages/serveez.go
] GUILEC   gnu/packages/shells.go
] GUILEC   gnu/packages/shellutils.go
] GUILEC   gnu/packages/simh.go
] GUILEC   gnu/packages/simulation.go
] GUILEC   gnu/packages/skarnet.go
] GUILEC   gnu/packages/skribilo.go
] GUILEC   gnu/packages/slang.go
] GUILEC   gnu/packages/smalltalk.go
] GUILEC   gnu/packages/sml.go
] GUILEC   gnu/packages/speech.go
] GUILEC   gnu/packages/sphinx.go
] GUILEC   gnu/packages/spice.go
] GUILEC   gnu/packages/sqlite.go
] GUILEC   gnu/packages/squirrel.go
] GUILEC   gnu/packages/ssh.go
] GUILEC   gnu/packages/sssd.go
] GUILEC   gnu/packages/stalonetray.go
] GUILEC   gnu/packages/statistics.go
] GUILEC   gnu/packages/stb.go
] GUILEC   gnu/packages/storage.go
] GUILEC   gnu/packages/suckless.go
] GUILEC   gnu/packages/swig.go
] GUILEC   gnu/packages/sync.go
] GUILEC   gnu/packages/syncthing.go
] GUILEC   gnu/packages/synergy.go
] GUILEC   gnu/packages/syndication.go
] GUILEC   gnu/packages/task-management.go
] GUILEC   gnu/packages/tbb.go
] GUILEC   gnu/packages/tcl.go
] GUILEC   gnu/packages/telephony.go
] GUILEC   gnu/packages/terminals.go
] GUILEC   gnu/packages/terraform.go
] GUILEC   gnu/packages/texinfo.go
] GUILEC   gnu/packages/tex.go
] GUILEC   gnu/packages/textutils.go
] GUILEC   gnu/packages/text-editors.go
] GUILEC   gnu/packages/tigervnc.go
] GUILEC   gnu/packages/time.go
] GUILEC   gnu/packages/tls.go
] GUILEC   gnu/packages/tmux.go
] GUILEC   gnu/packages/tor.go
] GUILEC   gnu/packages/tv.go
] GUILEC   gnu/packages/uml.go
] GUILEC   gnu/packages/unrtf.go
] GUILEC   gnu/packages/upnp.go
] GUILEC   gnu/packages/usb-modeswitch.go
] GUILEC   gnu/packages/uucp.go
] GUILEC   gnu/packages/valgrind.go
] GUILEC   gnu/packages/version-control.go
] GUILEC   gnu/packages/video.go
] GUILEC   gnu/packages/vim.go
] GUILEC   gnu/packages/virtualization.go
] GUILEC   gnu/packages/vpn.go
] GUILEC   gnu/packages/vulkan.go
] GUILEC   gnu/packages/w3m.go
] GUILEC   gnu/packages/wdiff.go
] GUILEC   gnu/packages/web.go
] GUILEC   gnu/packages/web-browsers.go
] GUILEC   gnu/packages/webkit.go
] GUILEC   gnu/packages/wget.go
] GUILEC   gnu/packages/wicd.go
] GUILEC   gnu/packages/wine.go
] GUILEC   gnu/packages/wireservice.go
] GUILEC   gnu/packages/wm.go
] GUILEC   gnu/packages/wordnet.go
] GUILEC   gnu/packages/wv.go
] GUILEC   gnu/packages/wxwidgets.go
] GUILEC   gnu/packages/xfig.go
] GUILEC   gnu/packages/xiph.go
] GUILEC   gnu/packages/xml.go
] GUILEC   gnu/packages/xnee.go
] GUILEC   gnu/packages/xdisorg.go
] GUILEC   gnu/packages/xorg.go
] GUILEC   gnu/packages/xfce.go
] GUILEC   gnu/packages/zile.go
] GUILEC   gnu/packages/zwave.go
] GUILEC   gnu/services.go
] GUILEC   gnu/services/admin.go
] GUILEC   gnu/services/audio.go
] GUILEC   gnu/services/auditd.go
] GUILEC   gnu/services/avahi.go
] GUILEC   gnu/services/base.go
] GUILEC   gnu/services/certbot.go
] GUILEC   gnu/services/cgit.go
] GUILEC   gnu/services/configuration.go
] GUILEC   gnu/services/cuirass.go
] GUILEC   gnu/services/cups.go
] GUILEC   gnu/services/databases.go
] GUILEC   gnu/services/dbus.go
] GUILEC   gnu/services/desktop.go
] GUILEC   gnu/services/dict.go
] GUILEC   gnu/services/dns.go
] GUILEC   gnu/services/docker.go
] GUILEC   gnu/services/authentication.go
] GUILEC   gnu/services/games.go
] GUILEC   gnu/services/getmail.go
] GUILEC   gnu/services/guix.go
] GUILEC   gnu/services/kerberos.go
] GUILEC   gnu/services/lirc.go
] GUILEC   gnu/services/virtualization.go
] GUILEC   gnu/services/mail.go
] GUILEC   gnu/services/mcron.go
] GUILEC   gnu/services/messaging.go
] GUILEC   gnu/services/monitoring.go
] GUILEC   gnu/services/networking.go
] GUILEC   gnu/services/nix.go
] GUILEC   gnu/services/nfs.go
] GUILEC   gnu/services/security-token.go
] GUILEC   gnu/services/shepherd.go
] GUILEC   gnu/services/sound.go
] GUILEC   gnu/services/herd.go
] GUILEC   gnu/services/pm.go
] GUILEC   gnu/services/rsync.go
] GUILEC   gnu/services/sddm.go
] GUILEC   gnu/services/spice.go
] GUILEC   gnu/services/ssh.go
] GUILEC   gnu/services/sysctl.go
] GUILEC   gnu/services/telephony.go
] GUILEC   gnu/services/version-control.go
] GUILEC   gnu/services/vpn.go
] GUILEC   gnu/services/web.go
] GUILEC   gnu/services/xorg.go
] GUILEC   gnu/system.go
] GUILEC   gnu/system/accounts.go
] GUILEC   gnu/system/file-systems.go
] GUILEC   gnu/system/install.go
] GUILEC   gnu/system/keyboard.go
] GUILEC   gnu/system/linux-container.go
] GUILEC   gnu/system/linux-initrd.go
] GUILEC   gnu/system/locale.go
] GUILEC   gnu/system/mapped-devices.go
] GUILEC   gnu/system/nss.go
] GUILEC   gnu/system/pam.go
] GUILEC   gnu/system/shadow.go
] GUILEC   gnu/system/uuid.go
] GUILEC   gnu/system/vm.go
] GUILEC   gnu/machine.go
] GUILEC   gnu/machine/ssh.go
] GUILEC   gnu/build/accounts.go
] GUILEC   gnu/build/activation.go
] GUILEC   gnu/build/bootloader.go
] GUILEC   gnu/build/cross-toolchain.go
] GUILEC   gnu/build/file-systems.go
] GUILEC   gnu/build/install.go
] GUILEC   gnu/build/linux-boot.go
] GUILEC   gnu/build/linux-container.go
] GUILEC   gnu/build/linux-initrd.go
] GUILEC   gnu/build/linux-modules.go
gnu/build/linux-modules.scm:319:13: warning: possibly unbound variable `load-linux-module/fd'
] GUILEC   gnu/build/marionette.go
] GUILEC   gnu/build/vm.go
] GUILEC   gnu/tests.go
] GUILEC   gnu/tests/audio.go
] GUILEC   gnu/tests/base.go
] GUILEC   gnu/tests/databases.go
] GUILEC   gnu/tests/desktop.go
] GUILEC   gnu/tests/dict.go
] GUILEC   gnu/tests/docker.go
] GUILEC   gnu/tests/guix.go
] GUILEC   gnu/tests/monitoring.go
] GUILEC   gnu/tests/nfs.go
] GUILEC   gnu/tests/install.go
] GUILEC   gnu/tests/ldap.go
] GUILEC   gnu/tests/mail.go
] GUILEC   gnu/tests/messaging.go
] GUILEC   gnu/tests/networking.go
] GUILEC   gnu/tests/reconfigure.go
] GUILEC   gnu/tests/rsync.go
] GUILEC   gnu/tests/security-token.go
] GUILEC   gnu/tests/singularity.go
] GUILEC   gnu/tests/ssh.go
] GUILEC   gnu/tests/version-control.go
] GUILEC   gnu/tests/virtualization.go
] GUILEC   gnu/tests/web.go
] GUILEC   guix/ssh.go
] GUILEC   guix/remote.go
] GUILEC   guix/scripts/copy.go
] GUILEC   guix/store/ssh.go
] GUILEC   guix/scripts/offload.go
] GUILEC   guix/store/database.go
] GUILEC   guix/store/deduplication.go
] GUILEC   guix/store/roots.go
] GUILEC   guix/config.go
] GUILEC   guix/tests.go
] GUILEC   guix/tests/http.go
] GUILEC   guix/tests/git.go

Some deprecated features have been used.  Set the environment
variable GUILE_WARN_DEPRECATED to "detailed" and rerun the
program to get more information.  Set it to "no" to suppress
this message.
  HELP2MAN doc/guix-archive.1
  HELP2MAN doc/guix-build.1
  HELP2MAN doc/guix-challenge.1
  HELP2MAN doc/guix-download.1
  HELP2MAN doc/guix-edit.1
  HELP2MAN doc/guix-environment.1
  HELP2MAN doc/guix-gc.1
  HELP2MAN doc/guix-hash.1
  HELP2MAN doc/guix-import.1
  HELP2MAN doc/guix-lint.1
  HELP2MAN doc/guix-package.1
  HELP2MAN doc/guix-publish.1
  HELP2MAN doc/guix-pull.1
  HELP2MAN doc/guix-refresh.1
  HELP2MAN doc/guix-size.1
  HELP2MAN doc/guix-system.1
  HELP2MAN doc/guix.1
  HELP2MAN doc/guix-daemon.1
  DOT      doc/images/bootstrap-graph.png
  DOT      doc/images/bootstrap-packages.png
  DOT      doc/images/coreutils-graph.png
  DOT      doc/images/coreutils-bag-graph.png
  DOT      doc/images/service-graph.png
  DOT      doc/images/shepherd-graph.png
  GEN      etc/guix-daemon.service
  GEN      etc/guix-publish.service
  GEN      etc/guix-daemon.conf
  GEN      etc/guix-publish.conf
make  check-TESTS check-local
make[3]: Entering directory '/tmp/guix'
make[4]: Entering directory '/tmp/guix'
PASS: tests/accounts.scm
PASS: tests/base16.scm
SKIP: tests/base32.scm
PASS: tests/base64.scm
PASS: tests/bournish.scm
PASS: tests/builders.scm
PASS: tests/build-utils.scm
PASS: tests/cache.scm
PASS: tests/challenge.scm
PASS: tests/channels.scm
PASS: tests/combinators.scm
PASS: tests/containers.scm
PASS: tests/cpan.scm
SKIP: tests/cpio.scm
PASS: tests/cran.scm
PASS: tests/crate.scm
PASS: tests/cve.scm
PASS: tests/debug-link.scm
PASS: tests/derivations.scm
PASS: tests/discovery.scm
PASS: tests/elpa.scm
PASS: tests/file-systems.scm
PASS: tests/gem.scm
PASS: tests/gexp.scm
PASS: tests/git.scm
PASS: tests/glob.scm
PASS: tests/gnu-maintenance.scm
PASS: tests/grafts.scm
PASS: tests/graph.scm
PASS: tests/gremlin.scm
SKIP: tests/hackage.scm
PASS: tests/import-utils.scm
PASS: tests/inferior.scm
SKIP: tests/lint.scm
PASS: tests/lzlib.scm
PASS: tests/modules.scm
PASS: tests/monads.scm
PASS: tests/nar.scm
PASS: tests/networking.scm
PASS: tests/opam.scm
PASS: tests/packages.scm
PASS: tests/pack.scm
PASS: tests/pki.scm
PASS: tests/print.scm
PASS: tests/processes.scm
PASS: tests/profiles.scm
PASS: tests/publish.scm
SKIP: tests/pypi.scm
PASS: tests/records.scm
PASS: tests/scripts.scm
PASS: tests/scripts-build.scm
PASS: tests/search-paths.scm
PASS: tests/services.scm
PASS: tests/sets.scm
PASS: tests/size.scm
SKIP: tests/snix.scm
PASS: tests/status.scm
PASS: tests/store-database.scm
PASS: tests/store-deduplication.scm
PASS: tests/store-roots.scm
PASS: tests/store.scm
PASS: tests/substitute.scm
PASS: tests/swh.scm
SKIP: tests/syscalls.scm
PASS: tests/system.scm
PASS: tests/texlive.scm
PASS: tests/ui.scm
PASS: tests/union.scm
SKIP: tests/upstream.scm
PASS: tests/utils.scm
PASS: tests/uuid.scm
PASS: tests/workers.scm
PASS: tests/zlib.scm
PASS: tests/guix-build.sh
PASS: tests/guix-build-branch.sh
PASS: tests/guix-download.sh
PASS: tests/guix-hash.sh
PASS: tests/guix-pack.sh
PASS: tests/guix-pack-localstatedir.sh
PASS: tests/guix-pack-relocatable.sh
PASS: tests/guix-package.sh
PASS: tests/guix-package-aliases.sh
PASS: tests/guix-package-net.sh
PASS: tests/guix-system.sh
PASS: tests/guix-archive.sh
PASS: tests/guix-authenticate.sh
PASS: tests/guix-environment.sh
PASS: tests/guix-environment-container.sh
PASS: tests/guix-graph.sh
PASS: tests/guix-describe.sh
PASS: tests/guix-lint.sh
PASS: tests/guix-gc.sh
PASS: tests/guix-daemon.sh
============================================================================
Testsuite summary for GNU Guix 1.0.1.3995-2b2f7
============================================================================
TOTAL: 966
PASS:  955
SKIP:  9
XFAIL: 2
FAIL:  0
XPASS: 0
ERROR: 0
============================================================================
make[4]: Leaving directory '/tmp/guix'
make[3]: Nothing to be done for 'check-local'.
make[3]: Leaving directory '/tmp/guix'
make[2]: Leaving directory '/tmp/guix'
make[1]: Leaving directory '/tmp/guix'
#+end_example


Maintenant je pourrait installer mon =guix= fraîchement compilé quelque part, mais je préfère le lancer en mode "pré-installation" qui a l'avantage que je peux faire des modifications et le ré-lancer tout de suite. Ceci nécessite de passer par un petit script qui simule une installation:
#+begin_src sh :session *guix-edit* :results output :exports both
./pre-inst-env guix describe
#+end_src

#+RESULTS:
: Git checkout:
:   repository: /tmp/guix
:   branch: master
:   commit: 2b2f7e5d8cd154c8bbf8d531d2edd6801956d36d

Un simple =guix= sans ce script lance encore la version que j'ai eu dès le début de ce tutoriel:
#+begin_src sh :session *guix-edit* :results output :exports both
guix describe
#+end_src

#+RESULTS:
: Generation 4	Oct 02 2019 21:00:32	(current)
:   guix 8ce47c2
:     repository URL: https://git.savannah.gnu.org/git/guix.git
:     branch: master
:     commit: 8ce47c20209ad9b87e1b7595556f22b2b5e2b8a2

Les deux versions partagent, sans aucun conflit, l'espace de stockage sous =/gnu/store=, mais aussi ma collection personnelle de paquets. Je peux donc installer un paquet du guix "standard" suivi d'un autre paquet du guix "personnalisé".
