diff --git a/ognibuild/requirements.py b/ognibuild/requirements.py index 313bdfd..92c30f4 100644 --- a/ognibuild/requirements.py +++ b/ognibuild/requirements.py @@ -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 diff --git a/ognibuild/resolver/apt.py b/ognibuild/resolver/apt.py index 7667347..0b80e44 100644 --- a/ognibuild/resolver/apt.py +++ b/ognibuild/resolver/apt.py @@ -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),