diff options
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) |