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:
parent
98ab323a24
commit
c14714cbbf
@ -27880,6 +27880,51 @@ input store items aren't already available.
|
|||||||
@end table
|
@end table
|
||||||
@end deftp
|
@end deftp
|
||||||
|
|
||||||
|
The Guix Build Coordinator package contains a script to query an
|
||||||
|
instance of the Guix Data Service for derivations to build, and then
|
||||||
|
submit builds for those derivations to the coordinator. The service
|
||||||
|
type below assists in running this script. This is an additional tool
|
||||||
|
that may be useful when building derivations contained within an
|
||||||
|
instance of the Guix Data Service.
|
||||||
|
|
||||||
|
@defvar {Scheme Variable} guix-build-coordinator-queue-builds-service-type
|
||||||
|
Service type for the
|
||||||
|
guix-build-coordinator-queue-builds-from-guix-data-service script. Its
|
||||||
|
value must be a @code{guix-build-coordinator-queue-builds-configuration}
|
||||||
|
object.
|
||||||
|
@end defvar
|
||||||
|
|
||||||
|
@deftp {Data Type} guix-build-coordinator-queue-builds-configuration
|
||||||
|
Data type representing the options to the queue builds from guix data
|
||||||
|
service script.
|
||||||
|
|
||||||
|
@table @asis
|
||||||
|
@item @code{package} (default: @code{guix-build-coordinator})
|
||||||
|
The Guix Build Coordinator package to use.
|
||||||
|
|
||||||
|
@item @code{user} (default: @code{"guix-build-coordinator-queue-builds"})
|
||||||
|
The system user to run the service as.
|
||||||
|
|
||||||
|
@item @code{coordinator} (default: @code{"http://localhost:8745"})
|
||||||
|
The URI to use when connecting to the coordinator.
|
||||||
|
|
||||||
|
@item @code{systems} (default: @code{#f})
|
||||||
|
The systems for which to fetch derivations to build.
|
||||||
|
|
||||||
|
@item @code{systems-and-targets} (default: @code{#f})
|
||||||
|
An association list of system and target pairs for which to fetch
|
||||||
|
derivations to build.
|
||||||
|
|
||||||
|
@item @code{guix-data-service} (default: @code{"https://data.guix.gnu.org"})
|
||||||
|
The Guix Data Service instance from which to query to find out about
|
||||||
|
derivations to build.
|
||||||
|
|
||||||
|
@item @code{processed-commits-file} (default: @code{"/var/cache/guix-build-coordinator-queue-builds/processed-commits"})
|
||||||
|
A file to record which commits have been processed, to avoid needlessly
|
||||||
|
processing them again if the service is restarted.
|
||||||
|
|
||||||
|
@end table
|
||||||
|
@end deftp
|
||||||
|
|
||||||
@subsubheading Guix Data Service
|
@subsubheading Guix Data Service
|
||||||
The @uref{http://data.guix.gnu.org,Guix Data Service} processes, stores
|
The @uref{http://data.guix.gnu.org,Guix Data Service} processes, stores
|
||||||
|
@ -65,6 +65,18 @@
|
|||||||
|
|
||||||
guix-build-coordinator-agent-service-type
|
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
|
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
|
guix-build-coordinator-agent-configuration-non-derivation-substitute-urls
|
||||||
(default #f)))
|
(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
|
(define* (make-guix-build-coordinator-start-script database-uri-string
|
||||||
allocation-strategy
|
allocation-strategy
|
||||||
pid-file
|
pid-file
|
||||||
@ -360,6 +394,84 @@
|
|||||||
(description
|
(description
|
||||||
"Run a Guix Build Coordinator agent.")))
|
"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
|
;;; Guix Data Service
|
||||||
|
Loading…
Reference in New Issue
Block a user