aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/coordinator.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-05-19 18:49:31 +0100
committerChristopher Baines <mail@cbaines.net>2020-05-19 18:49:31 +0100
commitd5d30b17f678f6b0f7de45ba4fee2a5090b0ee8f (patch)
tree3dfa62fd0db7a1a85903ada0592f51d24a270f91 /guix-build-coordinator/coordinator.scm
parent6254450177def40f3d9b51265963ef606f9870ed (diff)
downloadbuild-coordinator-d5d30b17f678f6b0f7de45ba4fee2a5090b0ee8f.tar
build-coordinator-d5d30b17f678f6b0f7de45ba4fee2a5090b0ee8f.tar.gz
Improve handling of submitting builds
Don't always substitute the derivation, just fetch it if it doesn't exist in the database. Also just use the name of the derivation, only read it from the disk when it needs storing in the database.
Diffstat (limited to 'guix-build-coordinator/coordinator.scm')
-rw-r--r--guix-build-coordinator/coordinator.scm25
1 files changed, 11 insertions, 14 deletions
diff --git a/guix-build-coordinator/coordinator.scm b/guix-build-coordinator/coordinator.scm
index 9815565..e8d9c22 100644
--- a/guix-build-coordinator/coordinator.scm
+++ b/guix-build-coordinator/coordinator.scm
@@ -81,7 +81,7 @@
build-coordinator))
-(define* (submit-build build-coordinator derivation
+(define* (submit-build build-coordinator derivation-file
#:key
requested-uuid
(priority 0)
@@ -94,19 +94,18 @@
(not
(null? (datastore-list-builds-for-derivation
datastore
- (derivation-file-name derivation)))))
+ derivation-file))))
(define (build-for-output-already-exists?)
(any
- (match-lambda
- ((name . derivation-output)
- (let ((builds-for-output
- (datastore-list-builds-for-output
- datastore
- (derivation-output-path derivation-output))))
+ (lambda (output-details)
+ (let ((builds-for-output
+ (datastore-list-builds-for-output
+ datastore
+ (assq-ref output-details 'output))))
- (not (null? builds-for-output)))))
- (derivation-outputs derivation)))
+ (not (null? builds-for-output))))
+ (datastore-find-derivation-outputs datastore derivation-file)))
(if (and ignore-if-build-for-derivation-exists?
(build-for-derivation-exists?))
@@ -117,13 +116,11 @@
;; Actually create a build
(let ((uuid (or requested-uuid (random-v4-uuid))))
- (datastore-store-derivation datastore derivation)
-
(when ensure-all-related-derivation-outputs-have-builds?
(let ((derivations-lacking-builds
(datastore-list-related-derivations-with-no-build-for-outputs
datastore
- (derivation-file-name derivation))))
+ derivation-file)))
(for-each
(lambda (related-derivation)
(let ((related-uuid (random-v4-uuid)))
@@ -139,7 +136,7 @@
derivations-lacking-builds)))
(datastore-store-build datastore
- (derivation-file-name derivation)
+ derivation-file
uuid
priority)