substitute: Set LC_MESSAGES to the client's locale, not LC_ALL.
Fixes <https://bugs.gnu.org/43039>. Reported by Adam Griffiths <adam.lw.griffiths@gmail.com>. Previously, a client could lead 'guix substitute' to run in a non-UTF-8 locale, such as the "C" locale. Consequently, 'guix substitute' would now fail to decode UTF-8 file names such as those that appear in the 'nss-certs' package. * guix/scripts/substitute.scm (guix-substitute): Set LC_MESSAGES, not LC_ALL.master
parent
8ce6f4dc28
commit
aba8def46d
|
@ -1126,12 +1126,13 @@ default value."
|
||||||
;; Sanity-check SUBSTITUTE-URLS so we can provide a meaningful error message.
|
;; Sanity-check SUBSTITUTE-URLS so we can provide a meaningful error message.
|
||||||
(for-each validate-uri (substitute-urls))
|
(for-each validate-uri (substitute-urls))
|
||||||
|
|
||||||
;; Attempt to install the client's locale, mostly so that messages are
|
;; Attempt to install the client's locale so that messages are suitably
|
||||||
;; suitably translated.
|
;; translated. LC_CTYPE must be a UTF-8 locale; it's the case by default so
|
||||||
|
;; don't change it.
|
||||||
(match (or (find-daemon-option "untrusted-locale")
|
(match (or (find-daemon-option "untrusted-locale")
|
||||||
(find-daemon-option "locale"))
|
(find-daemon-option "locale"))
|
||||||
(#f #f)
|
(#f #f)
|
||||||
(locale (false-if-exception (setlocale LC_ALL locale))))
|
(locale (false-if-exception (setlocale LC_MESSAGES locale))))
|
||||||
|
|
||||||
(catch 'system-error
|
(catch 'system-error
|
||||||
(lambda ()
|
(lambda ()
|
||||||
|
|
Reference in New Issue