Author: fw Date: 2005-09-17 13:19:32 +0000 (Sat, 17 Sep 2005) New Revision: 2031 Modified: lib/python/security_db.py Log: lib/python/security_db.py (DB._readBinaryPackages): Skip reading entirely if there are no changes. Modified: lib/python/security_db.py ==================================================================--- lib/python/security_db.py 2005-09-17 13:02:49 UTC (rev 2030) +++ lib/python/security_db.py 2005-09-17 13:19:32 UTC (rev 2031) @@ -456,9 +456,33 @@ if self.verbose: print " reading binary packages" + # First check for any changes. + + filenames = glob.glob(directory + ''/*_Packages'') + filenames.sort() + changed = False + for filename in filenames: + changed = True + for (old_print,) in cursor.execute( + "SELECT inodeprint FROM inodeprints WHERE file = ?", + (filename,)): + if self.filePrint(filename) == old_print: + changed = False + if changed: + break + if not changed: + if self.verbose: + print " finished (no changes)" + return + + # Real import. We have to re-read all Packages files even if + # only some of them have changed because the database only + # stores aggregated data, and there is no efficient way to + # handle updates of the records related to a single file. + packages = {} unchanged = True - for filename in glob.glob(directory + ''/*_Packages''): + for filename in filenames: match = re_packages.match(filename) if match is None: raise ValueError, "invalid file name: " + `filename` @@ -505,7 +529,7 @@ yield key + (archs,) if self.verbose: - print " storing binary package data" + print " storing binary package data" cursor.executemany( """INSERT INTO binary_packages