Fix vague requirement handling/

This commit is contained in:
Jelmer Vernooij 2021-03-25 16:03:00 +00:00
parent 3ce2df8f6e
commit 609b8b2196
No known key found for this signature in database
GPG key ID: 579C160D4C9E23E8
2 changed files with 15 additions and 4 deletions

View file

@ -127,9 +127,15 @@ class VagueDependencyRequirement(Requirement):
super(VagueDependencyRequirement, self).__init__("vague")
self.name = name
def expand(self):
yield BinaryRequirement(self.name)
yield LibraryRequirement(self.name)
from resolver.apt import AptRequirement
yield AptRequirement(self.name)
def met(self, session):
for cls in [BinaryRequirement, LibraryRequirement]:
if cls(self.name).met(session):
for x in self.expand():
if x.met(session):
return True
return False

View file

@ -234,8 +234,8 @@ def resolve_vague_dep_req(apt_mgr, req):
if name.startswith('gnu '):
name = name[4:]
options = []
options.extend(resolve_binary_req(apt_mgr, [BinaryRequirement(name)]))
options.extend(resolve_library_req(apt_mgr, [LibraryRequirement(name)]))
for x in req.expand():
options.extend(resolve_requirement_apt(apt_mgr, x))
return options
@ -535,7 +535,12 @@ def resolve_ca_req(apt_mgr, req):
return [AptRequirement.simple('ca-certificates')]
def resolve_apt_req(apt_mgr, req):
return [req]
APT_REQUIREMENT_RESOLVERS = [
(AptRequirement, resolve_apt_req),
(BinaryRequirement, resolve_binary_req),
(VagueDependencyRequirement, resolve_vague_dep_req),
(PkgConfigRequirement, resolve_pkg_config_req),