diff options
author | Ludovic Courtès <ludo@gnu.org> | 2023-10-07 23:21:41 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2023-10-08 23:43:49 +0200 |
commit | aa65f31ed2a36a57f047651ff429eb9a7dfb0dcc (patch) | |
tree | c435381a7ed7ead136883d7b458f22b0c6e43464 /etc/disarchive-manifest.scm | |
parent | 002c5bec07e88c00d9d96209438728d0271f57da (diff) | |
download | guix-aa65f31ed2a36a57f047651ff429eb9a7dfb0dcc.tar.gz guix-aa65f31ed2a36a57f047651ff429eb9a7dfb0dcc.zip |
disarchive-manifest: Add one manifest entry per tarball.
This works around a situation where ‘cuirass remote-worker’ now builds
with max-jobs = 1 (Cuirass commit
980ef610989895be5ac2ba7f9d1901e5c7f22934). The effect is that all
.dis.drv would be performed sequentially, on a single machine (‘cuirass
remote-server’ is unable to distribute those derivations to several
machines because it only “sees” the ‘disarchive-collection’ derivation).
This would take a lot of time and force a rebuild of all of *.dis.drv
every time because their build results would not be retrieved by the
‘remote-server’ process.
* etc/disarchive-manifest.scm (disarchive-collection): Remove.
<top level>: Define ‘disarchives’. Append it to the entries of the
manifest.
Diffstat (limited to 'etc/disarchive-manifest.scm')
-rw-r--r-- | etc/disarchive-manifest.scm | 61 |
1 files changed, 34 insertions, 27 deletions
diff --git a/etc/disarchive-manifest.scm b/etc/disarchive-manifest.scm index 93b5039eec..41f64eae4f 100644 --- a/etc/disarchive-manifest.scm +++ b/etc/disarchive-manifest.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2021-2022 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2021-2023 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -94,34 +94,41 @@ an empty directory if ORIGIN could not be disassembled." (#f "anonymous-tarball.dis")) build)) -(define (disarchive-collection origins) - "Return a directory containing all the Disarchive metadata for ORIGINS." - (directory-union "disarchive-collection" - (filter-map (lambda (origin) - (and (tarball-origin? origin) - - ;; Dismiss origins with (sha256 #f) such - ;; as that of IceCat. - (and=> (origin-hash origin) - content-hash-value) - - ;; FIXME: Exclude the Chromium tarball - ;; because it's huge and "disarchive - ;; disassemble" exceeds the max-silent - ;; timeout. - (not (string-prefix? - "chromium-" - (origin-actual-file-name origin))) - - (origin->disarchive origin))) - origins) - #:copy? #t)) - ;; The manifest containing Disarchive data. -(let ((origins (all-origins))) +(let* ((origins (all-origins)) + (disarchives + (filter-map (lambda (origin) + (and (tarball-origin? origin) + + ;; Dismiss origins with (sha256 #f) such as that of + ;; IceCat. + (and=> (origin-hash origin) + content-hash-value) + + ;; FIXME: Exclude the Chromium tarball because it's + ;; huge and "disarchive disassemble" exceeds the + ;; max-silent timeout. + (not (string-prefix? + "chromium-" + (origin-actual-file-name origin))) + + (manifest-entry + (name + (string-append (origin-actual-file-name origin) + ".dis")) + (version "0") + (item (origin->disarchive origin))))) + origins))) (manifest - (list (manifest-entry + (cons (manifest-entry (name "disarchive-collection") (version (number->string (length origins))) - (item (disarchive-collection origins)))))) + (item (directory-union "disarchive-collection" + (map manifest-entry-item disarchives) + #:copy? #t))) + + ;; Cuirass can distribute derivation builds to build machines if and + ;; only if it has one "job" per derivation. Thus, add them here in + ;; addition to "disarchive-collection". + disarchives))) |