aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-05-08 11:50:37 +0100
committerChristopher Baines <mail@cbaines.net>2020-05-08 11:50:37 +0100
commitbda7d58853ed4fba976cac92a70c4dc68db263aa (patch)
tree1e2e66515c554a9b424aaa49f1f2315aafb466fd /guix-build-coordinator
parent8521730bed4bb9d17cd76def17d06d089d46d91f (diff)
downloadbuild-coordinator-bda7d58853ed4fba976cac92a70c4dc68db263aa.tar
build-coordinator-bda7d58853ed4fba976cac92a70c4dc68db263aa.tar.gz
Support providing different substitute URLs for different purposes
The agent looks to substitute the derivation, and also substitute inputs, so allow providing different substitute URLs for each of these purposes. This can make substituting faster in the case where you have a different source of substitutes for derivations and non-derivation items.
Diffstat (limited to 'guix-build-coordinator')
-rw-r--r--guix-build-coordinator/agent.scm24
1 files changed, 16 insertions, 8 deletions
diff --git a/guix-build-coordinator/agent.scm b/guix-build-coordinator/agent.scm
index 37ef5ba..4685863 100644
--- a/guix-build-coordinator/agent.scm
+++ b/guix-build-coordinator/agent.scm
@@ -33,7 +33,8 @@
#:export (run-agent))
(define (run-agent uuid coordinator-uri password
- substitute-urls)
+ derivation-substitute-urls
+ non-derivation-substitute-urls)
(while #t
(let* ((details (submit-status coordinator-uri uuid password
'idle))
@@ -52,8 +53,10 @@
(let ((derivation-name (assoc-ref build "derivation-name")))
(simple-format #t "setting up to build: ~A\n"
derivation-name)
- (let ((pre-build-status (pre-build-process substitute-urls
- derivation-name)))
+ (let ((pre-build-status (pre-build-process
+ derivation-substitute-urls
+ non-derivation-substitute-urls
+ derivation-name)))
(if (eq? (assq-ref pre-build-status 'result) 'success)
(begin
(simple-format #t "setup successful, building: ~A\n"
@@ -83,7 +86,9 @@
(when (null? builds)
(sleep 5)))))
-(define (pre-build-process substitute-urls derivation-name)
+(define (pre-build-process derivation-substitute-urls
+ non-derivation-substitute-urls
+ derivation-name)
(define (find-missing-inputs inputs)
(let* ((output-paths
(append-map derivation-input-output-paths inputs))
@@ -91,11 +96,13 @@
(remove file-exists? output-paths))
(path-substitutes
(with-store store
- (set-build-options store #:substitute-urls substitute-urls)
+ (set-build-options store #:substitute-urls
+ non-derivation-substitute-urls)
(map (lambda (file)
(and
- (has-substiutes-no-cache? substitute-urls file)
+ (has-substiutes-no-cache? non-derivation-substitute-urls
+ file)
(if (has-substitutes? store file)
#t
(begin
@@ -119,7 +126,8 @@
;; Download the substitutes
(with-store store
(set-build-options store
- #:substitute-urls substitute-urls)
+ #:substitute-urls
+ non-derivation-substitute-urls)
(build-things store missing-paths))
@@ -160,7 +168,7 @@
(lambda ()
(substitute-derivation derivation-name
#:substitute-urls
- substitute-urls))
+ derivation-substitute-urls))
#:times 12
#:delay 20)
(read-derivation-from-file derivation-name)))))