Bug#838997: lintian: checks/init.d: Check for initscripts that source /lib/lsb/init-functions without declaring the corresponding dependency on lsb-base (>= 3.0-6).
Package: lintian
Severity: wishlist
Tags: patch
Hi,
Attached is the following:
commit 288035a951de277d0248ce28c561fbf7f8646839
Author: Chris Lamb <lamby@debian.org>
Date: Tue Sep 27 16:28:04 2016 +0200
checks/init.d: Check for initscripts that source /lib/lsb/init-functions without declaring the corresponding dependency on lsb-base (>= 3.0-6).
Signed-off-by: Chris Lamb <lamby@debian.org>
checks/init.d.desc | 5 +++++
checks/init.d.pm | 12 +++++++++---
t/tests/legacy-scripts/desc | 2 ++
t/tests/legacy-scripts/tags | 1 +
4 files changed, 17 insertions(+), 3 deletions(-)
Regards,
--
,''`.
: :' : Chris Lamb
`. `'` lamby@debian.org / chris-lamb.co.uk
`-
>From 288035a951de277d0248ce28c561fbf7f8646839 Mon Sep 17 00:00:00 2001
From: Chris Lamb <lamby@debian.org>
Date: Tue, 27 Sep 2016 16:28:04 +0200
Subject: [PATCH] checks/init.d: Check for initscripts that source
/lib/lsb/init-functions without declaring the corresponding dependency on
lsb-base (>= 3.0-6).
Signed-off-by: Chris Lamb <lamby@debian.org>
---
checks/init.d.desc | 5 +++++
checks/init.d.pm | 12 +++++++++---
t/tests/legacy-scripts/desc | 2 ++
t/tests/legacy-scripts/tags | 1 +
4 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/checks/init.d.desc b/checks/init.d.desc
index ce33ba5..5b31754 100644
--- a/checks/init.d.desc
+++ b/checks/init.d.desc
@@ -370,3 +370,8 @@ Info: The given init script declares a dependency on the
totally broken.
Ref: https://wiki.debian.org/LSBInitScripts
+Tag: init.d-script-needs-depends-on-lsb-base
+Severity: important
+Certainty: possible
+Info: The given init script sources <tt>/lib/lsb/init-functions</tt> without
+ declaring the corresponding dependency on lsb-base (>= 3.0-6).
diff --git a/checks/init.d.pm b/checks/init.d.pm
index f91afa1..4174a4d 100644
--- a/checks/init.d.pm
+++ b/checks/init.d.pm
@@ -198,7 +198,7 @@ sub run {
# Check if file exists in package and check the script for
# other issues if it was included in the package.
- check_init($initd_path);
+ check_init($initd_path, $info);
}
return unless $initd_dir and $initd_dir->is_dir;
@@ -222,7 +222,7 @@ sub run {
# coverage in the first pass.
unless ($initd_postinst{$script->basename}) {
tag $tagname, $script;
- check_init($script);
+ check_init($script, $info);
}
}
@@ -230,7 +230,7 @@ sub run {
}
sub check_init {
- my ($initd_path) = @_;
+ my ($initd_path, $info) = @_;
# In an upstart system, such as Ubuntu, init scripts are symlinks to
# upstart-job. It doesn't make sense to check the syntax of upstart-job,
@@ -321,6 +321,12 @@ sub check_init {
while ($l =~ s/^[^\#]*?(start|stop|restart|force-reload|status)//o) {
$tag{$1} = 1;
}
+
+ if ($l =~ m{^\s*\.\s+/lib/lsb/init-functions}
+ && not $info->relation('strong')->implies('lsb-base (>= 3.0-6)')) {
+ tag 'init.d-script-needs-depends-on-lsb-base',
+ $initd_path, "(line $.)";
+ }
}
close($fd);
diff --git a/t/tests/legacy-scripts/desc b/t/tests/legacy-scripts/desc
index d95a521..ee8dc4e 100644
--- a/t/tests/legacy-scripts/desc
+++ b/t/tests/legacy-scripts/desc
@@ -4,3 +4,5 @@ Sequence: 9999
Version: 6ds-1ubuntu0.5.10.1
Type: non-native
Description: Legacy test "scripts"
+Test-For:
+ init.d-script-needs-depends-on-lsb-base
diff --git a/t/tests/legacy-scripts/tags b/t/tests/legacy-scripts/tags
index 3f2854c..0436902 100644
--- a/t/tests/legacy-scripts/tags
+++ b/t/tests/legacy-scripts/tags
@@ -10,6 +10,7 @@ E: scripts: init.d-script-does-not-implement-required-option etc/init.d/lsb-brok
E: scripts: init.d-script-does-not-implement-required-option etc/init.d/lsb-broken restart
E: scripts: init.d-script-has-duplicate-lsb-section etc/init.d/lsb-broken
E: scripts: init.d-script-has-unterminated-lsb-section etc/init.d/lsb-broken:15
+E: scripts: init.d-script-needs-depends-on-lsb-base etc/init.d/skeleton (line 40)
E: scripts: missing-dep-for-interpreter jruby => jruby | jruby1.0 | jruby1.1 | jruby1.2 (usr/bin/jruby-broken)
E: scripts: missing-dep-for-interpreter lefty => graphviz (usr/bin/lefty-foo)
E: scripts: package-installs-python-bytecode usr/lib/python2.3/site-packages/test.pyc
--
2.9.3
Reply to: