[yum-git] Branch 'yum-3_2_X' - 2 commits - cli.py yum/__init__.py yum/rpmsack.py

James Antill james at linux.duke.edu
Tue Jul 1 17:55:16 UTC 2008


 cli.py          |   34 ++++++++++++++++++++++++----------
 yum/__init__.py |   13 ++++++++-----
 yum/rpmsack.py  |   12 ++++++++----
 3 files changed, 40 insertions(+), 19 deletions(-)

New commits:
commit 1c62ccb91f83091b10b6a89287a5a05c01ee3d29
Author: James Antill <james at and.org>
Date:   Tue Jul 1 13:55:06 2008 -0400

    Fix doPackageLists() and rpmdb.returnPackages() to have ignore_case option.

diff --git a/cli.py b/cli.py
index d0f0342..b8575b9 100644
--- a/cli.py
+++ b/cli.py
@@ -671,8 +671,8 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
             if extcmds[0] in special:
                 pkgnarrow = extcmds.pop(0)
             
-        ypl = self.doPackageLists(pkgnarrow=pkgnarrow, patterns=extcmds)
-        
+        ypl = self.doPackageLists(pkgnarrow=pkgnarrow, patterns=extcmds,
+                                  ignore_case=True)
         # rework the list output code to know about:
         # obsoletes output
         # the updates format
diff --git a/yum/__init__.py b/yum/__init__.py
index bcdab95..016a0e9 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -1329,7 +1329,8 @@ class YumBase(depsolve.Depsolve):
         msg = _('%d %s files removed') % (removed, filetype)
         return 0, [msg]
 
-    def doPackageLists(self, pkgnarrow='all', patterns=None, showdups=None):
+    def doPackageLists(self, pkgnarrow='all', patterns=None, showdups=None,
+                       ignore_case=False):
         """generates lists of packages, un-reduced, based on pkgnarrow option"""
 
         if showdups is None:
@@ -1348,7 +1349,8 @@ class YumBase(depsolve.Depsolve):
         if pkgnarrow == 'all': 
             dinst = {}
             ndinst = {} # Newest versions by name.arch
-            for po in self.rpmdb.returnPackages(patterns=patterns):
+            for po in self.rpmdb.returnPackages(patterns=patterns,
+                                                ignore_case=ignore_case):
                 dinst[po.pkgtup] = po;
                 if showdups:
                     continue
@@ -1390,7 +1392,8 @@ class YumBase(depsolve.Depsolve):
 
         # installed only
         elif pkgnarrow == 'installed':
-            installed = self.rpmdb.returnPackages(patterns=patterns)
+            installed = self.rpmdb.returnPackages(patterns=patterns,
+                                                  ignore_case=ignore_case)
         
         # available in a repository
         elif pkgnarrow == 'available':
@@ -1415,7 +1418,8 @@ class YumBase(depsolve.Depsolve):
             # we must compare the installed set versus the repo set
             # anything installed but not in a repo is an extra
             avail = self.pkgSack.simplePkgList(patterns=patterns)
-            for po in self.rpmdb.returnPackages(patterns=patterns):
+            for po in self.rpmdb.returnPackages(patterns=patterns,
+                                                ignore_case=ignore_case):
                 if po.pkgtup not in avail:
                     extras.append(po)
 
@@ -1462,7 +1466,6 @@ class YumBase(depsolve.Depsolve):
         ygh.recent = recent
         ygh.extras = extras
 
-        
         return ygh
 
 
diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index 7b08ab0..ead2a9f 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -255,17 +255,21 @@ class RPMDBPackageSack(PackageSackBase):
         return misc.newestInList(allpkgs)
 
     @staticmethod
-    def _compile_patterns(patterns):
+    def _compile_patterns(patterns, ignore_case=False):
         if not patterns or len(patterns) > constants.PATTERNS_MAX:
             return None
         ret = []
         for pat in patterns:
-            ret.append(re.compile(fnmatch.translate(pat)))
+            if ignore_case:
+                ret.append(re.compile(fnmatch.translate(pat), re.I))
+            else:
+                ret.append(re.compile(fnmatch.translate(pat)))
         return ret
     @staticmethod
     def _match_repattern(repatterns, hdr):
         if repatterns is None:
             return True
+
         for repat in repatterns:
             if repat.match(hdr['name']):
                 return True
@@ -285,9 +289,9 @@ class RPMDBPackageSack(PackageSackBase):
                 return True
         return False
 
-    def returnPackages(self, repoid=None, patterns=None):
+    def returnPackages(self, repoid=None, patterns=None, ignore_case=False):
         if not self._completely_loaded:
-            rpats = self._compile_patterns(patterns)
+            rpats = self._compile_patterns(patterns, ignore_case)
             for hdr, idx in self._all_packages():
                 if self._match_repattern(rpats, hdr):
                     self._makePackageObject(hdr, idx)
commit eeba3000f1dac4fefde334860e450eaf95907aa3
Author: James Antill <james at and.org>
Date:   Tue Jul 1 13:35:42 2008 -0400

    Tidy up extra --version output, add rpm/etc. packages we dep. on

diff --git a/cli.py b/cli.py
index 34c2513..d0f0342 100644
--- a/cli.py
+++ b/cli.py
@@ -198,14 +198,28 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
 
         if opts.version:
             self.conf.cache = 1
-            for pkg in self.rpmdb.returnPackages(patterns=['yum']):
-                # We should only have 1 return...
-                print _("  Installed version: %s") % pkg
-                print _("  Committer        : %s") % pkg.committer
-                print _("  Committime       : %s") % time.ctime(pkg.committime)
-                print _("  Buildtime        : %s") % time.ctime(pkg.buildtime)
-                if hasattr(pkg, 'installtime'):
-                    print _("  Installtime      : %s") % time.ctime(pkg.installtime)
+            yum_progs = ['yum', 'yum-metadata-parser', 'rpm',
+                         'yum-rhn-plugin']
+            done = False
+            def sm_ui_time(x):
+                return time.strftime("%Y-%m-%d %H:%M", time.gmtime(x))
+            for pkg in self.rpmdb.returnPackages(patterns=yum_progs):
+                # We should only have 1 version of each...
+                if done: print ""
+                done = True
+                if pkg.epoch == '0':
+                    ver = '%s-%s.%s' % (pkg.version, pkg.release, pkg.arch)
+                else:
+                    ver = '%s:%s-%s.%s' % (pkg.epoch,
+                                           pkg.version, pkg.release, pkg.arch)
+                name = "%s%s%s" % (self.term.MODE['bold'], pkg.name,
+                                   self.term.MODE['normal'])
+                print _("  Installed: %s-%s at %s") %(name, ver,
+                                                   sm_ui_time(pkg.installtime))
+                print _("  Built    : %s at %s") % (pkg.packager,
+                                                    sm_ui_time(pkg.buildtime))
+                print _("  Committed: %s at %s") % (pkg.committer,
+                                                    sm_ui_time(pkg.committime))
             sys.exit(0)
 
         if opts.sleeptime is not None:



More information about the Yum-cvs-commits mailing list