From 89715460c31b58b68a6903f2a1e11de049d7d935 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 7 Dec 2023 10:48:23 +0100 Subject: gnu: glibc: Ensure C.UTF-8 locale is always found. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change ensures that $prefix/lib/locale, which now contains C.UTF-8 data, is always searched. Thus, “setlocale (LC_ALL, "C.UTF-8")” is guaranteed to always succeed. * gnu/packages/patches/glibc-2.37-versioned-locpath.patch: Adjust. Change-Id: I6aaf2757da98e811aa55e0959126065537cd8970 --- .../patches/glibc-2.37-versioned-locpath.patch | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/patches/glibc-2.37-versioned-locpath.patch b/gnu/packages/patches/glibc-2.37-versioned-locpath.patch index 8685f2c3b7..1f34292ad0 100644 --- a/gnu/packages/patches/glibc-2.37-versioned-locpath.patch +++ b/gnu/packages/patches/glibc-2.37-versioned-locpath.patch @@ -12,6 +12,20 @@ that variable. So, if GUIX_LOCPATH=/foo:/bar, locale data is searched for in That way, a single 'GUIX_LOCPATH' setting can work even if different libc versions coexist on the system. +diff --git a/locale/Makefile b/locale/Makefile +index d7036b08..b5125166 100644 +--- a/locale/Makefile ++++ b/locale/Makefile +@@ -94,7 +94,9 @@ localepath = "$(complocaledir):$(i18ndir)" + # -Iprograms doesn't really belong here, but this gets it at the head + # of the list instead of the tail, where CPPFLAGS-$(lib) gets added. + # We need it before the standard -I's to see programs/config.h first. ++# Define 'LOCALEDIR' for use in 'compute_locale_search_path'. + locale-CPPFLAGS = -DCOMPLOCALEDIR='"$(complocaledir)"' \ ++ -DLOCALEDIR='"$(libdir)/locale"' \ + -DLOCALE_ALIAS_PATH='"$(localedir)"' \ + -Iprograms + diff --git a/locale/newlocale.c b/locale/newlocale.c index 108d2428..6218e0fa 100644 --- a/locale/newlocale.c @@ -56,7 +70,7 @@ diff --git a/locale/setlocale.c b/locale/setlocale.c index 6a902faa..2d07a644 100644 --- a/locale/setlocale.c +++ b/locale/setlocale.c -@@ -213,12 +213,65 @@ setdata (int category, struct __locale_data *data) +@@ -213,12 +213,71 @@ setdata (int category, struct __locale_data *data) } } @@ -104,6 +118,12 @@ index 6a902faa..2d07a644 100644 + goto bail_out; + } + ++ /* Last, unconditionally append our own locale directory, which should ++ contain data for C.UTF-8. */ ++ if (__argz_add_sep (locale_path, locale_path_len, ++ LOCALEDIR "/" VERSION, ':') != 0) ++ goto bail_out; ++ + return 0; + + bail_out: -- cgit v1.2.3