diff --git a/src/cuirass/base.scm b/src/cuirass/base.scm index 5a0c826..99a17fa 100644 --- a/src/cuirass/base.scm +++ b/src/cuirass/base.scm @@ -632,6 +632,21 @@ This procedure is meant to be called at startup." db "UPDATE Builds SET status = 4 WHERE status = -2 AND timestamp < " (- (time-second (current-time time-utc)) age) ";"))) +(define (partition pred lst) + ;; Scheme implementation of SRFI-1 'partition' so stack activations can be + ;; captured via 'abort-to-prompt'. + (let loop ((lst lst) + (pass '()) + (fail '())) + (match lst + (() + (values (reverse pass) (reverse fail))) + ((head . tail) + (let ((pass? (pred head))) + (loop tail + (if pass? (cons head pass) pass) + (if pass? fail (cons head fail)))))))) + (define (restart-builds) "Restart builds whose status in the database is \"pending\" (scheduled or started)."