[yum-cvs] yum/yum sqlitesack.py,1.86,1.87

James Bowes jbowes at linux.duke.edu
Fri Mar 9 17:06:00 UTC 2007


Update of /home/groups/yum/cvs/yum/yum
In directory login1.linux.duke.edu:/tmp/cvs-serv17397/yum

Modified Files:
	sqlitesack.py 
Log Message:
Use a user-defined function for searchfiles

Index: sqlitesack.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/sqlitesack.py,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -r1.86 -r1.87
--- sqlitesack.py	5 Mar 2007 14:04:24 -0000	1.86
+++ sqlitesack.py	9 Mar 2007 17:05:57 -0000	1.87
@@ -303,33 +303,30 @@
                 po = self.pc(rep, pkg)
                 pkgs.append(po)
 
+            def filelist_globber(dirname, filenames):
+                files = filenames.split('/')
+                fns = map(lambda f: '%s/%s' % (dirname, f), files)
+                if glob:
+                    matches = fnmatch.filter(fns, name)
+                else:
+                    matches = filter(lambda x: name==x, fns)
+                return len(matches)
+
+            cache.create_function("filelist_globber", 2, filelist_globber)
             # for all the ones where filenames is multiple files, 
             # make the files up whole and use python's globbing method
-            executeSQL(cur, "select packages.pkgID as pkgID, \
-                             filelist.dirname as dirname, \
-                             filelist.filenames as filenames \
+            executeSQL(cur, "select packages.pkgID as pkgID \
                              from filelist,packages where \
                              packages.pkgKey = filelist.pkgKey \
-                             and length(filelist.filetypes) > 1")
+                             and length(filelist.filetypes) > 1 \
+                             and filelist_globber(filelist.dirname,filelist.filenames)")
 
             for ob in cur:
-                pkgId = ob['pkgId']
-                d = ob['dirname']
-                fs = ob['filenames']
-
-                files = fs.split('/')
-                fns = map(lambda f: '%s/%s' % (d, f), files)
-                if glob:
-                    matches = fnmatch.filter(fns, name)
-                else:
-                    matches = filter(lambda x: name==x, fns)
-
-                if len(matches) > 0:
-                    if self._excluded(rep, pkgId):
-                        continue
-                    pkg = self.getPackageDetails(pkgId)
-                    po = self.pc(rep, pkg)
-                    pkgs.append(po)
+                if self._excluded(rep, ob['pkgId']):
+                    continue
+                pkg = self.getPackageDetails(ob['pkgId'])
+                po = self.pc(rep, pkg)
+                pkgs.append(po)
 
         pkgs = misc.unique(pkgs)
         return pkgs




More information about the Yum-cvs-commits mailing list