The following commit has been merged in the master branch:
commit ca85ece1c8ab2fb274204e6e53383fb30b6e426a
Author: Russ Allbery <r...@debian.org>
Date:   Sat Jan 24 01:42:04 2009 -0800

    Use Lintian::Collect to read the changelog in checks/nmu
    
    * checks/nmu:
      + [RA] Use Lintian::Collect to read the changelog.
    
    This way, we take advantage of the cached parse already required by other
    check scripts.

diff --git a/checks/nmu b/checks/nmu
index 326ac93..6e8b9df 100644
--- a/checks/nmu
+++ b/checks/nmu
@@ -30,11 +30,10 @@ sub run {
 my $pkg = shift;
 my $type = shift;
 my $info = shift;
-my $distribution = undef;
+
 my $changelog_mentions_nmu = 0;
 my $changelog_mentions_local = 0;
 my $changelog_mentions_qa = 0;
-my $uploader = undef;
 
 # This isn't really an NMU check, but right now no other check looks at
 # debian/changelog in source packages.  Catch a debian/changelog file that's a
@@ -45,24 +44,25 @@ if (-l "debfiles/changelog") {
     return 0 unless -f "debfiles/changelog";
 }
 
-open (CHANGELOG, '<', "debfiles/changelog")
-    or fail("Failed opening changelog");
-$distribution = $1 if (<CHANGELOG> =~ /^.* \(.*\) (.*);.*$/);
-my $firstline = 1;
-while (<CHANGELOG>) {
-       if ($firstline) {
-               $changelog_mentions_nmu = 1
-                       if (/\bnmu\b/i or /non-maintainer upload/i) and not 
/(ackno|\back\b|confir|incorporat)/i;
-               $changelog_mentions_local = 1 if /\blocal\s+package\b/i;
-               $changelog_mentions_qa = 1 if /orphan/i or /qa (?:group 
)?upload/i;
-               $firstline = 0 if /^\s+\S/;
-       }
-       if (/^ -- ([^>]+>)/) {
-               $uploader = canonicalize($1);
-               last;
+# Get some data from the changelog file.
+my ($entry) = $info->changelog->data;
+my $distribution = $entry->Distribution;
+my $uploader = canonicalize($entry->Maintainer);
+my $changes = $entry->Changes;
+$changes =~ s/^(\s*\n)+//;
+my $firstline = (split('\n', $changes))[0];
+
+# Check the first line for QA and NMU mentions.
+if ($firstline) {
+       local $_ = $firstline;
+       if (/\bnmu\b/i or /non-maintainer upload/i) {
+               unless (/(ackno|\back\b|confir|incorporat)/i) {
+                       $changelog_mentions_nmu = 1;
+               }
        }
+       $changelog_mentions_local = 1 if /\blocal\s+package\b/i;
+       $changelog_mentions_qa = 1 if /orphan/i or /qa (?:group )?upload/i;
 }
-close CHANGELOG;
 
 my $version = $info->field("version");
 my $maintainer = canonicalize($info->field("maintainer"));
diff --git a/debian/changelog b/debian/changelog
index dcf9373..88e8eea 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -15,6 +15,8 @@ lintian (2.1.7) UNRELEASED; urgency=low
   * checks/files:
     + [RA] Add swfobject.js to embedded-javascript-library.  Thanks, Paul
       Wise.  (Closes: #512363)
+  * checks/nmu:
+    + [RA] Use Lintian::Collect to read the changelog.
   * checks/standards-version{,.desc}:
     + [ADB] Add source-control-file to the list of information needed by
       the script.  Thanks, Raphael Geissert.  (Closes: #512563)

-- 
Debian package checker


-- 
To UNSUBSCRIBE, email to debian-lint-maint-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to