summary refs log tree commit diff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2022-07-01 09:27:55 +0100
committerChristopher Baines <mail@cbaines.net>2022-07-01 09:45:28 +0100
commit09aeabb9d3cab042a52881b117f9f64a0f0e1651 (patch)
treecf754a55af6c7b440110d79de4c3b5a5a5b9dd18
parente17672797102936fd8ceec4c43a66d9f690fab73 (diff)
downloadguix-09aeabb9d3cab042a52881b117f9f64a0f0e1651.tar.gz
services: guix: Support guix-build-coordinator parallel hooks.
* gnu/services/guix.scm (guix-build-coordinator-configuration-parallel-hooks):
New procedure.
(make-guix-build-coordinator-start-script): Accept and use #:parallel-hooks.
(guix-build-coordinator-shepherd-services): Pass parallel-hooks to
make-guix-build-coordinator-start-script.
* doc/guix.texi (Guix Build Coordinator): Document this new field.
-rw-r--r--doc/guix.texi5
-rw-r--r--gnu/services/guix.scm9
2 files changed, 13 insertions, 1 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index b8c49099a4..814965b22c 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -35106,6 +35106,11 @@ allocation plan in the database.
 An association list of hooks.  These provide a way to execute arbitrary
 code upon certain events, like a build result being processed.
 
+@item @code{parallel-hooks} (default: @var{'()})
+Hooks can be configured to run in parallel.  This parameter is an
+association list of hooks to do in parallel, where the key is the symbol
+for the hook and the value is the number of threads to run.
+
 @item @code{guile} (default: @code{guile-3.0-latest})
 The Guile package with which to run the Guix Build Coordinator.
 
diff --git a/gnu/services/guix.scm b/gnu/services/guix.scm
index ad7b020b69..c7dd7ec0ed 100644
--- a/gnu/services/guix.scm
+++ b/gnu/services/guix.scm
@@ -46,6 +46,7 @@
             guix-build-coordinator-configuration-client-communication-uri-string
             guix-build-coordinator-configuration-allocation-strategy
             guix-build-coordinator-configuration-hooks
+            guix-build-coordinator-configuration-parallel-hooks
             guix-build-coordinator-configuration-guile
 
             guix-build-coordinator-service-type
@@ -155,6 +156,8 @@
    (default #~basic-build-allocation-strategy))
   (hooks                           guix-build-coordinator-configuration-hooks
                                    (default '()))
+  (parallel-hooks                  guix-build-coordinator-configuration-parallel-hooks
+                                   (default '()))
   (guile                           guix-build-coordinator-configuration-guile
                                    (default guile-3.0-latest)))
 
@@ -246,6 +249,7 @@
                                                    agent-communication-uri-string
                                                    client-communication-uri-string
                                                    (hooks '())
+                                                   (parallel-hooks '())
                                                    (guile guile-3.0))
   (program-file
    "start-guix-build-coordinator"
@@ -304,7 +308,8 @@
             #:agent-communication-uri (string->uri
                                        #$agent-communication-uri-string)
             #:client-communication-uri (string->uri
-                                        #$client-communication-uri-string)))))
+                                        #$client-communication-uri-string)
+            #:parallel-hooks (list #$@parallel-hooks)))))
    #:guile guile))
 
 (define (guix-build-coordinator-shepherd-services config)
@@ -314,6 +319,7 @@
              client-communication-uri-string
              allocation-strategy
              hooks
+             parallel-hooks
              guile)
     (list
      (shepherd-service
@@ -331,6 +337,7 @@
                          #:client-communication-uri-string
                          client-communication-uri-string
                          #:hooks hooks
+                         #:parallel-hooks parallel-hooks
                          #:guile guile))
                 #:user #$user
                 #:group #$group