[Secure-testing-commits] r2088 - bin data/packages lib/python
Florian Weimer
fw at costa.debian.org
Thu Sep 22 12:00:32 UTC 2005
Author: fw
Date: 2005-09-22 12:00:31 +0000 (Thu, 22 Sep 2005)
New Revision: 2088
Added:
data/packages/removed-packages
Modified:
bin/update-db
lib/python/security_db.py
Log:
lib/python/security_db.py (DB.initSchema):
Add removed_packages table.
(DB.readRemovedPackages, DB.getUnknownPackages):
New.
bin/update-db:
Read removed packages.
data/packages/removed-packages:
New file.
Modified: bin/update-db
===================================================================
--- bin/update-db 2005-09-22 11:59:56 UTC (rev 2087)
+++ bin/update-db 2005-09-22 12:00:31 UTC (rev 2088)
@@ -57,6 +57,10 @@
db.commit(cursor)
cursor = db.writeTxn()
+# Removed packages
+
+db.readRemovedPackages(cursor, 'data/packages/removed-packages')
+
# Calculate vulnerability information.
warnings = db.calculateVulnerabilities(cursor)
Added: data/packages/removed-packages
===================================================================
--- data/packages/removed-packages 2005-09-22 11:59:56 UTC (rev 2087)
+++ data/packages/removed-packages 2005-09-22 12:00:31 UTC (rev 2088)
@@ -0,0 +1,4 @@
+# This file lists packages which are no longer present in the Debian
+# archive, one per line.
+
+openwebmail
Modified: lib/python/security_db.py
===================================================================
--- lib/python/security_db.py 2005-09-22 11:59:56 UTC (rev 2087)
+++ lib/python/security_db.py 2005-09-22 12:00:31 UTC (rev 2088)
@@ -93,7 +93,7 @@
self.db = apsw.Connection(name)
self.verbose = verbose
- self.schema_version = 11
+ self.schema_version = 12
self._initFunctions()
c = self.cursor()
@@ -262,6 +262,9 @@
ON binary_package_status(package)""")
cursor.execute(
+ "CREATE TABLE removed_packages (name TEXT NOT NULL PRIMARY KEY)")
+
+ cursor.execute(
"""CREATE VIEW testing_status AS
SELECT DISTINCT sp.name AS package, st.bug_name AS bug,
sp.archive AS section, st.urgency AS urgency,
@@ -1362,6 +1365,54 @@
ORDER BY bug""", (bug, bug, bug, bug)):
yield bug_name
+ def readRemovedPackages(self, cursor, filename):
+ """Reads a file of removed packages and stores it in the database."""
+
+ f = file(filename)
+
+ re_package = re.compile(r'^\s*([a-z0-9]\S+)\s*$')
+
+ # Not very good error reporting, but changes to that file are
+ # rare.
+
+ def gen():
+ for line in f:
+ if line == '':
+ break
+ if line[0] == '#' or line == '\n':
+ continue
+ match = re_package.match(line)
+ if match:
+ yield match.groups()
+ else:
+ raise ValueError, "not a package: " + `line`
+
+ cursor.execute("DELETE FROM removed_packages")
+ cursor.executemany("INSERT INTO removed_packages (name) VALUES (?)",
+ gen())
+
+
+ def getUnknownPackages(self, cursor):
+ """Returns a generator for a list of unknown packages.
+ Each entry has the form (PACKAGE, BUG-LIST)."""
+
+ old_package = ''
+ bugs = []
+ for (package, bug_name) in cursor.execute(
+ """SELECT DISTINCT package, bug_name
+ FROM package_notes WHERE package_kind = 'unknown'
+ AND NOT EXISTS (SELECT * FROM removed_packages
+ WHERE name = package)
+ ORDER BY package, bug_name"""):
+ if package <> old_package:
+ if old_package:
+ yield (old_package, bugs)
+ old_package = package
+ bugs = []
+ bugs.append(bug_name)
+ if old_package:
+ yield (old_package, bugs)
+
def check(self, cursor=None):
"""Runs a simple consistency check and prints the results."""
More information about the Secure-testing-commits
mailing list