From ed0cd12a82b429bc5058f693a0f75f2ba0ee47c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 6 Dec 2023 10:52:49 +0100 Subject: [PATCH] gnu: glibc: Install C.UTF-8 locale. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/base.scm (glibc)[arguments]: Add ‘install-utf8-c-locale’ phase. (glibc-2.35)[arguments]: Delete ‘install-utf8-c-locale’ phase. (glibc-2.33, glibc-2.32, glibc-2.31): Inherit from ‘glibc-2.35’. Change-Id: I7ba515184c7b7c40eaefd355639ffef8eeca66d8 --- gnu/packages/base.scm | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index d440031eb5..b7e5b0479f 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -1075,6 +1075,26 @@ (define (linker-script? file) (map (cut string-append slib "/" <>) files)))))) + (add-after 'install 'install-utf8-c-locale + (lambda* (#:key outputs #:allow-other-keys) + ;; 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) + + ;; FIXME: When cross-compiling, attempt to use + ;; 'localedef' from the same libc version. + (invoke ,(if (%current-target-system) + "true" + '(string-append bin "/localedef")) + "--no-archive" "--prefix" locale + "-i" "C" "-f" "UTF-8" + (string-append locale "/C.UTF-8"))))) + ,@(if (target-hurd?) '((add-after 'install 'augment-libc.so (lambda* (#:key outputs #:allow-other-keys) @@ -1169,11 +1189,19 @@ (define-public glibc-2.35 "glibc-hurd-clock_t_centiseconds.patch" "glibc-hurd-clock_gettime_monotonic.patch" "glibc-hurd-mach-print.patch" - "glibc-hurd-gettyent.patch")))))) + "glibc-hurd-gettyent.patch")))) + (arguments + (substitute-keyword-arguments (package-arguments glibc) + ((#:phases phases) + ;; The C.UTF-8 fails to build in glibc 2.35: + ;; . + ;; It is missing altogether in versions earlier than 2.35. + `(modify-phases ,phases + (delete 'install-utf8-c-locale))))))) (define-public glibc-2.33 (package - (inherit glibc) + (inherit glibc-2.35) (name "glibc") (version "2.33") (source (origin @@ -1200,7 +1228,7 @@ (define-public glibc-2.33 (define-public glibc-2.32 (package - (inherit glibc) + (inherit glibc-2.35) (version "2.32") (source (origin (inherit (package-source glibc)) @@ -1255,7 +1283,7 @@ (define-public glibc-2.32 (define-public glibc-2.31 (package - (inherit glibc) + (inherit glibc-2.35) (version "2.31") (source (origin (inherit (package-source glibc))