From 5335c56e8eb1953d7e14130896fea35309231134 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 26 Feb 2015 23:36:55 +0100 Subject: build-system/gnu: Add 'install-locale' phase. * guix/build/gnu-build-system.scm (install-locale): New procedure. (%standard-phases): Add it. * guix/build-system/gnu.scm (gnu-build): Add #:locale and pass it to the build script. (gnu-cross-build): Likewise. --- guix/build-system/gnu.scm | 6 +++++- guix/build/gnu-build-system.scm | 25 ++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm index c675155a6a..c91ad2ee0c 100644 --- a/guix/build-system/gnu.scm +++ b/guix/build-system/gnu.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -278,6 +278,7 @@ (define* (gnu-build store name input-drvs (strip-directories ''("lib" "lib64" "libexec" "bin" "sbin")) (phases '%standard-phases) + (locale "en_US.UTF-8") (system (%current-system)) (imported-modules %default-modules) (modules %default-modules) @@ -328,6 +329,7 @@ (define builder #:search-paths ',(map search-path-specification->sexp search-paths) #:phases ,phases + #:locale ,locale #:configure-flags ,configure-flags #:make-flags ,make-flags #:out-of-source? ,out-of-source? @@ -410,6 +412,7 @@ (define* (gnu-cross-build store name (strip-directories ''("lib" "lib64" "libexec" "bin" "sbin")) (phases '%standard-phases) + (locale "en_US.UTF-8") (system (%current-system)) (imported-modules '((guix build gnu-build-system) (guix build utils))) @@ -473,6 +476,7 @@ (define %build-target-inputs search-path-specification->sexp native-search-paths) #:phases ,phases + #:locale ,locale #:configure-flags ,configure-flags #:make-flags ,make-flags #:out-of-source? ,out-of-source? diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index 25df711170..c3cc3ce70a 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -94,6 +94,29 @@ (define native-input-directories #t) +(define* (install-locale #:key + (locale "en_US.UTF-8") + (locale-category LC_ALL) + #:allow-other-keys) + "Try to install LOCALE; emit a warning if that fails. The main goal is to +use a UTF-8 locale so that Guile correctly interprets UTF-8 file names. + +This phase must typically happen after 'set-paths' so that $LOCPATH has a +chance to be set." + (catch 'system-error + (lambda () + (setlocale locale-category locale) + (format (current-error-port) "using '~a' locale for category ~a~%" + locale locale-category) + #t) + (lambda args + ;; This is known to fail for instance in early bootstrap where locales + ;; are not available. + (format (current-error-port) + "warning: failed to install '~a' locale: ~a~%" + locale (strerror (system-error-errno args))) + #t))) + (define* (unpack #:key source #:allow-other-keys) "Unpack SOURCE in the working directory, and change directory within the source. When SOURCE is a directory, copy it in a sub-directory of the current @@ -454,7 +477,7 @@ (define %standard-phases ;; Standard build phases, as a list of symbol/procedure pairs. (let-syntax ((phases (syntax-rules () ((_ p ...) `((p . ,p) ...))))) - (phases set-paths unpack + (phases set-paths install-locale unpack patch-usr-bin-file patch-source-shebangs configure patch-generated-file-shebangs build check install -- cgit v1.2.3