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/client-communication.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/client-communication.scm')
-rw-r--r-- | guix-build-coordinator/client-communication.scm | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/guix-build-coordinator/client-communication.scm b/guix-build-coordinator/client-communication.scm index 2360631..ae4a8c5 100644 --- a/guix-build-coordinator/client-communication.scm +++ b/guix-build-coordinator/client-communication.scm @@ -154,17 +154,23 @@ `((new-password . ,password))))) (('POST "builds") (let ((derivation-file (assoc-ref body "derivation"))) - (unless (file-exists? derivation-file) - (substitute-derivation derivation-file - #:substitute-urls - (vector->list - (assoc-ref body "substitute-urls")))) + (let ((derivation-database-entry + (datastore-find-derivation datastore derivation-file))) + (unless derivation-database-entry + (unless (file-exists? derivation-file) + (substitute-derivation derivation-file + #:substitute-urls + (vector->list + (assoc-ref body "substitute-urls")))) + (datastore-store-derivation + datastore + (read-derivation-from-file derivation-file)))) (let ((submit-build-result (apply submit-build `(,build-coordinator - ,(read-derivation-from-file derivation-file) + ,derivation-file ,@(let ((priority (assoc-ref body "priority"))) (if priority `(#:priority ,priority) |