[Yum-devel] [PATCH 1/2] Add argument to searchNames() to get it to return pkgtups.

Tim Lauridsen tim.lauridsen at gmail.com
Thu Sep 23 05:22:40 UTC 2010


On Fri, Sep 17, 2010 at 9:57 PM, James Antill <james at and.org> wrote:

> ---
>  yum/packageSack.py |   11 +++++++----
>  yum/sqlitesack.py  |   19 +++++++++++++++----
>  2 files changed, 22 insertions(+), 8 deletions(-)
>
> diff --git a/yum/packageSack.py b/yum/packageSack.py
> index d822394..3ffaf75 100644
> --- a/yum/packageSack.py
> +++ b/yum/packageSack.py
> @@ -24,6 +24,7 @@ import re
>  import fnmatch
>  import misc
>  from packages import parsePackages
> +from rpmUtils.miscutils import compareEVR
>
>  class PackageSackVersion:
>     def __init__(self):
> @@ -98,7 +99,7 @@ class PackageSackBase(object):
>         """return list of pkgobjects matching the nevra requested"""
>         raise NotImplementedError()
>
> -    def searchNames(self, names=[]):
> +    def searchNames(self, names=[], return_pkgtups=False):
>         raise NotImplementedError()
>
>     def searchPO(self, po):
> @@ -405,8 +406,8 @@ class MetaSack(PackageSackBase):
>         """return list of pkgobjects matching the nevra requested"""
>         return self._computeAggregateListResult("searchNevra", name, epoch,
> ver, rel, arch)
>
> -    def searchNames(self, names=[]):
> -        return self._computeAggregateListResult("searchNames", names)
> +    def searchNames(self, names=[], return_pkgtups=False):
> +        return self._computeAggregateListResult("searchNames", names,
> return_pkgtups)
>
>     def getProvides(self, name, flags=None, version=(None, None, None)):
>         """return dict { packages -> list of matching provides }"""
> @@ -671,7 +672,7 @@ class PackageSack(PackageSackBase):
>             result.append(po)
>         return result
>
> -    def searchNames(self, names=[]):
> +    def searchNames(self, names=[], return_pkgtups=False):
>         """return list of pkgobjects matching the names requested"""
>         self._checkIndexes(failure='build')
>         result = []
> @@ -681,6 +682,8 @@ class PackageSack(PackageSackBase):
>                 continue
>             done.add(name)
>             result.extend(self.nevra.get((name, None, None, None, None),
> []))
> +        if return_pkgtups:
> +            return [pkg.pkgtup for pkg in result]
>         return result
>
>     def getProvides(self, name, flags=None, version=(None, None, None)):
> diff --git a/yum/sqlitesack.py b/yum/sqlitesack.py
> index 820f003..fb8333f 100644
> --- a/yum/sqlitesack.py
> +++ b/yum/sqlitesack.py
> @@ -1263,7 +1263,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
>         return self._search("requires", name, flags, version)
>
>     @catchSqliteException
> -    def searchNames(self, names=[]):
> +    def searchNames(self, names=[], return_pkgtups=False):
>         """return a list of packages matching any of the given names. This
> is
>            only a match on package name, nothing else"""
>
> @@ -1283,6 +1283,8 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
>             else:
>                 names.append(pkgname)
>
> +        if return_pkgtups:
> +            returnList = [pkg.pkgtup for pkg in returnList]
>         if not names:
>             return returnList
>
> @@ -1290,7 +1292,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
>         if len(names) > max_entries:
>             # Unique is done at user_names time, above.
>             for names in seq_max_split(names, max_entries):
> -                returnList.extend(self.searchNames(names))
> +                returnList.extend(self.searchNames(names, return_pkgtups))
>             return returnList
>
>         pat_sqls = []
> @@ -1304,10 +1306,19 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
>             cur = cache.cursor()
>             executeSQL(cur, qsql, names)
>
> +            if return_pkgtups:
> +                for ob in cur:
> +                    pkgtup = self._pkgtupByKeyData(repo, ob['pkgKey'], ob)
> +                    if pkgtup is None:
> +                        continue
> +                    returnList.append(pkgtup)
> +                continue
> +
>             self._sql_pkgKey2po(repo, cur, returnList, have_data=True)
>
> -        # Mark all the processed pkgnames as fully loaded
> -        self._pkgnames_loaded.update([name for name in names])
> +        if not return_pkgtups:
> +            # Mark all the processed pkgnames as fully loaded
> +            self._pkgnames_loaded.update([name for name in names])
>
>         return returnList
>
> --
> 1.7.2.3
>
> _______________________________________________
> Yum-devel mailing list
> Yum-devel at lists.baseurl.org
> http://lists.baseurl.org/mailman/listinfo/yum-devel
>

ACK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.baseurl.org/pipermail/yum-devel/attachments/20100923/99dedfc1/attachment.html>


More information about the Yum-devel mailing list