summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bin/cuirass.in1
-rw-r--r--src/cuirass/base.scm7
2 files changed, 8 insertions, 0 deletions
diff --git a/bin/cuirass.in b/bin/cuirass.in
index ba10274..7e3c5cf 100644
--- a/bin/cuirass.in
+++ b/bin/cuirass.in
@@ -126,6 +126,7 @@ exec ${GUILE:-@GUILE@} --no-auto-compile -e main -s "$0" "$@"
(let ((exit-channel (make-channel))
(pending
(begin
+ (clear-build-queue db)
(log-message "retrieving list of pending builds...")
(db-get-builds db '((status pending))))))
diff --git a/src/cuirass/base.scm b/src/cuirass/base.scm
index ec0a016..3b1b463 100644
--- a/src/cuirass/base.scm
+++ b/src/cuirass/base.scm
@@ -49,6 +49,7 @@
fetch-repository
compile
evaluate
+ clear-build-queue
restart-builds
build-packages
prepare-git
@@ -452,6 +453,12 @@ updating DB accordingly."
(string=? (assq-ref build1 #:derivation)
(assq-ref build2 #:derivation)))
+(define (clear-build-queue db)
+ "Reset the status of builds in DB that are marked as \"started\". This
+procedure is meant to be called at startup."
+ (log-message "marking stale builds as \"scheduled\"...")
+ (sqlite-exec db "UPDATE Builds SET status = -2 WHERE status = -1;"))
+
(define (restart-builds db builds)
"Restart builds whose status in DB is \"pending\" (scheduled or started)."
(with-store store