summaryrefslogtreecommitdiff
path: root/.git-blame-ignore-revs
diff options
context:
space:
mode:
authorTodd Gamblin <gamblin2@llnl.gov>2022-09-15 17:57:10 -0700
committerGitHub <noreply@github.com>2022-09-16 00:57:10 +0000
commita0c7209dc1480b16531fcb992642986f4796bc28 (patch)
tree6a5c5366fa88367c16643de8d29b1051a075a4ec /.git-blame-ignore-revs
parent46d7ba9f789b1129e6879e1e58d1a09fe8f4ad10 (diff)
downloadspack-a0c7209dc1480b16531fcb992642986f4796bc28.tar.gz
spack-a0c7209dc1480b16531fcb992642986f4796bc28.tar.bz2
spack-a0c7209dc1480b16531fcb992642986f4796bc28.tar.xz
spack-a0c7209dc1480b16531fcb992642986f4796bc28.zip
bugfix: package hash should affect process, dag, and dunder hashes (#32516)
This fixes a bug where two installations that differ only by package hash will not show up in `spack find`. The bug arose because `_cmp_node` on `Spec` didn't include the package hash in its yielded fields. So, any two `Spec` objects that were only different by package hash would appear to be equal and would overwrite each other when inserted into the same `dict`. Note that we could still *install* specs with different package hashes, and they would appear in the database, but we code that needed to put them into data structures that use `__hash__` would have issues. This PR makes `Spec.__hash__` and `Spec.__eq__` include the `process_hash()`, and it makes `Spec._cmp_node` include the package hash. All of these *should* include all information in a spec so that we don't end up in a situation where we are blind to particular field differences. Eventually, we should unify the `_cmp_*` methods with `to_node_dict` so there aren't two sources of truth, but this needs some thought, since the `_cmp_*` methods exist for speed. We should benchmark whether it's really worth having two types of hashing now that we use `json` instead of `yaml` for spec hashing. - [x] Add `package_hash` to `Spec._cmp_node` - [x] Add `package_hash` to `spack.solve.asp.spec_clauses` so that the `package_hash` will show up in `spack diff`. - [x] Add `package_hash` to the `process_hash` (which doesn't affect abstract specs but will make concrete specs correct) - [x] Make `_cmp_iter` report the dag_hash so that no two specs with different process hashes will be considered equal.
Diffstat (limited to '.git-blame-ignore-revs')
0 files changed, 0 insertions, 0 deletions