Bug#732225: please add check for backports changes file
package: lintian
tags: patch
Dear lintian maintainers,
Please consider the attached patch to add a check for the changes file of
uploads to backports. The patch introduces 2 new tags:
backports-changes-missing, for uploads that don't include multiple changelog
entries in the changes file (this is a very common cause for rejects).
backports-upload-has-incorrect-version-number, if the version number doesn't
end in ~bpoXX+N, where XX corresponds with the version number of the base
distribution.
Cheers,
Ivo
>From b1a71aec2888f53d80e20f8fa05c903113a707f1 Mon Sep 17 00:00:00 2001
From: Ivo De Decker <ivo.dedecker@ugent.be>
Date: Sun, 15 Dec 2013 16:17:46 +0100
Subject: [PATCH] add checks for backports version number and changes
---
checks/changes-file.desc | 17 +++++++++++++++++
checks/changes-file.pm | 46 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 63 insertions(+)
diff --git a/checks/changes-file.desc b/checks/changes-file.desc
index 402c338..5db7939 100644
--- a/checks/changes-file.desc
+++ b/checks/changes-file.desc
@@ -122,3 +122,20 @@ Certainty: certain
Info: The Changed-By address includes localhost(.localdomain), which is
an invalid e-mail address.
Ref: policy 5.6.2
+
+Tag: backports-changes-missing
+Severity: serious
+# if there are no false positives, this could possibly be increased
+Certainty: possible
+Info: The changes file only has changelog entries from a single version. For
+ backports, all changes since (old)stable or the previous backport should be
+ listed (usually by adding the '-v' option to the build).
+Ref: http://backports.debian.org/Contribute/
+
+Tag: backports-upload-has-incorrect-version-number
+Severity: serious
+Certainty: certain
+Info: The version number doesn't comply with the standard backport version
+ rules. It should end in ~bpoXX+N, where XX refers to the version number of
+ the base distribution.
+Ref: http://backports.debian.org/Contribute/
diff --git a/checks/changes-file.pm b/checks/changes-file.pm
index 137439c..02b8288 100644
--- a/checks/changes-file.pm
+++ b/checks/changes-file.pm
@@ -64,6 +64,52 @@ sub run {
|updates
|security
|volatile)$//xsmo;
+
+ if ($distribution =~ /backports/) {
+ my $bpo1 = 1;
+ if ($info->field('version') =~ m/~bpo(\d+)\+(\d+)$/) {
+ my $distnumber = $1;
+ my $bpoversion = $2;
+ if (
+ ($dist eq "squeeze" && $distnumber ne "60") ||
+ ($dist eq "wheezy" && $distnumber ne "70") ||
+ # TODO version number for jessie?
+ ($dist eq "jessie" && $distnumber !~ /^8/)
+ ) {
+ tag 'backports-upload-has-incorrect-version-number',
+ $info->field('version'),
+ $distribution;
+ }
+ $bpo1 = 0 if ($bpoversion > 1);
+ } else {
+ print $info->field('version')."\n";
+ tag 'backports-upload-has-incorrect-version-number',
+ $info->field('version');
+ }
+ # for a ~bpoXX+2 or greater version, there
+ # probably will be only a single changelog entry
+ if ($bpo1) {
+ my $changes_versions = 0;
+ foreach my $change_line (split("\n", $info->field('changes'))) {
+ # from Parse/DebianChangelog.pm
+ # the changelog entries in the changes file are in a
+ # different format than in the changelog, so the standard
+ # parsers don't work. We just need to know if there is
+ # info for more than 1 entry, so we just copy part of the
+ # parse code here
+ if ($change_line =~ m/^\s*(?<Source>\w[-+0-9a-z.]*) \((?<Version>[^\(\) \t]+)\)(?<Distribution>(?:\s+[-+0-9a-z.]+)+)\;\s*(?<kv>.*)$/i) {
+ $changes_versions++;
+ }
+ }
+ # only complain if there is a single entry,
+ # if we didn't find any changelog entry, there is
+ # probably something wrong with the parsing, so we
+ # don't emit a tag
+ if ($changes_versions == 1) {
+ tag 'backports-changes-missing';
+ }
+ }
+ }
}
if (!$KNOWN_DISTS->known($dist)) {
# bad distribution entry
--
1.8.5.1
Reply to: