]> git.ipfire.org Git - people/stevee/pakfire.git/commitdiff
Speed up searching for files that need to be removed.
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 2 Nov 2011 10:11:35 +0000 (11:11 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 2 Nov 2011 10:11:35 +0000 (11:11 +0100)
po/pakfire.pot
python/pakfire/packages/installed.py

index 0f87a8e77681b27bf5fe11c61302179debc39427..3bd08653a511bdd9511ff8917b0f5890708a338b 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-25 20:58+0200\n"
+"POT-Creation-Date: 2011-10-25 21:03+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 2072524950f89e046a90d54eaac58639211461d7..ba7cbab7663992662d6f948e7b2f740b8ad1cf70 100644 (file)
@@ -280,19 +280,23 @@ class DatabasePackage(Package):
 
                # Fetch the whole filelist of the system from the database and create
                # a diff. Exclude files from this package - of course.
-               c.execute("SELECT name FROM files WHERE pkg != ?", (self.id,))
+               c.execute("SELECT DISTINCT name FROM files WHERE pkg != ?", (self.id,))
 
+               installed_files = set()
                for row in c:
-                       # Check if file in filelist.
-                       for f in files:
-                               if not row["name"] == f.name:
-                                       continue
-
-                               files.remove(f)
-                               break
+                       installed_files.add(row["name"])
                c.close()
 
-               self._remove_files(files, message, prefix)
+               # List with files to be removed.
+               remove_files = []
+
+               for f in files:
+                       if f.name in installed_files:
+                               continue
+
+                       remove_files.append(f)
+
+               self._remove_files(remove_files, message, prefix)
 
 
 # XXX maybe we can remove this later?