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'.
This commit is contained in:
parent
f2d7bbb537
commit
b6ac54517c
|
@ -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.
|
||||
|
|
|
@ -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")))
|
||||
|
|
Loading…
Reference in New Issue