diff options
author | Ludovic Courtès <ludo@gnu.org> | 2021-11-10 00:39:10 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2021-11-10 00:39:10 +0100 |
commit | 745d3a9b44f93af6fa84468b4b846d1104a73007 (patch) | |
tree | 397be67a90da8b4eda11294f4c0c335c1193acef /guix/store.scm | |
parent | d855119eceb838ce56d45157a3f45f97dc7a1749 (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.scm | 6 |
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)))) |