From 6119d07c8f2250bdce90379c3549141748a8e827 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Tue, 2 Feb 2021 09:04:24 +0000 Subject: Make it possible to look for blocking builds for a specific system --- guix-build-coordinator/datastore/sqlite.scm | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'guix-build-coordinator/datastore') 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 )) + (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) -- cgit v1.2.3