summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-10-03 12:13:53 +0200
committerLudovic Courtès <ludo@gnu.org>2015-10-04 00:09:29 +0200
commitb6ac54517cc878034f57f983cfe561ebf8e2eb7f (patch)
treecb9df45ab58f2aaf7ccce6613a20fb7995c27178
parentf2d7bbb537dd3e3fa3b0215549640d2d9c0aeaec (diff)
gnu: commencement: Remove the tricky locale compatibility handling.
This is made unnecessary by the use of 'GUIX_LOCPATH'. * gnu/packages/commencement.scm (locale-proof-package): Remove. (%boot5-inputs): Add on GLIBC-UTF8-LOCALES-FINAL. This reverts parts of commit 28cbc58. * gnu/packages/gawk.scm (gawk): Set 'GUIX_LOCPATH' instead of 'LOCPATH'.
-rw-r--r--gnu/packages/commencement.scm77
-rw-r--r--gnu/packages/gawk.scm2
2 files changed, 5 insertions, 74 deletions
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 56c4cefaf9..73b0ce4364 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -660,46 +660,6 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
(current-source-location)
#:guile %bootstrap-guile))))))
-(define (locale-proof-package p)
- "Return a new package based on P that ignores 'LOCPATH'. The result is a
-\"locale-proof\" package in the sense that it cannot end up loading locale
-data that is not in the format its libc expects. This is useful because the
-locale binary format may change incompatibly between libc versions."
- (package
- (inherit p)
- (name (string-append (package-name p) "-lp"))
- (build-system trivial-build-system)
- (inputs `(("original" ,p)
- ("bash" ,bash-final)))
- (outputs '("out"))
- (arguments
- '(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
-
- (let* ((out (assoc-ref %outputs "out"))
- (bin (string-append out "/bin"))
- (bash (assoc-ref %build-inputs "bash"))
- (binaries (assoc-ref %build-inputs "original"))
- (programs (find-files (string-append binaries "/bin"))))
- (define (wrap-program program)
- (let ((base (basename program)))
- (call-with-output-file base
- (lambda (port)
- (format port "#!~a/bin/sh
-# Unset 'LOCPATH' so that the program does not end up loading incompatible
-# locale data.
-unset LOCPATH
-exec \"~a\" \"$@\"\n"
- bash program)))
- (chmod base #o755)))
-
- (mkdir-p bin)
- (with-directory-excursion bin
- (for-each wrap-program programs)
- #t)))))))
-
(define-public ld-wrapper
;; The final 'ld' wrapper, which uses the final Guile and Binutils.
(package (inherit ld-wrapper-boot3)
@@ -710,40 +670,11 @@ exec \"~a\" \"$@\"\n"
'("guile" "bash"))))))
(define %boot5-inputs
- ;; Now with UTF-8 locales. Since the locale binary format differs between
- ;; libc versions, we have to rebuild some of the packages so that they use
- ;; the new libc, which allows them to load locale data from
- ;; GLIBC-UTF8-LOCALES-FINAL (remember that the bootstrap binaries were built
- ;; with an older libc, which cannot load the new locale format.) See
+ ;; Now with UTF-8 locales. Remember that the bootstrap binaries were built
+ ;; with an older libc, which cannot load the new locale format. See
;; <https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>.
- (let ((new-libc-package (compose package-with-bootstrap-guile
- (cut package-with-explicit-inputs <>
- %boot4-inputs
- (current-source-location)
- #:guile %bootstrap-guile))))
- `(("locales" ,glibc-utf8-locales-final)
- ("ld-wrapper" ,ld-wrapper)
- ("binutils" ,binutils-final)
- ("bash" ,bash-final)
- ("make" ,(new-libc-package gnu-make))
-
- ;; Some test suites (grep, Gnulib) use 'diff' to compare files in locale
- ;; encoding, so we need support this.
- ("diffutils" ,(new-libc-package diffutils))
- ("findutils" ,(new-libc-package findutils))
-
- ;; Grep's test suite uses 'timeout' from Coreutils to execute command,
- ;; and yet these commands need to see the valid 'LOCPATH'.
- ("coreutils" ,(new-libc-package coreutils-minimal))
-
- ;; We just wrap the remaining binaries (tar, gzip, xz, etc.) so that
- ;; they ignore 'LOCPATH' (if they did not, they would be hit by an
- ;; assertion failure in loadlocale.c.)
- ("coreutils&co" ,(locale-proof-package %bootstrap-coreutils&co))
-
- ,@(fold alist-delete %boot4-inputs
- '("coreutils&co" "findutils" "diffutils" "make"
- "bash" "binutils-cross" "ld-wrapper")))))
+ `(("locales" ,glibc-utf8-locales-final)
+ ,@%boot4-inputs))
(define gnu-make-final
;; The final GNU Make, which uses the final Guile.
diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm
index d2639a32a3..fa07f5bd4b 100644
--- a/gnu/packages/gawk.scm
+++ b/gnu/packages/gawk.scm
@@ -63,7 +63,7 @@
;; A bunch of tests require the availability of a UTF-8
;; locale and otherwise fail. Since UTF-8 locales are not
;; available during bootstrap, create one here.
- (setenv "LOCPATH" (getcwd))
+ (setenv "GUIX_LOCPATH" (getcwd))
(zero? (system* "localedef" "--no-archive"
"--prefix" (getcwd) "-i" "en_US"
"-f" "UTF-8" "./en_US.UTF-8")))