[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#71232] [PATCH] gexp: Allow program-file to output unicode.
From: |
Tomas Volf |
Subject: |
[bug#71232] [PATCH] gexp: Allow program-file to output unicode. |
Date: |
Mon, 27 May 2024 20:30:25 +0200 |
Due to the port being in ANSI_X3.4-1968 by default, λ character in the gexp is
replaced by ?. Therefore #~((λ _ #t)) builds as ((? _ #t)), which does not
work (obviously).
The solution is to set the output port to UTF-8 encoding. That allows
(program-file "utf8" #~((λ _ (display "猫\n"))))
to build as
#!...
!#
((λ _ (display "猫\n")))
which does what you would expect.
Change-Id: Ib96f5eed7fe0acfe23db09260a93a09bd6969024
---
Tested locally. No tests are provided, since whole tests/gexp.scm uses
%bootstrap-guile (so version 2), where it worked already. It is problem
only with more modern guile 3, which is used by actual builds.
I am not sure how much this will rebuild and do not know how to find out.
guix/gexp.scm | 1 +
1 file changed, 1 insertion(+)
diff --git a/guix/gexp.scm b/guix/gexp.scm
index 74b4c49f90..23b7e4eae6 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -1997,6 +1997,7 @@ (define* (gexp->script name exp
(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
--
2.41.0
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [bug#71232] [PATCH] gexp: Allow program-file to output unicode.,
Tomas Volf <=