* [bug#28399] [PATCH]: Fix mysql activation, and add a basic test. @ 2017-09-09 14:39 Christopher Baines 2017-09-09 14:53 ` [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation Christopher Baines 0 siblings, 1 reply; 12+ messages in thread From: Christopher Baines @ 2017-09-09 14:39 UTC (permalink / raw) To: 28399 [-- Attachment #1: Type: text/plain, Size: 334 bytes --] 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(-) [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 963 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation. 2017-09-09 14:39 [bug#28399] [PATCH]: Fix mysql activation, and add a basic test Christopher Baines @ 2017-09-09 14:53 ` Christopher Baines 2017-09-09 14:53 ` [bug#28399] [PATCH 2/2] tests: databases: Add a simple test for MySQL Christopher Baines 2017-09-11 7:50 ` [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation Ludovic Courtès 0 siblings, 2 replies; 12+ messages in thread From: Christopher Baines @ 2017-09-09 14:53 UTC (permalink / raw) To: 28399 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 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [bug#28399] [PATCH 2/2] tests: databases: Add a simple test for MySQL. 2017-09-09 14:53 ` [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation Christopher Baines @ 2017-09-09 14:53 ` Christopher Baines 2017-09-11 7:50 ` [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation Ludovic Courtès 1 sibling, 0 replies; 12+ messages in thread From: Christopher Baines @ 2017-09-09 14:53 UTC (permalink / raw) To: 28399 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)))) + +\f +;;; +;;; 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 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation. 2017-09-09 14:53 ` [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation Christopher Baines 2017-09-09 14:53 ` [bug#28399] [PATCH 2/2] tests: databases: Add a simple test for MySQL Christopher Baines @ 2017-09-11 7:50 ` Ludovic Courtès 2017-09-12 18:48 ` Christopher Baines 1 sibling, 1 reply; 12+ messages in thread From: Ludovic Courtès @ 2017-09-11 7:50 UTC (permalink / raw) To: Christopher Baines; +Cc: 28399 Hi Chris, Christopher Baines <mail@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’. ^ permalink raw reply [flat|nested] 12+ messages in thread
* [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation. 2017-09-11 7:50 ` [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation Ludovic Courtès @ 2017-09-12 18:48 ` Christopher Baines 2017-09-15 22:02 ` Ludovic Courtès 0 siblings, 1 reply; 12+ messages in thread From: Christopher Baines @ 2017-09-12 18:48 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 28399 [-- Attachment #1: Type: text/plain, Size: 1179 bytes --] On Mon, 11 Sep 2017 09:50:46 +0200 ludo@gnu.org (Ludovic Courtès) wrote: > Hi Chris, > > Christopher Baines <mail@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) [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 963 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation. 2017-09-12 18:48 ` Christopher Baines @ 2017-09-15 22:02 ` Ludovic Courtès 2017-09-16 10:38 ` Christopher Baines 0 siblings, 1 reply; 12+ messages in thread From: Ludovic Courtès @ 2017-09-15 22:02 UTC (permalink / raw) To: Christopher Baines; +Cc: 28399 Heya, Christopher Baines <mail@cbaines.net> skribis: > On Mon, 11 Sep 2017 09:50:46 +0200 > ludo@gnu.org (Ludovic Courtès) wrote: > >> Hi Chris, >> >> Christopher Baines <mail@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’. ^ permalink raw reply [flat|nested] 12+ messages in thread
* [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation. 2017-09-15 22:02 ` Ludovic Courtès @ 2017-09-16 10:38 ` Christopher Baines 2017-09-20 9:21 ` Ludovic Courtès 0 siblings, 1 reply; 12+ messages in thread From: Christopher Baines @ 2017-09-16 10:38 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 28399 [-- Attachment #1: Type: text/plain, Size: 2951 bytes --] On Sat, 16 Sep 2017 00:02:08 +0200 ludo@gnu.org (Ludovic Courtès) wrote: > Heya, > > Christopher Baines <mail@cbaines.net> skribis: > > > On Mon, 11 Sep 2017 09:50:46 +0200 > > ludo@gnu.org (Ludovic Courtès) wrote: > > > >> Hi Chris, > >> > >> Christopher Baines <mail@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...? [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 963 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation. 2017-09-16 10:38 ` Christopher Baines @ 2017-09-20 9:21 ` Ludovic Courtès 2017-10-08 9:06 ` Christopher Baines 0 siblings, 1 reply; 12+ messages in thread From: Ludovic Courtès @ 2017-09-20 9:21 UTC (permalink / raw) To: Christopher Baines; +Cc: 28399 [-- Attachment #1: Type: text/plain, Size: 1323 bytes --] Hi Chris, Christopher Baines <mail@cbaines.net> skribis: > On Sat, 16 Sep 2017 00:02:08 +0200 > ludo@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: [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: Type: text/x-patch, Size: 895 bytes --] 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")) [-- Attachment #3: Type: text/plain, Size: 16875 bytes --] … 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’. ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation. 2017-09-20 9:21 ` Ludovic Courtès @ 2017-10-08 9:06 ` Christopher Baines 2017-10-08 15:26 ` Ludovic Courtès 0 siblings, 1 reply; 12+ messages in thread From: Christopher Baines @ 2017-10-08 9:06 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 28399 [-- Attachment #1.1: Type: text/plain, Size: 1105 bytes --] On Wed, 20 Sep 2017 11:21:51 +0200 ludo@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. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1.2: 0001-linux-initrd-Ensure-that-the-guile-used-in-the-initr.patch --] [-- Type: text/x-patch, Size: 1907 bytes --] From f313f80407039efb215c18de99ee36696528e98a Mon Sep 17 00:00:00 2001 From: Christopher Baines <mail@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. --- gnu/system/linux-initrd.scm | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 5a7aec5c8..c869bba5f 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -78,6 +78,19 @@ the derivations referenced by EXP are automatically copied to the initrd." (use-modules (gnu build linux-initrd)) (mkdir #$output) + + ;; 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)))) + (build-initrd (string-append #$output "/initrd") #:guile #$guile #:init #$init -- 2.14.2 [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 963 bytes --] ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation. 2017-10-08 9:06 ` Christopher Baines @ 2017-10-08 15:26 ` Ludovic Courtès 2017-10-08 16:34 ` bug#28399: " Christopher Baines 0 siblings, 1 reply; 12+ messages in thread From: Ludovic Courtès @ 2017-10-08 15:26 UTC (permalink / raw) To: Christopher Baines; +Cc: 28399 Heya, Christopher Baines <mail@cbaines.net> skribis: > On Wed, 20 Sep 2017 11:21:51 +0200 > ludo@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@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’. ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#28399: [PATCH 1/2] services: mysql: Fix missing modules on activation. 2017-10-08 15:26 ` Ludovic Courtès @ 2017-10-08 16:34 ` Christopher Baines 2017-10-08 19:19 ` [bug#28399] " Ludovic Courtès 0 siblings, 1 reply; 12+ messages in thread From: Christopher Baines @ 2017-10-08 16:34 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 28399-done [-- Attachment #1: Type: text/plain, Size: 3399 bytes --] On Sun, 08 Oct 2017 17:26:05 +0200 ludo@gnu.org (Ludovic Courtès) wrote: > Heya, > > Christopher Baines <mail@cbaines.net> skribis: > > > On Wed, 20 Sep 2017 11:21:51 +0200 > > ludo@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@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. [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 963 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation. 2017-10-08 16:34 ` bug#28399: " Christopher Baines @ 2017-10-08 19:19 ` Ludovic Courtès 0 siblings, 0 replies; 12+ messages in thread From: Ludovic Courtès @ 2017-10-08 19:19 UTC (permalink / raw) To: Christopher Baines; +Cc: 28399-done Christopher Baines <mail@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’. ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2017-10-08 19:20 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-09-09 14:39 [bug#28399] [PATCH]: Fix mysql activation, and add a basic test Christopher Baines 2017-09-09 14:53 ` [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation Christopher Baines 2017-09-09 14:53 ` [bug#28399] [PATCH 2/2] tests: databases: Add a simple test for MySQL Christopher Baines 2017-09-11 7:50 ` [bug#28399] [PATCH 1/2] services: mysql: Fix missing modules on activation Ludovic Courtès 2017-09-12 18:48 ` Christopher Baines 2017-09-15 22:02 ` Ludovic Courtès 2017-09-16 10:38 ` Christopher Baines 2017-09-20 9:21 ` Ludovic Courtès 2017-10-08 9:06 ` Christopher Baines 2017-10-08 15:26 ` Ludovic Courtès 2017-10-08 16:34 ` bug#28399: " Christopher Baines 2017-10-08 19:19 ` [bug#28399] " Ludovic Courtès
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/guix.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).