Subject: bug#27244: Should not $GUIX_LOCPATH belong to ‘glibc-locales’ rather than ‘glibc’?

From: [email-masked] (Ludovic Courtès)
Date: Wed, 07 Jun 2017 00:57:24 +0200

Dmitry Alexandrov <[email-masked]> skribis:

>>> As of now [0] a search path ‘GUIX_LOCPATH’ is exported when ‘glibc’
>>> package, which does not comprise any locales, is installed.  I guess,
>>> it should belong to ‘glibc-locales’ and ‘glibc-utf8-locales’ instead.
>>
>> The idea of search path specifications like ‘GUIX_LOCPATH’ is that the
>> package that honors them defines them.
>>
>> For example, Python defines ‘PYTHONPATH’, Guile defines
>> ‘GUILE_LOAD_PATH’, and so on.
>
> But locales are honoured by nearly every program.  And nearly every
> program complains when they are not found:
>
> $ guix
> guile: warning: failed to install locale
> warning: failed to install locale: Invalid argument

Yeah.

>> In this case, ‘GUIX_LOCPATH’ is honored by glibc, so glibc defines it.
>
> From the user point of view ‘glibc’ is a package that installs
> catchsegv(1), getconf(1), getent(1), iconv(1), ldd(1), locale(1),
> localedef(1), makedb(1), mtrace(1), pcprofiledump, sprof(1),
> tzselect(1) and xtrace(1).
>
> At least on top of a foreign distro, when Guix is used as a
> language-specific package manager for GNU Guile for instance, that is a
> quite unlikely a package to be installed in the profile.

Right.

>> If instead ‘glibc-utf8-locales’ defined it, then you’d immediately get
>> the recommendation about setting ‘GUIX_LOCPATH’, which I guess is what
>> you’d like to see.
>
> Yes, that is exactly what I expected as a user: when locales are
> installed they come into play.
>
>> However, every locale-providing package would need to define it,
>> which is not great.
>
> But would not thorough following “search paths are exported by the
> active side” convention implies that every single package that ships a
> localized program has to define $GUIX_LOCPATH?  That would be about
> 100 % of packages, I guess.

Correct.

> On the other hand, now there are only two locale-providing packages,
> as I can see: ‘glibc-locales’ and ‘glibc-utf8-locales’.  Are there
> plans to split them up?  Is not that supposed to be done by means of
> ‘outputs’: glibc-locales:en, glibc-locales:fr, etc?

There are no concrete plans no.  The problem is that any split is really
arbitrary.

> (By the way, ‘glibc-utf8-locales’ looks like a misnomer to me, on the
> first glance on it a user have nothing but to think that it comprises
> UTF-8 locales for all supported languages.)

It is!  The manual clearly warns about it, saying that it’s “limited to
a few UTF-8 locales”:
<https://gnu.org/software/guix/manual/html_node/Application-Setup.html#Locales>.

Note that the Guix 0.13.0 binary tarball comes with glibc-utf8-locales
and glibc, such that its etc/profile defines ‘GUIX_LOCPATH’.

>> On a related note, see this issue about indirect search path
>> specifications: <https://bugs.gnu.org/22138>.
>
> Oops.  My bad, I indeed should search for opened bugs more carefully.
> (I hope it should be possible to merge two issues within debbugs, is
> not it?)

Yes we can merge them.

Thanks,
Ludo’.