summaryrefslogtreecommitdiff
path: root/.gitignore
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2024-01-08 00:47:39 -0800
committerGitHub <noreply@github.com>2024-01-08 09:47:39 +0100
commit6f9151481418555041f11ca690608307e6df9595 (patch)
tree99bf6a33f87a1b28fb5a76d4ebd2360ab77f2e75 /.gitignore
parent18051dbb6278a18705d6f1a48d97650f701967fe (diff)
downloadspack-6f9151481418555041f11ca690608307e6df9595.tar.gz
spack-6f9151481418555041f11ca690608307e6df9595.tar.bz2
spack-6f9151481418555041f11ca690608307e6df9595.tar.xz
spack-6f9151481418555041f11ca690608307e6df9595.zip
bugfix: original concretizer is sensitive to dependency order (#41975)
Needed for #40326, which can changes the iteration order over package dependencies during concretization. While clingo doesn't have this problem, the original concretizer (which we still use for bootstrapping) can be sensitive to iteration order when evaluating dependency constraints in `when` conditions. This can cause it to ignore conditional dependencies unless the dependencies in the condition are listed first in the package. The issue was in the way the original concretizer would disconnect specs *every* time `normalize()` ran. When specs were disconnected, `^dependency` constraints wouldn't see the dependency in the dependency condition loop. We now only only disconnect *all* dependencies at the start of `concretize()` and `normalize()`, and we disconnect any leftover dependents from replaced externals at the *end* of `normalize()`. This trims stale connections while keeping the ones that are needed to trigger dependency conditions. - [x] refactor `flat_dependencies()` to not disconnect the spec by default. - [x] `flat_dependencies()` is never called with `copy=True` -- remove the `copy` kwarg. - [x] disconnect only once at the beginning of `normalize()` or `concretize()`. - [x] add a test that perturbs dependency iteration order to ensure this doesn't regress. - [x] disconnect unused dependents at end of `normalize()`
Diffstat (limited to '.gitignore')
0 files changed, 0 insertions, 0 deletions