[lintian] 02/04: c/debhelper: Add support for named compat levels
This is an automated email from the git hooks/post-receive script.
nthykier pushed a commit to branch master
in repository lintian.
commit 8ca2b63897c609d389c81db645593e2ff3f06836
Author: Niels Thykier <niels@thykier.net>
Date: Sun Sep 11 10:15:04 2016 +0000
c/debhelper: Add support for named compat levels
Signed-off-by: Niels Thykier <niels@thykier.net>
---
checks/debhelper.pm | 40 +++++++++++++++++-----
data/debhelper/named-compat-levels | 5 +++
debian/changelog | 3 ++
.../debhelper-compat-named/debian/debian/compat | 1 +
.../debian/debian/control.in | 15 ++++++++
t/tests/debhelper-compat-named/desc | 9 +++++
t/tests/debhelper-compat-named/tags | 1 +
7 files changed, 65 insertions(+), 9 deletions(-)
diff --git a/checks/debhelper.pm b/checks/debhelper.pm
index 6e4bc26..4caa507 100644
--- a/checks/debhelper.pm
+++ b/checks/debhelper.pm
@@ -46,17 +46,18 @@ my $dh_addons_manual
my $compat_level = Lintian::Data->new('debhelper/compat-level',qr/=/);
my $MISC_DEPENDS = Lintian::Relation->new('${misc:Depends}');
+my $NAMED_COMPAT_LEVELS = Lintian::Data->new('debhelper/named-compat-levels',
+ qr/\s*=>\s*/, \&_named_compat_levels);
sub run {
my (undef, undef, $info) = @_;
my $droot = $info->index_resolved_path('debian/');
- my $drules;
+ my ($drules, $dh_bd_version, $level, $using_named_compat);
my $seencommand = '';
my $needbuilddepends = '';
my $needdhexecbuilddepends = '';
my $needtomodifyscripts = '';
- my $level;
my $compat = 0;
my $seendhcleank = '';
my %missingbdeps;
@@ -261,18 +262,25 @@ sub run {
($compat) = split(/\n/, $compat_file);
strip($compat);
if ($compat ne '') {
- if ($compat !~ m/^\d+$/) {
+ my $compat_value = $compat;
+ if (my $named_compat = $NAMED_COMPAT_LEVELS->value($compat)) {
+ $dh_bd_version = $named_compat->{'introduced-in'};
+ $compat_value = $named_compat->{'compat-level'};
+ $using_named_compat = 1;
+ } elsif ($compat !~ m/^\d+$/) {
tag 'debhelper-compat-not-a-number', $compat;
$compat =~ s/[^\d]//g;
$compatnan = 1;
}
if ($level) {
+ my $c = $compat;
+ $c .= " ($compat_value)" if $using_named_compat;
tag 'declares-possibly-conflicting-debhelper-compat-versions',
- "rules=$level compat=$compat";
+ "rules=$level compat=${c}";
} else {
# this is not just to fill in the gap, but because debhelper
# prefers DH_COMPAT over debian/compat
- $level = $compat;
+ $level = $compat_value;
}
} else {
tag 'debhelper-compat-file-is-empty';
@@ -415,12 +423,16 @@ sub run {
unless ($bdepends_noarch->implies($dep));
}
- unless ($bdepends->implies("debhelper (>= $level~)")){
+ $dh_bd_version = $level if not defined($dh_bd_version);
+ unless ($bdepends->implies("debhelper (>= ${dh_bd_version}~)")){
my $tagname = 'package-needs-versioned-debhelper-build-depends';
+ my @extra = ($level);
$tagname = 'package-lacks-versioned-build-depends-on-debhelper'
- if ($level <= $compat_level->value('pedantic'));
-
- tag $tagname, $level;
+ if ($dh_bd_version <= $compat_level->value('pedantic'));
+ if ($using_named_compat) {
+ push(@extra, '(for the named compat level)');
+ }
+ tag $tagname, @extra;
}
if ($seen_dh and not $seen_python_helper) {
@@ -568,6 +580,16 @@ sub _shebang_cmd {
return $cmd;
}
+sub _named_compat_levels {
+ my ($key, $raw_val, undef) = @_;
+ my $result = {};
+ for my $opt (split(m/\s*,\s*/, $raw_val)) {
+ my ($key, $val) = split(m/\s*=\s*/, $opt, 2);
+ $result->{$key} = $val;
+ }
+ return $result;
+}
+
1;
# Local Variables:
diff --git a/data/debhelper/named-compat-levels b/data/debhelper/named-compat-levels
new file mode 100644
index 0000000..47c221d
--- /dev/null
+++ b/data/debhelper/named-compat-levels
@@ -0,0 +1,5 @@
+# List of all "named" compat levels and when they were introduced
+#
+
+beta-tester => introduced-in=10,compat-level=10
+bleeding-edge-tester => introduced-in=10,compat-level=10
diff --git a/debian/changelog b/debian/changelog
index 4d085a9..57381dd 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -12,6 +12,7 @@ lintian (2.5.47) UNRELEASED; urgency=medium
* checks/debhelper.pm:
+ [NT] Remove logic for CDBS creating a compat file when it is absent
as debhelper now requires a compat file unconditionally.
+ + [NT] Support the new named compat levels in debhelper.
* checks/duplicate-files.desc:
+ [JW] Fix typo.
* checks/fields.{desc,pm}:
@@ -39,6 +40,8 @@ lintian (2.5.47) UNRELEASED; urgency=medium
* data/debhelper/dh_{addons,commands}-manual:
+ [JW] Add dh-autoreconf, which is now a dependency of debhelper.
Thanks to Michael Biebl for the bug report. (Closes: #835449)
+ * data/debhelper/named-compat-levels:
+ + [NT] New file.
* data/output/manual-references:
+ [JW] Refresh.
* data/scripts/interpreters:
diff --git a/t/tests/debhelper-compat-named/debian/debian/compat b/t/tests/debhelper-compat-named/debian/debian/compat
new file mode 100644
index 0000000..400f85f
--- /dev/null
+++ b/t/tests/debhelper-compat-named/debian/debian/compat
@@ -0,0 +1 @@
+beta-tester
diff --git a/t/tests/debhelper-compat-named/debian/debian/control.in b/t/tests/debhelper-compat-named/debian/debian/control.in
new file mode 100644
index 0000000..b7294a9
--- /dev/null
+++ b/t/tests/debhelper-compat-named/debian/debian/control.in
@@ -0,0 +1,15 @@
+Source: {$source}
+Priority: extra
+Section: {$section}
+Maintainer: {$author}
+Standards-Version: {$standards_version}
+Build-Depends: debhelper
+
+Package: {$source}
+Architecture: {$architecture}
+Depends: $\{shlibs:Depends\}, $\{misc:Depends\}
+Description: {$description}
+ This is a test package designed to exercise some feature or tag of
+ Lintian. It is part of the Lintian test suite and may do very odd
+ things. It should not be installed like a regular package. It may
+ be an empty package.
diff --git a/t/tests/debhelper-compat-named/desc b/t/tests/debhelper-compat-named/desc
new file mode 100644
index 0000000..209861e
--- /dev/null
+++ b/t/tests/debhelper-compat-named/desc
@@ -0,0 +1,9 @@
+Testname: debhelper-compat-named
+Sequence: 6000
+Version: 1.0
+Description: Test support for named compat levels
+Test-Depends: debhelper (>= 10),
+Test-For:
+ package-needs-versioned-debhelper-build-depends
+Test-Against:
+ debhelper-compat-not-a-number
diff --git a/t/tests/debhelper-compat-named/tags b/t/tests/debhelper-compat-named/tags
new file mode 100644
index 0000000..c96c9ee
--- /dev/null
+++ b/t/tests/debhelper-compat-named/tags
@@ -0,0 +1 @@
+W: debhelper-compat-named source: package-needs-versioned-debhelper-build-depends 10 (for the named compat level)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/lintian/lintian.git
Reply to: