Subject: Re: bug#25136: locale confusion

From: Leo Famulari <[email-masked]>
Date: Thu, 8 Dec 2016 15:08:59 -0500

On Thu, Dec 08, 2016 at 01:48:38PM +0000, Dave Love wrote:
>   $ find $GUIX_LOCPATH -name en_GB.UTF-8
>   /home/dlove/.guix-profile/lib/locale/2.24/en_GB.UTF-8
> 
> but saw this (note the warning):
> 
>   $ guix --version 
>   warning: failed to install locale: Invalid argument
>   guix (GNU Guix) 20161208.12
>   Copyright (C) 2016 the Guix authors
>   License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
>   This is free software: you are free to change and redistribute it.
>   There is NO WARRANTY, to the extent permitted by law.
> 
> strace showed it looking in "locale/2.23", not "locale/2.24", despite
> the environment.

The `guix` used here is older than the latest version, as evidenced by
the call to an older version of the locales.

> "guix" there was from the /usr/local/bin link suggested by the
> installation instructions.  After a "guix package -i guix" (to the same
> version of guix, but now in .guix-profile), I don't get the warning but
> I wonder why that should have made a difference and why the environment
> seems to be ignored.

If you followed the installation instructions, then
'/usr/local/bin/guix' is owned by root, as it is symlinked to
'/var/guix/profiles/per-user/root/guix-profile/bin/guix'.

My guess is that you updated dlove's Guix package definitions, using
`guix pull`, but not root's. This operation is per-user. So, dlove's
locales package is at 2.24, while root's is at 2.23.

The issue went away when you tried the `guix` command installed by dlove
because dlove's package definitions are more recent than root's, and
all refer to the 2.24 locales.

Note that you will also see these locale warnings from the guix-daemon
if GUIX_LOCPATH is unset in the daemon's environment.