aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/datastore/sqlite.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-06-19 16:55:01 +0100
committerChristopher Baines <mail@cbaines.net>2020-06-19 16:55:01 +0100
commit89c2823f1a332da9e9ea3a4f84ef27cce7e22a3a (patch)
treec58d0c732100c67e71fee2e5438154153c374fc7 /guix-build-coordinator/datastore/sqlite.scm
parentd1d8132c6f8c0fb4d2335472d487635e0284cdf6 (diff)
downloadbuild-coordinator-89c2823f1a332da9e9ea3a4f84ef27cce7e22a3a.tar
build-coordinator-89c2823f1a332da9e9ea3a4f84ef27cce7e22a3a.tar.gz
Handle the system more explicitly when fetching builds
Also support fetching builds for specific systems from the Guix Data Service.
Diffstat (limited to 'guix-build-coordinator/datastore/sqlite.scm')
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm14
1 files changed, 11 insertions, 3 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index 2b39c51..0497bab 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -1286,20 +1286,24 @@ SELECT agent_id, COUNT(*) FROM allocated_builds GROUP BY agent_id")))
(define-method (datastore-allocate-builds-to-agent
(datastore <sqlite-datastore>)
agent-id
+ systems
count)
(define (fetch-build db)
(let ((statement
(sqlite-prepare
db
;; This needs to guard against the plan being out of date
- "
+ (simple-format #f "
SELECT builds.uuid, builds.derivation_name
FROM builds
INNER JOIN build_allocation_plan
ON builds.uuid = build_allocation_plan.build_id
+INNER JOIN derivations
+ ON builds.derivation_name = derivations.name
WHERE build_allocation_plan.agent_id = :agent_id
AND builds.processed = 0
AND builds.uuid NOT IN (SELECT build_id FROM allocated_builds)
+ AND derivations.system IN (~A)
AND NOT EXISTS (
SELECT 1
FROM derivation_outputs AS build_derivation_outputs
@@ -1315,8 +1319,12 @@ WHERE build_allocation_plan.agent_id = :agent_id
allocated_builds_derivation_outputs.output
)
ORDER BY build_allocation_plan.ordering ASC
-LIMIT 1")))
-
+LIMIT 1"
+ (string-join
+ (map (lambda (system)
+ (string-append "'" system "'"))
+ systems)
+ ",")))))
(sqlite-bind-arguments
statement
#:agent_id agent-id)