diff --git a/doc/guix.texi b/doc/guix.texi index b72a3d1263..1d3dc424ae 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -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"}) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 8dae9b2d2a..763d91b5df 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -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") diff --git a/gnu/services/guix.scm b/gnu/services/guix.scm index a5ed28647f..afaf8e0070 100644 --- a/gnu/services/guix.scm +++ b/gnu/services/guix.scm @@ -146,7 +146,7 @@ (define-record-type* 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