Package: lintian Version: 2.5.3 Severity: wishlist Dear Maintainer, I propose a patch to generalize the distribution check, permitting to easily configure the list of allowed distributions. The idea here is to add a file under 'data/changelog-file/' with a name ending in '-dists'. This file contains regular expressions to test against the distribution name. git pull git://git.baby-gnu.net/lintian dad/generalize-distribution-check I attach the patches for review. Regards.
From 8cfbd1853607d9e171d9dde2fca4837f3f24c2ed Mon Sep 17 00:00:00 2001
From: Daniel Dehennin <daniel.dehennin@baby-gnu.org>
Date: Mon, 14 Nov 2011 23:57:36 +0100
Subject: [PATCH] Generaliste distribution name check.
This patch allow to create a new data/changelog-file/<something>-dists
file to add new valid distribution regexps.
* checks/changes-file: Build an array of distribution regexp and test
distribution fiedl against each one.
* data/changelog-file/debian-dists: Define full regexp instead of only
base distribution.
* data/changelog-file/ubuntu-dists: Ditoo.
---
checks/changes-file | 41 ++++++++++++++++++-------------------
data/changelog-file/debian-dists | 18 ++++++++--------
data/changelog-file/ubuntu-dists | 16 +++++++-------
3 files changed, 37 insertions(+), 38 deletions(-)
diff --git a/checks/changes-file b/checks/changes-file
index 5192130..0091860 100644
--- a/checks/changes-file
+++ b/checks/changes-file
@@ -26,12 +26,17 @@ use Util;
use Lintian::Tags qw(tag);
use Lintian::Check qw(check_maintainer);
-my $DEBIAN_DISTS = Lintian::Data->new ('changelog-file/debian-dists');
-my $UBUNTU_REGEX;
+use Path::Class;
+
+my @DISTRIBUTION_REGEX;
{
- my $ubuntu_dists = Lintian::Data->new ('changelog-file/ubuntu-dists');
- my $reg_str = join('|', $ubuntu_dists->all);
- $UBUNTU_REGEX = qr/$reg_str/o;
+ my $changelog_dir = dir($ENV{LINTIAN_ROOT}, 'data', 'changelog-file');
+ while (my $filename = $changelog_dir->next()) {
+ next if $filename->is_dir() or $filename !~ m/.*-dists$/;
+ my $distrib_dists = Lintian::Data->new(file('changelog-file', $filename->basename));
+ my $reg_str = join('|', $distrib_dists->all);
+ push @DISTRIBUTION_REGEX, qr/$reg_str/;
+ }
}
sub run {
@@ -57,22 +62,16 @@ if (!$info->field('description') && $info->field('architecture') ne 'source') {
if (defined $info->field('distribution')) {
my @distributions = split /\s+/o, $info->field('distribution');
for my $distribution (@distributions) {
- if ($distribution eq 'UNRELEASED') {
- # ignore
- } elsif ($info->field('version') =~ m/ubuntu|$UBUNTU_REGEX/o
- or $distribution =~ m/$UBUNTU_REGEX/o) {
- if ($distribution !~ m/^(?:$UBUNTU_REGEX)(?:-(?:proposed|updates|backports|security))?$/o ) {
- tag 'bad-ubuntu-distribution-in-changes-file',
- $distribution;
- }
- } elsif (! ($DEBIAN_DISTS->known ($distribution)
- or ($distribution =~ /^\w+-backports$/)
- or ($distribution =~ /^\w+-proposed-updates$/)
- or ($distribution =~ /^\w+-security$/)
- or ($distribution =~ /^\w+-volatile$/))
- ) {
- # bad distribution entry
- tag 'bad-distribution-in-changes-file', $distribution;
+ next if ($distribution eq 'UNRELEASED');
+ my $bad = 1;
+ foreach my $dist_regex (@DISTRIBUTION_REGEX) {
+ if ($distribution =~ m/$dist_regex/) {
+ $bad=0;
+ last;
+ }
+ }
+ if ($bad) {
+ tag 'bad-ubuntu-distribution-in-changes-file', $distribution;
}
}
diff --git a/data/changelog-file/debian-dists b/data/changelog-file/debian-dists
index 589df1c..499b962 100644
--- a/data/changelog-file/debian-dists
+++ b/data/changelog-file/debian-dists
@@ -2,15 +2,15 @@
# aliases
# Codenames
-lenny
-squeeze
-wheezy
-sid
+lenny(?:(?:-)(?:backports|proposed-updates|security|volatile))?
+squeeze(?:(?:-)(?:backports|proposed-updates|security|volatile))?
+wheezy(?:(?:-)(?:backports|proposed-updates|security|volatile))?
+sid(?:(?:-)(?:backports|proposed-updates|security|volatile))?
# Aliases
-oldstable
-stable
-testing
-unstable
-experimental
+oldstable(?:(?:-)(?:backports|proposed-updates|security|volatile))?
+stable(?:(?:-)(?:backports|proposed-updates|security|volatile))?
+testing(?:(?:-)(?:backports|proposed-updates|security|volatile))?
+unstable(?:(?:-)(?:backports|proposed-updates|security|volatile))?
+experimental(?:(?:-)(?:backports|proposed-updates|security|volatile))?
diff --git a/data/changelog-file/ubuntu-dists b/data/changelog-file/ubuntu-dists
index 0948ec9..e1517c9 100644
--- a/data/changelog-file/ubuntu-dists
+++ b/data/changelog-file/ubuntu-dists
@@ -1,11 +1,11 @@
# A list of Ubuntu distributions, used to suppress some checks for Ubuntu
# packages and to validate Ubuntu distributions.
-dapper
-hardy
-karmic
-lucid
-maverick
-natty
-oneiric
-precise
+dapper(?:-(?:proposed|updates|backports|security))?
+hardy(?:-(?:proposed|updates|backports|security))?
+karmic(?:-(?:proposed|updates|backports|security))?
+lucid(?:-(?:proposed|updates|backports|security))?
+maverick(?:-(?:proposed|updates|backports|security))?
+natty(?:-(?:proposed|updates|backports|security))?
+oneiric(?:-(?:proposed|updates|backports|security))?
+precise(?:-(?:proposed|updates|backports|security))?
--
1.7.7.2
-- System Information: Debian Release: wheezy/sid APT prefers unstable APT policy: (500, 'unstable'), (90, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 3.0.0-rc5+hati.1 (SMP w/2 CPU cores; PREEMPT) Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages lintian depends on: ii binutils 2.21.90.20111025-1 ii bzip2 1.0.5-7 ii diffstat 1.54-1 ii file 5.09-2 ii gettext 0.18.1.1-5 ii intltool-debian 0.35.0+20060710.1 ii libapt-pkg-perl 0.1.25 ii libclass-accessor-perl 0.34-1 ii libdpkg-perl 1.16.1.1 ii libemail-valid-perl 0.185-1 ii libipc-run-perl 0.90-1 ii libparse-debianchangelog-perl 1.2.0-1 ii libtimedate-perl 1.2000-1 ii liburi-perl 1.59-1 ii locales 2.13-21 ii man-db 2.6.0.2-3 ii patchutils 0.3.2-1 ii perl [libdigest-sha-perl] 5.12.4-6 ii unzip 6.0-5 lintian recommends no packages. Versions of packages lintian suggests: ii binutils-multiarch <none> ii dpkg-dev 1.16.1.1 ii libhtml-parser-perl 3.69-1 ii libtext-template-perl <none> ii man-db 2.6.0.2-3 ii xz-utils 5.1.1alpha+20110809-3 -- no debconf information -- Daniel Dehennin Récupérer ma clef GPG: gpg --keyserver pgp.mit.edu --recv-keys 0x6A2540D1
Attachment:
pgpGJ37MsqjEN.pgp
Description: PGP signature