diff options
author | Christopher Baines <mail@cbaines.net> | 2021-02-02 09:04:24 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2021-02-02 09:04:24 +0000 |
commit | 6119d07c8f2250bdce90379c3549141748a8e827 (patch) | |
tree | e9d09ee97bf105bcce279eb839256d182280734e /guix-build-coordinator/datastore | |
parent | 75d13b9b90648722051a1e7fed74671ab62e9e5c (diff) | |
download | build-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.scm | 26 |
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) |