guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: locales gone


From: Ludovic Courtès
Subject: Re: locales gone
Date: Mon, 17 Oct 2016 11:00:25 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux)

Danny Milosavljevic <address@hidden> 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)))))

reply via email to

[Prev in Thread] Current Thread [Next in Thread]