diff options
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/base.scm | 9 | ||||
-rw-r--r-- | gnu/packages/patches/glibc-locales-2.28.patch | 31 | ||||
-rw-r--r-- | gnu/packages/patches/glibc-locales.patch | 17 |
4 files changed, 49 insertions, 9 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index f63ff1ff1e..e142122e6b 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -867,6 +867,7 @@ dist_patch_DATA = \ %D%/packages/patches/glibc-hurd-magic-pid.patch \ %D%/packages/patches/glibc-ldd-x86_64.patch \ %D%/packages/patches/glibc-locales.patch \ + %D%/packages/patches/glibc-locales-2.28.patch \ %D%/packages/patches/glibc-o-largefile.patch \ %D%/packages/patches/glibc-reinstate-prlimit64-fallback.patch \ %D%/packages/patches/glibc-vectorized-strcspn-guards.patch \ diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 5878cbec5e..0df40d9c50 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -999,7 +999,14 @@ with the Linux kernel.") (inherit glibc) (name "glibc-locales") (source (origin (inherit (package-source glibc)) - (patches (cons (search-patch "glibc-locales.patch") + ;; The patch for glibc 2.28 and earlier replaces the same + ;; content, but the context in the patch is different + ;; enough to fail to merge. + (patches (cons (search-patch + (if (version>=? (package-version glibc) + "2.29") + "glibc-locales.patch" + "glibc-locales-2.28.patch")) (origin-patches (package-source glibc)))))) (synopsis "All the locales supported by the GNU C Library") (description diff --git a/gnu/packages/patches/glibc-locales-2.28.patch b/gnu/packages/patches/glibc-locales-2.28.patch new file mode 100644 index 0000000000..31ee6c1ff3 --- /dev/null +++ b/gnu/packages/patches/glibc-locales-2.28.patch @@ -0,0 +1,31 @@ +This patch allows us to use glibc's build system to build locales +in a package separate from glibc. + + 1. Use 'localedef' from $PATH since we are not rebuilding it. + 2. Use '--no-archive' to avoid building the big locale archive, and + because the already-built 'localedef' would want to write it + to '/run/current-system/locale', which is not possible. + 3. Pass $(inst_complocaledir)/$$locale to install files in the right + place, and because otherwise, 'localedef' fails with: + "cannot write output files to `(null)'". + +--- glibc-2.27/localedata/Makefile ++++ glibc-2.27/localedata/Makefile +@@ -199,7 +199,7 @@ INSTALL-SUPPORTED-LOCALES=$(addprefix install-, $(SUPPORTED-LOCALES)) + + # Sometimes the whole collection of locale files should be installed. + LOCALEDEF=I18NPATH=. GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \ +-$(rtld-prefix) $(common-objpfx)locale/localedef ++ localedef --no-archive + install-locales: $(INSTALL-SUPPORTED-LOCALES) + + install-locales-dir: +@@ -224,7 +224,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-locales-dir + input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \ + $(LOCALEDEF) $$flags --alias-file=../intl/locale.alias \ + -i locales/$$input -f charmaps/$$charset \ +- $(addprefix --prefix=,$(install_root)) $$locale \ ++ $(addprefix --prefix=,$(install_root)) $(inst_complocaledir)/$$locale \ + && echo ' done'; \ + + tst-setlocale-ENV = LC_ALL=ja_JP.EUC-JP diff --git a/gnu/packages/patches/glibc-locales.patch b/gnu/packages/patches/glibc-locales.patch index 31ee6c1ff3..9329a09063 100644 --- a/gnu/packages/patches/glibc-locales.patch +++ b/gnu/packages/patches/glibc-locales.patch @@ -9,23 +9,24 @@ in a package separate from glibc. place, and because otherwise, 'localedef' fails with: "cannot write output files to `(null)'". ---- glibc-2.27/localedata/Makefile -+++ glibc-2.27/localedata/Makefile -@@ -199,7 +199,7 @@ INSTALL-SUPPORTED-LOCALES=$(addprefix install-, $(SUPPORTED-LOCALES)) +diff -ru glibc-2.29-old/localedata/Makefile glibc-2.29-new/localedata/Makefile +--- glibc-2.29-old/localedata/Makefile 2019-01-31 11:45:36.000000000 -0500 ++++ glibc-2.29-new/localedata/Makefile 2019-07-03 22:48:35.662015071 -0400 +@@ -385,7 +385,7 @@ # Sometimes the whole collection of locale files should be installed. LOCALEDEF=I18NPATH=. GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \ -$(rtld-prefix) $(common-objpfx)locale/localedef + localedef --no-archive - install-locales: $(INSTALL-SUPPORTED-LOCALES) + install-locales: install-locale-archive - install-locales-dir: -@@ -224,7 +224,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-locales-dir + # Create and install the locale-archive file. +@@ -414,7 +414,7 @@ input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \ $(LOCALEDEF) $$flags --alias-file=../intl/locale.alias \ -i locales/$$input -f charmaps/$$charset \ - $(addprefix --prefix=,$(install_root)) $$locale \ + $(addprefix --prefix=,$(install_root)) $(inst_complocaledir)/$$locale \ - && echo ' done'; \ + && echo ' done'; + endef - tst-setlocale-ENV = LC_ALL=ja_JP.EUC-JP |