Author: fw Date: 2005-09-13 14:43:16 +0000 (Tue, 13 Sep 2005) New Revision: 1952 Modified: lib/python/bugs.py Log: Add support for release annotations of the form "[woody] - PACKAGE VERSION". (Currently not used in any input file.) lib/python/bugs.py (PackageNote.writeDB): Convert release objects to strings. (PackageNoteParsed): Pass in release information. Do not extract it from the package-specific notes. (FileBase.re_package_required, FileBase.re_package): Detect release annotations. (FileBase.__iter__): Extract them. (DSAFile): Moved "!" hack to base class. Modified: lib/python/bugs.py ==================================================================--- lib/python/bugs.py 2005-09-13 14:08:22 UTC (rev 1951) +++ lib/python/bugs.py 2005-09-13 14:43:16 UTC (rev 1952) @@ -112,10 +112,14 @@ v = str(self.fixed_version) else: v = None + if self.release: + r = str(self.release) + else: + r = '''' cursor.execute("""INSERT INTO package_notes (bug_name, package, fixed_version, release, urgency) VALUES (?, ?, ?, ?, ?)""", - (bug_name, self.package, v, self.release or '''', + (bug_name, self.package, v, r, str(self.urgency))) for (rowid,) in cursor.execute(''SELECT last_insert_rowid()''): self.id = rowid @@ -151,8 +155,7 @@ re_bug = re.compile(r''^bug #(\d+)$'') re_notes_split = re.compile(r''\s*;\s+'') - def __init__(self, package, version, notes): - rel = None + def __init__(self, package, version, notes, release=None): bugs = [] urgency = "unknown" if notes is not None: @@ -162,11 +165,6 @@ urgency = u continue - r = debian_support.internRelease(n) - if r: - rel = r - continue - match = self.re_bug.match(n) if match: (bug,) = match.groups() @@ -178,7 +176,7 @@ continue raise SyntaxError , ''unknown package note %s\n'' % `n` - PackageNote.__init__(self, package, version, rel, urgency) + PackageNote.__init__(self, package, version, release, urgency) self.bugs = bugs class BugBase: @@ -345,8 +343,9 @@ + r''|VU#\d{6}'' + r''|DSA-\d+(?:-\d+)?|DTSA-\d+-\d+)$'') - re_package_required = re.compile(r''^-'') - re_package = re.compile(r''^- ([A-Za-z0-9:.+-]+)'' + # temporary hack, until we know what "!" actually means. + re_package_required = re.compile(r''^(?:\[.*\]\s*)?[-!]'') + re_package = re.compile(r''^(?:\[([a-z]+)\] )?[-!] ([A-Za-z0-9:.+-]+)'' + r''(?:\s+([A-Za-z0-9:.+-]+))?\s*(?:\((.*)\))?$'') re_not_for_us_required = re.compile(r''^NOTE:\s+not?e?-fo?r-u'') re_not_for_us = re.compile(r''^NOTE:\s+not-for-us(?:\s+\((.*)\))?\s*$'') @@ -465,7 +464,7 @@ if self.re_package_required.match(r): match = self.re_package.match(r) if match: - (p, v, d) = match.groups() + (release, p, v, d) = match.groups() if v is None and d is None and \ self.no_version_needs_note: raise SyntaxError, \ @@ -473,11 +472,12 @@ if v == ''not-affected'': # ''0'' is the minimum version number possible. - pkg_notes.append(PackageNoteParsed(p, ''0'', None)) + pkg_notes.append(PackageNoteParsed + (p, ''0'', None, release=release)) # ''d'' is a free-form field in this case. comments.append((''NOTE'', d)) else: - x = PackageNoteParsed(p, v, d) + x = PackageNoteParsed(p, v, d, release=release) pkg_notes.append(x) if first_bug == 0 and len(x.bugs) > 0: first_bug = x.bugs[0] @@ -623,10 +623,6 @@ ''Nov'': 11, ''Dec'': 12} - # temporary hack, until we know what "!" actually means. - re_package_required = re.compile(r''^[-!]'') - re_package = re.compile(r''^[-!] ([A-Za-z0-9:.+-]+)'' - + r''(?:\s+([A-Za-z0-9:.+-]+))?\s*(?:\((.*)\))?$'') def matchHeader(self, line): match = self.re_dsa.match(line) if not match: