aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-07-04 11:24:57 +0100
committerChristopher Baines <mail@cbaines.net>2020-07-04 11:24:57 +0100
commitab432800d362b61ac1fce99b98c5b2bdccdfd293 (patch)
tree2c2e04518f221c14d5386847bd40f9135b9a1d4a
parent804edead119569296e090a3382b8769e48659be2 (diff)
downloadbuild-coordinator-ab432800d362b61ac1fce99b98c5b2bdccdfd293.tar
build-coordinator-ab432800d362b61ac1fce99b98c5b2bdccdfd293.tar.gz
Don't skip inserting builds where the system doesn't match
Previously, some builds where skipped for things like fixed output derivations. If a aarch64-linux build already existed, the x86_64-linux build for the same output wouldn't be created. This has delayed some builds, because they're unnecessarily waiting.
-rw-r--r--guix-build-coordinator/coordinator.scm20
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm5
2 files changed, 16 insertions, 9 deletions
diff --git a/guix-build-coordinator/coordinator.scm b/guix-build-coordinator/coordinator.scm
index bfbea73..1e54563 100644
--- a/guix-build-coordinator/coordinator.scm
+++ b/guix-build-coordinator/coordinator.scm
@@ -99,15 +99,17 @@
derivation-file))))
(define (build-for-output-already-exists?)
- (any
- (lambda (output-details)
- (let ((builds-for-output
- (datastore-list-builds-for-output
- datastore
- (assq-ref output-details 'output))))
-
- (not (null? builds-for-output))))
- (datastore-find-derivation-outputs datastore derivation-file)))
+ (let ((system (datastore-find-derivation-system datastore
+ derivation-file)))
+ (any
+ (lambda (output-details)
+ (let ((builds-for-output
+ (datastore-list-builds-for-output-and-system
+ datastore
+ (assq-ref output-details 'output)
+ system)))
+ (not (null? builds-for-output))))
+ (datastore-find-derivation-outputs datastore derivation-file))))
(if (and ignore-if-build-for-derivation-exists?
(build-for-derivation-exists?))
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index 801f895..b4c40a6 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -295,6 +295,8 @@ UNION
)
SELECT DISTINCT related_derivations.name
FROM related_derivations
+INNER JOIN derivations
+ ON related_derivations.name = derivations.name
INNER JOIN derivation_outputs
ON related_derivations.name = derivation_outputs.derivation_name
WHERE related_derivations.name != :derivation
@@ -303,6 +305,9 @@ WHERE related_derivations.name != :derivation
FROM derivation_outputs
INNER JOIN builds
ON derivation_outputs.derivation_name = builds.derivation_name
+ INNER JOIN derivations AS build_derivations
+ ON builds.derivation_name = build_derivations.name
+ WHERE build_derivations.system = derivations.system
)
")))