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") super(VagueDependencyRequirement, self).__init__("vague")
self.name = name 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): def met(self, session):
for cls in [BinaryRequirement, LibraryRequirement]: for x in self.expand():
if cls(self.name).met(session): if x.met(session):
return True return True
return False return False

View file

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