Subject: bug#26339: [PATCH v2 01/12] system: Pass <bootloader-parameter> to grub.

From: Danny Milosavljevic <[email-masked]>
Date: Tue, 9 May 2017 09:21:10 +0200

Hi Ludo,

On Tue, 09 May 2017 09:03:00 +0200
[email-masked] (Ludovic Courtès) wrote:

> No apparently it worked on Hydra (but as I wrote before, the way
> build-aux/compile-all.scm builds things doesn’t catch
> macro-used-before-defined errors, so testing locally doesn’t help much).

Hmm, but aren't the .go files the compiled files?  I've removed those before testing.  And the guix script has "--no-auto-compile". I don't really understand this part yet...

> I was concerned that @@ would effectively cause the same problem as
> #:use-module, but apparently that’s fine.

The idea was that it would load the module just in time when the procedure is executed.  In any case, module-ref can't hurt either, so that's in master now.

> We’ll keep reviewing/merging the rest of the series, which apparently
> provides a nicer bootloader abstraction.

It does.  I think the state in master now is good and we can review the remainder at our leisure and I can stop hot-fixing things now.  Phiew... :)

> There’s some flakiness, but I think the circular dependency in this case
> was the consequence of a half-baked abstraction.

Yeah...

> I think it remains easy to refactor GuixSD, especially now that we have
> system tests.  Let’s not throw the baby out with the bath water.  ;-)

True, it's okay.

Though, it would be nice if there was a way to run the interpreted version locally - without it taking several hours each time.  Would it be possible for guile to have some static analysis that catches these things?  Doesn't seem that difficult: Just walk the modules, remember when you see record definitions, remember when you see record usage.  In fact I'll write a throwaway script to do just that for next time.  (I've already got my Makefile generator to find Guile module cycles :) )