From 745d3a9b44f93af6fa84468b4b846d1104a73007 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 10 Nov 2021 00:39:10 +0100 Subject: store: 'mapm/accumulate-builds' does not compare stores with 'eq?'. Fixes . 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. --- guix/store.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'guix') 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 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)))) -- cgit v1.2.3