[yum-cvs] yum/yum sqlitesack.py,1.21,1.22

Jeremy Katz katzj at login.linux.duke.edu
Fri Sep 16 22:02:53 UTC 2005


Update of /home/groups/yum/cvs/yum/yum
In directory login:/tmp/cvs-serv24585/yum

Modified Files:
	sqlitesack.py 
Log Message:
implement returnNewestByName for the sqlite backend.  speeds up group selection
in anaconda by about 2 minutes :-)


Index: sqlitesack.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/sqlitesack.py,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- sqlitesack.py	24 Mar 2005 07:29:39 -0000	1.21
+++ sqlitesack.py	16 Sep 2005 22:02:51 -0000	1.22
@@ -411,15 +411,28 @@
         # if we've got zilch then raise
         if not allpkg:
             raise mdErrors.PackageSackError, 'No Package Matching %s.%s' % naTup
-        # Now find the newest one        
-        newest = allpkg.pop()
-        for pkg in allpkg:
-            (e2, v2, r2) = newest.returnEVR()
-            (e,v,r) = pkg.returnEVR()
-            rc = mdUtils.compareEVR((e,v,r), (e2, v2, r2))
-            if (rc > 0):
-                newest = pkg
-        return newest
+        return mdUtils.newestInList(allpkg)
+
+    def returnNewestByName(self, name=None):
+        # If name is set do it from the database otherwise use our parent's
+        # returnNewestByName
+        if (not name):
+            return repos.YumPackageSack.returnNewestByName(self, name)
+
+        # First find all packages that fulfill name
+        allpkg = []
+        for (rep,cache) in self.primarydb.items():
+            cur = cache.cursor()
+            cur.execute("select pkgId,name,epoch,version,release,arch from packages where name=%s", name)
+            for x in cur.fetchall():
+                if (self.excludes[rep].has_key(x.pkgId)):
+                    continue                    
+                allpkg.append(self.pc(self.db2class(x,True),rep))
+        
+        # if we've got zilch then raise
+        if not allpkg:
+            raise mdErrors.PackageSackError, 'No Package Matching %s' % name
+        return mdUtils.newestInList(allpkg)
 
     def returnPackages(self, repoid=None):
         """Returns a list of packages, only containing nevra information """




More information about the Yum-cvs-commits mailing list