Danny Milosavljevic <dan...@scratchpost.org> skribis: > And if I strace postgres service I get > > [pid 6184] > open("/gnu/store/m9vxvhdj691bq1f85lpflvnhcvrdilih-glibc-2.23/lib/locale/locale-archive", > O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > [pid 6184] > open("/gnu/store/m9vxvhdj691bq1f85lpflvnhcvrdilih-glibc-2.23/share/locale/locale.alias", > O_RDONLY|O_CLOEXEC) = 3 > [pid 6184] fstat(3, {st_mode=S_IFREG|0444, st_size=2997, ...}) = 0 > [pid 6184] read(3, "# Locale name alias data base.\n#"..., 4096) = 2997 > [pid 6184] read(3, "", 4096) = 0 > [pid 6184] close(3) = 0 > [pid 6184] > open("/gnu/store/m9vxvhdj691bq1f85lpflvnhcvrdilih-glibc-2.23/lib/locale/en_US.UTF-8/LC_COLLATE", > O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > [pid 6184] > open("/gnu/store/m9vxvhdj691bq1f85lpflvnhcvrdilih-glibc-2.23/lib/locale/en_US.utf8/LC_COLLATE", > O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > [pid 6184] > open("/gnu/store/m9vxvhdj691bq1f85lpflvnhcvrdilih-glibc-2.23/lib/locale/en_US/LC_COLLATE", > O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > [pid 6184] > open("/gnu/store/m9vxvhdj691bq1f85lpflvnhcvrdilih-glibc-2.23/lib/locale/en.UTF-8/LC_COLLATE", > O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > [pid 6184] > open("/gnu/store/m9vxvhdj691bq1f85lpflvnhcvrdilih-glibc-2.23/lib/locale/en.utf8/LC_COLLATE", > O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > [pid 6184] > open("/gnu/store/m9vxvhdj691bq1f85lpflvnhcvrdilih-glibc-2.23/lib/locale/en/LC_COLLATE", > O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) > > And indeed those don't exist.
Ooh, I see. To work around an issue in our glibc 2.23 package (that I forgot to fix in 2.24), whereby glibc does not look for locale data in /run/current-system/locale, commit ab3a64507a792e4da0527b423fbc28f8768e736a sets GUIX_LOCPATH in /etc/environment. However, that doesn’t help with daemons, because those do not honor that file. I suppose the untested patch below would work around it. Could you try and report back? (Will require a reboot or testing with ‘guix system vm’.) Thanks, Ludo’.
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index 3273184..4dbf7e3 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm @@ -81,6 +81,11 @@ (false-if-exception (close-fdes fd)) (loop (+ 1 fd)))) + ;; Our glibc package currently looks for locale data in + ;; PREFIX/lib/locale instead of /run/current-system/locale. + ;; Work around it. + (setenv "GUIX_LOCPATH" "/run/current-system/locale") + ;; Start shepherd. (execl (string-append #$shepherd "/bin/shepherd") "shepherd" "--config" #$shepherd-conf)))))