--- yum/__init__.py | 28 ++++++++++++++++++++++++++++ 1 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/yum/__init__.py b/yum/__init__.py index 5fb7c00..cc968fd 100644 --- a/yum/__init__.py +++ b/yum/__init__.py @@ -3459,6 +3459,34 @@ class YumBase(depsolve.Depsolve): return self.rpmdb.getProvides(depname, depflags, depver).keys() + def returnInstalledPackageByDep(self, depstring): + """Return the best, or first, installed package object that provides the + given dependencies. + + :param depstring: a string specifying the dependency to return + the package that fulfils + :return: the best, or first, installed package that fulfils the given + dependency + :raises: a :class:`yum.Errors.YumBaseError` if no packages that + fulfil the given dependency can be found + """ + # we get all sorts of randomness here + errstring = depstring + if type(depstring) not in types.StringTypes: + errstring = str(depstring) + + try: + pkglist = self.returnInstalledPackagesByDep(depstring) + except Errors.YumBaseError: + raise Errors.YumBaseError, _('No Package found for %s') % errstring + + ps = ListPackageSack(pkglist) + result = self._bestPackageFromList(ps.returnNewestByNameArch()) + if result is None: + raise Errors.YumBaseError, _('No Package found for %s') % errstring + + return result + def _bestPackageFromList(self, pkglist): """take list of package objects and return the best package object. If the list is empty, return None. -- 1.7.6.2 _______________________________________________ Yum-devel mailing list Yum-devel@lists.baseurl.org http://lists.baseurl.org/mailman/listinfo/yum-devel