GNU bug report logs - #28399
[PATCH]: Fix mysql activation, and add a basic test.

Previous Next

Package: guix-patches;

Reported by: Christopher Baines <mail <at> cbaines.net>

Date: Sat, 9 Sep 2017 14:40:01 UTC

Severity: normal

Tags: patch

Done: Christopher Baines <mail <at> cbaines.net>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 28399 in the body.
You can then email your comments to 28399 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#28399; Package guix-patches. (Sat, 09 Sep 2017 14:40:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Christopher Baines <mail <at> cbaines.net>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sat, 09 Sep 2017 14:40:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Christopher Baines <mail <at> cbaines.net>
To: guix-patches <at> gnu.org
Subject: [PATCH]: Fix mysql activation, and add a basic test.
Date: Sat, 9 Sep 2017 15:39:05 +0100
[Message part 1 (text/plain, inline)]
Christopher Baines (2):
  services: mysql: Fix missing modules on activation.
  tests: databases: Add a simple test for MySQL.

 gnu/services/databases.scm | 92 +++++++++++++++++++++++-----------------------
 gnu/tests/databases.scm    | 61 +++++++++++++++++++++++++++++-
 2 files changed, 107 insertions(+), 46 deletions(-)
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#28399; Package guix-patches. (Sat, 09 Sep 2017 14:54:02 GMT) Full text and rfc822 format available.

Message #8 received at 28399 <at> debbugs.gnu.org (full text, mbox):

From: Christopher Baines <mail <at> cbaines.net>
To: 28399 <at> debbugs.gnu.org
Subject: [PATCH 2/2] tests: databases: Add a simple test for MySQL.
Date: Sat,  9 Sep 2017 15:53:43 +0100
Previously, the activation phase for this service caused some systems using it
to not boot. This test checks that it's possible to boot a system using it,
and at least start the service.

* gnu/tests/databases.scm (%mysql-os, %test-mysql): New variables.
  (run-mysql-test): New procedure.
---
 gnu/tests/databases.scm | 61 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 60 insertions(+), 1 deletion(-)

diff --git a/gnu/tests/databases.scm b/gnu/tests/databases.scm
index 9d9a75374..6791c561a 100644
--- a/gnu/tests/databases.scm
+++ b/gnu/tests/databases.scm
@@ -27,7 +27,8 @@
   #:use-module (gnu services networking)
   #:use-module (guix gexp)
   #:use-module (guix store)
-  #:export (%test-memcached))
+  #:export (%test-memcached
+            %test-mysql))
 
 (define %memcached-os
   (simple-operating-system
@@ -121,3 +122,61 @@
    (name "memcached")
    (description "Connect to a running MEMCACHED server.")
    (value (run-memcached-test))))
+
+
+;;;
+;;; The MySQL service.
+;;;
+
+(define %mysql-os
+  (simple-operating-system
+   (mysql-service)))
+
+(define* (run-mysql-test)
+  "Run tests in %MYSQL-OS."
+  (define os
+    (marionette-operating-system
+     %mysql-os
+     #:imported-modules '((gnu services herd)
+                          (guix combinators))))
+
+  (define vm
+    (virtual-machine
+     (operating-system os)
+     (memory-size 512)))
+
+  (define test
+    (with-imported-modules '((gnu build marionette))
+      #~(begin
+          (use-modules (srfi srfi-11) (srfi srfi-64)
+                       (gnu build marionette))
+
+          (define marionette
+            (make-marionette (list #$vm)))
+
+          (mkdir #$output)
+          (chdir #$output)
+
+          (test-begin "mysql")
+
+          (test-assert "service running"
+            (marionette-eval
+             '(begin
+                (use-modules (gnu services herd))
+                (match (start-service 'mysql)
+                  (#f #f)
+                  (('service response-parts ...)
+                   (match (assq-ref response-parts 'running)
+                     ((pid) (number? pid))))))
+             marionette))
+
+          (test-end)
+          (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
+
+  (gexp->derivation "mysql-test" test))
+
+(define %test-mysql
+  (system-test
+   (name "mysql")
+   (description "Start the MySQL service.")
+   (value (run-mysql-test))))
-- 
2.14.1





Information forwarded to guix-patches <at> gnu.org:
bug#28399; Package guix-patches. (Sat, 09 Sep 2017 14:54:02 GMT) Full text and rfc822 format available.

Message #11 received at 28399 <at> debbugs.gnu.org (full text, mbox):

From: Christopher Baines <mail <at> cbaines.net>
To: 28399 <at> debbugs.gnu.org
Subject: [PATCH 1/2] services: mysql: Fix missing modules on activation.
Date: Sat,  9 Sep 2017 15:53:42 +0100
Some systems using the MySQL service would fail to boot, giving the error:

  ERROR: no code for module (ice-9 popen)

* gnu/services/databases.scm (%mysql-activation): Wrap the gexp using
  with-imported-modules, to ensure that the required modules are available.
---
 gnu/services/databases.scm | 92 +++++++++++++++++++++++-----------------------
 1 file changed, 47 insertions(+), 45 deletions(-)

diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
index de1f6b841..6b4e6e706 100644
--- a/gnu/services/databases.scm
+++ b/gnu/services/databases.scm
@@ -297,56 +297,58 @@ port=" (number->string port) "
   "Return an activation gexp for the MySQL or MariaDB database server."
   (let ((mysql  (mysql-configuration-mysql config))
         (my.cnf (mysql-configuration-file config)))
-    #~(begin
-        (use-modules (ice-9 popen)
-                     (guix build utils))
-        (let* ((mysqld  (string-append #$mysql "/bin/mysqld"))
-               (user    (getpwnam "mysql"))
-               (uid     (passwd:uid user))
-               (gid     (passwd:gid user))
-               (datadir "/var/lib/mysql")
-               (rundir  "/run/mysqld"))
-          (mkdir-p datadir)
-          (chown datadir uid gid)
-          (mkdir-p rundir)
-          (chown rundir uid gid)
-          ;; Initialize the database when it doesn't exist.
-          (when (not (file-exists? (string-append datadir "/mysql")))
-            (if (string-prefix? "mysql-" (strip-store-file-name #$mysql))
-                ;; For MySQL.
-                (system* mysqld
-                         (string-append "--defaults-file=" #$my.cnf)
-                         "--initialize"
-                         "--user=mysql")
-                ;; For MariaDB.
-                ;; XXX: The 'mysql_install_db' script doesn't work directly
-                ;;      due to missing 'mkdir' in PATH.
-                (let ((p (open-pipe* OPEN_WRITE mysqld
-                                     (string-append
-                                      "--defaults-file=" #$my.cnf)
-                                     "--bootstrap"
-                                     "--user=mysql")))
-                  ;; Create the system database, as does by 'mysql_install_db'.
-                  (display "create database mysql;\n" p)
-                  (display "use mysql;\n" p)
-                  (for-each
-                   (lambda (sql)
-                     (call-with-input-file
-                         (string-append #$mysql "/share/mysql/" sql)
-                       (lambda (in) (dump-port in p))))
-                   '("mysql_system_tables.sql"
-                     "mysql_performance_tables.sql"
-                     "mysql_system_tables_data.sql"
-                     "fill_help_tables.sql"))
-                  ;; Remove the anonymous user and disable root access from
-                  ;; remote machines, as does by 'mysql_secure_installation'.
-                  (display "
+    (with-imported-modules '((ice-9 popen)
+                             (guix build utils))
+      #~(begin
+          (use-modules (ice-9 popen)
+                       (guix build utils))
+          (let* ((mysqld  (string-append #$mysql "/bin/mysqld"))
+                 (user    (getpwnam "mysql"))
+                 (uid     (passwd:uid user))
+                 (gid     (passwd:gid user))
+                 (datadir "/var/lib/mysql")
+                 (rundir  "/run/mysqld"))
+            (mkdir-p datadir)
+            (chown datadir uid gid)
+            (mkdir-p rundir)
+            (chown rundir uid gid)
+            ;; Initialize the database when it doesn't exist.
+            (when (not (file-exists? (string-append datadir "/mysql")))
+              (if (string-prefix? "mysql-" (strip-store-file-name #$mysql))
+                  ;; For MySQL.
+                  (system* mysqld
+                           (string-append "--defaults-file=" #$my.cnf)
+                           "--initialize"
+                           "--user=mysql")
+                  ;; For MariaDB.
+                  ;; XXX: The 'mysql_install_db' script doesn't work directly
+                  ;;      due to missing 'mkdir' in PATH.
+                  (let ((p (open-pipe* OPEN_WRITE mysqld
+                                       (string-append
+                                        "--defaults-file=" #$my.cnf)
+                                       "--bootstrap"
+                                       "--user=mysql")))
+                    ;; Create the system database, as does by 'mysql_install_db'.
+                    (display "create database mysql;\n" p)
+                    (display "use mysql;\n" p)
+                    (for-each
+                     (lambda (sql)
+                       (call-with-input-file
+                           (string-append #$mysql "/share/mysql/" sql)
+                         (lambda (in) (dump-port in p))))
+                     '("mysql_system_tables.sql"
+                       "mysql_performance_tables.sql"
+                       "mysql_system_tables_data.sql"
+                       "fill_help_tables.sql"))
+                    ;; Remove the anonymous user and disable root access from
+                    ;; remote machines, as does by 'mysql_secure_installation'.
+                    (display "
 DELETE FROM user WHERE User='';
 DELETE FROM user WHERE User='root' AND
   Host NOT IN  ('localhost', '127.0.0.1', '::1');
 FLUSH PRIVILEGES;
 " p)
-                  (close-pipe p))))))))
+                    (close-pipe p)))))))))
 
 (define (mysql-shepherd-service config)
   (list (shepherd-service
-- 
2.14.1





Information forwarded to guix-patches <at> gnu.org:
bug#28399; Package guix-patches. (Mon, 11 Sep 2017 07:51:02 GMT) Full text and rfc822 format available.

Message #14 received at 28399 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Christopher Baines <mail <at> cbaines.net>
Cc: 28399 <at> debbugs.gnu.org
Subject: Re: [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on
 activation.
Date: Mon, 11 Sep 2017 09:50:46 +0200
Hi Chris,

Christopher Baines <mail <at> cbaines.net> skribis:

> Some systems using the MySQL service would fail to boot, giving the error:
>
>   ERROR: no code for module (ice-9 popen)
>
> * gnu/services/databases.scm (%mysql-activation): Wrap the gexp using
>   with-imported-modules, to ensure that the required modules are available.

[...]

> +    (with-imported-modules '((ice-9 popen)
> +                             (guix build utils))

The effect of this would be to import (ice-9 popen) from the host Guile
in the build side.  Thus someone running Guile 2.2.2 on the host would
get a slightly different file from someone running Guile 2.0.14, and so
on, which hinders reproducibility.

The ‘use-modules’ form should be enough.  Does the test you sent
reproduce the original problem?

Thanks,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#28399; Package guix-patches. (Tue, 12 Sep 2017 18:49:01 GMT) Full text and rfc822 format available.

Message #17 received at 28399 <at> debbugs.gnu.org (full text, mbox):

From: Christopher Baines <mail <at> cbaines.net>
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: 28399 <at> debbugs.gnu.org
Subject: Re: [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on
 activation.
Date: Tue, 12 Sep 2017 19:48:25 +0100
[Message part 1 (text/plain, inline)]
On Mon, 11 Sep 2017 09:50:46 +0200
ludo <at> gnu.org (Ludovic Courtès) wrote:

> Hi Chris,
> 
> Christopher Baines <mail <at> cbaines.net> skribis:
> 
> > Some systems using the MySQL service would fail to boot, giving the
> > error:
> >
> >   ERROR: no code for module (ice-9 popen)
> >
> > * gnu/services/databases.scm (%mysql-activation): Wrap the gexp
> > using with-imported-modules, to ensure that the required modules
> > are available.  
> 
> [...]
> 
> > +    (with-imported-modules '((ice-9 popen)
> > +                             (guix build utils))  
> 
> The effect of this would be to import (ice-9 popen) from the host
> Guile in the build side.  Thus someone running Guile 2.2.2 on the
> host would get a slightly different file from someone running Guile
> 2.0.14, and so on, which hinders reproducibility.

That makes sense.

> The ‘use-modules’ form should be enough.  Does the test you sent
> reproduce the original problem?

It does for me. If you just revert the commit adding in the
with-imported-modules bit, running the mysql system test then fails:

ERROR: In procedure scm-error:
ERROR: no code for module (ice-9 popen)
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#28399; Package guix-patches. (Fri, 15 Sep 2017 22:03:02 GMT) Full text and rfc822 format available.

Message #20 received at 28399 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Christopher Baines <mail <at> cbaines.net>
Cc: 28399 <at> debbugs.gnu.org
Subject: Re: [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on
 activation.
Date: Sat, 16 Sep 2017 00:02:08 +0200
Heya,

Christopher Baines <mail <at> cbaines.net> skribis:

> On Mon, 11 Sep 2017 09:50:46 +0200
> ludo <at> gnu.org (Ludovic Courtès) wrote:
>
>> Hi Chris,
>> 
>> Christopher Baines <mail <at> cbaines.net> skribis:
>> 
>> > Some systems using the MySQL service would fail to boot, giving the
>> > error:
>> >
>> >   ERROR: no code for module (ice-9 popen)

[...]

>> The ‘use-modules’ form should be enough.  Does the test you sent
>> reproduce the original problem?
>
> It does for me. If you just revert the commit adding in the
> with-imported-modules bit, running the mysql system test then fails:
>
> ERROR: In procedure scm-error:
> ERROR: no code for module (ice-9 popen)

The activation script is run by the “boot” script before it spawns
shepherd.  The boot script runs over the initrd’s Guile, which is
statically linked.

However, (ice-9 popen) starts by dynamically loading libguile and
calling a function therein:

  (eval-when (expand load eval)
    (load-extension (string-append "libguile-" (effective-version))
                    "scm_init_popen"))

Dynamic loading is not supposed to work in the statically-linked Guile,
but apparently it does work sometimes:

--8<---------------cut here---------------start------------->8---
$ sudo chroot /gnu/store/3ir873f4dsdl3aaj48iqykn6437ilk0p-guile-static-stripped-2.2.2 /bin/guile  
guile: warning: failed to install locale
GC Warning: pthread_getattr_np or pthread_attr_getstack failed for main thread
GC Warning: Couldn't read /proc/stat
warning: failed to install locale: Invalid argument
GNU Guile 2.2.2
Copyright (C) 1995-2017 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.
scheme@(guile-user)> ,use(ice-9 popen)
scheme@(guile-user)> open-pipe*
$1 = #<procedure open-pipe* (mode command . args)>
--8<---------------cut here---------------end--------------->8---

Perhaps it’s due to the libtool/ltdl preload feature.

What’s more puzzling though, is that it works in some cases (like above)
and not in others (in the test VM).

Needs more thought…

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#28399; Package guix-patches. (Sat, 16 Sep 2017 10:40:02 GMT) Full text and rfc822 format available.

Message #23 received at 28399 <at> debbugs.gnu.org (full text, mbox):

From: Christopher Baines <mail <at> cbaines.net>
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: 28399 <at> debbugs.gnu.org
Subject: Re: [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on
 activation.
Date: Sat, 16 Sep 2017 11:38:11 +0100
[Message part 1 (text/plain, inline)]
On Sat, 16 Sep 2017 00:02:08 +0200
ludo <at> gnu.org (Ludovic Courtès) wrote:

> Heya,
> 
> Christopher Baines <mail <at> cbaines.net> skribis:
> 
> > On Mon, 11 Sep 2017 09:50:46 +0200
> > ludo <at> gnu.org (Ludovic Courtès) wrote:
> >  
> >> Hi Chris,
> >> 
> >> Christopher Baines <mail <at> cbaines.net> skribis:
> >>   
> >> > Some systems using the MySQL service would fail to boot, giving
> >> > the error:
> >> >
> >> >   ERROR: no code for module (ice-9 popen)  
> 
> [...]
> 
> >> The ‘use-modules’ form should be enough.  Does the test you sent
> >> reproduce the original problem?  
> >
> > It does for me. If you just revert the commit adding in the
> > with-imported-modules bit, running the mysql system test then fails:
> >
> > ERROR: In procedure scm-error:
> > ERROR: no code for module (ice-9 popen)  
> 
> The activation script is run by the “boot” script before it spawns
> shepherd.  The boot script runs over the initrd’s Guile, which is
> statically linked.
> 
> However, (ice-9 popen) starts by dynamically loading libguile and
> calling a function therein:
> 
>   (eval-when (expand load eval)
>     (load-extension (string-append "libguile-" (effective-version))
>                     "scm_init_popen"))
> 
> Dynamic loading is not supposed to work in the statically-linked
> Guile, but apparently it does work sometimes:
> 
> --8<---------------cut here---------------start------------->8---
> $ sudo
> chroot /gnu/store/3ir873f4dsdl3aaj48iqykn6437ilk0p-guile-static-stripped-2.2.2 /bin/guile
> guile: warning: failed to install locale GC Warning:
> pthread_getattr_np or pthread_attr_getstack failed for main thread GC
> Warning: Couldn't read /proc/stat warning: failed to install locale:
> Invalid argument GNU Guile 2.2.2
> Copyright (C) 1995-2017 Free Software Foundation, Inc.
> 
> Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
> This program is free software, and you are welcome to redistribute it
> under certain conditions; type `,show c' for details.
> 
> Enter `,help' for help.
> scheme@(guile-user)> ,use(ice-9 popen)
> scheme@(guile-user)> open-pipe*
> $1 = #<procedure open-pipe* (mode command . args)>
> --8<---------------cut here---------------end--------------->8---
> 
> Perhaps it’s due to the libtool/ltdl preload feature.
> 
> What’s more puzzling though, is that it works in some cases (like
> above) and not in others (in the test VM).
> 
> Needs more thought…

Interesting, thanks for looking in to this Ludo. I've just thought that
this could be the cause of my problems in booting one of my GuixSD
machines, as I am using the mysql service (with MariaDB).

When you say dynamic loading is supposed not to work with a statically
linked guile, does this mean that activation scripts should avoid using
(ice-9 popen)? Or, given that it works some of the time, it could be
made to work reliably...?
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#28399; Package guix-patches. (Wed, 20 Sep 2017 15:59:01 GMT) Full text and rfc822 format available.

Message #26 received at 28399 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Christopher Baines <mail <at> cbaines.net>
Cc: 28399 <at> debbugs.gnu.org
Subject: Re: [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on
 activation.
Date: Wed, 20 Sep 2017 11:21:51 +0200
[Message part 1 (text/plain, inline)]
Hi Chris,

Christopher Baines <mail <at> cbaines.net> skribis:

> On Sat, 16 Sep 2017 00:02:08 +0200
> ludo <at> gnu.org (Ludovic Courtès) wrote:

[...]

>> Perhaps it’s due to the libtool/ltdl preload feature.
>> 
>> What’s more puzzling though, is that it works in some cases (like
>> above) and not in others (in the test VM).
>> 
>> Needs more thought…
>
> Interesting, thanks for looking in to this Ludo. I've just thought that
> this could be the cause of my problems in booting one of my GuixSD
> machines, as I am using the mysql service (with MariaDB).
>
> When you say dynamic loading is supposed not to work with a statically
> linked guile, does this mean that activation scripts should avoid using
> (ice-9 popen)? Or, given that it works some of the time, it could be
> made to work reliably...?

No I was completely on the wrong track (libguile/extensions.c, which
implements ‘load-extension’, has a mechanism to load pre-registered
extensions without going through ‘dlopen’.)

The problem is simpler: the ‘guile-static-stripped’ that’s on the store
in the initrd is not necessarily in the store on the real root file
system.  Thus, once we’ve switched roots, we look for “ice-9/popen.scm”
in a load path that’s no longer valid.

I debugged this with:

[Message part 2 (text/x-patch, inline)]
diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
index de1f6b841..13c235059 100644
--- a/gnu/services/databases.scm
+++ b/gnu/services/databases.scm
@@ -298,6 +298,14 @@ port=" (number->string port) "
   (let ((mysql  (mysql-configuration-mysql config))
         (my.cnf (mysql-configuration-file config)))
     #~(begin
+        (eval-when (expand load eval)
+          (use-modules (ice-9 ftw))
+          (setvbuf (current-output-port) _IONBF)
+          (pk %load-path (search-path %load-path "ice-9/popen.scm"))
+          (let ((dir (car (last-pair %load-path))))
+            (pk dir 'exits? (file-exists? dir)))
+          (pk 'popen (resolve-module '(ice-9 popen) #:ensure #f))
+          (pk 'scan (scandir "/gnu/store")))
         (use-modules (ice-9 popen)
                      (guix build utils))
         (let* ((mysqld  (string-append #$mysql "/bin/mysqld"))
[Message part 3 (text/plain, inline)]
… and then run your test.

It shows this:

--8<---------------cut here---------------start------------->8---
[…]

adding user 'guixbuilder09'...
adding user 'guixbuilder10'...
adding user 'mysql'...
registering public key '/gnu/store/zh0lb2g15hirq7zw2477w7s5ww7dxkv0-guix-0.13.0-6.a9468b4/share/guix/hydra.gnu.org.pub'...

;;; (("/gnu/store/dsbc8lh9zav2ghb7gi1zm608igbgg1jv-module-import" "/gnu/store/dsbc8lh9zav2ghb7gi1zm608igbgg1jv-module-import" "/gnu/store/m843zdvsv2p3glz91y8icv3qwkr9mnzs-module-import" "/gnu/store/m843zdvsv2p3glz91y8icv3qwkr9mnzs-module-import" "/gnu/store/dr6706rm053d9b6h4rhi29l2ipxcd9jf-module-import" "/gnu/store/dr6706rm053d9b6h4rhi29l2ipxcd9jf-module-import" "/gnu/store/9whwwppmb2sjfsy0967s627bzgdfl8bc-guile-static-stripped-2.2.2/share/guile/2.2") #f)

;;; ("/gnu/store/9whwwppmb2sjfsy0967s627bzgdfl8bc-guile-static-stripped-2.2.2/share/guile/2.2" exits? #f)

;;; (popen #f)

;;; (scan ("." ".." "028jn2qq6b0a5wgfs84jfmkmhpbl015r-module-import-compiled" "03zy9bapqgv9y0q82c3szmzmhghj4h6b-virglrenderer-0.6.0" "09j7scnl3hahcmql986fsjpzj6gqsmzv-ncurses-6.0" "0b83kwl6lbqz9r4kfsblcil25fkmxzd1-activate-service" "0f76ak4jn36qs7syhfaw5ag9958yabzh-libatomic-ops-7.4.4" "0j18kgj0bwlfqnnj78vjib0ax66ndb50-shepherd-syslogd.scm" "0p4gxh2xiz31v2zx8mg43nv2djjyfwmn-libpciaccess-0.13.5" "0s5manjvfa0gmsv2r71rchky7ab70g1d-icu4c-58.2" "0yfji7ibkkz7yh7vfgbm2fvic7lxg71l-groff-1.22.3" "0zqip50gq1ch8hdvlixi9mpkpslvgh7r-shepherd-console-font-tty1.scm" "1287jbyyjydgypzs3r85q9hj6sahq2wx-login.defs" "1542yabm3kaf0ybrn77r5z31icxw7zq2-shepherd-file-system--sys-fs-cgroup-hugetlb.scm" "1dbpiip53l3zmwdcgbpz5cjhgfijl4jn-shepherd-file-system--sys-fs-cgroup.scm" "1dminyi7iq203492l4p8dz0wwagkpsb4-llvm-3.8.1" "1glb29skkvp128a0yizqv1kyillk9a7n-lsof-4.89" "1jcq4fc07bngc5q1cy44j0glv1vrjz52-libffi-3.2.1" "1jp44pfmqcj3zycclvmmva3xcwinyg7l-freetype-2.8" "1kx3sq1lfcz37r6w08bdii5fkw20sk35-shepherd-root-file-system.scm" "1mw2mir3whl20hcx366rk3rcn8ykvdaf-shepherd-term-tty4.scm" "1q0r9idvqjw9s4b6hxa8jklxc3ngy5lq-system" "1skx99scjpm591ixmhpnw17zxcllpqm9-utils.scm" "1xc97akbdcisrid2n8djpkn09f8bkl5f-libxdmcp-1.1.2" "261xd9zwg479rn7yha0k2i97p63flhfg-activate-service" "27hw80d0nn2a5p56vk91qn6jvn036dla-libxshmfence-1.2" "2ayx2b08id7xid0s4ykhfvr1irl2qi7l-elf.scm" "2c37li6qgq031dq4agg9zbb68iw39igx-bdb-5.3.28" "2n80sdqh39y3sgrfyd97ag0sjx5bx9dl-lz4-1.8.0" "33ln3zh2cwchgbf4xv6j9qlxari3w74w-shepherd-guix-daemon.scm" "35rydx7qm4jn3jx6qbj92lvc4p8g3cn4-activation.scm" "36m5h559ikrnp96c6r2zk2p8cn07xjwb-libssh2-1.8.0" "3amb8hw38k2jv604pb87am8v9r17fczi-pcre-8.41" "3b5acw40ls4xvs54ia9cmp0fjx9vryq8-libepoxy-1.4.1" "3c0l9d5fg73lpvrc8d29k5irpwp215dh-activate-service" "3qw66pxqm316r9spl7w1wxbj2q0wa8m1-shishi-1.0.2" "3s6vjw0979hn5i4v4bqa8ybdmb0kn00l-flac-1.3.2" "3wdxwi446k6bbx3r4kfgn2hh754n7ab7-grub.cfg" "3x53yv4v144c9xp02rs64z7j597kkqax-gcc-5.4.0-lib" "3xjvwgzm6bhqc0rn3nwbdczjh4383mpk-libnftnl-1.0.7" "3z94sy8lig6zbwna4j8plmar70jmqyxn-login" "42d5rjrdkln6nwvzwdc8dyd4w6iy3n5j-coreutils-8.27" "47jgabf5wx296alb06pb5iig6cqbmx0v-gdbm-1.13" "4i4bx0434kbpcl9xl5a2xfl2rx52hdzx-linux-modules.scm" "4iqyh8xqjxazza3lx2iz5v39ipzifsfj-gzip-1.8" "4wm6z6dh5gkqbvxj7995lvr2bjwhqq25-libxxf86vm-1.1.4" "4wngzd4rvm3lcchmigajw9jhi2vrgdf0-passwd" "577gkxcv1va0jc33vs0yv9nl3lyg0410-parameters" "57dcsqa95nqjyak02pzpk3lf64j1jnnw-qemu-image" "5889hfnp2vpsnyfwqvknx3649vwx2m7b-pulseaudio-10.0" "5f4vz29llmqa1i9wl02pkilws6dbr2l6-qemu-2.10.0" "5jl21csvr3jmsa4a7d08sqa2waks3f09-gmp-6.1.2" "5kglffwm1gsjhsy5wn7cv0kgmj7asif7-e2fsprogs-1.43.5" "5khzrsqs0bgr2hyrl3yvamwk745wmkql-shepherd-term-tty2.scm" "5kydkrla0c58kpy44ibzmcq0nhpnk8k6-linux-pam-1.3.0" "5lrk6d5cjsv2s29vfji6j59gyf18rb5m-acl-2.2.52" "5mykz9b6whh8pjrpb5yfz6cyip2iaxzg-shepherd-console-font-tty4.scm" "5rhk61dq276h7cdyn6ks112iahn4f8m8-libogg-1.3.2" "5s19lin8dm65aygm85s8cwqsq41hym6d-libxdamage-1.1.4" "5sv5zy2kgg6iaqyv8zw49w4243j0xkd0-gcc-5.4.0" "5z6zqh3cdrix3hq2qxrnh4v59vz2hssc-groupdel" "5zcspv2mjn85nzhk6my4af067nm4vs8g-sudo" "62b4225h7vkpy0xzqlpyp1kx5ik3kiy7-expat-2.2.2" "649641qx9p4y0vz77ss1w8dd50l2yw2b-module-import" "66dp9mxn43jkhhrpcy6v5cdqibbl4bjc-gnutls-3.5.13" "6hicns85s8ddp0y539wdspwx22ac2kmv-bzip2-1.0.6" "72wjwil96zh5f370gnqq7hg2biavbwdx-shepherd-loopback.scm" "73n8primzbqhpzirnmbc2qwzg7f07bz7-psmisc-22.21" "75r85h8krngg7nydp76njyihq774m0dz-environment" "795majdgan135s40l10wbdjs8lqmpifs-useradd" "7gsvp98rssbwy7l4c2gs40bblfvr1yyl-uuid.scm" "7ljjhfz6p14xlnwnmzmg6hi01wfvz9vb-cyrus-sasl-2.1.26" "7nywh80c5mgy80d08x9y6w48ipngn47s-module-import" "7r3ps2rv079kqkh8i8ddgcj29wqzbck1-module-import" "7sq353nilxwwnk983xz38457bp3sv633-libaio-0.3.110" "7v2w3506q0gf96rsf6wf3gdr2iv5frmm-libgpg-error-1.27" "7v8369lgnqvpphcw06hg59hb8hxmkr8x-sed-4.4" "7zbscp5r0djsalcnvfrm7g0mp70mhrkd-diffutils-3.6" "85n2gzncy1dl6cbnky79nih4qhcwibds-libxfixes-5.0.3" "8ba1dina18nqzbx1p4x9i8i88nh1y238-libjpeg-turbo-1.5.2" "8bizb3mkkhh2zgzd59jp9qm1r71fb7ar-libgit2-0.26.0" "8brbpj0jdy3g0za14q18s2cj3w360yxk-mingetty-1.08" "8h3mq2d4s483gsykwgdw0iw2mfngk1ki-guile-ssh-0.11.2" "8k6f3wjk1f3qcigrrvhwmhy0026j0y06-opus-1.2.1" "8v2mhpzfbp88zvb5zgikbz6lbi229y64-shepherd-udev.scm" "8vr17x1cjznibkw4yrgv6gp948ya8qqs-module-import-compiled" "92a6ykqvxzzjzbjb2y4ggsiwnz25m57a-alsa-utils-1.1.4" "965dw3smmsvj6jyfxrkapp0gn9jh9djn-libunistring-0.9.7" "9b0nh58q1dwxli80xj15gv2037az96xw-patch-2.7.5" "9blidf28xz0a0glnv6a4xcw6nxadg427-libgc-7.6.0" "9fcql0sfia5cnfqxk73vdxd0lb87g2b3-wireless-tools-30.pre9" "9kq6xk66zzwdq12kaj7kl96zgy8g50m5-file-systems.scm" "9m4vk172625vlrj62id8a40brbm9prrd-info-reader-6.3" "9pq16kfcldqqcbd58mmfp37g3awhg4sd-gawk-4.1.4" "9s6bag7qk4k2jzx9q1pfrhqrgqrji7x9-shepherd-term-tty1.scm" "9x9229j1sramg64qppmn87m2vy2jq4im-glib-2.52.2" "9xl0lbprkkn4k3b8v5bcz6sq125dlwb5-bashrc" "a1h9c5rxw5r580z4xrshf834dg4c1fh8-activate" "a2n7lmcnkiwb8ix9d9q74a1866dv0a1w-profile" "a8914da78vi7glxyinpap2z7xlr32pli-net-tools-1.60-0.479bb4a" "af581ygb1d9bvpmfmlpwzlmsb1xjgycw-herd.scm" "agy6mpi2ay6rx0sy3plia9xwh7sj1zsl-module-import-compiled" "aj23g4a2kk4nj5rbx0nixybxp9gx5zr5-shepherd-console-font-tty3.scm" "akc3nsnksgv6256jm1ariljb1c7zh8x2-libgc-7.6.0" "b4a7g2xm26yr9pha9k8rj9bmvk4dz9mq-libssh-0.7.5" "b7y66db86k57vbb03nr4bfn9svmks4gf-bash-4.4.12" "b9ww6qv1ii9v6n45kin7543vkf6jfnd3-libpng-1.6.29" "bcmf06k2n1pfwqkzpclvvc3w9jdfi71a-guile-json-0.6.0" "bgv2yzvdvmxjmsvmg5fxaw1id2r2c3sr-libgit2-0.26.0" "bh1f92ij80j4fd4jzlfwlq6kg9hd1kh4-raw-initrd" "bhawz0mpfdjhwq423q6kk2jz34dpcsx5-libnl-3.3.0" "bixk1s0kr8lbpw2m4fhqsncfifwysjj9-iw-4.9" "bl5v4l5c3yibr2mmbx9lxr2qjd65wa9i-shepherd-term-tty3.scm" "bm16lyhdl6h5fxfi0iqjcv5dscqrickv-libsamplerate-0.1.9" "bmc8gv57qj6y5qdiymhaqii8dg51rjdk-marionette.scm" "bpr6szv5g3nwpa2xhj288n68bmsbrv6a-activate-service" "bxdl4knknaigm9s45szb9nqqln8cnbsk-file-5.30" "byx7df0jdaw8941qijp3p4l46q141ss3-libusb-1.0.21" "bzj472nmnnj5hcfd5yvfiqip1wzw84p9-tzdata-2017b" "bzn4wyrbdmfc1bd7lq05db5psfl5f8x8-perl-5.26.0" "c07im5yl6f5360lv623kp50mmq97naz8-mesa-17.1.4" "c44mijwrxm3zgzxf89g9nf8fdhz5vqqz-info-dir" "c6vpfgm9n7jzgr0llax0x7szqk9a5bfm-nettle-3.3" "c7asfsjiyd5p71h6338j3kkvy96k88id-man-db-2.7.6.1" "clrddh6a60b31anv7a9hrk3i9id0k5zs-libxcb-1.12" "cmn75vdszsm2404w0vwhrn2br7ib8508-zile-2.4.13" "cvaa538nkgrkspcpnnbzwqn9dxhxxv7f-curl-7.55.0-doc" "d2cyal3q1dfxcdz4gz8rpkdl1j3zwq2q-usbutils-008" "d7c4kdc4qkwkg9j6jwfxjqi3pxfznaqa-issue" "d7i58hy90961pahsnvjirifn6djmm24s-groupadd" "d8gkn84yqacjr80pzicz1ka3y2s1f2x0-guile-2.2.2" "dbhv0yay7p63v9xfn4s82pwrj43ij32b-bournish.scm" "dgyan2zawxw7qnxrmf9yp3ll954c9sxm-libdaemon-0.14" "dj5273vl9adm1vvjipqajk3lxkpir6yh-shepherd-nscd.scm" "dsbc8lh9zav2ghb7gi1zm608igbgg1jv-module-import" "dv4mr7k5gdi50wvqkhvahb05i905fi17-activate-service" "dy81cx0yshq8vban59vjsdl4rvxnwxab-util-linux-2.30" "f3rjpkrj5129m2rgyknl67pc3kwz782p-libdrm-2.4.81" "f4x2r28lkkr9bc5angw2bm6d922pidsj-guile-ssh-0.11.2" "fcglq7xj6yz2cmn86p14rzd25cnn7kia-hostname" "fjvh70n2iijzd28p1cxxkg234c203k2p-my.cnf" "fjzyz9rww401m5m5517zrqnfmqpk8aa0-libsndfile-1.0.28" "flj8k68s4igx1x03qia9dzkfsdqpf8dc-spice-0.12.8" "fpmp5299w8965xrbwbdbcvqxl89j9vp4-grub-image.png" "frfq5i5bxwwrz1vr04g9kcaz39g4w2ng-shepherd-console-font-tty6.scm" "g1hpcah5jqd665zl3040d4nhqgzzbbhk-libvorbis-1.3.5" "g1x4hnw3qafrwbcbpz4za1sw7pvwrwq6-fstab" "g3nari57wcfnm00kv9bnpyzdzfq4h8pk-xz-5.2.2" "gd4dx9pa04djv5ng2rrjjkj3ym70d0cj-module-import" "gfcfwr1i5kl6vy4p7zfvd87izd2b9dwq-guile-git-0.0-3.e156a10" "gfjnmqvw2ah9dkgv59w26a8bp9k61ra3-shepherd-user-file-systems.scm" "gh3xhwgh927md5ifzdmg0cgpqc0as1sh-nscd.conf" "ghcaayvl03ac7giilm5s4bcvb32nspzp-gnutls-3.5.13" "gj9w0cm9inhwi9iiipapq0xgvqyky7xq-module-import-compiled" "gr98ykgw5d3wr6mh98y20fia18rla83g-bash-completion-2.7" "gyi8x9c8gm5l3sqhvmqpy1n4xvlj62qj-shepherd-file-system--sys-fs-cgroup-memory.scm" "hwygv5jwd47amhp1m67iy3bkvxqjlbhm-libgcrypt-1.8.1" "hxn2viwl04nwswpjkfg0iyyhm815yaza-libcap-2.25" "i4bfsmgzmajbrv9p9cqz60id2j2hvwcz-usermod" "icfpiql578wzx55hkr0fqbzpxwvdymcp-nano-2.8.7" "icmna62bzyjpkx2qlvpa4mbgxyr00slj-shepherd-file-system--dev-pts.scm" "insr5wrif9pn1mlqa5rl9k3sr5qf2q1y-kmod-24" "jcsysx67d8y66n66hi856nfm2f92ws91-sbc-1.3" "jhmb3brgpavi4zx77zr4lrfdbndvw1l5-shepherd-file-system--dev-shm.scm" "jjna4ivyidxfq40mq78g97yzg0wfzcqy-shadow-4.5" "jk0hvcmysjjksi5csyznrhs27k1vc0sc-shepherd-term-tty5.scm" "jlj4f90m36bawbf8jp55j0mbldajm5va-kbd-2.0.4" "jnbb8ffxxvrw2b4z18zn0g08kqk9rsgl-libffi-3.2.1" "jv9hv3sqajrxnmx6ar03lxqk4laf03wj-su" "jz6k6rc0vhqfz1hpn92z8zf0rh19c2vc-alsa-lib-1.1.4.1" "jz7wvy930liqjvm95lhdv9i1dr1xxvxp-libxext-1.3.3" "k0xlmnz27cjyyhwjbc4lg1zkvid3d7jp-shepherd-mysql.scm" "k5zs3rw80aly6inhgvl8icpq9iabrdb2-bdb-6.2.23" "kdfwwd2r5ppdy8kd3yzl1sxibw3ahffq-fftwf-3.3.5" "kdwlvs51isdfbl61jdishzhly8h139zf-libbsd-0.8.3" "kgy00x8jl7q965sngq1yyihbczxj15wk-libxrender-0.9.10" "khjxh5dvx955qid1863j25swz926si2h-less-487" "kj7zjysiyf2d6v92wg5sm0yvbfala4mz-etc" "kpxi8h3669afr9r1bgvaf9ij3y4wdyyn-bash-minimal-4.4.12" "l1w1z627jsn93ilvjqhji96ccc95x0hy-shepherd-console-font-tty5.scm" "l6gb9kk5i9bskgpbsjmba8z794yvdlzw-shepherd-file-system--sys-fs-cgroup-devices.scm" "l7306lcxgapca9348qk6hakgycwkrmfs-libelf-0.8.13" "l8da5k5ji0idb1f36lyzangirnljabr0-activate-service" "lb0z3dkv73p6n7g736zj5zxhv4x28f6l-shepherd-0.3.2" "lh1hwa0i061lwzyvk9brcsjb6h1gyhrg-ncurses-6.0" "lhxswhrz1y69q0zpx76gjimzg3d7sn4h-libtasn1-4.12" "ljzqi3ajkc6l5r8hwdz7kr1zwbli3i7y-pciutils-3.5.5" "lk9axww17rh6jid5nrps0jf869kcrbcw-wireless-regdb-2017.03.07" "lp16q4gjhcpsjw6vhkkb84j8arzwksj6-shepherd-file-system--sys-fs-cgroup-freezer.scm" "m0m6bwzi8lx7kv8zbn3hjrim6flmgnf4-openssl-1.0.2l" "m3xhykrwad33a105zpgi494v4i8js4dl-wayland-1.13.0" "m843zdvsv2p3glz91y8icv3qwkr9mnzs-module-import" "m9zxvfv4ka26732485whl1cbaahf0ff9-avahi-0.6.31" "mhqwkrml6k7ylca5bnsmc467mlj2zdv8-shepherd-user-processes.scm" "mi0bpcbmz94n7wl282xcw12y81zj02ys-manual-database" "mipizipnr4y2hly9b429j8id1albbgqi-readline-7.0" "mk9wvrd5m7fqf328mf37241wkrkw75xa-libidn2-2.0.4" "mpl9b9w60gjzsq470zka5l8p2bmy7r8v-sqlite-3.19.3" "mrk0km6gqw4zn20az2bqidvajps7yy93-motd" "mxnh7py7gl5lfm2825hijgqjh7rvb0gm-sudoers" "mymwcnr619kprab0divalx38s5paw29y-linux-boot.scm" "n1fjxdw7ca00r0qnfk2a5gddv098rsy7-shepherd.conf" "n3b29mh561flznsciaylj4q2a78dmlp3-guile-git-0.0-3.e156a10" "n419gkq8p5l2392v0xy0wz7i69fxgp96-mariadb-10.1.26" "n6nvxlk2j8ysffjh3jphn1k5silnakh6-glibc-2.25" "n7hfr87kb69pbcz9cfy00yi4jvwk9n4s-iproute2-4.13.0" "nhm602hbfi0vw82377nvfy9kxqm6amb0-hosts" "njx3j0kd26blpdz3q1kcqxh80hiyby3b-syscalls.scm" "nlb440z8pz5wq2s2pggbvzxq0nsd96lj-module-import-compiled" "np05q8mf1y9y4bk5y4ssj99m0dss2b1q-libx11-1.6.5" "nqmzxcsay0flwxi22vb9hzdi9qnkgkhr-fuse-2.9.7" "nwklgz6m8nzmd6568jackkffjjsski8y-module-import" "nx8blr0a248ahbl092h7acyb44lp8f0m-libunistring-0.9.7" "nykcm5wlw8fjsi28nm01gg1as2znh8nf-gmp-6.1.2" "nzv180i3z33vnb9krmc73mazhf626384-findutils-4.6.0" "p204lx246gf8lzx0262d53j6vk4rdip4-boot" "p4cv5l3pbympjdjs2yga8cbp1ghbg4hj-isc-dhcp-4.3.5" "paps5r9hcpszhv8hc3n0s2m2i4a2378i-ed-1.14.2" "pbqal5rp859kfacaj9f8hvwwhlb4zikf-mysql-test-builder" "pf1xr3i3pf7k1b3lr59gffzy891y1yv3-libxvmc-1.0.10" "phyir52lwvndlpw1b30i6vhkyfh5bxgr-dbus-1.10.18" "pp5vlnkh99d9ab4xc3ggrk6mvc961fkx-lzip-1.18" "ps0m5mqdyh1pjdn31dxlbv51ysfhf860-lvm2-2.02.171" "q24zahl037lf2f4152g94v1zhrmbzsj6-libxml2-2.9.4" "q36avjw4lflscxvbmmamlgchdwq70cym-which-2.21" "q6f9samd6m36pyfg8xpzmkljc3vavrnh-activate-service" "qc4avwlbwyprz6gq9fcqwp043r8063f6-libltdl-2.4.6" "qh1fri7qppqi8bhyzbiw7h8knmk4cb3q-libltdl-2.4.6" "qj1kg8kws7fakn7g7zd4pqi59cy42hhp-crda-3.18" "qjal4sb770mjfd05w0fq72zkqpv4mcil-sudo-1.8.21p2" "qkkg7kyv1v828ixc70nngma55wn974li-udev.conf" "qp5cipyqsll9ddgdhxny65cxpvan61ha-procps-3.3.12" "r362f8p4y0xj7sm2jfqysry086lxy91v-zlib-1.2.11" "ra8iaqrk5lc8nzld75a3mv05x9wl4w96-shepherd-file-systems.scm" "rdq9cxcqka2cswqpv4s848a247zvgl93-mdadm-4.0" "rf6b68gjfrcsgc31w6zs5dgmnyschj8r-module-import-compiled" "rp8lfy4yfj08dk41m4ia9b80yy93mzf6-libjpeg-8d" "rqpi1zg82y0h6ic4nlw50x6irv5mgqhs-locale-2.25" "rs7y82hlgdfs1m7h5xr8y2vx7m96qc4v-shepherd-file-system--sys-fs-cgroup-perf_event.scm" "ryqd73alrlq5djsr18xjjihi735592im-pkg-config-0.29.2" "s16wxqjqvqjf49lkmbv3ai3dsjzxjfw6-shepherd-user-homes.scm" "s21q8rx5y9kzdpaia2zqwfbr0b9hn2fv-shepherd-file-system--sys-fs-cgroup-blkio.scm" "s2g2446j1wl1zy4d23vs3a7dc3zzl2c2-libxv-1.0.11" "s3d34jlrpcdbv1xm3y1nwihw1i6xmwrc-run-vm.sh" "scs7siybrjl5bb7sxqaskysf8n1ld718-gmp-6.1.2" "sfx1wh27i6gsrk21p87rdyikc64v7d51-zlib-1.2.11" "sil49ljqkxi6aw0rdiiqnl70jx6hicsx-s2tc-1.0" "sjrcmzr2jdas2zb4b5h8lgglgjlcyy9c-firmware" "skfbvr0wc2va1b2fdvaxbdmqnmji19jx-groupmod" "sngyhm974sbmljknwb1xrni1ggzhpm4d-grep-3.0" "sq26apxpvka5n46xkza1l5lrz5s4w8v2-libxrandr-1.5.1" "sv4p3sn3mp88xlpwl54p4r4gf06rjzlz-combinators.scm" "syzpw2s6s3jk3hj67vq52wfphlwfip2g-gss-1.0.3" "v4jl22k8gmfhw2ly8im5273y7xkby1bd-module-import" "v6ljdrjwh42h7bssk24yjdma5rl43jkr-profile" "v6wgl8g3l6d1zrylf4b9h43qszpklphk-shepherd-urandom-seed.scm" "viz3c2xq5ddl733q55am01fqz2dqiz34-skel" "vm8w2j5qjlan4dl64x8jplfih2dnrn9c-module-import-compiled" "w150ql3qy0di4dnp4c95hpaw6m1aafwc-pkg-config-0.29.2" "w1hj0572wg91blbmsyk83zsnjl6j47ap-grub-2.02" "w26fyfbic9n8fljmgacf5gy8x7y5yn39-udev-rules" "w31zw2chff41x6q6kpa2wrkgx8agr0an-libidn-1.33" "w7p84w2drhdy19j8dyv715i574lj40s9-readline-7.0" "w85rbll51r86mclkmp1bxa774b36jy1q-mit-krb5-1.15.1" "w87pvr1vf0cnbd3w6gzlamz17s761bq3-activate-service" "w8kii3hjvmh50yxs52gkdywkq9jc7s19-pixman-0.34.0" "wjj289vqkjf767xq0b3ldaskbl95vs5s-shepherd-marionette.scm" "wsjnmk2liiav4rqbhf6kxaim0fyvrn39-other" "wzzpvjk9ghhyjqn23lszkjh6pgbayj5x-shepherd-console-font-tty2.scm" "x0kbk8igm6gkkfb45gnnq66m6mswwirn-userdel" "x3b4dsmry7p2r9n30q2myj7ql0h74kqz-libmnl-1.0.4" "x8cwg5bm9y2dk1mrhisr63b5q98mbhhz-guile-bytestructures-20170402.91d042e" "xpqv6vdrxwvnl2545vcmra9gwhlvfzny-linux-libre-4.13.2" "xv8bp0zxbr9iphr38wy0ll4lzkbh9i87-libxau-1.0.8" "xxfwxc0xm748n6y9lrc5338nfpvjxqak-inetutils-1.9.4" "xy9k7k14p20jll9hiy6pj37kb8g23vbj-rfkill-0.5" "y2vyxss0pc603qqh3wmlv7yrgmjf0iam-libpipeline-1.4.2" "y5f4rfh9f8p5cm9kch4pafgmj3vhvqrx-openldap-2.4.45" "y5nrfbj52vlnj77iyki9hbji8qjwk86d-syslog.conf" "yfzdqhy08vygnssg8r69sx1i4i6jh682-sdl-1.2.15" "ygb6jg6qq36wxjcnkq4r9wrfikl754dy-shepherd-file-system--sys-fs-cgroup-cpu.scm" "ygrwcxrx5bhxzm0jilg54dsnwrxs0vci-nsswitch.conf" "yihvhxv3xyyvl1m2cy1lnf1lyi9h76fk-guile-2.2.2" "ylzyjnlsfz08xf1d74mpawvadnihsxx0-iptables-1.6.1" "ynp950nlaj0xx39gf5a10fq7rnsx1672-libatomic-ops-7.4.4" "ypqscsag2fs4j9jnwfqq5kzfyw1k30ls-mysql-test" "yz1lf55ag0904w9ib0q2kcjpdx33y7wm-attr-2.4.47" "yzlmd2nlcyjhx0ydbap7x32zjqxc3hz9-libcap-2.25" "z1lii251cy0y660910hsfc55cy82dk9i-net-base-5.3" "z77nhww8zh96w6lb5ak6h3jb4niain3b-eudev-3.2.2" "zaf2lb18xns27pkbfrm0f27qkkzxdxq2-shepherd-term-tty6.scm" "zb5gqhaj2sb1gy6imgsnhvxxcbzljg90-shepherd-file-system--sys-fs-cgroup-cpuacct.scm" "zh0lb2g15hirq7zw2477w7s5ww7dxkv0-guix-0.13.0-6.a9468b4" "zhhdii9mjckb6c2f7abmdsx39khv6dla-tar-1.29" "zhrajv6qf2hzn9c3g2bb07559hyrz5xp-bash-static-4.4.12" "zikv0zk3y5q2qx65r1xjxawm3ha97zdk-shells" "zs6zn16qbm53f1dda75ywl2gsd7m4xbn-activate-service" "zspi375jsb1076khqr3bbf5pg0vfgj65-shepherd-host-name.scm" "zvakcs6x3zzlx95wypz9dl3k908bc6lc-shepherd-file-system--sys-fs-cgroup-cpuset.scm" "zwhrh2429r7y13nd3bnfihswxdflb4ih-curl-7.55.0" "zwvgwl1yjfbh5k1255jvia6q331ib3m1-pam.d" "zxm6qadad3vc7asy1q0xp9dld012kxgk-90-kvm.rules" "zyya6pd6hg2zvcbqpzavqjv4wagms03c-module-import-compiled" "zzaxsv4jp0k9nhbvxm2al5c8b6l6nxyv-modprobe"))
ERROR: In procedure scm-error:
ERROR: no code for module (ice-9 popen)
--8<---------------cut here---------------end--------------->8---

As you can see,
/gnu/store/9whwwppmb2sjfsy0967s627bzgdfl8bc-guile-static-stripped-2.2.2/share/guile/2.2, which is at
the tail of %load-path, is missing from the root file system, hence the
failure.

To work around it, we’d have to either ensure that
‘guile-static-stripped’ is on the root file system, or adjust the load
path when we switch roots, or (simplest solution) pre-load (ice-9 popen)
before ‘switch-root’.

To be continued…

Ludo’.

Information forwarded to guix-patches <at> gnu.org:
bug#28399; Package guix-patches. (Sun, 08 Oct 2017 09:07:02 GMT) Full text and rfc822 format available.

Message #29 received at 28399 <at> debbugs.gnu.org (full text, mbox):

From: Christopher Baines <mail <at> cbaines.net>
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: 28399 <at> debbugs.gnu.org
Subject: Re: [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on
 activation.
Date: Sun, 8 Oct 2017 10:06:07 +0100
[Message part 1 (text/plain, inline)]
On Wed, 20 Sep 2017 11:21:51 +0200
ludo <at> gnu.org (Ludovic Courtès) wrote:

> As you can see,
> /gnu/store/9whwwppmb2sjfsy0967s627bzgdfl8bc-guile-static-stripped-2.2.2/share/guile/2.2,
> which is at the tail of %load-path, is missing from the root file
> system, hence the failure.
> 
> To work around it, we’d have to either ensure that
> ‘guile-static-stripped’ is on the root file system, or adjust the load
> path when we switch roots, or (simplest solution) pre-load (ice-9
> popen) before ‘switch-root’.
> 
> To be continued…

Awesome investigation Ludo. This explanation could match what I was
experiencing when using the mysql service on GuixSD. Sometimes after
running guix gc, the system wouldn't boot. This could have been because
the guile package needed by the initrd was removed from the store.

Given that the initrd has a dependency on this guile, but it doesn't
reference it because its compressed, how about adding a explicit
reference to the guile used? I've attached a patch, and this looks to
fix the issue as far as the mysql service is concerned.
[0001-linux-initrd-Ensure-that-the-guile-used-in-the-initr.patch (text/x-patch, attachment)]
[Message part 3 (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#28399; Package guix-patches. (Sun, 08 Oct 2017 15:27:01 GMT) Full text and rfc822 format available.

Message #32 received at 28399 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Christopher Baines <mail <at> cbaines.net>
Cc: 28399 <at> debbugs.gnu.org
Subject: Re: [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on
 activation.
Date: Sun, 08 Oct 2017 17:26:05 +0200
Heya,

Christopher Baines <mail <at> cbaines.net> skribis:

> On Wed, 20 Sep 2017 11:21:51 +0200
> ludo <at> gnu.org (Ludovic Courtès) wrote:
>
>> As you can see,
>> /gnu/store/9whwwppmb2sjfsy0967s627bzgdfl8bc-guile-static-stripped-2.2.2/share/guile/2.2,
>> which is at the tail of %load-path, is missing from the root file
>> system, hence the failure.
>> 
>> To work around it, we’d have to either ensure that
>> ‘guile-static-stripped’ is on the root file system, or adjust the load
>> path when we switch roots, or (simplest solution) pre-load (ice-9
>> popen) before ‘switch-root’.
>> 
>> To be continued…
>
> Awesome investigation Ludo. This explanation could match what I was
> experiencing when using the mysql service on GuixSD. Sometimes after
> running guix gc, the system wouldn't boot. This could have been because
> the guile package needed by the initrd was removed from the store.
>
> Given that the initrd has a dependency on this guile, but it doesn't
> reference it because its compressed,

It’s not just that: the initrd embeds a self-contained store; it does
not contain references to the “outer” store.

> how about adding a explicit reference to the guile used? I've attached
> a patch, and this looks to fix the issue as far as the mysql service
> is concerned.

[…]

> From f313f80407039efb215c18de99ee36696528e98a Mon Sep 17 00:00:00 2001
> From: Christopher Baines <mail <at> cbaines.net>
> Date: Sun, 8 Oct 2017 09:52:24 +0100
> Subject: [PATCH] linux-initrd: Ensure that the guile used in the initrd
>  referenced.
>
> By referencing guile from the initrd, it will be present in the store when
> this initrd is used. If the exact guile used within the initrd isn't present
> in the store, then after root is switched during the boot process, loading
> modules (such as (ice-9 popen)) won't work.
>
> * gnu/system/linux-initrd.scm (expression->initrd)[builder]: Write out a file
>   called references in to the initrd derivation, which includes the store path
>   for guile.

[...]

> +          ;; Due to the compression, the references to the dependencies are
> +          ;; obscured, so write them out uncompressed to a file.
> +          (call-with-output-file (string-append #$ output "/references")
> +            (lambda (port)
> +              (map (lambda (reference)
> +                     (simple-format port "~A\n" reference))
> +                   (list
> +                    ;; The guile used in the initrd must be present in the
> +                    ;; store, so that module loading works once the root is
> +                    ;; switched.
> +                    #$guile))))

That’s very smart!

I think you can remove ‘map’ here since Guile will probably be the only
thing we want to refer to.

Make sure to refer to this bug in the commit message and in the comment.

OK to push with these changes, thank you!

Ludo’.




Reply sent to Christopher Baines <mail <at> cbaines.net>:
You have taken responsibility. (Sun, 08 Oct 2017 16:35:02 GMT) Full text and rfc822 format available.

Notification sent to Christopher Baines <mail <at> cbaines.net>:
bug acknowledged by developer. (Sun, 08 Oct 2017 16:35:02 GMT) Full text and rfc822 format available.

Message #37 received at 28399-done <at> debbugs.gnu.org (full text, mbox):

From: Christopher Baines <mail <at> cbaines.net>
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: 28399-done <at> debbugs.gnu.org
Subject: Re: [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on
 activation.
Date: Sun, 8 Oct 2017 17:34:31 +0100
[Message part 1 (text/plain, inline)]
On Sun, 08 Oct 2017 17:26:05 +0200
ludo <at> gnu.org (Ludovic Courtès) wrote:

> Heya,
> 
> Christopher Baines <mail <at> cbaines.net> skribis:
> 
> > On Wed, 20 Sep 2017 11:21:51 +0200
> > ludo <at> gnu.org (Ludovic Courtès) wrote:
> >  
> >> As you can see,
> >> /gnu/store/9whwwppmb2sjfsy0967s627bzgdfl8bc-guile-static-stripped-2.2.2/share/guile/2.2,
> >> which is at the tail of %load-path, is missing from the root file
> >> system, hence the failure.
> >> 
> >> To work around it, we’d have to either ensure that
> >> ‘guile-static-stripped’ is on the root file system, or adjust the
> >> load path when we switch roots, or (simplest solution) pre-load
> >> (ice-9 popen) before ‘switch-root’.
> >> 
> >> To be continued…  
> >
> > Awesome investigation Ludo. This explanation could match what I was
> > experiencing when using the mysql service on GuixSD. Sometimes after
> > running guix gc, the system wouldn't boot. This could have been
> > because the guile package needed by the initrd was removed from the
> > store.
> >
> > Given that the initrd has a dependency on this guile, but it doesn't
> > reference it because its compressed,  
> 
> It’s not just that: the initrd embeds a self-contained store; it does
> not contain references to the “outer” store.
> 
> > how about adding a explicit reference to the guile used? I've
> > attached a patch, and this looks to fix the issue as far as the
> > mysql service is concerned.  
> 
> […]
> 
> > From f313f80407039efb215c18de99ee36696528e98a Mon Sep 17 00:00:00
> > 2001 From: Christopher Baines <mail <at> cbaines.net>
> > Date: Sun, 8 Oct 2017 09:52:24 +0100
> > Subject: [PATCH] linux-initrd: Ensure that the guile used in the
> > initrd referenced.
> >
> > By referencing guile from the initrd, it will be present in the
> > store when this initrd is used. If the exact guile used within the
> > initrd isn't present in the store, then after root is switched
> > during the boot process, loading modules (such as (ice-9 popen))
> > won't work.
> >
> > * gnu/system/linux-initrd.scm (expression->initrd)[builder]: Write
> > out a file called references in to the initrd derivation, which
> > includes the store path for guile.  
> 
> [...]
> 
> > +          ;; Due to the compression, the references to the
> > dependencies are
> > +          ;; obscured, so write them out uncompressed to a file.
> > +          (call-with-output-file (string-append #$ output
> > "/references")
> > +            (lambda (port)
> > +              (map (lambda (reference)
> > +                     (simple-format port "~A\n" reference))
> > +                   (list
> > +                    ;; The guile used in the initrd must be
> > present in the
> > +                    ;; store, so that module loading works once
> > the root is
> > +                    ;; switched.
> > +                    #$guile))))  
> 
> That’s very smart!
> 
> I think you can remove ‘map’ here since Guile will probably be the
> only thing we want to refer to.
> 
> Make sure to refer to this bug in the commit message and in the
> comment.
> 
> OK to push with these changes, thank you!

Awesome :) I think I've made these changes, and I've now pushed this
change, along with the simple MySQL test that now passes.

I'm very glad that this issue should be resolved now.
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#28399; Package guix-patches. (Sun, 08 Oct 2017 19:20:01 GMT) Full text and rfc822 format available.

Message #40 received at 28399-done <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Christopher Baines <mail <at> cbaines.net>
Cc: 28399-done <at> debbugs.gnu.org
Subject: Re: [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on
 activation.
Date: Sun, 08 Oct 2017 21:19:00 +0200
Christopher Baines <mail <at> cbaines.net> skribis:

> Awesome :) I think I've made these changes, and I've now pushed this
> change, along with the simple MySQL test that now passes.
>
> I'm very glad that this issue should be resolved now.

Ditto, thank you!

Ludo’.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 06 Nov 2017 12:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 6 years and 144 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.