aboutsummaryrefslogtreecommitdiff
path: root/guix-qa-frontpage/manage-builds.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-qa-frontpage/manage-builds.scm')
-rw-r--r--guix-qa-frontpage/manage-builds.scm33
1 files changed, 25 insertions, 8 deletions
diff --git a/guix-qa-frontpage/manage-builds.scm b/guix-qa-frontpage/manage-builds.scm
index e3a25cf..f5195eb 100644
--- a/guix-qa-frontpage/manage-builds.scm
+++ b/guix-qa-frontpage/manage-builds.scm
@@ -625,8 +625,14 @@
(loop (cdr changes)
(if (vector-any
(lambda (build)
- (member (assoc-ref build "status")
- '("scheduled" "started" "succeeded" "failed")))
+ (let ((build-status
+ (assoc-ref build "status")))
+ (if (string=? build-status "scheduled")
+ (not (assoc-ref
+ build
+ "build_for_equivalent_derivation"))
+ (member build-status
+ '("started" "succeeded" "failed")))))
(assoc-ref change "builds"))
builds-to-submit-details ; build exists
(cons
@@ -636,12 +642,23 @@
(priority change)))
builds-to-submit-details))
(fold (lambda (build result)
- (if (member (assoc-ref build "status")
- '("scheduled" "started"))
- (set-insert
- (assoc-ref build "build_server_build_id")
- result)
- result))
+ (let ((build-status
+ (assoc-ref build "status")))
+ (if (or (string=? build-status "started")
+ (and (string=? build-status "scheduled")
+ ;; Cancel and replace builds for
+ ;; equivalent derivations, since
+ ;; the derivation might be removed
+ ;; from the data service preventing
+ ;; the build from starting.
+ (not
+ (assoc-ref
+ build
+ "build_for_equivalent_derivation"))))
+ (set-insert
+ (assoc-ref build "build_server_build_id")
+ result)
+ result)))
build-ids-to-keep-set
(vector->list
(assoc-ref change "builds"))))