--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--