summaryrefslogtreecommitdiff
path: root/gnu/ci.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-10-04 16:34:38 +0200
committerLudovic Courtès <ludo@gnu.org>2021-10-04 16:36:59 +0200
commit688a4db071736a772e6b5515d7c03fe501c3c15a (patch)
tree3792d02d46caa64bfe5dabef1543a8cff6bd2949 /gnu/ci.scm
parentb628c5fc71ab5b6db3ae35dcccd66bacef98252d (diff)
downloadguix-patches-688a4db071736a772e6b5515d7c03fe501c3c15a.tar
guix-patches-688a4db071736a772e6b5515d7c03fe501c3c15a.tar.gz
ci: Allow manifests to contain any lowerable object.
Previously, manifests could only contain packages: https://lists.gnu.org/archive/html/guix-devel/2021-10/msg00002.html This allows us to pass origins as found in 'etc/source-manifest.scm'. * gnu/ci.scm (derivation->job): Change default #:timeout value to 5h. (manifests->packages): Remove. (manifests->jobs): New procedure. (cuirass-jobs): Use it in the 'manifests' case.
Diffstat (limited to 'gnu/ci.scm')
-rw-r--r--gnu/ci.scm47
1 files changed, 32 insertions, 15 deletions
diff --git a/gnu/ci.scm b/gnu/ci.scm
index ceb1b94af9..e1011355db 100644
--- a/gnu/ci.scm
+++ b/gnu/ci.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
@@ -86,7 +86,7 @@
(define* (derivation->job name drv
#:key
(max-silent-time 3600)
- (timeout 3600))
+ (timeout (* 5 3600)))
"Return a Cuirass job called NAME and describing DRV.
MAX-SILENT-TIME and TIMEOUT are build options passed to the daemon when
@@ -443,19 +443,40 @@ valid."
(map channel-url channels)))
arguments))
-(define (manifests->packages store manifests)
- "Return the list of packages found in MANIFESTS."
+(define (manifests->jobs store manifests)
+ "Return the list of jobs for the entries in MANIFESTS, a list of file
+names."
(define (load-manifest manifest)
(save-module-excursion
(lambda ()
(set-current-module (make-user-module '((guix profiles) (gnu))))
(primitive-load manifest))))
- (delete-duplicates!
- (map manifest-entry-item
- (append-map (compose manifest-entries
- load-manifest)
- manifests))))
+ (define (manifest-entry-job-name entry)
+ (string-append (manifest-entry-name entry) "-"
+ (manifest-entry-version entry)))
+
+ (define (manifest-entry->job entry)
+ (let* ((obj (manifest-entry-item entry))
+ (drv (parameterize ((%graft? #f))
+ (run-with-store store
+ (lower-object obj))))
+ (max-silent-time (or (and (package? obj)
+ (assoc-ref (package-properties obj)
+ 'max-silent-time))
+ 3600))
+ (timeout (or (and (package? obj)
+ (assoc-ref (package-properties obj) 'timeout))
+ (* 5 3600))))
+ (derivation->job (manifest-entry-job-name entry) drv
+ #:max-silent-time max-silent-time
+ #:timeout timeout)))
+
+ (map manifest-entry->job
+ (delete-duplicates
+ (append-map (compose manifest-entries load-manifest)
+ manifests)
+ manifest-entry=?)))
(define (arguments->systems arguments)
"Return the systems list from ARGUMENTS."
@@ -568,12 +589,8 @@ valid."
packages)))
(('manifests . rest)
;; Build packages in the list of manifests.
- (let* ((manifests (arguments->manifests rest channels))
- (packages (manifests->packages store manifests)))
- (map (lambda (package)
- (package-job store (job-name package)
- package system))
- packages)))
+ (let ((manifests (arguments->manifests rest channels)))
+ (manifests->jobs store manifests)))
(else
(error "unknown subset" subset))))
systems)))