diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-01-23 23:45:24 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-01-23 23:45:24 +0100 |
commit | d544f3e6baa42ec890baec268f207902c5cc0faf (patch) | |
tree | 5a7a59de45bb138b9a63ba36e7e93d83ec51435a /src/cuirass/base.scm | |
parent | c1edfe8895060f88855236c6faee9e085e72ca6f (diff) | |
download | cuirass-d544f3e6baa42ec890baec268f207902c5cc0faf.tar cuirass-d544f3e6baa42ec890baec268f207902c5cc0faf.tar.gz |
cuirass: Fix scope mismatch.
Previously STORE would be closed on the first context switch, before
'restart-builds' has completed, leading to an error (writing to a closed
port).
* src/cuirass/base.scm (restart-builds): Remove 'store' parameter. Wrap
body in 'with-store'.
* bin/cuirass.in (main): Adjust accordingly.
Diffstat (limited to 'src/cuirass/base.scm')
-rw-r--r-- | src/cuirass/base.scm | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/src/cuirass/base.scm b/src/cuirass/base.scm index 295c64b..360b6e6 100644 --- a/src/cuirass/base.scm +++ b/src/cuirass/base.scm @@ -293,30 +293,31 @@ updating DB accordingly." (_ (log-message "build event: ~s" event)))) -(define (restart-builds store db builds) +(define (restart-builds db builds) "Restart builds whose status in DB is \"pending\" (scheduled or started)." - (let-values (((valid stale) - (partition (lambda (build) - (let ((drv (assq-ref build #:derivation))) - (valid-path? store drv))) - builds))) - ;; We cannot restart builds listed in STALE, so mark them as canceled. - (log-message "canceling ~a pending builds" (length stale)) - (for-each (lambda (build) - (db-update-build-status! db (assq-ref build #:derivation) - (build-status canceled))) - stale) - - ;; Those in VALID can be restarted. - (log-message "restarting ~a pending builds" (length valid)) - (parameterize ((current-build-output-port - (build-event-output-port (lambda (event status) - (handle-build-event db event)) - #t))) - (build-derivations store - (map (lambda (build) - (assq-ref build #:derivation)) - valid))))) + (with-store store + (let-values (((valid stale) + (partition (lambda (build) + (let ((drv (assq-ref build #:derivation))) + (valid-path? store drv))) + builds))) + ;; We cannot restart builds listed in STALE, so mark them as canceled. + (log-message "canceling ~a pending builds" (length stale)) + (for-each (lambda (build) + (db-update-build-status! db (assq-ref build #:derivation) + (build-status canceled))) + stale) + + ;; Those in VALID can be restarted. + (log-message "restarting ~a pending builds" (length valid)) + (parameterize ((current-build-output-port + (build-event-output-port (lambda (event status) + (handle-build-event db event)) + #t))) + (build-derivations store + (map (lambda (build) + (assq-ref build #:derivation)) + valid)))))) (define (build-packages store db jobs) "Build JOBS and return a list of Build results." |