diff options
author | Christopher Baines <mail@cbaines.net> | 2020-05-19 18:49:31 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-05-19 18:49:31 +0100 |
commit | d5d30b17f678f6b0f7de45ba4fee2a5090b0ee8f (patch) | |
tree | 3dfa62fd0db7a1a85903ada0592f51d24a270f91 /guix-build-coordinator/coordinator.scm | |
parent | 6254450177def40f3d9b51265963ef606f9870ed (diff) | |
download | build-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.scm | 25 |
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) |