Subject: [bug#28484] Some steps and questions for Cuirass

From: Jan Nieuwenhuizen <[email-masked]>
Date: Sun, 17 Sep 2017 22:11:53 +0200

When Cuirass creates a new working directory from a guix.git clone, it tries
to build guix but fails like this

    /gnu/store/jqs80jq4j9z06p2vb9f7djv9k7jmc3d4-profile/bin/msgmerge: cannot create output file "de.po": Permission denied
    make[3]: *** [Makefile:255: de.po] Error 1
    make[3]: *** Waiting for unfinished jobs....

...although that may be a feature?

Patch 1/3 fixes this build problem...however now Cuirass rebuilds *all* of
guix (.go files) for each update of guix.git that it tracks.  When playing
with Cuirass to set it up, it's handy to only build `hello'.  Rebuilding all
of guix for each commit even if it fast-forwards, do we need/want that?

Patch 2/3 allows to test with other packages than "hello" or everything by
using a spec like

     ((#:name . "guix")
      (#:url . "git://git.savannah.gnu.org/guix.git")
      (#:load-path . ".")
      (#:file . "examples/gnu-system.scm")
      (#:proc . hydra-jobs)
      (#:arguments (subset . ("hello" "grep")))
      (#:branch . "master"))

Because this build recipe and thus this feature belongs in the repository
we're building, I also added a patch (the last one) for Guix itself that
implements this.

Patch 3/3 is the one I'm least happy with.  When building many more packages
than only `hello', Cuirass will not give any feedback until after everything
is built.  The Emacs interface under M-x guix-hydra-latests-builds is very
nice, but polling for that less so.

As the comment in the file already says

    ;; Register the results in the database.
    ;; XXX: The 'build-derivations' call is blocking so we end updating the
    ;; database potentially long after things have been built.

we probably want feedback (or guix-hydra-latests-builds availability) per
package...but any ideas how to do that?  We'd have to wrap/closure that into
building the derivations?

Greetings,
janneke