[Secure-testing-commits] r1996 - lib/python
Florian Weimer
fw at costa.debian.org
Thu Sep 15 10:41:24 UTC 2005
Author: fw
Date: 2005-09-15 10:41:24 +0000 (Thu, 15 Sep 2005)
New Revision: 1996
Modified:
lib/python/bugs.py
lib/python/security_db.py
Log:
Record whether a package note refers to a source or binary package.
lib/python/security_db.py (DB):
Upgrade schema. Add package_kind column to package_notes.
(DB.calculateVulnerabilities):
Update and use package_kind.
lib/python/bugs.py (PackageNote, PackageNoteFromDB, BugFromDB):
Add package_kind attribute.
Modified: lib/python/bugs.py
===================================================================
--- lib/python/bugs.py 2005-09-15 10:19:03 UTC (rev 1995)
+++ lib/python/bugs.py 2005-09-15 10:41:24 UTC (rev 1996)
@@ -66,6 +66,7 @@
raise ValueError, "invalid urgency"
self.urgency = urgency
self.bugs = []
+ self.package_kind = "unknown"
def affects(self, version, release=None):
"""Returns true if this package note affects the given version.
@@ -170,13 +171,15 @@
class PackageNoteFromDB(PackageNote):
def __init__(self, cursor, nid):
- for bug_name, package, fixed_version, release, urgency \
+ for bug_name, package, fixed_version, release, urgency, package_kind\
in cursor.execute\
- ("""SELECT bug_name, package, fixed_version, release, urgency
+ ("""SELECT bug_name, package, fixed_version, release, urgency,
+ package_kind
FROM package_notes WHERE id = ?""", (nid,)):
PackageNote.__init__(package, fixed_version, release, urgency)
self.id = nid
self.bug_name = bug_name
+ self.package_kind = package_kind
self.loadBugs(cursor)
return
raise ValueError, "invalid package note ID %d" % id
@@ -337,13 +340,15 @@
self.comments.append((t, c))
# temporary list required because loadBugs needs the cursor
- for nid, package, fixed_version, release, urgency \
+ for nid, package, fixed_version, release, urgency, package_kind \
in list(cursor.execute
- ("""SELECT id, package, fixed_version, release, urgency
+ ("""SELECT id, package, fixed_version, release, urgency,
+ package_kind
FROM package_notes WHERE bug_name = ?""", (name,))):
n = PackageNote(package, fixed_version, release, urgency)
n.id = nid
n.bug_name = name
+ n.package_kind = package_kind
n.loadBugs(cursor)
self.notes.append(n)
return
Modified: lib/python/security_db.py
===================================================================
--- lib/python/security_db.py 2005-09-15 10:19:03 UTC (rev 1995)
+++ lib/python/security_db.py 2005-09-15 10:41:24 UTC (rev 1996)
@@ -96,11 +96,13 @@
'sarge' : 'stable',
'woody': 'oldstable'}
+ self.schema_version = 2
+
c = self.cursor()
for (v,) in c.execute("PRAGMA user_version"):
if v == 0:
self.initSchema()
- if v <> 1:
+ elif v <> self.schema_version:
raise SchemaMismatch, `v`
return
assert False
@@ -185,6 +187,7 @@
CHECK (fixed_version IS NULL OR fixed_version <> ''),
fixed_version_id INTEGER NOT NULL DEFAULT 0,
release TEXT NOT NULL,
+ package_kind TEXT NOT NULL DEFAULT 'unknown',
urgency TEXT NOT NULL)""")
cursor.execute(
"CREATE INDEX package_notes_bug ON package_notes(bug_name)")
@@ -246,7 +249,7 @@
# the application is started after the underlying error has
# been fixed.
- cursor.execute("PRAGMA user_version = 1")
+ cursor.execute("PRAGMA user_version = %d" % self.schema_version)
def filePrint(self, filename):
"""Returns a fingerprint string for filename."""
@@ -714,7 +717,7 @@
if self.verbose:
print "calculateVulnerabilities:"
- print " check for version consistency in package notes"
+ print " checking version consistency in package notes"
for (bug_name, pkg_name, rel, unstable_ver, rel_ver) \
in list(cursor.execute(
"""SELECT a.bug_name, a.package, a.release,
@@ -785,6 +788,11 @@
OR p.release = (SELECT nickname FROM nicknames
WHERE realname = n.release))""")
+ cursor.execute(
+ """UPDATE package_notes SET package_kind = 'source'
+ WHERE EXISTS (SELECT * FROM source_package_status AS s
+ WHERE s.note = package_notes.id)""")
+
# Same story for binary packages. We prefer source packages,
# so we skip all notes which have already source packages
# attached.
@@ -800,8 +808,7 @@
AND (NOT EXISTS (SELECT * FROM tmp_bug_releases AS t
WHERE t.bug_name = n.bug_name
AND t.release = p.release))
- AND (NOT EXISTS (SELECT * FROM source_package_status AS s
- WHERE s.package = p.rowid))""")
+ AND n.package_kind = 'unknown'""")
if self.verbose:
print " binary packages (qualified)"
@@ -815,8 +822,7 @@
OR p.release = n.release || '-security'
OR p.release = (SELECT nickname FROM nicknames
WHERE realname = n.release))
- AND (NOT EXISTS (SELECT * FROM source_package_status AS s
- WHERE s.package = p.rowid))""")
+ AND n.package_kind = 'unknown'""")
return
More information about the Secure-testing-commits
mailing list