Subject: Re: bug#28168: rofi - Failed to set locale and relink messages

From: [email-masked] (Ludovic Courtès)
Date: Wed, 23 Aug 2017 23:16:36 +0200

Hi Fredrik,

Fredrik Salomonsson <[email-masked]> skribis:

>>
>> > Failed to set locale.
>> >
>> > then it exits.
>> >
>> > I've set:
>> > GUIX_LOCPATH=$HOME/.guix-profile/lib/locale
>> > LANG=en_US.UTF-8
>> >
>> > Using glibc-locales
>>
>> Does setting LC_ALL instead of LANG help?  The LC_* variables take
>> precedence over LANG.
>
> setting LC_ALL didn't work. Same error.
>
> Did a strace on it just to see what's going on.
> Here's the last part just before it exits
>
>> open("/run/current-system/locale/2.25/en_US.UTF-8/LC_IDENTIFICATION",
>> O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
>> open("/run/current-system/locale/2.25/en_US.utf8/LC_IDENTIFICATION",
>> O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
>> open("/run/current-system/locale/2.25/en_US/LC_IDENTIFICATION",
>> O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
>> open("/run/current-system/locale/2.25/en.UTF-8/LC_IDENTIFICATION",
>> O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
>> open("/run/current-system/locale/2.25/en.utf8/LC_IDENTIFICATION",
>> O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
>> open("/run/current-system/locale/2.25/en/LC_IDENTIFICATION",
>> O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
>> write(2, "Failed to set locale.\n", 22) = 22
>> exit_group(1)                           = ?
>> +++ exited with 1 +++
>>
>
> It's looking for locale specific things in /run/current-system. Which Arch
> doesn't have. Is that a GuixSD specific thing?  Don't have GuixSD installed
> at the moment so cannot check myself.

Yes, that’s a GuixSD-specific thing, but if you set GUIX_LOCPATH, then
$GUIX_LOCPATH should take precedence.  The strace output you sent
suggests that GUIX_LOCPATH was unset, wasn’t it?

For example, I get:

--8<---------------cut here---------------start------------->8---
$ GUIX_LOCPATH=/foo strace -e open true --help

[...]

open("/foo/2.25/en_US.utf8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/run/current-system/locale/2.25/en_US.utf8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = 3
open("/gnu/store/ybpgv1v7606xw7mafda66w10hiynpiw2-glibc-2.25/lib/gconv/gconv-modules.cache", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/ybpgv1v7606xw7mafda66w10hiynpiw2-glibc-2.25/lib/gconv/gconv-modules", O_RDONLY|O_CLOEXEC) = 3
open("/foo/2.25/en_US.utf8/LC_MEASUREMENT", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

[...]

--8<---------------cut here---------------end--------------->8---

HTH,
Ludo’.