summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
Diffstat (limited to 'guix')
-rw-r--r--guix/git-download.scm13
1 files changed, 13 insertions, 0 deletions
diff --git a/guix/git-download.scm b/guix/git-download.scm
index 5e624b9ae9..a1566bed4d 100644
--- a/guix/git-download.scm
+++ b/guix/git-download.scm
@@ -104,6 +104,12 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
(define gnutls
(module-ref (resolve-interface '(gnu packages tls)) 'gnutls))
+ (define glibc-locales
+ ;; Note: pick the '-final' variant to avoid circular dependency on
+ ;; i586-gnu, where 'glibc-utf8-locales' indirectly depends on Git.
+ (module-ref (resolve-interface '(gnu packages commencement))
+ 'glibc-utf8-locales-final))
+
(define modules
(delete '(guix config)
(source-module-closure '((guix build git)
@@ -125,6 +131,13 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
(define recursive?
(call-with-input-string (getenv "git recursive?") read))
+ ;; Let Guile interpret file names as UTF-8, otherwise
+ ;; 'delete-file-recursively' might fail to delete all of
+ ;; '.git'--see <https://issues.guix.gnu.org/54893>.
+ (setenv "GUIX_LOCPATH"
+ #+(file-append glibc-locales "/lib/locale"))
+ (setlocale LC_ALL "en_US.utf8")
+
;; The 'git submodule' commands expects Coreutils, sed,
;; grep, etc. to be in $PATH.
(set-path-environment-variable "PATH" '("bin")