unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Bruno Haible <bruno@clisp.org>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: 65927@debbugs.gnu.org
Subject: bug#65927: the role and location of locale.alias
Date: Sat, 21 Oct 2023 22:47:46 +0200	[thread overview]
Message-ID: <4309618.iZASKD2KPV@nimes> (raw)
In-Reply-To: <87a5scqck9.fsf@gnu.org>

Hi Ludo',

> > I explained the purpose of this file in
> > https://sourceware.org/pipermail/libc-alpha/2023-September/151524.html .
> > In summary, it's a configuration file whose initial contents is provided
> > for glibc, but which needs to be edited by the system administrator in
> > some situations.
> >
> > For this reason, in Debian 12, the file has been moved to
> > /etc/locale.alias, and /usr/share/locale/locale.alias is merely
> > a symbolic link to /etc/locale.alias. IMO, this is the correct
> > way to handle this configuration file.
> 
> Does glibc look for ‘locale.alias’ in $sysconfdir, or does it look for
> it in $localstatedir?

It looks for it in $(localedir), whose default value is $(datadir)/locale.
https://sourceware.org/git/?p=glibc.git;a=blob;f=intl/localealias.c;h=ea4f48b594fe13490f006d95b799213961146e23;hb=HEAD#l154
https://sourceware.org/git/?p=glibc.git;a=blob;f=intl/Makefile;h=d7223256eb699380ccdf6f6dd37b7490b342e8d3;hb=HEAD#l156
https://sourceware.org/git/?p=glibc.git;a=blob;f=Makeconfig;h=c48fcc59e8c1b150d40241c31fc63adf4d15ccb3;hb=HEAD#l202

The default value of $(datadir) is $(prefix)/share.
https://sourceware.org/git/?p=glibc.git;a=blob;f=Makeconfig;h=c48fcc59e8c1b150d40241c31fc63adf4d15ccb3;hb=HEAD#l182

> To follow the “correct way” as you described it, glibc should look for
> it in $sysconfdir by default.

I agree; cf. https://www.gnu.org/prep/standards/html_node/Directory-Variables.html
But it does not do so currently; therefore the distros fix up the
upstream behaviour.

> > 2) GNU gettext needs to access this file, in order to recognize the
> >    same aliases that glibc recognizes. But glibc does not export the
> >    _nl_expand_alias function. Therefore GNU gettext needs to know
> >    where the file is. But how could GNU gettext retrieve any of the
> >    file names
> >      /gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/share/locale/locale.alias
> >      /gnu/store/ayc9r7162rphy4zjw8ch01pmyh214h82-glibc-2.33/share/locale/locale.alias
> >    ?
> >    If Guix had this configuration file moved to /etc, like Debian did, GNU gettext
> >    could be compiled with '-DLOCALE_ALIAS_PATH=\"/etc\"' and would then be able
> >    to access it.
> 
> Right now gettext in Guix ends up being compiled with:
> 
>   -DLOCALE_ALIAS_PATH=\"\"
> 
> (Example build log at
> <https://ci.guix.gnu.org/log/0yy8zmgvc6hy1pfc41gm1bi7nhj4aqf7-gettext-0.21>.)

In this case, localealias.c does not attempt to open a locale.alias file at all.

> What you propose is doable.  However, how many distros provide
> /etc/locale.alias?  What happens when it’s missing?
> 
> We have to keep in mind that Guix can be used on top of any distro.

When it's missing, localealias.c does not open a locale.alias file.
Negative effects can be seen after the ISO 639 language code of a language
changed or after the ISO 3166 country code of a territory changed. This is
currently not relevant, but may become relevant in the future again.

Which distros have it in /etc?
  - Guix 1.4.0: no
  - Debian 12, Ubuntu 23.10: yes, /usr/share/locale/locale.alias is a symlink.
  - CentOS Stream 9: no
  - Arch 19.11: no
  - openSUSE 15.5: no
  - Slackware 15: no

So, to solve the problem, Guix would need to customize glibc
  1. to install locale.alias in /etc (= $(sysconfdir)),
  2. compile with a LOCALE_ALIAS_PATH=$(sysconfdir):$(localedir)

Then GNU gettext could be compiled with LOCALE_ALIAS_PATH=$(sysconfdir):$(localedir)
as well. This would work in standalone Guix, as well as in
Guix-on-top-of-another-distro.

Bruno







      reply	other threads:[~2023-10-21 20:48 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-13 20:22 bug#65927: the role and location of locale.alias Bruno Haible
2023-10-21 14:23 ` Ludovic Courtès
2023-10-21 20:47   ` Bruno Haible [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4309618.iZASKD2KPV@nimes \
    --to=bruno@clisp.org \
    --cc=65927@debbugs.gnu.org \
    --cc=ludo@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).