1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-05-27 11:32:21 +02:00

services: guix: Add guix-build-coordinator-queue-builds-service-type.

* gnu/services/guix.scm (<guix-build-coordinator-queue-builds-configuration>):
New record type.
(guix-build-coordinator-queue-builds-configuration,
guix-build-coordinator-queue-builds-configuration?,
guix-build-coordinator-queue-builds-configuration-package,
guix-build-coordinator-queue-builds-configuration-user,
guix-build-coordinator-queue-builds-coordinator,
guix-build-coordinator-queue-builds-configuration-systems,
guix-build-coordinator-queue-builds-configuration-system-and-targets,
guix-build-coordinator-queue-builds-configuration-guix-data-service,
guix-build-coordinator-queue-builds-configuration-processed-commits-file,
guix-build-coordinator-queue-builds-shepherd-services,
guix-build-coordinator-queue-builds-activation,
guix-build-coordinator-queue-builds-account): New procedures.
(guix-build-coordinator-queue-builds-service-type): New variable.
* doc/guix.texi (Guix Services): Document it.
This commit is contained in:
Christopher Baines
2020-09-18 14:21:13 +01:00
parent 98ab323a24
commit c14714cbbf
2 changed files with 157 additions and 0 deletions
+112
View File
@@ -65,6 +65,18 @@
guix-build-coordinator-agent-service-type
guix-build-coordinator-queue-builds-configuration
guix-build-coordinator-queue-builds-configuration?
guix-build-coordinator-queue-builds-configuration-package
guix-build-coordinator-queue-builds-configuration-user
guix-build-coordinator-queue-builds-coordinator
guix-build-coordinator-queue-builds-configuration-systems
guix-build-coordinator-queue-builds-configuration-system-and-targets
guix-build-coordinator-queue-builds-configuration-guix-data-service
guix-build-coordinator-queue-builds-configuration-processed-commits-file
guix-build-coordinator-queue-builds-service-type
<guix-data-service-configuration>
guix-data-service-configuration
guix-data-service-configuration?
@@ -137,6 +149,28 @@
guix-build-coordinator-agent-configuration-non-derivation-substitute-urls
(default #f)))
(define-record-type* <guix-build-coordinator-queue-builds-configuration>
guix-build-coordinator-queue-builds-configuration
make-guix-build-coordinator-queue-builds-configuration
guix-build-coordinator-queue-builds-configuration?
(package guix-build-coordinator-queue-builds-configuration-package
(default guix-build-coordinator))
(user guix-build-coordinator-queue-builds-configuration-user
(default "guix-build-coordinator-queue-builds"))
(coordinator guix-build-coordinator-queue-builds-coordinator
(default "http://localhost:8745"))
(systems guix-build-coordinator-queue-builds-configuration-systems
(default #f))
(systems-and-targets
guix-build-coordinator-queue-builds-configuration-system-and-targets
(default #f))
(guix-data-service
guix-build-coordinator-queue-builds-configuration-guix-data-service
(default "https://data.guix.gnu.org"))
(processed-commits-file
guix-build-coordinator-queue-builds-configuration-processed-commits-file
(default "/var/cache/guix-build-coordinator-queue-builds/processed-commits")))
(define* (make-guix-build-coordinator-start-script database-uri-string
allocation-strategy
pid-file
@@ -360,6 +394,84 @@
(description
"Run a Guix Build Coordinator agent.")))
(define (guix-build-coordinator-queue-builds-shepherd-services config)
(match-record config <guix-build-coordinator-queue-builds-configuration>
(package user coordinator systems systems-and-targets
guix-data-service processed-commits-file)
(list
(shepherd-service
(documentation "Guix Build Coordinator queue builds from Guix Data Service")
(provision '(guix-build-coordinator-queue-builds))
(requirement '(networking))
(start
#~(make-forkexec-constructor
(list
#$(file-append
package
"/bin/guix-build-coordinator-queue-builds-from-guix-data-service")
#$(string-append "--coordinator=" coordinator)
#$@(map (lambda (system)
(string-append "--system=" system))
(or systems '()))
#$@(map (match-lambda
((system . target)
(string-append "--system-and-target=" system "=" target)))
(or systems-and-targets '()))
#$@(if guix-data-service
#~(#$(string-append "--guix-data-service=" guix-data-service))
#~())
#$@(if processed-commits-file
#~(#$(string-append "--processed-commits-file="
processed-commits-file))
#~()))
#:user #$user
#:pid-file "/var/run/guix-build-coordinator-queue-builds/pid"
#:environment-variables
`(,(string-append
"GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")
"LC_ALL=en_US.utf8")
#:log-file "/var/log/guix-build-coordinator/queue-builds.log"))
(stop #~(make-kill-destructor))))))
(define (guix-build-coordinator-queue-builds-activation config)
#~(begin
(use-modules (guix build utils))
(mkdir-p "/var/log/guix-build-coordinator")
;; Allow writing the PID file
(mkdir-p "/var/run/guix-build-coordinator-queue-builds")
(chown "/var/run/guix-build-coordinator-queue-builds"
(passwd:uid %user)
(passwd:gid %user))))
(define (guix-build-coordinator-queue-builds-account config)
(list (user-account
(name (guix-build-coordinator-queue-builds-configuration-user config))
(group "nogroup")
(system? #t)
(comment "Guix Build Coordinator queue-builds user")
(home-directory "/var/empty")
(shell (file-append shadow "/sbin/nologin")))))
(define guix-build-coordinator-queue-builds-service-type
(service-type
(name 'guix-build-coordinator-queue-builds)
(extensions
(list
(service-extension shepherd-root-service-type
guix-build-coordinator-queue-builds-shepherd-services)
(service-extension activation-service-type
guix-build-coordinator-queue-builds-activation)
(service-extension account-service-type
guix-build-coordinator-queue-builds-account)))
(description
"Run the guix-build-coordinator-queue-builds-from-guix-data-service
script.
This is a script to assist in having the Guix Build Coordinator build
derivations stored in an instance of the Guix Data Service.")))
;;;
;;; Guix Data Service