diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2021-01-02 22:44:33 -0800 |
---|---|---|
committer | Tamara Dahlgren <dahlgren1@llnl.gov> | 2021-02-17 17:07:38 -0800 |
commit | 9393d971393713154b6b766277a91d7536ec3896 (patch) | |
tree | dbb859f17aa00e6277eadb10fbc3984442f84ea2 /LICENSE-MIT | |
parent | 8f85ab88c0d78d29fb373b7c1ff7da752372aad8 (diff) | |
download | spack-9393d971393713154b6b766277a91d7536ec3896.tar.gz spack-9393d971393713154b6b766277a91d7536ec3896.tar.bz2 spack-9393d971393713154b6b766277a91d7536ec3896.tar.xz spack-9393d971393713154b6b766277a91d7536ec3896.zip |
concretizer: simplify handling of virtual version constraints
Previously, the concretizer handled version constraints by comparing all
pairs of constraints and ensuring they satisfied each other. This led to
INCONSISTENT ressults from clingo, due to ambiguous semantics like:
version_constraint_satisfies("mpi", ":1", ":3")
version_constraint_satisfies("mpi", ":3", ":1")
To get around this, we introduce possible (fake) versions for virtuals,
based on their constraints. Essentially, we add any Versions,
VersionRange endpoints, and all such Versions and endpoints from
VersionLists to the constraint. Virtuals will have one of these synthetic
versions "picked" by the solver. This also allows us to remove a special
case from handling of `version_satisfies/3` -- virtuals now work just
like regular packages.
Diffstat (limited to 'LICENSE-MIT')
0 files changed, 0 insertions, 0 deletions