spack/var/spack/repos/builtin/packages/python
Massimiliano Culpo d54611af2c
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)
2023-03-08 13:00:53 +01:00
..
cpython-windows-externals.patch
cray-rpath-3.1.patch
fj-rpath-3.1.patch
fj-rpath-3.9.patch
intel-3.7.patch
package.py
python-3.7.2-distutils-C++.patch
python-3.7.3-distutils-C++.patch
python-3.7.4+-distutils-C++-testsuite.patch
python-3.7.4+-distutils-C++.patch
python-3.11-distutils-C++.patch
tkinter-3.7.patch
tkinter-3.8.patch
tkinter-3.10.patch
tkinter-3.11.patch