Subject: Re: [bug#43494] [PATCH 2/4] services: guix: Add guix-build-coordinator-service-type.

From: Christopher Baines <[email-masked]>
Date: Sat, 19 Sep 2020 10:13:58 +0100

Ludovic Courtès <[email-masked]> writes:

> Christopher Baines <[email-masked]> skribis:
>
>> * gnu/services/guix.scm (<guix-build-coordinator-configuration>): New record
>> type.
>> (guix-build-coordinator-configuration, guix-build-coordinator-configuration?,
>> guix-build-coordinator-configuration-package,
>> guix-build-coordinator-configuration-user,
>> guix-build-coordinator-configuration-group,
>> guix-build-coordinator-configuration-datastore-uri-string,
>> guix-build-coordinator-configuration-agent-communication-uri-string,
>> guix-build-coordinator-configuration-client-communication-uri-string,
>> guix-build-coordinator-configuration-allocation-strategy,
>> guix-build-coordinator-configuration-hooks,
>> guix-build-coordinator-configuration-guile,
>> make-guix-build-coordinator-start-script,
>> guix-build-coordinator-shepherd-services, guix-build-coordinator-activation,
>> guix-build-coordinator-account): New procedures.
>> (guix-build-coordinator-service-type): New variable.
>> * gnu/tests/guix.scm (%test-guix-build-coordinator): New variable.
>> * doc/guix.texi (Guix Services): Document it.
>
> Yay!
>
>> +@subsubheading Guix Build Coordinator
>> +The @uref{https://git.cbaines.net/guix/build-coordinator/,Guix Build
>> +Coordinator} aids in building derivations.  The Guix Daemon is still
>                      ^
> Maybe something like: “in distributing derivation builds among machines
> running an @dfn{agent}”.
>
> Also, s/Guix Daemon/build daemon/ or similar.
>
> (In general I’m in favor of avoiding “brands” in documentation and
> concept names.)
>
> Maybe add a “@quotation Note” stating that it’s work in progress and
> subject to change.

I've made these changes now.

>> +(define* (make-guix-build-coordinator-start-script database-uri-string
>> +                                                   allocation-strategy
>> +                                                   pid-file
>> +                                                   guix-build-coordinator-package
>> +                                                   #:key
>> +                                                   agent-communication-uri-string
>> +                                                   client-communication-uri-string
>> +                                                   (hooks '())
>> +                                                   (guile guile-3.0))
>> +  (program-file
>> +   "start-guix-build-coordinator"
>> +   (with-extensions (cons guix-build-coordinator-package
>> +                          ;; This is a poorly constructed Guile load path,
>> +                          ;; since it contains things that aren't Guile
>> +                          ;; libraries, but it means that the Guile libraries
>> +                          ;; needed for the Guix Build Coordinator don't need
>> +                          ;; to be individually specified here.
>> +                          (map second (package-inputs
>> +                                       guix-build-coordinator-package)))
>
> Perhaps there should eventually be a ‘guix-build-coordinator’ command in
> the package itself?

There actually is, one thing I've had in mind for a while now though is
to use a scheme script constructed by the Guix service to run the
coordinator.

For guix.cbaines.net, I'm using the script, but with the hooks passed in
on the command line, the command is rather long, and it means that
backtraces don't work well with the hooks.

I'm unsure how well this has worked out, I didn't anticipate the issues
with the Guile load path, and because of the formatting stripping, both
the code and backtraces will be unreadable anyway... but it is useful in
allowing G-expressions to be used as part of the configuration.

> One thing we discussed on IRC is the name and ways to set up one’s
> monitor so that
> guix-build-coordinator-configuration-client-communication-uri-string
> fits on one line.  :-)
>
> An idea that came to mind was “(Guix) dispatch(er)”, which is
> synonymous.  You could use the (guix dispatch …) name space.
> Food for thought!  (No rush, of course!)

Indeed, I think that's a strong candidate :)