aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2022-09-16 00:49:48 +0200
committerChristopher Baines <mail@cbaines.net>2022-09-16 11:59:39 +0200
commit0f46d4f1477b0446abd089f842ac7409963cc4f1 (patch)
tree71c57da9e765d8393c44514021ef2f09b3e5000a /gnu
parentd0376f6718b57be90b2f7697c90e4ecbe0090e0f (diff)
downloadguix-0f46d4f1477b0446abd089f842ac7409963cc4f1.tar
guix-0f46d4f1477b0446abd089f842ac7409963cc4f1.tar.gz
marionette: Make it easier to debug REPL read failures.
Log the remaining contnet written to the REPL, so that there's more to go on than: socket:5:14: Unknown # object: "#<" * gnu/build/marionette.scm (marionette-eval): Catch exceptions from read and log the remainder of the content from the REPL.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/build/marionette.scm13
1 files changed, 12 insertions, 1 deletions
diff --git a/gnu/build/marionette.scm b/gnu/build/marionette.scm
index 06b699bd7b..fd59a4c72f 100644
--- a/gnu/build/marionette.scm
+++ b/gnu/build/marionette.scm
@@ -178,7 +178,18 @@ QEMU monitor and to the guest's backdoor REPL."
(($ <marionette> command pid monitor (= force repl))
(write exp repl)
(newline repl)
- (read repl))))
+ (with-exception-handler
+ (lambda (exn)
+ (simple-format
+ (current-error-port)
+ "error reading marionette response: ~A
+ remaining response: ~A\n"
+ exn
+ (get-line repl))
+ (raise-exception exn))
+ (lambda ()
+ (read repl))
+ #:unwind? #t))))
(define* (wait-for-file file marionette
#:key (timeout 10) (read 'read))