From 09aeabb9d3cab042a52881b117f9f64a0f0e1651 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Fri, 1 Jul 2022 09:27:55 +0100 Subject: [PATCH] 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. --- doc/guix.texi | 5 +++++ gnu/services/guix.scm | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) 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 @@ (define-module (gnu services guix) 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 @@ (define-record-type* (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 @@ (define* (make-guix-build-coordinator-start-script database-uri-string 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 @@ (define* (make-guix-build-coordinator-start-script database-uri-string #: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 @@ (define (guix-build-coordinator-shepherd-services config) client-communication-uri-string allocation-strategy hooks + parallel-hooks guile) (list (shepherd-service @@ -331,6 +337,7 @@ (define (guix-build-coordinator-shepherd-services config) #:client-communication-uri-string client-communication-uri-string #:hooks hooks + #:parallel-hooks parallel-hooks #:guile guile)) #:user #$user #:group #$group