aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/agent.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-04-13 15:45:05 +0100
committerChristopher Baines <mail@cbaines.net>2020-04-13 15:45:05 +0100
commita7da2619b97a3dbc9013d2254c86feeb0f26d92d (patch)
treec9ea9bb0d7721569b1a2e1a06b7edafd3679e486 /guix-build-coordinator/agent.scm
parent80b6b4dd8fdef2ee7631870bcf1a8353d5cf5148 (diff)
downloadbuild-coordinator-a7da2619b97a3dbc9013d2254c86feeb0f26d92d.tar
build-coordinator-a7da2619b97a3dbc9013d2254c86feeb0f26d92d.tar.gz
Have agents run in a loop
Perform a build, then query for the next one.
Diffstat (limited to 'guix-build-coordinator/agent.scm')
-rw-r--r--guix-build-coordinator/agent.scm41
1 files changed, 22 insertions, 19 deletions
diff --git a/guix-build-coordinator/agent.scm b/guix-build-coordinator/agent.scm
index 1eb0d58..ee552f1 100644
--- a/guix-build-coordinator/agent.scm
+++ b/guix-build-coordinator/agent.scm
@@ -31,25 +31,28 @@
#:export (run-agent))
(define (run-agent uuid coordinator-uri password)
- (let* ((details (submit-status coordinator-uri uuid password
- 'idle))
- (builds (let ((already-allocated-builds
- (vector->list
- (assoc-ref details "builds"))))
- (if (null? already-allocated-builds)
- (fetch-builds-for-agent
- coordinator-uri uuid password)
- already-allocated-builds))))
- (for-each (lambda (build)
- (let ((derivation-name (assoc-ref build "derivation-name")))
- (let ((pre-build-status (pre-build-process derivation-name)))
- (if (eq? (assq-ref pre-build-status 'result) 'success)
- (let ((result (perform-build derivation-name)))
- (post-build uuid coordinator-uri password
- (assoc-ref build "uuid")
- derivation-name))
- (simple-format #t "failure: ~A\n" pre-build-status)))))
- builds)))
+ (while #t
+ (let* ((details (submit-status coordinator-uri uuid password
+ 'idle))
+ (builds (let ((already-allocated-builds
+ (vector->list
+ (assoc-ref details "builds"))))
+ (if (null? already-allocated-builds)
+ (fetch-builds-for-agent
+ coordinator-uri uuid password)
+ already-allocated-builds))))
+ (for-each (lambda (build)
+ (let ((derivation-name (assoc-ref build "derivation-name")))
+ (let ((pre-build-status (pre-build-process derivation-name)))
+ (if (eq? (assq-ref pre-build-status 'result) 'success)
+ (let ((result (perform-build derivation-name)))
+ (post-build uuid coordinator-uri password
+ (assoc-ref build "uuid")
+ derivation-name))
+ (simple-format #t "failure: ~A\n" pre-build-status)))))
+ builds))
+
+ (sleep 5)))
(define (pre-build-process derivation-name)
(define (find-missing-inputs inputs)