ssh: Silence remote daemon messages when sending store items.

Fixes <https://issues.guix.gnu.org/61839>.

Previously, when running 'guix-daemon --debug' on the remote machine,
lots of debugging outputs would be printed to stderr; since the client
wouldn't read it, we could eventually reach a deadlock where the 'guix
repl' process would be stuck writing to stderr while the client is
stuck waiting on its stdout.

* guix/ssh.scm (store-import-channel)[import]: Parameterize
'current-build-output-port'.
This commit is contained in:
Ludovic Courtès 2023-04-17 22:28:01 +02:00
parent 8136c1578e
commit 166a3e3fde
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 9 additions and 1 deletions

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016-2021, 2023 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -367,7 +367,15 @@ can be written."
(force-output)
(setvbuf (current-input-port) 'none)
;; If 'guix-daemon' is running with '--debug', a lot of
;; debugging info goes to 'current-build-output-port' (stderr
;; by default). However, since nobody's reading it, this
;; could lead to a deadlock. Thus, disable debugging output.
(set-build-options store #:verbosity 0)
(import-paths store (current-input-port))
'(success))))
(lambda args
(cons 'error args))))