Vivien Kraus schreef op wo 22-09-2021 om 18:46 [+0200]: > + (define log-file (open-output-file "guix-test.log")) > + (let loop ((has-errors? #f)) > + (let ((line (read-line port))) > + (unless (eof-obj ect? line) > + (write-line line log-file)) > + (match `(,line ,has-errors?) > + (((? error? line) _) > + (loop #t)) > + (((? stop?) #f) > + (kill pid SIGINT) > + (close-port port) > + (waitpid pid)) > + (((? eof-object?) #f) > + (error "minetest didn't start")) > + (((or (? stop?) (? eof-object?)) #t) '(close-port port)' is missing in this branch. This is important if 'port' is buffered, to flush the buffers. From a test at the Guile REPL, it appears ports from 'open-output-file' are buffered. > + (error "minetest stopped after an error happened, see source/guix_testworld/guix-test.log")) This requires the user to do "--keep-failed". It would be more convenient if the output of Minetest was send to current-output-port, that way the errors can be read from the build log (possibly at ). Suggestion: don't keep guix-test.log, or only print errors, but rather output all ouputs of "minetest" to (current-output-port). Alternative suggestion (to make building less verbose when there are no errors): this patch, but run "cat" or a guile equivalent thereof (maybe open-input-file + sendfile + stat:size) on guix-test.log when there are errors. > + (((? string? line) has-error?) > + (display line) > + (newline) > + (loop has-error?))))))))) Greetings, Maxime.