Bug#926471: lintian/patch: check that daemons have init.d script

2019-05-23 Thread Chris Lamb
forwarded 926471 https://salsa.debian.org/lintian/lintian/merge_requests/202
thanks

Hi Dmitry,

> Just a ping, to make sure that issue did not got lost.

This did not get lost but when I looked at it a while ago the patch
had some minor issues that a) I now cannot recall, and b) I lost my
WIP improvements to said patch.

I've just created the following MR for your patch, however:

  https://salsa.debian.org/lintian/lintian/merge_requests/202


Best wishes,

-- 
  ,''`.
 : :'  : Chris Lamb
 `. `'`  la...@debian.org  chris-lamb.co.uk
   `-



Bug#926471: lintian/patch: check that daemons have init.d script

2019-05-14 Thread Dmitry Bogatov


[2019-04-18 10:24] Dmitry Bogatov 
> Here is prelimitary patch, that implement the check. It seems to affect
> t/tags/checks/init.d/init.d-lsb-depends-nonrel/ check, and, maybe,
> something else -- I did not run whole test suite.

Just a ping, to make sure that issue did not got lost.
-- 
Note, that I send and fetch email in batch, once every 24 hours.
 If matter is urgent, try https://t.me/kaction
 --



Bug#926471: lintian/patch: check that daemons have init.d script

2019-04-18 Thread Dmitry Bogatov
--27303_ĵaŭ_Apr_18_10_24_27_UTC_2019
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable


Here is prelimitary patch, that implement the check. It seems to affect
t/tags/checks/init.d/init.d-lsb-depends-nonrel/ check, and, maybe,
something else -- I did not run whole test suite.

=46rom 8717235c0e585b758130e576088a3b670f92be7f Mon Sep 17 00:00:00 2001
From: Dmitry Bogatov 
Date: Thu, 18 Apr 2019 10:13:26 +
Subject: [PATCH] Check that daemons have init.d script

Ref: policy 9.11
Closes: #926471
---
 checks/init.d.desc   | 10 ++
 checks/init.d.pm | 16 
 .../init.d-missing-script/debian/bar.service |  0
 .../init.d-missing-script/debian/control.in  | 16 
 .../init.d/init.d-missing-script/debian/install  |  3 +++
 .../init.d/init.d-missing-script/debian/rules|  4 
 .../init.d/init.d-missing-script/debian/run  |  0
 t/tags/checks/init.d/init.d-missing-script/desc  |  7 +++
 .../checks/init.d/init.d-missing-script/output   |  4 
 9 files changed, 60 insertions(+)
 create mode 100644 t/tags/checks/init.d/init.d-missing-script/debian/bar.s=
ervice
 create mode 100644 t/tags/checks/init.d/init.d-missing-script/debian/contr=
ol.in
 create mode 100644 t/tags/checks/init.d/init.d-missing-script/debian/insta=
ll
 create mode 100755 t/tags/checks/init.d/init.d-missing-script/debian/rules
 create mode 100644 t/tags/checks/init.d/init.d-missing-script/debian/run
 create mode 100644 t/tags/checks/init.d/init.d-missing-script/desc
 create mode 100644 t/tags/checks/init.d/init.d-missing-script/output

diff --git a/checks/init.d.desc b/checks/init.d.desc
index d1873805d..632177b35 100644
--- a/checks/init.d.desc
+++ b/checks/init.d.desc
@@ -372,6 +372,16 @@ Info: The given init script appears to contain content=
 from the
  Please double-check the script and/or replace it with content suitable to
  this binary package.
 =

+Tag: init.d-missing-script
+Severity: important
+Certainty: certain
+Ref: policy 9.11
+Info: The package provides daemon, but contains no init.d script
+ The package contains file for running service under alternative
+ init system, but no mandanory init.d script.
+ .
+ See init-d-script(5) for one of possible ways writing init.d scripts.
+
 Tag: init.d-script-should-always-start-service
 Severity: important
 Certainty: possible
diff --git a/checks/init.d.pm b/checks/init.d.pm
index 0d59d79b5..557eac05f 100644
--- a/checks/init.d.pm
+++ b/checks/init.d.pm
@@ -86,6 +86,8 @@ sub run {
 =

 my (%initd_postinst, %initd_postrm);
 =

+check_missing_script($info);
+
 # read postinst control file
 if ($postinst and $postinst->is_file and $postinst->is_open_ok) {
 my $fd =3D $postinst->open;
@@ -502,6 +504,20 @@ sub check_defaults {
 return;
 }
 =

+# Check for missing init.d script, when equivalent for alternative init
+# system is present.
+sub check_missing_script {
+my ($info) =3D @_;
+for my $file ($info->sorted_index) {
+my $service;
+if ($file =3D~ m,etc/sv/([^/]+)/run$, or
+$file =3D~ m,lib/systemd/system/(.*)\.service,)
+{ $service =3D $1; } else { next; }
+tag 'init.d-missing-script', $file
+unless $info->index_resolved_path("/etc/init.d/${service}");
+}
+}
+
 1;
 =

 # Local Variables:
diff --git a/t/tags/checks/init.d/init.d-missing-script/debian/bar.service =
b/t/tags/checks/init.d/init.d-missing-script/debian/bar.service
new file mode 100644
index 0..e69de29bb
diff --git a/t/tags/checks/init.d/init.d-missing-script/debian/control.in b=
/t/tags/checks/init.d/init.d-missing-script/debian/control.in
new file mode 100644
index 0..f2a6964cb
--- /dev/null
+++ b/t/tags/checks/init.d/init.d-missing-script/debian/control.in
@@ -0,0 +1,16 @@
+Source: {$source}
+Priority: optional
+Section: mail
+Maintainer: {$author}
+Standards-Version: {$standards_version}
+Build-Depends: {$build_depends}
+Rules-Requires-Root: no
+
+Package: {$source}
+Architecture: {$package_architecture}
+Depends: $\{misc:Depends\}
+Description: Package with daemon, but no init.d script
+ 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/tags/checks/init.d/init.d-missing-script/debian/install b/t/=
tags/checks/init.d/init.d-missing-script/debian/install
new file mode 100644
index 0..db29ac80e
--- /dev/null
+++ b/t/tags/checks/init.d/init.d-missing-script/debian/install
@@ -0,0 +1,3 @@
+# Actual content does not matter, Lintain checks only for file names.
+debian/bar.service /lib/systemd/system/
+debian/run /etc/sv/foo/
diff --git a/t/tags/checks/init.d/init.d-missing-script/debian/rules b/t/ta=
gs/checks/init.d/init.d-missing-script/debian/rules
new file