diff options
author | Harmen Stoppels <harmenstoppels@gmail.com> | 2022-10-25 16:47:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-25 16:47:50 +0200 |
commit | 09e0bd55c2ab2d4678efc693c3d3b79ef7c238f4 (patch) | |
tree | 063e5f885811c9817d0219e8bca89a1232f4f3f2 /README.md | |
parent | 00ae74f40e4ac918f4826bf3fb61da6f28af5051 (diff) | |
download | spack-09e0bd55c2ab2d4678efc693c3d3b79ef7c238f4.tar.gz spack-09e0bd55c2ab2d4678efc693c3d3b79ef7c238f4.tar.bz2 spack-09e0bd55c2ab2d4678efc693c3d3b79ef7c238f4.tar.xz spack-09e0bd55c2ab2d4678efc693c3d3b79ef7c238f4.zip |
spec.py: prefer transitive link and direct build/run/test deps (#33498)
Due to reuse concretization, we may generate DAGs with two occurrences
of the same package corresponding to distinct specs. This happens when
build dependencies are reused, since their dependencies are ignored in
concretization.
This caused a regression, for example: `spec['openssl']` would take the
'openssl' of the build dep `cmake`, instead of the direct `openssl`
dependency, simply because the edge to `cmake` was traversed first and
we do depth first traversal.
One solution that was discussed is to limit `spec[name]` to just direct
deps, or direct deps + transitive link deps, but this is too breaking.
Instead, this PR simply prioritizes transitive link and direct
build/run/test deps, and then falls back to a full DAG traversal. So,
it's just about order of iteration.
Diffstat (limited to 'README.md')
0 files changed, 0 insertions, 0 deletions