gnu: Add guix-build-coordinator/agent-only.

This avoids issues where the coordinator component dependencies (like sqitch
and guile-fibers) make it harder to use the agent.

* gnu/packages/package-management.scm (guix-build-coordinator/agent-only): New
variable.
* gnu/services/guix.scm (<guix-build-coordinator-agent-configuration>): Use
the guix-build-coordinator/agent-only package by default.
* doc/guix.texi (Guix Services): Update accordingly.
This commit is contained in:
Christopher Baines 2022-01-02 16:54:37 +00:00
parent d6a13efe24
commit 1dca8a19ef
No known key found for this signature in database
GPG key ID: 5E28A33B0B84F577
3 changed files with 96 additions and 2 deletions

View file

@ -33067,7 +33067,7 @@ Service type for a Guix Build Coordinator agent. Its value must be a
Data type representing the configuration a Guix Build Coordinator agent.
@table @asis
@item @code{package} (default: @code{guix-build-coordinator})
@item @code{package} (default: @code{guix-build-coordinator-agent-only})
The Guix Build Coordinator package to use.
@item @code{user} (default: @code{"guix-build-coordinator-agent"})

View file

@ -1366,6 +1366,100 @@ (define-public guix-build-coordinator
outputs of those builds.")
(license license:gpl3+))))
(define-public guix-build-coordinator/agent-only
(package
(inherit guix-build-coordinator)
(name "guix-build-coordinator-agent-only")
(arguments
`(#:modules (((guix build guile-build-system)
#:select (target-guile-effective-version))
,@%gnu-build-system-modules)
#:imported-modules ((guix build guile-build-system)
,@%gnu-build-system-modules)
#:phases
(modify-phases %standard-phases
(add-before 'build 'set-GUILE_AUTO_COMPILE
(lambda _
;; To avoid warnings relating to 'guild'.
(setenv "GUILE_AUTO_COMPILE" "0")
#t))
(add-after 'install 'wrap-executable
(lambda* (#:key inputs outputs target #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(guile (assoc-ref inputs "guile"))
(version (target-guile-effective-version))
(scm (string-append out "/share/guile/site/" version))
(go (string-append out "/lib/guile/" version "/site-ccache")))
(for-each
(lambda (file)
(simple-format (current-error-port) "wrapping: ~A\n" file)
(let ((guile-inputs (list
"guile-json"
"guile-gcrypt"
"guix"
"guile-prometheus"
"guile-lib"
"guile-lzlib"
"guile-zlib"
"guile-sqlite3"
"gnutls")))
(wrap-program file
`("PATH" ":" prefix (,bin))
`("GUILE_LOAD_PATH" ":" prefix
(,scm ,(string-join
(map (lambda (input)
(simple-format
#f "~A/share/guile/site/~A"
(assoc-ref inputs input)
version))
guile-inputs)
":")))
`("GUILE_LOAD_COMPILED_PATH" ":" prefix
(,go ,(string-join
(map (lambda (input)
(simple-format
#f "~A/lib/guile/~A/site-ccache"
(assoc-ref inputs input)
version))
guile-inputs)
":"))))))
(find-files bin)))
#t))
(delete 'strip)))) ; As the .go files aren't compatible
(native-inputs
(list pkg-config
autoconf
automake
gnutls
;; Guile libraries are needed here for cross-compilation.
guile-json-4
guile-gcrypt
guix
guile-prometheus
guile-lib
(first (assoc-ref (package-native-inputs guix) "guile"))))
(inputs
(list (first (assoc-ref (package-native-inputs guix) "guile"))
bash-minimal))
(propagated-inputs
(append
(list guile-prometheus
guile-gcrypt
guile-json-4
guile-lib
guile-lzlib
guile-zlib
guix
gnutls)))
(description
"The Guix Build Coordinator helps with performing lots of builds across
potentially many machines, and with doing something with the results and
outputs of those builds.
This package just includes the agent component.")))
(define-public guix-jupyter
(package
(name "guix-jupyter")

View file

@ -146,7 +146,7 @@ (define-record-type* <guix-build-coordinator-agent-configuration>
make-guix-build-coordinator-agent-configuration
guix-build-coordinator-agent-configuration?
(package guix-build-coordinator-agent-configuration-package
(default guix-build-coordinator))
(default guix-build-coordinator-agent-only))
(user guix-build-coordinator-agent-configuration-user
(default "guix-build-coordinator-agent"))
(coordinator guix-build-coordinator-agent-configuration-coordinator