diff options
author | Massimiliano Culpo <massimiliano.culpo@gmail.com> | 2023-03-08 13:00:53 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-08 13:00:53 +0100 |
commit | d54611af2c56a04ed0990055d357b30b54b30a5d (patch) | |
tree | 3694b3d7f9a7406a90f2030e17aa3c390682af64 /etc | |
parent | 39adb65dc7f377662a2bbb3b4377b4627cf64d31 (diff) | |
download | spack-d54611af2c56a04ed0990055d357b30b54b30a5d.tar.gz spack-d54611af2c56a04ed0990055d357b30b54b30a5d.tar.bz2 spack-d54611af2c56a04ed0990055d357b30b54b30a5d.tar.xz spack-d54611af2c56a04ed0990055d357b30b54b30a5d.zip |
Split `satisfies(..., strict=True/False)` into two functions (#35681)
This commit formalizes `satisfies(lhs, rhs, strict=True/False)`
and splits it into two functions: `satisfies(lhs, rhs)` and
`intersects(lhs, rhs)`.
- `satisfies(lhs, rhs)` means: all concrete specs matching the
left hand side also match the right hand side
- `intersects(lhs, rhs)` means: there exist concrete specs
matching both lhs and rhs.
`intersects` now has the property that it's commutative,
which previously was not guaranteed.
For abstract specs, `intersects(lhs, rhs)` implies that
`constrain(lhs, rhs)` works.
What's *not* done in this PR is ensuring that
`intersects(concrete, abstract)` returns false when the
abstract spec has additional properties not present in the
concrete spec, but `constrain(concrete, abstract)` will
raise an error.
To accomplish this, some semantics have changed, as well
as bugfixes to ArchSpec:
- GitVersion is now interpreted as a more constrained
version
- Compiler flags are interpreted as strings since their
order is important
- Abstract specs respect variant type (bool / multivalued)
Diffstat (limited to 'etc')
0 files changed, 0 insertions, 0 deletions