From c2e672977121efe8d18a7d7b1c858da51df2a5c1 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 31 Jul 2011 15:27:54 +0000 Subject: [PATCH] Make search returning always the most recent version of a package. --- pakfire/base.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/pakfire/base.py b/pakfire/base.py index 034e42484..0abd7df29 100644 --- a/pakfire/base.py +++ b/pakfire/base.py @@ -261,12 +261,20 @@ class Pakfire(object): def search(self, pattern): # Do the search. - pkgs = [] + pkgs = {} for solv in self.pool.search(pattern, satsolver.SEARCH_STRING|satsolver.SEARCH_FILES): - pkgs.append(packages.SolvPackage(self, solv)) + pkg = packages.SolvPackage(self, solv) - # Return the output as a package listing. - return packages.PackageListing(pkgs) + # Check, if a package with the name is already in the resultset + # and always replace older ones by more recent ones. + if pkgs.has_key(pkg.name): + if pkgs[pkg.name] < pkg: + pkgs[pkg.name] = pkg + else: + pkgs[pkg.name] = pkg + + # Return a list of the packages, alphabetically sorted. + return sorted(pkgs.values()) def groupinstall(self, group): pkgs = self.grouplist(group) -- 2.39.5