Hello.
There is a strange problem with evaluating a code using Geiser, which
leads to some missing output in a REPL. I have an example demonstrating
the problem using some Guix code, but I would like to have a pure guile
recipe, so that it can be reported.
So how to reproduce the bug. At first, make a file "test-bug.scm"
(attached) and put it somewhere to GUIX_PACKAGE_PATH. Run "guix build
test-package" in shell to make sure that the package is found. The
building will fail, but it's fine for this demonstration. Note that
there is a usual output from guix-daemon ("@ build-started …").
Now the bug itself:
1. Start Geiser (M-x run-guile)
2. Make a scheme buffer and evaluate (use-modules (guix scripts build))
there using "C-x C-e" or "C-M-x" (or any other "geiser-eval-…"
command). This is important: do not ,use module in the REPL;
evaluate ‘use-modules’ clause in a scheme buffer!
3. Go to the REPL and run the following there:
(catch 'quit (lambda () (guix-build "test-package")) (const #t)).
You get only "The following derivation will be built: …" but there is no
build output from guix-daemon.
Now if you close the REPL and repeat this recipe but on the 2nd step you
evaluate (use-modules (guix scripts build)) or ,use(guix scripts build)
in the REPL itself, you will see the build output as expected.
So there is something special with this guix-daemon output and with
Geiser synchronous evaluating (using ‘geiser-eval--send/wait’) that
sends this output to a better world.
I appreciate any ideas on solving this bug or making a guix-independent
recipe to reproduce it.
(define-module (test-bug)
#:use-module (guix packages)
#:use-module (guix build-system trivial)
#:use-module (gnu packages base))
(define-public test-package
(package (inherit hello)
(name "test-package")
(build-system trivial-build-system)
(arguments
'(#:builder (const #t)))))