From 278f86a43f1561b1c064ce88da012db414ec7efc Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 10 Oct 2018 16:42:02 -0500 Subject: 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. --- guix/status.scm | 5 +++-- tests/status.scm | 5 ++++- 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 @@ (define port ;; 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 @@ (define-module (test-status) (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)) -- cgit v1.2.3