ASP-based solver: add a rule for version uniqueness in virtual packages (#26740)
fixes #26718 A virtual package may or may not have a version, but it never has more than one. Previously we were missing a rule for that.
This commit is contained in:

committed by
GitHub

parent
d9d0ceb726
commit
eded8f48dc
@@ -28,6 +28,9 @@ version_declared(Package, Version) :- version_declared(Package, Version, _).
|
||||
1 { version(Package, Version) : version_declared(Package, Version) } 1
|
||||
:- node(Package).
|
||||
|
||||
% A virtual package may have or not a version, but never has more than one
|
||||
:- virtual_node(Package), 2 { version(Package, _) }.
|
||||
|
||||
% If we select a deprecated version, mark the package as deprecated
|
||||
deprecated(Package, Version) :- version(Package, Version), deprecated_version(Package, Version).
|
||||
|
||||
|
@@ -1267,3 +1267,10 @@ def test_newer_dependency_adds_a_transitive_virtual(self):
|
||||
s = spack.spec.Spec('root-adds-virtual').concretized()
|
||||
assert s['leaf-adds-virtual'].satisfies('@2.0')
|
||||
assert 'blas' in s
|
||||
|
||||
@pytest.mark.regression('26718')
|
||||
def test_versions_in_virtual_dependencies(self):
|
||||
# Ensure that a package that needs a given version of a virtual
|
||||
# package doesn't end up using a later implementation
|
||||
s = spack.spec.Spec('hpcviewer@2019.02').concretized()
|
||||
assert s['java'].satisfies('virtual-with-versions@1.8.0')
|
||||
|
Reference in New Issue
Block a user