diff options
author | Ludovic Courtès <ludo@gnu.org> | 2016-04-20 23:16:47 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2016-04-20 23:16:47 +0200 |
commit | 38f50f49f395fcda6ab3395ebaa312f8ee24d80d (patch) | |
tree | febc6db507116f0be5a1712750eb0e6b8deb2c7e | |
parent | f954c9b5da256009fc41483e8fccd9bee1504870 (diff) | |
download | guix-38f50f49f395fcda6ab3395ebaa312f8ee24d80d.tar.gz guix-38f50f49f395fcda6ab3395ebaa312f8ee24d80d.zip |
substitute: Install the client's locale.
* guix/store.scm (set-build-options): Add #:locale parameter and honor
it.
* guix/scripts/substitute.scm (guix-substitute): Install the client's
locale.
-rwxr-xr-x | guix/scripts/substitute.scm | 7 | ||||
-rw-r--r-- | guix/store.scm | 8 |
2 files changed, 14 insertions, 1 deletions
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index e0a694ad0f..fa1dd09df8 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -1000,6 +1000,13 @@ default value." (newline) (force-output (current-output-port)) + ;; Attempt to install the client's locale, mostly so that messages are + ;; suitably translated. + (match (or (find-daemon-option "untrusted-locale") + (find-daemon-option "locale")) + (#f #f) + (locale (false-if-exception (setlocale LC_ALL locale)))) + (with-networking (with-error-handling ; for signature errors (match args diff --git a/guix/store.scm b/guix/store.scm index af311a0ebd..8d1099dab2 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -534,7 +534,10 @@ encoding conversion errors." (substitute-urls #f) ;; Number of columns in the client's terminal. - (terminal-columns (terminal-columns))) + (terminal-columns (terminal-columns)) + + ;; Locale of the client. + (locale (false-if-exception (setlocale LC_ALL)))) ;; Must be called after `open-connection'. (define socket @@ -573,6 +576,9 @@ encoding conversion errors." ,@(if terminal-columns `(("terminal-columns" . ,(number->string terminal-columns))) + '()) + ,@(if locale + `(("locale" . ,locale)) '())))) (send (string-pairs pairs)))) (let loop ((done? (process-stderr server))) |