diff options
author | Christopher Baines <mail@cbaines.net> | 2020-07-04 11:24:57 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-07-04 11:24:57 +0100 |
commit | ab432800d362b61ac1fce99b98c5b2bdccdfd293 (patch) | |
tree | 2c2e04518f221c14d5386847bd40f9135b9a1d4a | |
parent | 804edead119569296e090a3382b8769e48659be2 (diff) | |
download | build-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.scm | 20 | ||||
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 5 |
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 ) "))) |