store: 'map/accumulate-builds' handler checks the store received.

This is a followup to b19250eec6,
providing a proper fix for <https://issues.guix.gnu.org/46756>.

* guix/remote.scm (remote-eval): Revert b19250eec6.
* guix/store.scm (build-accumulator): Turn into a procedure.  Call
CONTINUE when the store is not eq? to the initial store.
(map/accumulate-builds): Adjust accordingly.
* tests/store.scm ("map/accumulate-builds and different store"): New test.
This commit is contained in:
Ludovic Courtès 2021-10-28 19:21:50 +02:00
parent 45b251fd04
commit 2015d3f042
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
3 changed files with 41 additions and 16 deletions

View file

@ -146,15 +146,6 @@ remote store."
sources)))
(mbegin %store-monad
((store-lift send-files) to-send remote #:recursive? #t)
;; Build handlers are not tied to a specific <store-connection>.
;; If a handler is already installed, it might want to go ahead
;; and build, but on the local <store-connection> instead of
;; REMOTE. To avoid that, install a build handler that does
;; nothing.
(return (with-build-handler (lambda (continue . _)
(continue #t))
(build-derivations remote inputs)))
(return (build-derivations remote inputs))
(return (close-connection remote))
(return (%remote-eval lowered session become-command)))))))