~ruther/guix-local

aa65f31ed2a36a57f047651ff429eb9a7dfb0dcc — Ludovic Courtès 2 years ago 002c5be
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.
1 files changed, 34 insertions(+), 27 deletions(-)

M etc/disarchive-manifest.scm
M etc/disarchive-manifest.scm => etc/disarchive-manifest.scm +34 -27
@@ 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)))