spack/lib/spack
Todd Gamblin 9393d97139 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.
2021-02-17 17:07:38 -08:00
..
docs Typos: add missing closing parens (#20174) 2021-02-17 17:07:17 -08:00
env Support parallel environment builds (#18131) 2020-11-17 02:41:07 -08:00
external spack test (#15702) 2020-11-18 02:39:02 -08:00
llnl spack test (#15702) 2020-11-18 02:39:02 -08:00
spack concretizer: simplify handling of virtual version constraints 2021-02-17 17:07:38 -08:00