unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#70263] [PATCH] gnu: guix-configuration: Improve offload build-machines.
@ 2024-04-07 19:20 Ian Eure
  2024-05-04 17:12 ` bug#70263: " Ludovic Courtès
  0 siblings, 1 reply; 2+ messages in thread
From: Ian Eure @ 2024-04-07 19:20 UTC (permalink / raw)
  To: 70263; +Cc: Ian Eure

It’s currently difficult to programmatically add a build-machine, because the
`service-extension' mechanism is the only facility which can do that.  It
relies on the `guix-service-type', ala:

    (service-extension guix-service-type
      (guix-extension (build-machines (list ...))))

...but `guix-service-type' is already instantiated as part of
`%base-services', and replacing it may lose other configuration, like
substitute servers and authorized keys.

Additionally, a default value of `#f' for the build-machines field requires
guarding uses of the field with:

    (or (guix-build-machines config) '())

Changing the default to be the empty list avoids that.  One can now add
build-machines with code such as:

    (modify-services %base-services
      (guix-service-type
       config =>
       (guix-configuration
        (inherit config)
        (authorized-keys
         (cons %build-machine-key
               (guix-configuration-authorized-keys config)))
        (build-machines (cons #~(build-machine ...)
                              (guix-configuration-build-machines config))))))

* gnu/services/base.scm (guix-configuration): Rename `guix-build-machines' to
`guix-configuration-build-machines' and export it.  Change the default from
`#f' to the empty list.
* gnu/services/base.scm (guix-activation): Update the build-machines test and
reverse the conditions.

Change-Id: I6780c6a5579fd9d4b4f22ee2b2bf7ba7a0454407
---
 gnu/services/base.scm | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 3f912225a0..5cf6083821 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -212,6 +212,7 @@ (define-module (gnu services base)
             guix-configuration-guix
             guix-configuration-build-group
             guix-configuration-build-accounts
+            guix-configuration-build-machines
             guix-configuration-authorize-key?
             guix-configuration-authorized-keys
             guix-configuration-use-substitutes?
@@ -1848,8 +1849,8 @@ (define-record-type* <guix-configuration>
                     (default #f))
   (tmpdir           guix-tmpdir                   ;string | #f
                     (default #f))
-  (build-machines   guix-build-machines           ;list of gexps | #f
-                    (default #f))
+  (build-machines   guix-configuration-build-machines ;list of gexps | '()
+                    (default '()))
   (environment      guix-configuration-environment  ;list of strings
                     (default '())))
 
@@ -2044,10 +2045,10 @@ (define (guix-activation config)
         #$(and channels (install-channels-file channels))
 
         ;; ... and /etc/guix/machines.scm.
-        #$(if (guix-build-machines config)
+        #$(if (null? (guix-configuration-build-machines config))
+              #~#f
               (guix-machines-files-installation
-               #~(list #$@(guix-build-machines config)))
-              #~#f))))
+               #~(list #$@(guix-configuration-build-machines config)))))))
 
 (define-record-type* <guix-extension>
   guix-extension make-guix-extension
@@ -2093,9 +2094,9 @@ (define guix-service-type
               (substitute-urls (append (guix-extension-substitute-urls extension)
                                        (guix-configuration-substitute-urls config)))
               (build-machines
-               (and (or (guix-build-machines config)
+               (and (or (guix-configuration-build-machines config)
                         (pair? (guix-extension-build-machines extension)))
-                    (append (or (guix-build-machines config) '())
+                    (append (guix-configuration-build-machines config)
                             (guix-extension-build-machines extension))))
               (chroot-directories
                (append (guix-extension-chroot-directories extension)

base-commit: ab3731d255ff1ac8d6874bc0f68ad94f21f08e79
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 2+ messages in thread

* bug#70263: [PATCH] gnu: guix-configuration: Improve offload build-machines.
  2024-04-07 19:20 [bug#70263] [PATCH] gnu: guix-configuration: Improve offload build-machines Ian Eure
@ 2024-05-04 17:12 ` Ludovic Courtès
  0 siblings, 0 replies; 2+ messages in thread
From: Ludovic Courtès @ 2024-05-04 17:12 UTC (permalink / raw)
  To: Ian Eure; +Cc: 70263-done

Hi Ian,

Ian Eure <ian@retrospec.tv> skribis:

> It’s currently difficult to programmatically add a build-machine, because the
> `service-extension' mechanism is the only facility which can do that.  It
> relies on the `guix-service-type', ala:
>
>     (service-extension guix-service-type
>       (guix-extension (build-machines (list ...))))
>
> ...but `guix-service-type' is already instantiated as part of
> `%base-services', and replacing it may lose other configuration, like
> substitute servers and authorized keys.
>
> Additionally, a default value of `#f' for the build-machines field requires
> guarding uses of the field with:
>
>     (or (guix-build-machines config) '())
>
> Changing the default to be the empty list avoids that.  One can now add
> build-machines with code such as:
>
>     (modify-services %base-services
>       (guix-service-type
>        config =>
>        (guix-configuration
>         (inherit config)
>         (authorized-keys
>          (cons %build-machine-key
>                (guix-configuration-authorized-keys config)))
>         (build-machines (cons #~(build-machine ...)
>                               (guix-configuration-build-machines config))))))
>
> * gnu/services/base.scm (guix-configuration): Rename `guix-build-machines' to
> `guix-configuration-build-machines' and export it.  Change the default from
> `#f' to the empty list.
> * gnu/services/base.scm (guix-activation): Update the build-machines test and
> reverse the conditions.

That makes a lot of sense to me.  Applied, thanks!

Ludo’.




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-05-04 17:14 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-07 19:20 [bug#70263] [PATCH] gnu: guix-configuration: Improve offload build-machines Ian Eure
2024-05-04 17:12 ` bug#70263: " Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).