--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 <kact...@debian.org>
Date: Thu, 18 Apr 2019 10:13:26 +0000
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 000000000..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 000000000..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 000000000..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 mode 100755
index 000000000..2d33f6ac8
--- /dev/null
+++ b/t/tags/checks/init.d/init.d-missing-script/debian/rules
@@ -0,0 +1,4 @@
+#!/usr/bin/make -f
+
+%:
+       dh $@
diff --git a/t/tags/checks/init.d/init.d-missing-script/debian/run b/t/tags=
/checks/init.d/init.d-missing-script/debian/run
new file mode 100644
index 000000000..e69de29bb
diff --git a/t/tags/checks/init.d/init.d-missing-script/desc b/t/tags/check=
s/init.d/init.d-missing-script/desc
new file mode 100644
index 000000000..e0a07a1ad
--- /dev/null
+++ b/t/tags/checks/init.d/init.d-missing-script/desc
@@ -0,0 +1,7 @@
+Skeleton: upload-native
+Testname: init.d-missing-script
+Version: 1.0
+Description: Check for daemon with missing init.d script
+Match-Strategy: literal
+Output-Format: EWI
+Check: init.d
diff --git a/t/tags/checks/init.d/init.d-missing-script/output b/t/tags/che=
cks/init.d/init.d-missing-script/output
new file mode 100644
index 000000000..551673034
--- /dev/null
+++ b/t/tags/checks/init.d/init.d-missing-script/output
@@ -0,0 +1,4 @@
+E: init.d-missing-script: init.d-missing-script etc/sv/foo/run
+E: init.d-missing-script: init.d-missing-script lib/systemd/system/bar.ser=
vice
+I: init.d-missing-script: systemd-service-file-missing-documentation-key l=
ib/systemd/system/bar.service
+I: init.d-missing-script: systemd-service-file-missing-install-key lib/sys=
temd/system/bar.service
-- =

        Note, that I send and fetch email in batch, once every 24 hours.
                 If matter is urgent, try https://t.me/kaction
                                                                           =
  --

--27303_ĵaŭ_Apr_18_10_24_27_UTC_2019
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEhnHVzDbtdH7ktKj4SBLY3qgmEeYFAly4UFsACgkQSBLY3qgm
EeYdOxAAov68jC9MS/QwXPgzwS9/KnG32PznYFF9ruDF3TLJ5NqEZqyFfb3S03Di
hSvWtW528Z5tiL/59BhkePrr7kWeNC12+WkxxU+npVPBZPkbKli1G4VCrWioof6b
yKCNUhVER9Z2Og2PqqfQZjVmTkZNNPaoQ2+NQdrFqgueQGdsW65YaH2uhD7HbNf4
IsMR+tptKR28sHLUpe7o64qhWn32eN3eSdQ5f1tAEOqmhnj7TuOMrqW4BDBazkBt
PrFeGbxNbFi1YaR4Wx2AZ1UvQ/nb4YE45rLjddlHpkRmLdWwAHMlfiU0pNI/fS3+
udBb1IbRjxpmrNG36LgfmvDE7ul/L/7YS/krg+/NupQEsgZ36bNWopux5aqba2F0
X6kzdZyLyYgVmohwYhFXSKzC9DVyoPfUvVYUfUDYTaydN9lsKsHlveyG+xjqq6n5
4WwQRt7X4mZAcsDbiljV7+YlPQR0l02FreIwSuh8Ae6kP/rdRwv/UH0WrJ/QxYSk
B1iRugcKcforgJ9DIZj4+u1BY47jCeSWanIwRWHU5bDhB0jgsS6o5LloNFWchUMw
+87OIWJRerSEnJx/Z7Rijlp6JF1u7xJmcWy4z0KCNFfZoQl/hnkdOyFTp2lkyX1m
k+TdPbiTaZABwqx0EE3cemTco59vA66gSquX8fpMEJaRJNLG/Wk=
=jv5h
-----END PGP SIGNATURE-----

--27303_ĵaŭ_Apr_18_10_24_27_UTC_2019--

Reply via email to