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
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2014, 2021, 2022 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix)
#:use-module (guix packages)
#:re-export-and-replace (define-public)) ;from (guix packages)
;; The composite module that re-exports everything from the public modules.
(eval-when (eval load compile)
(begin
(define %public-modules
'(base32
build-system
derivations
download
gexp
monads
monad-repl
packages
store
utils))
(for-each (let ((i (module-public-interface (current-module))))
(lambda (m)
(module-use! i (resolve-interface `(guix ,m)))))
%public-modules)))