aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/datastore
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2021-02-02 09:04:24 +0000
committerChristopher Baines <mail@cbaines.net>2021-02-02 09:04:24 +0000
commit6119d07c8f2250bdce90379c3549141748a8e827 (patch)
treee9d09ee97bf105bcce279eb839256d182280734e /guix-build-coordinator/datastore
parent75d13b9b90648722051a1e7fed74671ab62e9e5c (diff)
downloadbuild-coordinator-6119d07c8f2250bdce90379c3549141748a8e827.tar
build-coordinator-6119d07c8f2250bdce90379c3549141748a8e827.tar.gz
Make it possible to look for blocking builds for a specific system
Diffstat (limited to 'guix-build-coordinator/datastore')
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm26
1 files changed, 21 insertions, 5 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index 0fedd63..e50f3d9 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -620,14 +620,16 @@ WHERE related_derivations.name != :derivation
result)))))
(define-method (datastore-list-failed-builds-with-blocking-count
- (datastore <sqlite-datastore>))
+ (datastore <sqlite-datastore>)
+ system)
(call-with-worker-thread
(slot-ref datastore 'worker-reader-thread-channel)
(lambda (db)
(let ((statement
(sqlite-prepare
db
- "
+ (string-append
+ "
SELECT
builds.uuid,
builds.derivation_name,
@@ -648,11 +650,21 @@ SELECT
ON related_derivations.name = blocked_builds.derivation_name
AND blocked_builds.processed = 0
)
-FROM builds
+FROM builds"
+ (if system
+ "
+INNER JOIN derivations ON derivations.name = builds.derivation_name"
+ "")
+ "
INNER JOIN build_results
ON builds.uuid = build_results.build_id
WHERE builds.processed = 1
- AND build_results.result = 'failure'
+ AND build_results.result = 'failure'"
+ (if system
+ "
+ AND derivations.system = :system"
+ "")
+ "
AND NOT EXISTS (
SELECT 1
FROM derivation_outputs
@@ -664,9 +676,13 @@ WHERE builds.processed = 1
ON other_builds.uuid = other_build_results.build_id
WHERE derivation_outputs.derivation_name = builds.derivation_name
AND other_build_results.result = 'success'
-) ORDER BY 3 DESC, 2, 1"
+) ORDER BY 3 DESC, 2, 1")
#:cache? #t)))
+ (when system
+ (sqlite-bind-arguments statement
+ #:system system))
+
(let ((result (sqlite-map
(match-lambda
(#(uuid derivation-name blocked-count)