summaryrefslogtreecommitdiff
path: root/guix/store.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-11-10 00:39:10 +0100
committerLudovic Courtès <ludo@gnu.org>2021-11-10 00:39:10 +0100
commit745d3a9b44f93af6fa84468b4b846d1104a73007 (patch)
tree397be67a90da8b4eda11294f4c0c335c1193acef /guix/store.scm
parentd855119eceb838ce56d45157a3f45f97dc7a1749 (diff)
store: 'mapm/accumulate-builds' does not compare stores with 'eq?'.
Fixes <https://issues.guix.gnu.org/51732>. Regression introduced in 2015d3f042870860efef10e801b93eacc0742d38. 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.
Diffstat (limited to 'guix/store.scm')
-rw-r--r--guix/store.scm6
1 files changed, 5 insertions, 1 deletions
diff --git a/guix/store.scm b/guix/store.scm
index 7388953d15..a93e9596d9 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -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))))