store: 'mapm/accumulate-builds' does not compare stores with 'eq?'.

Fixes <https://issues.guix.gnu.org/51732>.
Regression introduced in 2015d3f042.

The (eq? store expected-store) comparison doesn't work on this branch
where the functional cache, with 'cache-object-mapping', is used
extensively, thereby changing the store's object identity.

* guix/store.scm (build-accumulator): Compare the socket of STORE and
EXPECTED-STORE rather than the store themselves.
This commit is contained in:
Ludovic Courtès 2021-11-10 00:39:10 +01:00
parent d855119ece
commit 745d3a9b44
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5

View File

@ -1353,7 +1353,11 @@ on the build output of a previous derivation."
"Return a build handler that accumulates THINGS and returns an <unresolved>
object, only for build requests on EXPECTED-STORE."
(lambda (continue store things mode)
(if (and (eq? store expected-store)
;; Note: Do not compare STORE and EXPECTED-STORE with 'eq?' because
;; 'cache-object-mapping' and similar functional "setters" change the
;; store's object identity.
(if (and (eq? (store-connection-socket store)
(store-connection-socket expected-store))
(= mode (build-mode normal)))
(unresolved things continue)
(continue #t))))