Package: lintian Severity: wishlist Tags: patch Hi,
Attached is the following: commit 288035a951de277d0248ce28c561fbf7f8646839 Author: Chris Lamb <[email protected]> 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 <[email protected]> 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 `. `'` [email protected] / chris-lamb.co.uk `-
>From 288035a951de277d0248ce28c561fbf7f8646839 Mon Sep 17 00:00:00 2001 From: Chris Lamb <[email protected]> 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 <[email protected]> --- 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

