diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2017-03-25 22:49:46 -0700 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2017-03-31 13:40:41 -0700 |
commit | 7f3f4930249b580bd27891299d330f8dd272ecd3 (patch) | |
tree | c29cd13b287128f82bbc54589035e746fc590d53 /.gitignore | |
parent | fe6f39b66287a4b3ecade2d776348d44920ec651 (diff) | |
download | spack-7f3f4930249b580bd27891299d330f8dd272ecd3.tar.gz spack-7f3f4930249b580bd27891299d330f8dd272ecd3.tar.bz2 spack-7f3f4930249b580bd27891299d330f8dd272ecd3.tar.xz spack-7f3f4930249b580bd27891299d330f8dd272ecd3.zip |
Fix concretization bugs with virtuals and deptypes.
1. Fix #2807: Can't depend on virtual and non-virtual package
- This is tested by test_my_dep_depends_on_provider_of_my_virtual_dep in
the concretize.py test.
- This was actually working in the test suite, but it depended on the
order the dependencies were resolved in. Resolving non-virtual then
virtual worked, but virtual, then non-virtual did not.
- Problem was that an unnecessary copy was made of a spec that already
had some dependencies set up, and the copy lost half of some of the
dependency relationships. This caused the "can'd depend on X twice
error".
- Fix by eliminating unnecessary copy and ensuring that dep parameter of
_merge_dependency is always safe to own -- i.e. it's a defensive copy
from somewhere else.
2. Fix bug and simplify concretization of deptypes.
- deptypes weren't being accumulated; they were being set on each
DependencySpec. This could cause concretization to get into an infinite
loop.
- Fixed by accumulating deptypes in DependencySpec.update_deptypes()
- Also simplified deptype normalization logic: deptypes are now merged in
constrain() like everything else -- there is no need to merge them
specially or to look at dpeendents in _merge_dependency().
- Add some docstrings to deptype tests.
Diffstat (limited to '.gitignore')
0 files changed, 0 insertions, 0 deletions