[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