diff options
author | Ludovic Courtès <ludo@gnu.org> | 2017-08-27 20:58:33 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-08-28 09:56:33 +0200 |
commit | 8bd5231485cdeb02078c4294badb3a1e7caa0fe0 (patch) | |
tree | 68d7157a288a4c600fff6c7abd23bc2b309875e4 | |
parent | a881a40cea85c9c304b85c2054f89d801d500e5c (diff) | |
download | guix-8bd5231485cdeb02078c4294badb3a1e7caa0fe0.tar guix-8bd5231485cdeb02078c4294badb3a1e7caa0fe0.tar.gz |
marionette: 'wait-for-file' really raises an error when a file is missing.
* gnu/build/marionette.scm (wait-for-file): Arrange to call 'error' on
the host, not in the guest.
-rw-r--r-- | gnu/build/marionette.scm | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/gnu/build/marionette.scm b/gnu/build/marionette.scm index 424f2b6713..789dab3ca0 100644 --- a/gnu/build/marionette.scm +++ b/gnu/build/marionette.scm @@ -168,16 +168,20 @@ QEMU monitor and to the guest's backdoor REPL." (define* (wait-for-file file marionette #:key (timeout 10)) "Wait until FILE exists in MARIONETTE; 'read' its content and return it. If FILE has not shown up after TIMEOUT seconds, raise an error." - (marionette-eval - `(let loop ((i ,timeout)) - (cond ((file-exists? ,file) - (call-with-input-file ,file read)) - ((> i 0) - (sleep 1) - (loop (- i 1))) - (else - (error "file didn't show up" ,file)))) - marionette)) + (match (marionette-eval + `(let loop ((i ,timeout)) + (cond ((file-exists? ,file) + (cons 'success (call-with-input-file ,file read))) + ((> i 0) + (sleep 1) + (loop (- i 1))) + (else + 'failure))) + marionette) + (('success . result) + result) + ('failure + (error "file didn't show up" file)))) (define (marionette-control command marionette) "Run COMMAND in the QEMU monitor of MARIONETTE. COMMAND is a string such as |