summary refs log tree commit diff
diff options
context:
space:
mode:
authorEric Bavier <bavier@cray.com>2018-10-10 16:42:02 -0500
committerEric Bavier <bavier@member.fsf.org>2018-10-16 17:12:09 -0500
commit278f86a43f1561b1c064ce88da012db414ec7efc (patch)
tree9fb4e195618afa1ca94075fe1ff988d7e1cf6893
parent6f1ce09d79fa6148459c90120881e825551651b2 (diff)
downloadguix-278f86a43f1561b1c064ce88da012db414ec7efc.tar.gz
ui: Fix port-buffering with guile@2.0.
* guix/status.scm (build-event-output-port)[guile@2.0]: Do not call 'setvbuf'
on custom binary port.
* tests/status.scm (current-build-output-port, UTF-8 + garbage)[guile@2.0]:
Use "?" in place of REPLACEMENT CHARACTER.
-rw-r--r--guix/status.scm5
-rw-r--r--tests/status.scm5
2 files changed, 7 insertions, 3 deletions
diff --git a/guix/status.scm b/guix/status.scm
index 8e05d4eb76..ffa9d9e93c 100644
--- a/guix/status.scm
+++ b/guix/status.scm
@@ -588,8 +588,9 @@ The second return value is a thunk to retrieve the current state."
 
   ;; The build port actually receives Unicode strings.
   (set-port-encoding! port "UTF-8")
-  (setvbuf port (cond-expand (guile-2.2 'line) (else _IOLBF)))
-
+  (cond-expand
+    ((and guile-2 (not guile-2.2)) #t)
+    (else (setvbuf port 'line)))
   (values port (lambda () %state)))
 
 (define (call-with-status-report on-event thunk)
diff --git a/tests/status.scm b/tests/status.scm
index 3b74946673..99abb41c8b 100644
--- a/tests/status.scm
+++ b/tests/status.scm
@@ -125,7 +125,10 @@
 
 (test-equal "current-build-output-port, UTF-8 + garbage"
   ;; What about a mixture of UTF-8 + garbage?
-  '((build-log #f "garbage: �lambda: λ\n"))
+  (let ((replacement (cond-expand
+                      ((and guile-2 (not guile-2.2)) "?")
+                      (else "�"))))
+    `((build-log #f ,(string-append "garbage: " replacement "lambda: λ\n"))))
   (let-values (((port get-status) (build-event-output-port cons '())))
     (display "garbage: " port)
     (put-bytevector port #vu8(128))