Concretizer emits unsatisfiable error when virtual package providers declare overlapping version constraints
0 reputation · 09 Feb 2022, 20:57 UTC
0 reputation · 09 Feb 2022, 20:57 UTC
Spack's concretizer resolves abstract specs into a concrete dependency graph. When a package depends on a virtual package (e.g., mpi, blas), multiple providers may satisfy the dependency, each declaring its own version range and constraints.
The concretizer can emit an UnsatisfiableSpecError even when a valid provider combination exists, because the solver's constraint-propagation logic treats overlapping version ranges from different providers as a single merged constraint set. This behavior differs between the legacy concretizer and the SAT-based concretizer, and the documentation does not specify which provider-selection strategy takes precedence when version ranges intersect but are not identical.
Determine the intended resolution policy for virtual-package providers whose declared version constraints partially overlap, so that package authors can write provides directives that avoid spurious unsatisfiable errors.
UnsatisfiableSpecError due to the same overlapping-range merging?provides version ranges to prevent false conflicts without sacrificing version flexibility?A thoughtful contribution can make all the difference. Be the first to share one.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.