diff mbox series

[bug#57850,2/2] marionette: Avoid read error when wait-for-file file is empty.

Message ID 20220916073236.23634-2-mail@cbaines.net
State Accepted
Headers show
Series [bug#57850,1/2] marionette: Make it easier to debug REPL read failures. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git-branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Christopher Baines Sept. 16, 2022, 7:32 a.m. UTC
Since #<eof> can't be read.

* gnu/build/marionette.scm (wait-for-file): Return "" if file is empty.
---
 gnu/build/marionette.scm | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Mathieu Othacehe Sept. 16, 2022, 8:38 a.m. UTC | #1
> Since #<eof> can't be read.

You can maybe add:

Partially-Fixes: <https://issues.guix.gnu.org/57827>

Looks also fine,

Thanks,

Mathieu
Christopher Baines Sept. 16, 2022, 10:40 a.m. UTC | #2
Mathieu Othacehe <othacehe@gnu.org> writes:

>> Since #<eof> can't be read.
>
> You can maybe add:
>
> Partially-Fixes: <https://issues.guix.gnu.org/57827>
>
> Looks also fine,

Great, I've pushed these patches as
eb9a39c1b75a60fe3946496bb2eee8f32dbf09cd.

Thanks,

Chris
diff mbox series

Patch

diff --git a/gnu/build/marionette.scm b/gnu/build/marionette.scm
index fd59a4c72f..5ebf783892 100644
--- a/gnu/build/marionette.scm
+++ b/gnu/build/marionette.scm
@@ -198,7 +198,14 @@  (define* (wait-for-file file marionette
   (match (marionette-eval
           `(let loop ((i ,timeout))
              (cond ((file-exists? ,file)
-                    (cons 'success (call-with-input-file ,file ,read)))
+                    (cons 'success
+                          (let ((content
+                                 (call-with-input-file ,file ,read)))
+                            (if (eof-object? content)
+                                ;; #<eof> can't be read, so convert to the
+                                ;; empty string
+                                ""
+                                content))))
                    ((> i 0)
                     (sleep 1)
                     (loop (- i 1)))