aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2021-01-16 19:07:42 +0000
committerChristopher Baines <mail@cbaines.net>2021-01-16 19:07:42 +0000
commit19c7e41c7370f94a14b6cf52b709d47216b6b040 (patch)
tree2124d050ed74e0c387d9359fb7303bc55d941d23 /guix-build-coordinator
parentd0c492daf37e73f40c062b2f5c9bd99f1a809680 (diff)
downloadbuild-coordinator-19c7e41c7370f94a14b6cf52b709d47216b6b040.tar
build-coordinator-19c7e41c7370f94a14b6cf52b709d47216b6b040.tar.gz
Add datastore-list-unbuilt-derivation-outputs
Diffstat (limited to 'guix-build-coordinator')
-rw-r--r--guix-build-coordinator/datastore.scm1
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm30
2 files changed, 31 insertions, 0 deletions
diff --git a/guix-build-coordinator/datastore.scm b/guix-build-coordinator/datastore.scm
index a521911..20df399 100644
--- a/guix-build-coordinator/datastore.scm
+++ b/guix-build-coordinator/datastore.scm
@@ -30,6 +30,7 @@
(re-export datastore-count-setup-failures)
(re-export datastore-list-setup-failures-for-build)
(re-export datastore-fetch-setup-failures)
+(re-export datastore-list-unbuilt-derivation-outputs)
(re-export datastore-list-build-outputs)
(re-export datastore-list-related-derivations-with-no-build-for-outputs)
(re-export datastore-list-failed-builds-with-blocking-count)
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index 8e23633..5cab70f 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -2533,6 +2533,36 @@ WHERE derivation_name = :derivation_name"
result)))))
+(define-method (datastore-list-unbuilt-derivation-outputs
+ (datastore <sqlite-datastore>)
+ derivation-name)
+ (call-with-worker-thread
+ (slot-ref datastore 'worker-reader-thread-channel)
+ (lambda (db)
+ (let ((statement
+ (sqlite-prepare
+ db
+ "
+SELECT derivation_outputs.output
+FROM derivation_outputs
+INNER JOIN unbuilt_outputs
+ ON derivation_outputs.output = unbuilt_outputs.output
+WHERE derivation_name = :derivation_name"
+ #:cache? #t)))
+
+ (sqlite-bind-arguments
+ statement
+ #:derivation_name derivation-name)
+
+ (let ((result
+ (sqlite-map
+ (match-lambda
+ (#(output) output))
+ statement)))
+ (sqlite-reset statement)
+
+ result)))))
+
(define-method (datastore-list-build-outputs
(datastore <sqlite-datastore>)
build-id)