Subject: Re: bug#50677: [PATCH] Minetest basic_materials really depends on moreores

From: Maxime Devos <[email-masked]>
Date: Wed, 22 Sep 2021 19:41:33 +0200

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 <https://ci.guix.gnu.org/>).

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.