Merge "packages_tree: exact match trumps other providers"

This commit is contained in:
Jenkins 2017-01-30 11:27:00 +00:00 committed by Gerrit Code Review
commit c3c2069e2e
1 changed files with 17 additions and 11 deletions

View File

@ -68,25 +68,31 @@ class PackagesTree(object):
:param version_range: the range of versions. :param version_range: the range of versions.
:return: the list of suitable packages :return: the list of suitable packages
""" """
candidates = set() candidates = []
# find package by name
if name in self.packages:
candidates.update(self.packages.find_all(name, version_range))
# find package by provides # find package by provides
# in case of rpm: # in case of rpm:
# set(candidates) >= set(provides) # set(candidates) >= set(provides)
if name in self.provides: if name in self.provides:
candidates.update(self._resolve_relation( candidates.extend(sorted(
self.provides[name], version_range) self._resolve_relation(self.provides[name], version_range),
) key=lambda x: x.version
))
# find package by name
if name in self.packages:
candidates.extend(sorted(
self.packages.find_all(name, version_range),
key=lambda x: x.version
))
if name in self.obsoletes: if name in self.obsoletes:
candidates.update(self._resolve_relation( candidates.extend(sorted(
self.obsoletes[name], version_range) self._resolve_relation(self.obsoletes[name], version_range),
) key=lambda x: x.version
))
return sorted(candidates, key=lambda x: x.version) return candidates
def get_unresolved_dependencies(self): def get_unresolved_dependencies(self):
"""Gets the set of unresolved dependencies. """Gets the set of unresolved dependencies.