aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-03-01 16:58:43 +0100
committerLudovic Courtès <ludo@gnu.org>2015-03-01 17:03:04 +0100
commit87c8b92f50c852de05eab2a0a50217adf8897c65 (patch)
tree701d4d5279ac2cf606ab8850a831bb66cdd3d1df
parentb479c3ddaf85c831e34888229849bc1ce34419de (diff)
downloadguix-87c8b92f50c852de05eab2a0a50217adf8897c65.tar
guix-87c8b92f50c852de05eab2a0a50217adf8897c65.tar.gz
gnu: commencement: Make UTF-8 locales available right after 'guile-final'.
In <http://hydra.gnu.org/build/263170>, we see: 153: 12 [patch-usr-bin-file #:native-inputs #f ...] [...] ?: 1 [regexp-exec # ...] In ice-9/boot-9.scm: 106: 0 [#<procedure 1998ec0 at ice-9/boot-9.scm:97:6 (thrown-k . args)> encoding-error ...] ice-9/boot-9.scm:106:20: In procedure #<procedure 1998ec0 at ice-9/boot-9.scm:97:6 (thrown-k . args)>: ice-9/boot-9.scm:106:20: Throw to key `encoding-error' with args `("scm_to_stringn" "cannot convert narrow string to output locale" 84 #f #f)'. This is due to that fact that 'patch-/usr/bin/file' read a line containing a byte sequence with bytes > 127 (namely a copyright sign.) But this build was running with a C locale, and so those bytes cannot be represented in that locale, hence this error. This commit makes the UTF-8 locales available earlier such that everything can be represented in locale encoding. * gnu/packages/commencement.scm (glibc-utf8-locales-final): Move earlier; change "gzip" input to GZIP built with %BOOT4-INPUTS. (%boot5-inputs): Define to %BOOT4-INPUTS plus GLIBC-UTF8-LOCALES-FINAL. (gnu-make-final, coreutils-final, grep-final): Use it instead of %BOOT4-INPUTS. (gzip-final): Remove. (%boot6-inputs): New variable. (%final-inputs): Use it instead of %BOOT5-INPUTS. Don't rely on GZIP-FINAL.
-rw-r--r--gnu/packages/commencement.scm43
1 files changed, 26 insertions, 17 deletions
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index aa0aac6d0e..f312e1729c 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -616,12 +616,31 @@ store.")
(current-source-location)
#:guile %bootstrap-guile)))
+(define glibc-utf8-locales-final
+ ;; Now that we have GUILE-FINAL, build the UTF-8 locales. They are needed
+ ;; by the build processes afterwards so their 'scm_to_locale_string' works
+ ;; with the full range of Unicode codepoints (remember
+ ;; 'scm_to_locale_string' is called every time a string is passed to a C
+ ;; function.)
+ (package
+ (inherit glibc-utf8-locales)
+ (inputs `(("glibc" ,glibc-final)
+ ("gzip"
+ ,(package-with-explicit-inputs gzip %boot4-inputs
+ (current-source-location)
+ #:guile %bootstrap-guile))))))
+
+(define %boot5-inputs
+ ;; Now with UTF-8 locale.
+ `(("locales" ,glibc-utf8-locales-final)
+ ,@%boot4-inputs))
+
(define gnu-make-final
;; The final GNU Make, which uses the final Guile.
(package-with-bootstrap-guile
(package-with-explicit-inputs gnu-make
`(("guile" ,guile-final)
- ,@%boot4-inputs)
+ ,@%boot5-inputs)
(current-source-location))))
(define-public ld-wrapper
@@ -638,7 +657,7 @@ store.")
;; Findutils, keep a reference to the Coreutils they were built with.
(package-with-bootstrap-guile
(package-with-explicit-inputs coreutils
- %boot4-inputs
+ %boot5-inputs
(current-source-location)
;; Use the final Guile, linked against the
@@ -652,25 +671,15 @@ store.")
;; built before gzip.
(package-with-bootstrap-guile
(package-with-explicit-inputs grep
- %boot4-inputs
+ %boot5-inputs
(current-source-location)
#:guile guile-final)))
-(define %boot5-inputs
+(define %boot6-inputs
;; Now use the final Coreutils.
`(("coreutils" ,coreutils-final)
("grep" ,grep-final)
- ,@%boot4-inputs))
-
-(define gzip-final
- (package-with-explicit-inputs gzip %boot5-inputs
- (current-source-location)))
-
-(define glibc-utf8-locales-final
- (package
- (inherit glibc-utf8-locales)
- (inputs `(("glibc" ,glibc-final)
- ("gzip" ,gzip-final)))))
+ ,@%boot5-inputs))
(define-public %final-inputs
;; Final derivations used as implicit inputs by 'gnu-build-system'. We
@@ -678,12 +687,13 @@ store.")
;; used for origins that have patches, thereby avoiding circular
;; dependencies.
(let ((finalize (compose package-with-bootstrap-guile
- (cut package-with-explicit-inputs <> %boot5-inputs
+ (cut package-with-explicit-inputs <> %boot6-inputs
(current-source-location)))))
`(,@(map (match-lambda
((name package)
(list name (finalize package))))
`(("tar" ,tar)
+ ("gzip" ,gzip)
("bzip2" ,bzip2)
("xz" ,xz)
("file" ,file)
@@ -692,7 +702,6 @@ store.")
("sed" ,sed)
("findutils" ,findutils)
("gawk" ,gawk)))
- ("gzip" ,gzip-final)
("grep" ,grep-final)
("coreutils" ,coreutils-final)
("make" ,gnu-make-final)