Subject: Re: [bug#67686] [PATCH core-updates 4/5] gnu: glibc: Install C.UTF-8 locale.

From: Ludovic Courtès <[email-masked]>
Date: Thu, 07 Dec 2023 22:26:36 +0100

Ludovic Courtès <[email-masked]> skribis:

> Ludovic Courtès <[email-masked]> skribis:
>
>> +                     ;; Install the C.UTF-8 locale so there's always a UTF-8
>> +                     ;; locale around.
>> +                     (let* ((out (assoc-ref outputs "out"))
>> +                            (bin (string-append out "/bin"))
>> +                            (locale (string-append out "/lib/locale/"
>> +                                                   ,(package-version
>> +                                                     this-package))))
>> +                       (mkdir-p locale)
>> +                       (invoke (string-append bin "/localedef")
>> +                               "--no-archive" "--prefix" locale
>> +                               "-i" "C" "-f" "UTF-8"
>> +                               (string-append locale "/C.UTF-8")))))
>
> I realize now that this cannot work when cross-compiling, because the
> this ‘localedef’ binary is not executable on the build machine.
>
> I suspect libc builds an additional ‘localedef’ for the build machine
> but I’m not sure where it is, hmm…

I was told on #glibc that (1) there’s no ‘localedef’ for the build
machine produced during cross-compilation, and (2) that more generally,
there’s no way to cross-build locale data, that endianness and other
things may matter.

I suspect #2 was about the locale archive and not locale data, because
evidence suggests that locale data is system-independent:

--8<---------------cut here---------------start------------->8---
$ for s in aarch64-linux powerpc64le-linux armhf-linux i686-linux ; do diff -r $(guix build [email-masked]) $(guix build [email-masked] -s "$s") && echo "$s same as x86_64-linux" ; done
aarch64-linux same as x86_64-linux
powerpc64le-linux same as x86_64-linux
armhf-linux same as x86_64-linux
i686-linux same as x86_64-linux
$ guix describe
  guix 6e2dd51
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: 6e2dd51df5f3f51e9056dd4f2e1b036195ab3caa
--8<---------------cut here---------------end--------------->8---

Efraim, could you check against powerpc-linux, which is the only
big-endian target we +/- support?

Ludo’.