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.
:return: the list of suitable packages
"""
candidates = set()
# find package by name
if name in self.packages:
candidates.update(self.packages.find_all(name, version_range))
candidates = []
# find package by provides
# in case of rpm:
# set(candidates) >= set(provides)
if name in self.provides:
candidates.update(self._resolve_relation(
self.provides[name], version_range)
)
candidates.extend(sorted(
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:
candidates.update(self._resolve_relation(
self.obsoletes[name], version_range)
)
candidates.extend(sorted(
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):
"""Gets the set of unresolved dependencies.