janneke pushed a commit to branch core-packages-team in repository guix. commit 55f7806234b9a804f35d463e96d389b96a467ac1 Author: Tomas Volf <~@wolfsden.cz> AuthorDate: Thu Jan 23 23:57:06 2025 +0100
gexp: Improve support of Unicode characters. Support for non-ASCII characters was mixed. Some gexp forms did support them, while others did not. Combined with current value for %default-port-conversion-strategy, that sometimes led to unpleasant surprises. Fixes #73660, see <https://issues.guix.gnu.org/73660>. * guix/gexp.scm (gexp->derivation): Default LC_CTYPE to C.UTF-8. (gexp->script, text-file*): Set port encoding to UTF-8. Change-Id: Ie92a57fe1c3b45d1c7a5e8865fcf291c5f590c11 Signed-off-by: Janneke Nieuwenhuizen <jann...@gnu.org> --- guix/gexp.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/guix/gexp.scm b/guix/gexp.scm index 811cf02a53..3ebbd9beae 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othac...@gmail.com> ;;; Copyright © 2020 Maxim Cournoyer <maxim.courno...@gmail.com> ;;; Copyright © 2021, 2022 Maxime Devos <maximede...@telenet.be> +;;; Copyright © 2025 Tomas Volf <~@wolfsden.cz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1151,7 +1152,7 @@ derivations--e.g., code evaluated for its side effects." #:key system (target 'current) hash hash-algo recursive? - (env-vars '()) + (env-vars '(("LC_CTYPE" . "C.UTF-8"))) (modules '()) (module-path %load-path) (guile-for-build (%guile-for-build)) @@ -2020,6 +2021,8 @@ imported modules in its search path. Look up EXP's modules in MODULE-PATH." (gexp (call-with-output-file (ungexp output) (lambda (port) + (set-port-encoding! port "UTF-8") + ;; Note: that makes a long shebang. When the store ;; is /gnu/store, that fits within the 128-byte ;; limit imposed by Linux, but that may go beyond @@ -2118,6 +2121,7 @@ resulting store file holds references to all these." (define builder (gexp (call-with-output-file (ungexp output "out") (lambda (port) + (set-port-encoding! port "UTF-8") (display (string-append (ungexp-splicing text)) port))))) (gexp->derivation name builder