guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

05/08: build-system/gnu: Add 'install-locale' phase.


From: Ludovic Courtès
Subject: 05/08: build-system/gnu: Add 'install-locale' phase.
Date: Thu, 26 Feb 2015 23:09:52 +0000

civodul pushed a commit to branch core-updates
in repository guix.

commit 5335c56e8eb1953d7e14130896fea35309231134
Author: Ludovic Courtès <address@hidden>
Date:   Thu Feb 26 23:36:55 2015 +0100

    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 c675155..c91ad2e 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 <address@hidden>
+;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -278,6 +278,7 @@ standard packages used as implicit inputs of the GNU build 
system."
                     (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 @@ are allowed to refer to."
                   #: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 @@ is one of `host' or `target'."
                           (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 @@ platform."
                                              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 25df711..c3cc3ce 100644
--- a/guix/build/gnu-build-system.scm
+++ b/guix/build/gnu-build-system.scm
@@ -94,6 +94,29 @@
 
   #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 @@ DOCUMENTATION-COMPRESSOR-FLAGS."
   ;; 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]