aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/client-communication.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-build-coordinator/client-communication.scm')
-rw-r--r--guix-build-coordinator/client-communication.scm18
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)