Subject: [PATCH] build: Use -c when building C.utf8 locale for glibc 2.35

From: Tomas Volf <[email-masked]>
Date: Sun, 10 Dec 2023 01:53:58 +0100

C.utf8 locale for glibc 2.35 does not build without errors.  However, if the
build is forced using -c, the resulting locale file works just fine.  It is a
recommended[0] workaround by the upstream.  More info can be found here[1].

0: https://sourceware.org/bugzilla/show_bug.cgi?id=28861
1: https://sourceware.org/bugzilla/show_bug.cgi?id=28845

* gnu/build/locale.scm (build-locale): Add -c when building C.utf8 for 2.35.

Change-Id: I7429b67b222bb8c0796209fd6f7c7a8720424c68
---
 gnu/build/locale.scm | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/gnu/build/locale.scm b/gnu/build/locale.scm
index 412759a320..b6f01bab0e 100644
--- a/gnu/build/locale.scm
+++ b/gnu/build/locale.scm
@@ -82,9 +82,15 @@ (define* (build-locale locale
   "Compute locale data for LOCALE and CODESET--e.g., \"en_US\" and
 \"UTF-8\"--with LOCALEDEF, and store it in DIRECTORY under NAME."
   (format #t "building locale '~a'...~%" name)
-  (invoke localedef "--no-archive" "--prefix" directory
-          "-i" locale "-f" codeset
-          (string-append directory "/" name)))
+  ;; In 2.35 the C.utf8 locale produces an error during a build.  The
+  ;; resulting locale works fine, so the error needs to be suppressed.
+  ;; https://sourceware.org/bugzilla/show_bug.cgi?id=28845
+  (define [email-masked]? (and (string-suffix? "/2.35" directory)
+                            (string=? "C.utf8" name)))
+  (apply invoke localedef "--no-archive" "--prefix" directory
+         "-i" locale "-f" codeset
+         (append (if [email-masked]? '("-c") '())
+                 (list (string-append directory "/" name)))))
 
 (define (locale->name+codeset locale)
   "Split a locale name such as \"[email-masked]\" into two values: the

base-commit: 61f2d84e75c340c2ba528d392f522c51b8843f34
-- 
2.41.0