From 75808db17caf8b960b351e3408e74142f4c85aac Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 14 Apr 2024 15:42:30 +0200 Subject: Adding upstream version 2.117.0. Signed-off-by: Daniel Baumann --- .../build-spec/debian/bar.service | 0 .../build-spec/debian/control.in | 16 ++ .../build-spec/debian/install | 3 + .../build-spec/debian/rules | 4 + .../build-spec/debian/run | 0 .../build-spec/fill-values | 3 + .../eval/desc | 2 + .../eval/hints | 1 + .../init.d-general/build-spec/debian/control.in | 61 +++++++ .../build-spec/debian/init.d-general-bugs.init | 17 ++ .../build-spec/debian/init.d-general-bugs.postinst | 17 ++ .../init.d-general-interpreter-in-usr-dir.init | 14 ++ .../debian/init.d-general-new-style.init | 31 ++++ .../init.d-general-sourcing-without-test.init | 52 ++++++ .../build-spec/debian/init.d-general.default | 17 ++ .../build-spec/debian/init.d-general.init | 21 +++ .../init-d/init.d-general/build-spec/fill-values | 3 + t/recipes/checks/init-d/init.d-general/eval/desc | 2 + t/recipes/checks/init-d/init.d-general/eval/hints | 24 +++ .../build-spec/debian/control.in | 90 ++++++++++ .../build-spec/debian/init.d-lsb-headers-all.init | 22 +++ .../debian/init.d-lsb-headers-early-boot.init | 21 +++ .../debian/init.d-lsb-headers-length.init | 21 +++ .../debian/init.d-lsb-headers-local.init | 23 +++ .../debian/init.d-lsb-headers-missing.init | 19 +++ .../debian/init.d-lsb-headers-parsing.init | 21 +++ .../debian/init.d-lsb-headers-remote.init | 23 +++ .../debian/init.d-lsb-headers-virtual.init | 22 +++ .../build-spec/debian/init.d-lsb-headers.init | 23 +++ .../init.d-lsb-headers/build-spec/fill-values | 3 + .../checks/init-d/init.d-lsb-headers/eval/desc | 2 + .../checks/init-d/init.d-lsb-headers/eval/hints | 28 +++ .../build-spec/debian/init | 27 +++ .../build-spec/fill-values | 3 + .../eval/desc | 2 + .../eval/hints | 1 + .../build-spec/debian/install | 3 + .../build-spec/debian/links | 1 + .../build-spec/debian/rules | 9 + .../build-spec/fill-values | 3 + .../build-spec/orig/README | 1 + .../build-spec/orig/foo.in | 18 ++ .../build-spec/orig/skeleton | 2 + .../init-d/init.d-script-registration/eval/desc | 2 + .../init-d/init.d-script-registration/eval/hints | 3 + .../init-d/init.d-symlink/build-spec/debian/links | 2 + .../init.d-symlink/build-spec/debian/postinst | 4 + .../init-d/init.d-symlink/build-spec/debian/postrm | 6 + .../init-d/init.d-symlink/build-spec/fill-values | 3 + t/recipes/checks/init-d/init.d-symlink/eval/desc | 5 + t/recipes/checks/init-d/init.d-symlink/eval/hints | 1 + .../build-spec/debian/changelog.in | 57 +++++++ .../build-spec/debian/control.in | 18 ++ .../build-spec/debian/postinst | 181 ++++++++++++++++++++ .../build-spec/debian/postrm | 47 ++++++ .../build-spec/debian/preinst | 18 ++ .../build-spec/debian/prerm | 188 +++++++++++++++++++++ .../build-spec/debian/rules | 35 ++++ .../build-spec/debian/triggers | 4 + .../build-spec/debian/watch | 11 ++ .../build-spec/fill-values | 6 + .../init-d/legacy-maintainer-scripts/eval/desc | 3 + .../init-d/legacy-maintainer-scripts/eval/hints | 6 + .../legacy-maintainer-scripts/eval/post-test | 1 + .../legacy-scripts/build-spec/debian/changelog.in | 41 +++++ .../legacy-scripts/build-spec/debian/control.in | 16 ++ .../legacy-scripts/build-spec/debian/copyright | 5 + .../build-spec/debian/patches/00list | 11 ++ .../build-spec/debian/patches/00list.sparc | 1 + .../build-spec/debian/patches/00options | 1 + .../patches/02_i_dont_have_a_description.patch | 7 + .../patches/03_specified_without_dpatch.dpatch | 5 + .../04_i_dont_have_a_description_either.patch | 7 + .../legacy-scripts/build-spec/debian/postinst | 14 ++ .../init-d/legacy-scripts/build-spec/debian/postrm | 9 + .../legacy-scripts/build-spec/debian/preinst | 15 ++ .../init-d/legacy-scripts/build-spec/debian/rules | 105 ++++++++++++ .../build-spec/debian/scripts.conffiles | 6 + .../init-d/legacy-scripts/build-spec/debian/watch | 8 + .../init-d/legacy-scripts/build-spec/fill-values | 6 + .../init-d/legacy-scripts/build-spec/orig/csh-foo | 2 + .../init-d/legacy-scripts/build-spec/orig/envfoo | 4 + .../init-d/legacy-scripts/build-spec/orig/fish-foo | 2 + .../legacy-scripts/build-spec/orig/gccbug.dpatch | 39 +++++ .../legacy-scripts/build-spec/orig/guile-bizarre | 6 + .../legacy-scripts/build-spec/orig/init-lsb-broken | 34 ++++ .../legacy-scripts/build-spec/orig/init-lsb-other | 22 +++ .../legacy-scripts/build-spec/orig/init-no-lsb | 17 ++ .../legacy-scripts/build-spec/orig/init-skeleton | 150 ++++++++++++++++ .../legacy-scripts/build-spec/orig/jruby-broken | 2 + .../legacy-scripts/build-spec/orig/lefty-foo | 2 + .../init-d/legacy-scripts/build-spec/orig/make-foo | 3 + .../legacy-scripts/build-spec/orig/perl-bizarre-1 | 11 ++ .../legacy-scripts/build-spec/orig/perl-bizarre-2 | 7 + .../legacy-scripts/build-spec/orig/perl-bizarre-3 | 6 + .../init-d/legacy-scripts/build-spec/orig/perlfoo | 3 + .../legacy-scripts/build-spec/orig/phpenvfoo | 7 + .../init-d/legacy-scripts/build-spec/orig/phpfoo | 7 + .../init-d/legacy-scripts/build-spec/orig/rubyfoo | 4 + .../legacy-scripts/build-spec/orig/sh-broken | 2 + .../legacy-scripts/build-spec/orig/suidperlfoo | 3 + .../init-d/legacy-scripts/build-spec/orig/tkfoo | 31 ++++ .../init-d/legacy-scripts/build-spec/orig/wishfoo | 4 + .../legacy-scripts/build-spec/orig/xsession-test | 3 + .../init-d/legacy-scripts/build-spec/pre-build | 5 + t/recipes/checks/init-d/legacy-scripts/eval/desc | 2 + t/recipes/checks/init-d/legacy-scripts/eval/hints | 21 +++ .../checks/init-d/legacy-scripts/eval/post-test | 1 + .../build-spec/debian/changelog.in | 57 +++++++ .../build-spec/debian/config | 3 + .../build-spec/debian/control.in | 18 ++ .../build-spec/debian/postinst | 181 ++++++++++++++++++++ .../build-spec/debian/postrm | 47 ++++++ .../build-spec/debian/preinst | 18 ++ .../build-spec/debian/prerm | 188 +++++++++++++++++++++ .../build-spec/debian/rules | 36 ++++ .../build-spec/debian/triggers | 4 + .../build-spec/debian/watch | 11 ++ .../build-spec/fill-values | 6 + .../legacy-maintainer-scripts/eval/desc | 2 + .../legacy-maintainer-scripts/eval/hints | 1 + .../legacy-maintainer-scripts/eval/post-test | 1 + .../build-spec/debian/install | 4 + .../build-spec/debian/postinst | 7 + .../build-spec/debian/postrm | 8 + .../build-spec/fill-values | 3 + .../scripts-calls-init-script/build-spec/orig/bad | 2 + .../build-spec/orig/other-action | 3 + .../build-spec/orig/self-invoke | 30 ++++ .../build-spec/orig/test-first | 6 + .../scripts-calls-init-script/eval/desc | 4 + .../scripts-calls-init-script/eval/hints | 1 + 132 files changed, 2575 insertions(+) create mode 100644 t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/bar.service create mode 100644 t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/control.in create mode 100644 t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/install create mode 100755 t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/rules create mode 100644 t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/run create mode 100644 t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/fill-values create mode 100644 t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/desc create mode 100644 t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/hints create mode 100644 t/recipes/checks/init-d/init.d-general/build-spec/debian/control.in create mode 100644 t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.init create mode 100644 t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.postinst create mode 100644 t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-interpreter-in-usr-dir.init create mode 100644 t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-new-style.init create mode 100644 t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-sourcing-without-test.init create mode 100644 t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.default create mode 100644 t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.init create mode 100644 t/recipes/checks/init-d/init.d-general/build-spec/fill-values create mode 100644 t/recipes/checks/init-d/init.d-general/eval/desc create mode 100644 t/recipes/checks/init-d/init.d-general/eval/hints create mode 100644 t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/control.in create mode 100644 t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-all.init create mode 100644 t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-early-boot.init create mode 100644 t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-length.init create mode 100644 t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-local.init create mode 100644 t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-missing.init create mode 100644 t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-parsing.init create mode 100644 t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-remote.init create mode 100644 t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-virtual.init create mode 100644 t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers.init create mode 100644 t/recipes/checks/init-d/init.d-lsb-headers/build-spec/fill-values create mode 100644 t/recipes/checks/init-d/init.d-lsb-headers/eval/desc create mode 100644 t/recipes/checks/init-d/init.d-lsb-headers/eval/hints create mode 100644 t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/debian/init create mode 100644 t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/fill-values create mode 100644 t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/desc create mode 100644 t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/hints create mode 100644 t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/install create mode 100644 t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/links create mode 100755 t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/rules create mode 100644 t/recipes/checks/init-d/init.d-script-registration/build-spec/fill-values create mode 100644 t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/README create mode 100644 t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/foo.in create mode 100644 t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/skeleton create mode 100644 t/recipes/checks/init-d/init.d-script-registration/eval/desc create mode 100644 t/recipes/checks/init-d/init.d-script-registration/eval/hints create mode 100644 t/recipes/checks/init-d/init.d-symlink/build-spec/debian/links create mode 100755 t/recipes/checks/init-d/init.d-symlink/build-spec/debian/postinst create mode 100755 t/recipes/checks/init-d/init.d-symlink/build-spec/debian/postrm create mode 100644 t/recipes/checks/init-d/init.d-symlink/build-spec/fill-values create mode 100644 t/recipes/checks/init-d/init.d-symlink/eval/desc create mode 100644 t/recipes/checks/init-d/init.d-symlink/eval/hints create mode 100644 t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/changelog.in create mode 100644 t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/control.in create mode 100644 t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/postinst create mode 100644 t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/postrm create mode 100644 t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/preinst create mode 100644 t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/prerm create mode 100755 t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/rules create mode 100644 t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/triggers create mode 100644 t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/watch create mode 100644 t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/fill-values create mode 100644 t/recipes/checks/init-d/legacy-maintainer-scripts/eval/desc create mode 100644 t/recipes/checks/init-d/legacy-maintainer-scripts/eval/hints create mode 100644 t/recipes/checks/init-d/legacy-maintainer-scripts/eval/post-test create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/changelog.in create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/control.in create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/copyright create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list.sparc create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00options create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postinst create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postrm create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/preinst create mode 100755 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/rules create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/scripts.conffiles create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/debian/watch create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/fill-values create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/csh-foo create mode 100755 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/envfoo create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/fish-foo create mode 100755 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/gccbug.dpatch create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/guile-bizarre create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-broken create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-other create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-no-lsb create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-skeleton create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/jruby-broken create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/lefty-foo create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/make-foo create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-1 create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-2 create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-3 create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perlfoo create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpenvfoo create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpfoo create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/rubyfoo create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/sh-broken create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/suidperlfoo create mode 100755 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/tkfoo create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/wishfoo create mode 100644 t/recipes/checks/init-d/legacy-scripts/build-spec/orig/xsession-test create mode 100755 t/recipes/checks/init-d/legacy-scripts/build-spec/pre-build create mode 100644 t/recipes/checks/init-d/legacy-scripts/eval/desc create mode 100644 t/recipes/checks/init-d/legacy-scripts/eval/hints create mode 100644 t/recipes/checks/init-d/legacy-scripts/eval/post-test create mode 100644 t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/changelog.in create mode 100644 t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/config create mode 100644 t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/control.in create mode 100644 t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/postinst create mode 100644 t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/postrm create mode 100644 t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/preinst create mode 100644 t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/prerm create mode 100755 t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/rules create mode 100644 t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/triggers create mode 100644 t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/watch create mode 100644 t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/fill-values create mode 100644 t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/desc create mode 100644 t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/hints create mode 100644 t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/post-test create mode 100644 t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/install create mode 100644 t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postinst create mode 100644 t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postrm create mode 100644 t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/fill-values create mode 100755 t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/bad create mode 100755 t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/other-action create mode 100755 t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/self-invoke create mode 100755 t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/test-first create mode 100644 t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/desc create mode 100644 t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/hints (limited to 't/recipes/checks/init-d') diff --git a/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/bar.service b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/bar.service new file mode 100644 index 0000000..e69de29 diff --git a/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/control.in b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/control.in new file mode 100644 index 0000000..ec0215d --- /dev/null +++ b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/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/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/install b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/install new file mode 100644 index 0000000..db29ac8 --- /dev/null +++ b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/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/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/rules b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/rules new file mode 100755 index 0000000..2d33f6a --- /dev/null +++ b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/rules @@ -0,0 +1,4 @@ +#!/usr/bin/make -f + +%: + dh $@ diff --git a/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/run b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/debian/run new file mode 100644 index 0000000..e69de29 diff --git a/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/fill-values b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/fill-values new file mode 100644 index 0000000..3a32284 --- /dev/null +++ b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/build-spec/fill-values @@ -0,0 +1,3 @@ +Skeleton: upload-native +Testname: directory-in-etc-sv-directory-without-executable-run-script +Description: Check for directories in /etc/sv missing run script diff --git a/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/desc b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/desc new file mode 100644 index 0000000..c344c6d --- /dev/null +++ b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/desc @@ -0,0 +1,2 @@ +Testname: directory-in-etc-sv-directory-without-executable-run-script +Check: init-d diff --git a/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/hints b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/hints new file mode 100644 index 0000000..37e6f0f --- /dev/null +++ b/t/recipes/checks/init-d/directory-in-etc-sv-directory-without-executable-run-script/eval/hints @@ -0,0 +1 @@ +directory-in-etc-sv-directory-without-executable-run-script (binary): directory-in-etc-sv-directory-without-executable-run-script etc/sv/foo/run [etc/sv/foo/] diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/control.in b/t/recipes/checks/init-d/init.d-general/build-spec/debian/control.in new file mode 100644 index 0000000..80dcc37 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/control.in @@ -0,0 +1,61 @@ +Source: [% $source %] +Priority: optional +Section: [% $section %] +Maintainer: [% $author %] +Standards-Version: [% $standards_version %] +Build-Depends: [% $build_depends %] +Rules-Requires-Root: no + +Package: [% $source %] +Architecture: [% $package_architecture %] +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6) +Description: [% $description %] + 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. + +Package: [% $source %]-bugs +Architecture: [% $package_architecture %] +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6) +Description: [% $description %] -- bugs + Test some simple bugs in the check + . + 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. + +Package: [% $source %]-interpreter-in-usr-dir +Architecture: [% $package_architecture %] +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: [% $description %] -- bad script interpreter + Test a check for a /usr dir interpreter used in an init 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. + +Package: [% $source %]-sourcing-without-test +Architecture: [% $package_architecture %] +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6) +Description: [% $description %] -- sourcing without test + Test a check for . /etc/default/foo without checking the existence of + the file beforehand. + . + 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. + +Package: [% $source %]-new-style +Architecture: [% $package_architecture %] +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: [% $description %] -- "new style" + New style of init.d. (#919604) + . + 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. diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.init b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.init new file mode 100644 index 0000000..55305ab --- /dev/null +++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.init @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +### BEGIN INIT INFO +# Provides: init.d-general-bugs +# Required-Start: +# Required-Stop: +# Default-Start: +# Default-Stop: +# Short-Description: Do nothing at all +# Description: The short description pretty much covers it. +### END INIT INFO + +# start stop force-reload restart status + +. /lib/lsb/init-functions diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.postinst b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.postinst new file mode 100644 index 0000000..37a4b2a --- /dev/null +++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-bugs.postinst @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +if [ "$1" = "configure" ] ; then + # duplicate call + update-rc.d init.d-general-bugs word > /dev/null + update-rc.d init.d-general-bugs anotherword +fi + +# Actually debhelper will add a third one for us, but since the line +# number might change with any debhelper release, we don't want to +# rely on that debhelper only changing seldomly what replaces the +# token and hence rather add our own second one above. The token below +# is just to not trigger further lintian warnings. + +#DEBHELPER# diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-interpreter-in-usr-dir.init b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-interpreter-in-usr-dir.init new file mode 100644 index 0000000..ff7698c --- /dev/null +++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-interpreter-in-usr-dir.init @@ -0,0 +1,14 @@ +#!/usr/bin/perl -w + +### BEGIN INIT INFO +# Provides: init.d-general-interpreter-in-usr-dir +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start daemon at boot time +# Description: Enable service provided by daemon. +### END INIT INFO + +printf "start status stop reload restart force-reload\n"; + diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-new-style.init b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-new-style.init new file mode 100644 index 0000000..e815337 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-new-style.init @@ -0,0 +1,31 @@ +#!/usr/bin/env /lib/init/init-d-script +### BEGIN INIT INFO +# Provides: init.d-general-new-style +# Should-Start: $syslog +# Required-Start: $time $local_fs +# Required-Stop: $time +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: init.d-general-new-style +### END INIT INFO +NAME='init.d-general-new-style' +DESC='init.d-general-new-style description here' +DAEMON=/usr/sbin/init.d-general-new-styl + +daemon_ () { /usr/bin/daemon --noconfig --name "${NAME}" "$@"; } +if ! test -x '/usr/bin/daemon' ; then + log_failure_msg "install \`daemon' package to use ${NAME} script" + exit 1 +fi + +do_start_cmd_override () { + daemon_ "${DAEMON}" +} + +do_stop_cmd_override () { + if daemon_ --running ; then + daemon_ --stop + fi +} + +# vim: ft=sh diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-sourcing-without-test.init b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-sourcing-without-test.init new file mode 100644 index 0000000..7046ed9 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general-sourcing-without-test.init @@ -0,0 +1,52 @@ +#!/bin/sh -e + +### BEGIN INIT INFO +# Provides: init.d-general-sourcing-without-test +# Required-Start: $remote_fs +# Required-Stop: $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start daemon at boot time +# Description: Enable service provided by daemon. +### END INIT INFO + +echo start stop reload restart force-reload status + +. /lib/lsb/init-functions + +. /etc/default/rcS + +[ ! -f /etc/default/foo ] || . /etc/default/foo + +[ -f /etc/default/bar ] && . /etc/default/bar + +if [ -e /etc/default/locale ]; then + . /etc/default/locale +fi + +if [ -f /etc/default/moo ]; then + . /etc/default/moo +fi + +if [ -r /etc/default/tmpfs ]; then + . /etc/default/tmpfs +fi + +PACKAGE=moo +[ -f /etc/default/$PACKAGE ] && . /etc/default/$PACKAGE + +if [ -f /etc/default/$PACKAGE ]; then + . /etc/default/$PACKAGE +fi + +if test -f /etc/default/$PACKAGE; then + . /etc/default/$PACKAGE +fi + +# This is not sourcing without a test and shouldn't produce an error. +if [ ! -f /etc/default/$PACKAGE ] ; then + # do something else + : +else + . /etc/default/$PACKAGE +fi diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.default b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.default new file mode 100644 index 0000000..c1d7f21 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.default @@ -0,0 +1,17 @@ +ENABLED="false" +ENABLED=false +DISABLED="true" +DISABLED=true +RUN="true" +RUN=true +PREFIXRUN="true" +PREFIXRUN=true + +# ENABLED="false" +# ENABLED=false +# DISABLED="true" +# DISABLED=true +# RUN="true" +# RUN=true +# PREFIXRUN="true" +# PREFIXRUN=true diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.init b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.init new file mode 100644 index 0000000..b3e8ae7 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-general/build-spec/debian/init.d-general.init @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +. /lib/lsb/init-functions + +### BEGIN INIT INFO +# Provides: init.d-general +# Required-Start: +# Required-Stop: +# Default-Start: +# Default-Stop: +# Short-Description: Do nothing at all +# Description: The short description pretty much covers it. +### END INIT INFO + +case "$1" in + start|stop|force-reload|restart|status|*) + echo hello world! + ;; +esac diff --git a/t/recipes/checks/init-d/init.d-general/build-spec/fill-values b/t/recipes/checks/init-d/init.d-general/build-spec/fill-values new file mode 100644 index 0000000..e567c49 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-general/build-spec/fill-values @@ -0,0 +1,3 @@ +Skeleton: upload-native +Testname: init.d-general +Description: Test tags related to the init.d checks diff --git a/t/recipes/checks/init-d/init.d-general/eval/desc b/t/recipes/checks/init-d/init.d-general/eval/desc new file mode 100644 index 0000000..92fea72 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-general/eval/desc @@ -0,0 +1,2 @@ +Testname: init.d-general +Check: init-d diff --git a/t/recipes/checks/init-d/init.d-general/eval/hints b/t/recipes/checks/init-d/init.d-general/eval/hints new file mode 100644 index 0000000..0084e65 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-general/eval/hints @@ -0,0 +1,24 @@ +init.d-general-sourcing-without-test (binary): init.d-script-sourcing-without-test /etc/default/rcS [etc/init.d/init.d-general-sourcing-without-test:17] +init.d-general-interpreter-in-usr-dir (binary): init.d-script-uses-usr-interpreter /usr/bin/perl [etc/init.d/init.d-general-interpreter-in-usr-dir:1] +init.d-general-bugs (binary): init.d-script-does-not-implement-status-option [etc/init.d/init.d-general-bugs] +init.d-general-bugs (binary): init.d-script-does-not-implement-required-option stop [etc/init.d/init.d-general-bugs] +init.d-general-bugs (binary): init.d-script-does-not-implement-required-option start [etc/init.d/init.d-general-bugs] +init.d-general-bugs (binary): init.d-script-does-not-implement-required-option restart [etc/init.d/init.d-general-bugs] +init.d-general-bugs (binary): init.d-script-does-not-implement-required-option force-reload [etc/init.d/init.d-general-bugs] +init.d-general-bugs (binary): duplicate-updaterc.d-calls-in-postinst init.d-general-bugs [postinst:8] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:8] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:7] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:6] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:5] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:4] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:3] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:2] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:1] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:17] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:16] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:15] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:14] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:13] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:12] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:11] +init.d-general (binary): init.d-script-should-always-start-service [etc/default/init.d-general:10] diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/control.in b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/control.in new file mode 100644 index 0000000..07eac24 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/control.in @@ -0,0 +1,90 @@ +Source: [% $source %] +Priority: optional +Section: [% $section %] +Maintainer: [% $author %] +Standards-Version: [% $standards_version %] +Build-Depends: [% $build_depends %] +Rules-Requires-Root: no + +Package: [% $source %] +Architecture: [% $package_architecture %] +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6) +Description: [% $description %] + 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. + +Package: [% $source %]-parsing +Architecture: [% $package_architecture %] +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6) +Description: [% $description %] -- headers parsing + This is a test package designed to exercise the parsing of init scripts + by Lintian. It is part of the Lintian test suite and may do very odd + things. It should not be installed like a regular package. + +Package: [% $source %]-remote +Architecture: [% $package_architecture %] +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6) +Description: [% $description %] -- using /usr files + This is a test package designed to exercise the checking of init scripts + by Lintian. It is part of the Lintian test suite and may do very odd + things. It should not be installed like a regular package. + +Package: [% $source %]-length +Architecture: [% $package_architecture %] +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6) +Description: [% $description %] -- breaking length assumptions + Test package designed to exercise the checking of init + scripts by Lintian. It is part of the Lintian test suite and may do + very odd things. It should not be installed like a regular package. + +Package: [% $source %]-local +Architecture: [% $package_architecture %] +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6) +Description: [% $description %] -- using /var files + This is another test package designed to exercise the checking of init + scripts by Lintian. It is part of the Lintian test suite and may do + very odd things. It should not be installed like a regular package. + +Package: [% $source %]-missing +Architecture: [% $package_architecture %] +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6) +Description: [% $description %] -- missing runlevels + This is yet another test package designed to exercise the checking of + init scripts by Lintian. It is part of the Lintian test suite and may + do very odd things. It should not be installed like a regular package. + +Package: [% $source %]-virtual +Architecture: [% $package_architecture %] +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6) +Description: [% $description %] -- virtual facilities + Test package to exercise the virtual facilities in init.d scripts + checks by lintian. It is part of the Lintian test suite and may + do very odd things. It should not be installed like a regular package. + +Package: [% $source %]-all +Architecture: [% $package_architecture %] +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6) +Description: [% $description %] -- all virtual facilities + Test package designed to exercise the checking of virtual all facilities + in init.d scripts checks by lintian. + It is part of the Lintian test suite and may + do very odd things. It should not be installed like a regular package. + +Package: [% $source %]-early-boot +Architecture: [% $package_architecture %] +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6) +Description: [% $description %] -- false positive + This is yet another test package designed to exercise the checking of + init scripts by Lintian. It is part of the Lintian test suite and may + do very odd things. It should not be installed like a regular + package. diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-all.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-all.init new file mode 100644 index 0000000..c9097f0 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-all.init @@ -0,0 +1,22 @@ +#!/bin/sh + +set -e + +### BEGIN INIT INFO +# Provides: init.d-lsb-headers-all +# Required-Start: $all +# Should-Start: $all +# Required-Stop: $all +# Default-Start: 2 3 4 5 +# Default-Stop: +# Short-Description: Test script for all virtual facility +# Description: The short description pretty much covers it : test $all virtual facility +### END INIT INFO + +. /lib/lsb/init-functions + +case "$1" in + start|stop|force-reload|restart|status|*) + echo hello world + ;; +esac diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-early-boot.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-early-boot.init new file mode 100644 index 0000000..dcfa1c1 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-early-boot.init @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +### BEGIN INIT INFO +# Provides: init.d-lsb-headers-early-boot +# Required-Start: +# Required-Stop: +# Default-Start: S +# Default-Stop: 0 6 +# Short-Description: Do nothing at all +# Description: The short description pretty much covers it. +### END INIT INFO + +. /lib/lsb/init-functions + +case "$1" in + start|stop|force-reload|restart|status|*) + echo hello world + ;; +esac diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-length.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-length.init new file mode 100644 index 0000000..e450395 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-length.init @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +### BEGIN INIT INFO +# Provides: init.d-lsb-headers-length +# Required-Start: +# Required-Stop: +# Default-Start: +# Default-Stop: 0 1 2 6 +# Short-Description: Do nothing at all +# Description: The short description pretty much covers it. +### END INIT INFO + +. /lib/lsb/init-functions + +case "$1" in + start|stop|force-reload|restart|status|*) + echo hello world! + ;; +esac diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-local.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-local.init new file mode 100644 index 0000000..2f7049b --- /dev/null +++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-local.init @@ -0,0 +1,23 @@ +#!/bin/sh + +set -e + +### BEGIN INIT INFO +# Provides: init.d-lsb-headers-local +# Required-Start: +# Required-Stop: $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Do nothing at all +# Description: The short description pretty much covers it. +### END INIT INFO + +exec >/var/log/foo.log + +. /lib/lsb/init-functions + +case "$1" in + start|stop|force-reload|restart|status|*) + echo hello world! + ;; +esac diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-missing.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-missing.init new file mode 100644 index 0000000..4e60e54 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-missing.init @@ -0,0 +1,19 @@ +#!/bin/sh + +set -e + +### BEGIN INIT INFO +# Provides: init.d-lsb-headers-missing +# Required-Start: +# Required-Stop: +# Default-Start: 2 3 5 +# Default-Stop: 0 6 +### END INIT INFO + +. /lib/lsb/init-functions + +case "$1" in + start|stop|force-reload|restart|status|*) + echo hello world + ;; +esac diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-parsing.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-parsing.init new file mode 100644 index 0000000..188e1f1 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-parsing.init @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +### BEGIN INIT INFO +# Provides: init.d-lsb-headers-parsing +# Required-Start: $local_fs +# Required-Stop:$local_fs +# Default-Start: 0 +# Default-Stop: 0 +# Short-Description: Do nothing at all +# Description: The short description pretty much covers it. +### END INIT INFO + +. /lib/lsb/init-functions + +case "$1" in + start|stop|force-reload|restart|status|*) + echo hello world! + ;; +esac diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-remote.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-remote.init new file mode 100644 index 0000000..c0a131c --- /dev/null +++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-remote.init @@ -0,0 +1,23 @@ +#!/bin/sh + +set -e + +### BEGIN INIT INFO +# Provides: init.d-lsb-headers-remote +# Required-Start: $local_fs +# Required-Stop: +# Should-Stop: $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: +# Short-Description: Do nothing at all +# Description: The short description pretty much covers it. +### END INIT INFO + +. /lib/lsb/init-functions +. /usr/share/foo/lib.sh + +case "$1" in + start|stop|force-reload|restart|status|*) + echo hello world! + ;; +esac diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-virtual.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-virtual.init new file mode 100644 index 0000000..ac98ae9 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers-virtual.init @@ -0,0 +1,22 @@ +#!/bin/sh + +set -e + +### BEGIN INIT INFO +# Provides: init.d-lsb-headers-virtual +# Required-Start: $local_fs $something_that_doesnt_exist +# Should-Start: $something_we_might_not_ship +# Required-Stop: $all +# Default-Start: 2 3 4 5 +# Default-Stop: +# Short-Description: Just a test script +# Description: The short description pretty much covers it. +### END INIT INFO + +. /lib/lsb/init-functions + +case "$1" in + start|stop|force-reload|restart|status|*) + echo hello world + ;; +esac diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers.init b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers.init new file mode 100644 index 0000000..847885c --- /dev/null +++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/debian/init.d-lsb-headers.init @@ -0,0 +1,23 @@ +#!/bin/sh + +set -e + +### BEGIN INIT INFO +# Provides: nothing $bad_facility +# Required-Start: mountall networking sysklogd +# Should-Start: portmap +# Required-Stop: mountnfs +# Default-Start: 0 6 X +# Default-Stop: S Y 0 6 +# Short-Description: Do nothing at all +# Short-Description: Do nothing at all +# Description: The short description pretty much covers it. +### END INIT INFO + +. /lib/lsb/init-functions + +case "$1" in + start|stop|force-reload|restart|status|*) + echo hello world! + ;; +esac diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/fill-values b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/fill-values new file mode 100644 index 0000000..0923808 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-lsb-headers/build-spec/fill-values @@ -0,0 +1,3 @@ +Skeleton: upload-native +Testname: init.d-lsb-headers +Description: Test tags related to init script LSB headers diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/eval/desc b/t/recipes/checks/init-d/init.d-lsb-headers/eval/desc new file mode 100644 index 0000000..9581842 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-lsb-headers/eval/desc @@ -0,0 +1,2 @@ +Testname: init.d-lsb-headers +Check: init-d diff --git a/t/recipes/checks/init-d/init.d-lsb-headers/eval/hints b/t/recipes/checks/init-d/init.d-lsb-headers/eval/hints new file mode 100644 index 0000000..8cfce94 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-lsb-headers/eval/hints @@ -0,0 +1,28 @@ +init.d-lsb-headers-virtual (binary): init.d-script-depends-on-unknown-virtual-facility $something_that_doesnt_exist [etc/init.d/init.d-lsb-headers-virtual] +init.d-lsb-headers-virtual (binary): init.d-script-depends-on-all-virtual-facility required-stop [etc/init.d/init.d-lsb-headers-virtual] +init.d-lsb-headers-parsing (binary): init.d-script-starts-in-stop-runlevel 0 [etc/init.d/init.d-lsb-headers-parsing] +init.d-lsb-headers-parsing (binary): init.d-script-possible-missing-stop 1 6 [etc/init.d/init.d-lsb-headers-parsing] +init.d-lsb-headers-parsing (binary): init.d-script-has-conflicting-start-stop 0 [etc/init.d/init.d-lsb-headers-parsing] +init.d-lsb-headers-missing (binary): init.d-script-possible-missing-stop 1 [etc/init.d/init.d-lsb-headers-missing] +init.d-lsb-headers-missing (binary): init.d-script-missing-start 4 [etc/init.d/init.d-lsb-headers-missing] +init.d-lsb-headers-missing (binary): init.d-script-missing-lsb-short-description [etc/init.d/init.d-lsb-headers-missing] +init.d-lsb-headers-local (binary): init.d-script-missing-dependency-on-local_fs required-start [etc/init.d/init.d-lsb-headers-local] +init.d-lsb-headers-all (binary): init.d-script-depends-on-all-virtual-facility should-start [etc/init.d/init.d-lsb-headers-all] +init.d-lsb-headers-all (binary): init.d-script-depends-on-all-virtual-facility required-stop [etc/init.d/init.d-lsb-headers-all] +init.d-lsb-headers-all (binary): init.d-script-depends-on-all-virtual-facility required-start [etc/init.d/init.d-lsb-headers-all] +init.d-lsb-headers (binary): non-virtual-facility-in-initd-script sysklogd -> $syslog [etc/init.d/init.d-lsb-headers] +init.d-lsb-headers (binary): non-virtual-facility-in-initd-script portmap -> $portmap [etc/init.d/init.d-lsb-headers] +init.d-lsb-headers (binary): non-virtual-facility-in-initd-script networking -> $network [etc/init.d/init.d-lsb-headers] +init.d-lsb-headers (binary): non-virtual-facility-in-initd-script mountnfs -> $remote_fs [etc/init.d/init.d-lsb-headers] +init.d-lsb-headers (binary): non-virtual-facility-in-initd-script mountall -> $local_fs [etc/init.d/init.d-lsb-headers] +init.d-lsb-headers (binary): init.d-script-starts-in-stop-runlevel 6 [etc/init.d/init.d-lsb-headers] +init.d-lsb-headers (binary): init.d-script-starts-in-stop-runlevel 0 [etc/init.d/init.d-lsb-headers] +init.d-lsb-headers (binary): init.d-script-provides-virtual-facility $bad_facility [etc/init.d/init.d-lsb-headers] +init.d-lsb-headers (binary): init.d-script-possible-missing-stop 1 [etc/init.d/init.d-lsb-headers] +init.d-lsb-headers (binary): init.d-script-has-duplicate-lsb-keyword short-description [etc/init.d/init.d-lsb-headers:13] +init.d-lsb-headers (binary): init.d-script-has-conflicting-start-stop 6 [etc/init.d/init.d-lsb-headers] +init.d-lsb-headers (binary): init.d-script-has-conflicting-start-stop 0 [etc/init.d/init.d-lsb-headers] +init.d-lsb-headers (binary): init.d-script-has-bad-stop-runlevel Y [etc/init.d/init.d-lsb-headers] +init.d-lsb-headers (binary): init.d-script-has-bad-start-runlevel X [etc/init.d/init.d-lsb-headers] +init.d-lsb-headers (binary): init.d-script-does-not-provide-itself [etc/init.d/init.d-lsb-headers] +init.d-lsb-headers (binary): init-d-script-stops-in-s-runlevel [etc/init.d/init.d-lsb-headers] diff --git a/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/debian/init b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/debian/init new file mode 100644 index 0000000..90c5dc7 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/debian/init @@ -0,0 +1,27 @@ +#!/bin/sh +# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing. +if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then + set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script +fi +### BEGIN INIT INFO +# Provides: init.d-script-contains-skeleton-template-content +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Example initscript +# Description: This file should be used to construct scripts to be +# placed in /etc/init.d. This example start a +# single forking daemon capable of writing a pid +# file. To get other behavoirs, implemend +# do_start(), do_stop() or other functions to +# override the defaults in /lib/init/init-d-script. +### END INIT INFO + +# Author: Foo Bar +# +# Please remove the "Author" lines above and replace them +# with your own name if you copy and modify this script. + +DESC="Description of the service" +DAEMON=/usr/sbin/daemonexecutablename diff --git a/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/fill-values b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/fill-values new file mode 100644 index 0000000..f0ac8fa --- /dev/null +++ b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/build-spec/fill-values @@ -0,0 +1,3 @@ +Skeleton: upload-native +Testname: init.d-script-contains-skeleton-template-content +Description: Test for scripts using the /etc/init.d/skeleton template diff --git a/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/desc b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/desc new file mode 100644 index 0000000..41a721e --- /dev/null +++ b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/desc @@ -0,0 +1,2 @@ +Testname: init.d-script-contains-skeleton-template-content +Check: init-d diff --git a/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/hints b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/hints new file mode 100644 index 0000000..963590d --- /dev/null +++ b/t/recipes/checks/init-d/init.d-script-contains-skeleton-template-content/eval/hints @@ -0,0 +1 @@ +init.d-script-contains-skeleton-template-content (binary): init.d-script-contains-skeleton-template-content [etc/init.d/init.d-script-contains-skeleton-template-content:23] diff --git a/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/install b/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/install new file mode 100644 index 0000000..2d8e757 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/install @@ -0,0 +1,3 @@ +foo.in /etc/init.d/ +README /etc/init.d/ +skeleton /etc/init.d/ diff --git a/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/links b/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/links new file mode 100644 index 0000000..a3bfd32 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/links @@ -0,0 +1 @@ +etc/init.d/foo etc/init.d/bar diff --git a/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/rules b/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/rules new file mode 100755 index 0000000..cacd977 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-script-registration/build-spec/debian/rules @@ -0,0 +1,9 @@ +#!/usr/bin/make -f + +%: + dh $@ + +override_dh_fixperms: + dh_fixperms + chmod -x debian/init.d-script-registration/etc/init.d/README + chmod -x debian/init.d-script-registration/etc/init.d/skeleton diff --git a/t/recipes/checks/init-d/init.d-script-registration/build-spec/fill-values b/t/recipes/checks/init-d/init.d-script-registration/build-spec/fill-values new file mode 100644 index 0000000..4ee8bc0 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-script-registration/build-spec/fill-values @@ -0,0 +1,3 @@ +Skeleton: upload-native +Testname: init.d-script-registration +Description: Test tags related to the registration of init scripts diff --git a/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/README b/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/README new file mode 100644 index 0000000..09dd11b --- /dev/null +++ b/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/README @@ -0,0 +1 @@ +Just a dummy file (normally with instructions), not an init script at all! diff --git a/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/foo.in b/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/foo.in new file mode 100644 index 0000000..9445298 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/foo.in @@ -0,0 +1,18 @@ +#!/bin/sh -e + +. /lib/lsb/init-functions + +case "$1" in + start) + ;; + stop) + ;; + reload) + ;; + restart|force-reload) + ;; + status) + ;; + *) + ;; +esac diff --git a/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/skeleton b/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/skeleton new file mode 100644 index 0000000..5984f06 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-script-registration/build-spec/orig/skeleton @@ -0,0 +1,2 @@ +The skeleton file looks like an init script, but we don't want to check it +like an init script. diff --git a/t/recipes/checks/init-d/init.d-script-registration/eval/desc b/t/recipes/checks/init-d/init.d-script-registration/eval/desc new file mode 100644 index 0000000..611bad5 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-script-registration/eval/desc @@ -0,0 +1,2 @@ +Testname: init.d-script-registration +Check: init-d diff --git a/t/recipes/checks/init-d/init.d-script-registration/eval/hints b/t/recipes/checks/init-d/init.d-script-registration/eval/hints new file mode 100644 index 0000000..cc784f9 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-script-registration/eval/hints @@ -0,0 +1,3 @@ +init.d-script-registration (binary): script-in-etc-init.d-not-registered-via-update-rc.d [etc/init.d/foo.in] +init.d-script-registration (binary): script-in-etc-init.d-not-registered-via-update-rc.d [etc/init.d/bar] +init.d-script-registration (binary): init.d-script-missing-lsb-section [etc/init.d/foo.in] diff --git a/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/links b/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/links new file mode 100644 index 0000000..2fe7261 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/links @@ -0,0 +1,2 @@ +/lib/init/upstart-job etc/init.d/lintian +/lib/init/upstart-job etc/init.d/lintian-unreg diff --git a/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/postinst b/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/postinst new file mode 100755 index 0000000..ed6bc65 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/postinst @@ -0,0 +1,4 @@ +#!/bin/sh +set -e +update-rc.d lintian defaults >/dev/null +#DEBHELPER# diff --git a/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/postrm b/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/postrm new file mode 100755 index 0000000..4bf5ee6 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-symlink/build-spec/debian/postrm @@ -0,0 +1,6 @@ +#!/bin/sh +set -e +if [ "$1" = purse ] ; then + update-rc.d lintian remove >/dev/null +fi +#DEBHELPER# diff --git a/t/recipes/checks/init-d/init.d-symlink/build-spec/fill-values b/t/recipes/checks/init-d/init.d-symlink/build-spec/fill-values new file mode 100644 index 0000000..f6ac70a --- /dev/null +++ b/t/recipes/checks/init-d/init.d-symlink/build-spec/fill-values @@ -0,0 +1,3 @@ +Skeleton: upload-native +Testname: init.d-symlink +Description: Check proper handling of symlinked init scripts diff --git a/t/recipes/checks/init-d/init.d-symlink/eval/desc b/t/recipes/checks/init-d/init.d-symlink/eval/desc new file mode 100644 index 0000000..5f98c29 --- /dev/null +++ b/t/recipes/checks/init-d/init.d-symlink/eval/desc @@ -0,0 +1,5 @@ +Testname: init.d-symlink +Test-Against: + init.d-script-not-included-in-package + init.d-script-not-marked-as-conffile +Check: init-d diff --git a/t/recipes/checks/init-d/init.d-symlink/eval/hints b/t/recipes/checks/init-d/init.d-symlink/eval/hints new file mode 100644 index 0000000..8d92c7c --- /dev/null +++ b/t/recipes/checks/init-d/init.d-symlink/eval/hints @@ -0,0 +1 @@ +init.d-symlink (binary): upstart-job-in-etc-init.d-not-registered-via-update-rc.d [etc/init.d/lintian-unreg] diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/changelog.in new file mode 100644 index 0000000..a12fc8c --- /dev/null +++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/changelog.in @@ -0,0 +1,57 @@ +maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low + + * Doing an upload for QA but I fail to give it a correct version number, + have some uploaders, and also fail to mention it... Bad me ;) + + -- Jeroen van Wolffelaar Sun, 18 Apr 2004 02:05:29 +0200 + +maintainer-scripts (6.1) unstable; urgency=low + + * I made this entry on my local PC, oops ;) + + -- Jeroen van Wolffelaar Sat, 21 Feb 2004 18:29:37 +0100 + +maintainer-scripts (6) unstable; urgency=low + + * added ldconfig calls to postrm to check test the postrm tests + from shared-libs + + -- Frank Lichtenheld Sat, 21 Feb 2004 18:29:36 +0100 + +maintainer-scripts (5) unstable; urgency=low + + * added bash style arrays to postinst, this one is for you Torsten (-: + + -- Sean 'Shaleh' Perry Fri, 30 Mar 2001 23:27:06 -0800 + +maintainer-scripts (4) unstable; urgency=low + + * added a here document to the prerm, along with two more bashisms + * made postrm a bash script to check that bash scripts are not searched + + -- Sean 'Shaleh' Perry Mon, 26 Feb 2001 13:02:57 -0800 + +maintainer-scripts (3) unstable; urgency=low + + * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this + thinking the '||' was a argument. + * also added an invalid call to '. foo bar' + * postinst now has a space between the #! and /bin/sh to test the interpreter + checking code. + + -- Sean 'Shaleh' Perry Tue, 9 Jan 2001 23:06:25 -0800 + +maintainer-scripts (2) unstable; urgency=low + + * Fix location of changelog. + * prerm and postrm do 'update-alternatives --remove'; should only complain + about postrm. + + -- Colin Watson Fri, 29 Dec 2000 06:01:24 +0000 + +maintainer-scripts (1) unstable; urgency=low + + * Initial version + * postinst and prerm set the usr/doc symlink + + -- Sean 'Shaleh' Perry Thu, 16 Nov 2000 09:11:40 -0800 diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/control.in new file mode 100644 index 0000000..63dd2db --- /dev/null +++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/control.in @@ -0,0 +1,18 @@ +Source: maintainer-scripts +Section: misc +Priority: optional +Maintainer: QA group +Uploaders: Anyone but Jeroen +Build-Depends: [% $build_depends %] +Standards-Version: 3.1.1 +Rules-Requires-Root: binary-targets +XS-Dm-Upload-Allowed: Yes + +Package: maintainer-scripts +Architecture: [% $package_architecture %] +Depends: test +Description: test lintian's maintainer script checks + 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/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/postinst new file mode 100644 index 0000000..e56ed3b --- /dev/null +++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/postinst @@ -0,0 +1,181 @@ +#! /bin/sh -e + +if [ "$1" = "configure" ]; then + if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then + ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts + fi +fi + +# valid +. /usr/share/lintian/shell || exit 0 +. /usr/share/lintian/shell >/dev/null +. /usr/share/lintian/shell 2>/dev/null +. /usr/share/lintian/shell /dev/null +update-rc.d $FOO defaults +update-rc.d foo remove + +# valid +FOO=/tmp +FOO=/var/tmp +: ${FOO:=/tmp} +FOO=`mktemp /tmp/scripts.XXXXXX` +rm "$FOO" +FOO=`tempfile -n/tmp/scripts.tmp` +mkdir /var/tmp/scripts +FOO="/tmp/false.positive.XXXXXX" +# invalid +echo foo >>/tmp/scripts.tmp +rm /tmp/scripts.tmp +rmdir /var/tmp/scripts + +# invalid, maintainer-script-hides-init-failure +invoke-rc.d foo start || exit 0 + +# The right way to invoke an rc script +if which invoke-rc.d >/dev/null 2>&1; then + invoke-rc.d package start +else + /etc/init.d/package start +fi + +# Example ucf invocation. +ucf /usr/share/foo/configuration /etc/foo.conf + +# Calling gconftool directly. +gconftool-2 --makefile-install-rule foo.schema + +# Calling gconf-schemas with no dependency. +gconf-schemas --register foo.schema + +# Calling update-xmlcatalog with no dependency. +update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \ + --package maintainer-scripts --root + +# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old +# recipe from the dpkg wiki that should be replaced with dpkg-query. +sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \ + /var/lib/dpkg/status + +# Don't modify these files. +echo 'broken 6714/tcp' >> /etc/services +cp /nonexistent /etc/protocols +mv /usr/share/doc/rpc /etc/rpc + +# But this is okay. +cp /etc/protocols /etc/protocols.new + +# This is also wrong. +echo 'broken' > /etc/inetd.conf +cp /etc/inetd.conf.new /etc/inetd.conf + +# But this is fine. +cp /etc/inetd.conf /srv/chroot/etc/inetd.conf + +# Deprecated +install-sgmlcatalog --install package +install-sgmlcatalog --remove package + +# This too is a heredoc. +some-program > /etc/config-file <<'EOF' +echo "All of the array is: ${H[@]}" +EOF + +# But this isn't. +cat '</dev/null; then + ucf --purge /etc/foo.conf +fi + +# This isn't allowed. +rm /tmp/foo /dev/device +rm /dev/device1 + +# But this is okay. +rm /tmp/foo > /dev/null + +# Not allowed here even with remove. +install-sgmlcatalog --remove package diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/preinst new file mode 100644 index 0000000..6058978 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/preinst @@ -0,0 +1,18 @@ +#!/bin/sh + +update-rc.d foo remove +update-rc.d bar defaults + +# Obsolete dpkg assertions. +dpkg --assert-support-predepends || exit 1 +dpkg --assert-working-epoch || exit 1 +dpkg --assert-long-filenames || exit 1 +dpkg --assert-multi-conrep || exit 1 + +/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status + +# continuation lines +update-alternatives --install /usr/bin/fakeroot fakeroot \ + /usr/bin/fakeroot-ng 5 \ + --slave /usr/share/man/man1/fakeroot.1.gz \ + fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/prerm new file mode 100644 index 0000000..076ecaf --- /dev/null +++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/prerm @@ -0,0 +1,188 @@ +#!/bin/sh + +if [ "$1" != "upgrade" ]; then + update-alternatives --remove dummy /usr/bin/dummy-alternative +fi + +if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the +n + rm -f /usr/doc/maintainer-scripts +fi + +cat </dev/null +} + +source $FOO + +trap "echo hi" EXIT HUP 3 + +if [[ "$2" = "purge" ]]; then + kill -HUP $$ +fi + +#this is ok though +if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then + echo 1 +fi + +update-rc.d foo remove + +# More false positives for bashism checks. None of these are errors. +echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//' +echo "$line" | grep -q "${fonts},${foo}" +echo '$[1+2]' +printf "foo |& bar" +perl -e "print q( kill -HUP $? )" + +# Still catch disallowed expansions in double-quotes, though. +echo "${line:3:1}" + +# The wrong way to run an init script (no invoke-rc.d). +/etc/init.d/package stop + +# This is the only install-sgmlcatalog call that's allowed. +install-sgmlcatalog --quiet --remove package + +# More bashisms checks + +read -x foo +read -x +read -r foo +read foo +read + +echo "a\\b" +echo 'a\nb' + +echo "${UID}" +echo "$EUID" +echo "$SHLVL" +echo "$DIRSTACK" +echo "$SECONDS" +echo "$BASH" +echo "$BASH_FOO" +echo "$SHELLOPTS" +echo "$PIPESTATUS" + +bar="$(cut '-d|' -f2 <<< "$foo")" + +VAR=1 +VAR+=a + +echos() { + echo -n -e "bar" + echo -e -n "bar" + echo -en "bar" + echo -ne "bar" + echo "bar" + echo "echo -e foo" +} + +ech.os() { + echo foo >& 2 + echo foo >&bar + echo foo >& bar +} + +echoes() { + echo "abc\nxyz" + echo 'xyz\rabc' + echo foo\cbar + + echo -e "abc\nxyz" + echo -net 'xyz\rabc' + echo -e foo\cbar +} + +foobar.() { + suspend x + suspended x + caller x + complete x + compgen x + declare -a foo +} + +.foobar() { + typeset -x bar + disown 1 + builtin foo + set -B + alias -p + unalias -a +} + +IFS="()" + +ulimit +shopt +type -v bar +time ls +dirs +diff <(tac a) <(tac b) + +pushd + +local foo=bar +local -x foo + +popd + +readonly -f + +echo bar > /dev/tcp +export x +export -x x +export -p x + +sh -x +sh -D +sh --foo +sh +O + +# Brace expansion checks +echo {a,b} +echo {abc},{bcd} + +foobar() +{ + # This is a function +} + + foo.bar() +( + # This is a function with a bad name +) + +foobar@() +{ + # As is this +} + +# This is ok +read -r foo +# but these aren't +read -r +read -p "Would you like to restart the service?" foo bar +read --fish + +set -e + +source "$BAR" +source '$BAR' +source ~/bar +source a diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/rules new file mode 100755 index 0000000..5fcef00 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/rules @@ -0,0 +1,35 @@ +#!/usr/bin/make -f + +build-arch: + +build-indep: + +build: build-arch build-indep + +binary-arch: + +binary-indep: + install -d debian/tmp/DEBIAN + install -m 0755 debian/preinst debian/tmp/DEBIAN + install -m 0755 debian/postinst debian/tmp/DEBIAN + install -m 0755 debian/prerm debian/tmp/DEBIAN + install -m 0755 debian/postrm debian/tmp/DEBIAN + install -m 0644 debian/triggers debian/tmp/DEBIAN + install -d debian/tmp/usr/share/doc/maintainer-scripts + install -m 0644 debian/changelog \ + debian/tmp/usr/share/doc/maintainer-scripts/changelog + gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog + dpkg-gencontrol -isp + dpkg --build debian/tmp .. + +binary: binary-arch binary-indep + +# Make sure we see dh_clean even in a rule clean depends on. Not the point of +# this test suite, but a convenient place to put it. +clean: clean1 clean2 clean3 +clean1: +clean2: + dh_clean +clean3: + +.PHONY: build-arch build-indep build binary-arch binary-indep binary clean diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/triggers new file mode 100644 index 0000000..f627094 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/triggers @@ -0,0 +1,4 @@ +# Example triggers file +activate foo + +interest bar diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/watch new file mode 100644 index 0000000..430eea3 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/debian/watch @@ -0,0 +1,11 @@ +# A whitespace is fine for uscan: + version=5 + +# Following line should not be matched: +#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \ +# Following one is incorrect, there's a missing backslash at the end +opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/ + +# 'active' is useless here, but it works anyway +options=active \ +http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/fill-values new file mode 100644 index 0000000..c281e87 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/build-spec/fill-values @@ -0,0 +1,6 @@ +Skeleton: upload-non-native +Testname: legacy-maintainer-scripts +Source: maintainer-scripts +Version: 7+dfsg-0.1 +Description: Legacy test "maintainer-scripts" +Extra-Build-Depends: dash (>= 0.5.10.2) diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/desc new file mode 100644 index 0000000..6386459 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/desc @@ -0,0 +1,3 @@ +Testname: legacy-maintainer-scripts +Test-Against: init.d-script-not-marked-as-conffile +Check: init-d diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/hints new file mode 100644 index 0000000..a988728 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/hints @@ -0,0 +1,6 @@ +maintainer-scripts (binary): prerm-calls-updaterc.d foo [prerm:42] +maintainer-scripts (binary): preinst-calls-updaterc.d bar defaults [preinst:4] +maintainer-scripts (binary): postrm-does-not-call-updaterc.d-for-init.d-script etc/init.d/foo [postrm] +maintainer-scripts (binary): postrm-contains-additional-updaterc.d-calls etc/init.d/bar [postrm] +maintainer-scripts (binary): output-of-updaterc.d-not-redirected-to-dev-null bar [postrm:27] +maintainer-scripts (binary): init.d-script-not-included-in-package etc/init.d/foo diff --git a/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/post-test new file mode 100644 index 0000000..faeef0b --- /dev/null +++ b/t/recipes/checks/init-d/legacy-maintainer-scripts/eval/post-test @@ -0,0 +1 @@ +s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/changelog.in b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/changelog.in new file mode 100644 index 0000000..935c633 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/changelog.in @@ -0,0 +1,41 @@ +scripts ([% $version %]) [% $distribution %]; urgency=low + + * I'm also not able to write my name. + * Added a script in /etc/Xsession.d + * Bizarre version number courtesy of + https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare + + -- Mark 'HE' Brokschmitt Thu, 23 Jun 2005 14:32:39 +0200 + +scripts (5-1) unstable; urgency=low + + * I'm making a typo in my own name... And I want lintian to warn me about + it. + + -- Jeroen van Wolffelaar Sun, 18 Apr 2004 02:26:34 +0200 + +scripts (4-1) unstable; urgency=low + + * Add new example to check that not executable files with a shebang line + called *in don't trigger the script-not-executable warning. + + -- Marc 'HE' Brockschmidt Wed, 14 Apr 2004 19:44:04 +0200 + +scripts (3-3) unstable; urgency=low + + * Add suidperlfoo and some code in debian/rules to + check the new suidperl checks + + -- Frank Lichtenheld Wed, 31 Mar 2004 21:06:20 +0000 + +scripts (2-1) unstable; urgency=low + + * Add tkfoo script for tk checkings + + -- Lintian Maintainers Sat, 21 Feb 2004 17:13:36 +0100 + +scripts (1-0) unstable; urgency=low + + * Initial version + + -- Lintian Maintainers Sat, 10 Feb 2001 15:37:31 -0800 diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/control.in b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/control.in new file mode 100644 index 0000000..75a521f --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/control.in @@ -0,0 +1,16 @@ +Source: scripts +Section: interpreters +Priority: optional +Maintainer: Lintian Maintainers +Uploaders: Jeroen van Wolfelaar , Marc 'HE' Brockschmidt +Build-Depends-Indep: dpatch +Standards-Version: 3.2.1 + +Package: scripts +Architecture: [% $package_architecture %] +Depends: test, ruby1.8, build-essential, libssl0.9.7, php7.0-cli +Recommends: tk8.4 | wish +Description: test lintian's script file checks + 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. diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/copyright b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/copyright new file mode 100644 index 0000000..ad8a119 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/copyright @@ -0,0 +1,5 @@ +This file contains the phrase "under the same terms as Perl itself" to +trigger warnings about not having common-licenses references. + +This file contains the phrase "public domain" which should suppress +warnings about no copyright date. diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list new file mode 100644 index 0000000..3b9d37e --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list @@ -0,0 +1,11 @@ +01_not_here_right_now.dpatch + +# some comment +/* some more + elaborate comment + which needs DPATCH_OPTION_CPP=1 + */02_i_dont_have_a_description.patch 03_specified_without_dpatch + +// and again a comment + +04_i_dont_have_a_description_either.patch diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list.sparc b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list.sparc new file mode 100644 index 0000000..8b47ab3 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00list.sparc @@ -0,0 +1 @@ +01_some_other_patch_thats_not_in_the_package.dpatch diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00options b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00options new file mode 100644 index 0000000..57ffeb6 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/00options @@ -0,0 +1 @@ +DPATCH_OPTION_CPP=1 diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch new file mode 100644 index 0000000..9279c1b --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/02_i_dont_have_a_description.patch @@ -0,0 +1,7 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt > +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch new file mode 100644 index 0000000..8303ac6 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/03_specified_without_dpatch.dpatch @@ -0,0 +1,5 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## All lines beginning with `## DP:' are a description of the patch. +## DP: Listed in 00list without .dpatch suffix. + +@DPATCH@ diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch new file mode 100644 index 0000000..b603f16 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/patches/04_i_dont_have_a_description_either.patch @@ -0,0 +1,7 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 04_i_dont_have_a_description_either.patch by Adam D. Barratt +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: + +@DPATCH@ diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postinst b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postinst new file mode 100644 index 0000000..7c5baf1 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postinst @@ -0,0 +1,14 @@ +#!/bin/sh + +if [ -x "/etc/init.d/lsb-broken" ] ; then + update-rc.d lsb-broken defaults >/dev/null +fi +if [ -x "/etc/init.d/no-lsb" ] ; then + update-rc.d no-lsb defaults >/dev/null +fi +if [ -x "/etc/init.d/skeleton" ] ; then + update-rc.d skeleton defaults >/dev/null +fi +if [ -x "/etc/init.d/lsb-other" ] ; then + update-rc.d lsb-other defaults >/dev/null +fi diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postrm b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postrm new file mode 100644 index 0000000..8fa75a2 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/postrm @@ -0,0 +1,9 @@ +#!/bin/sh -e + +if [ "$1" = purge ] ; then + update-rc.d lsb-broken remove >/dev/null + update-rc.d no-lsb remove >/dev/null + update-rc.d skeleton remove >/dev/null + update-rc.d lsb-other remove >/dev/null + update-rc.d lsb-other remove >/dev/null +fi diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/preinst b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/preinst new file mode 100644 index 0000000..0799557 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/preinst @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e +set -x + +# +# Some comments here +# + +# This serves as an example of an "empty" script, so +# please do not add any real code here, thank you :) + +#DEBHELPER# + +exit 0 diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/rules b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/rules new file mode 100755 index 0000000..ee3677e --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/rules @@ -0,0 +1,105 @@ +#!/usr/bin/make -f + +tmp=debian/tmp + +build-arch: + echo "Hi, in an arch: all package, I am a bug!" + +build-indep: + +build: build-arch build-indep + +binary-arch: + echo "Hi, in an arch: all package, I am a bug!" + +binary-indep: + install -d $(tmp)/usr/bin/ + install -d $(tmp)/etc/X11/Xsession.d/ + install -d $(tmp)/etc/init.d/ + install -d $(tmp)/etc/csh/login.d/ + install -d $(tmp)/etc/fish.d/ + install -d $(tmp)/usr/share/scripts/ + install -d $(tmp)/usr/share/doc/scripts/ + install -d $(tmp)/usr/lib/cgi-bin + install -d $(tmp)/usr/src/scripts + install -d $(tmp)/DEBIAN + + install -m 755 csh-foo $(tmp)/etc/csh/login.d/ + install -m 755 envfoo $(tmp)/usr/bin/ + install -m 755 fish-foo $(tmp)/etc/fish.d/ + install -m 755 jruby-broken $(tmp)/usr/bin/ + install -m 755 perlfoo $(tmp)/usr/bin/ + install -m 755 rubyfoo $(tmp)/usr/bin/ +# This doesn't use "env" but should also trigger script-in-usr-share-doc + install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/ + install -m 755 make-foo $(tmp)/usr/bin/ + install -m 755 lefty-foo $(tmp)/usr/bin/ + install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2 + install -m 755 sh-broken $(tmp)/usr/bin/ + install -m 4555 suidperlfoo $(tmp)/usr/bin/ + install -m 755 tkfoo $(tmp)/usr/bin/ + install -m 755 wishfoo $(tmp)/usr/bin/ + install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/ + +# Permissions here aren't part of what's being tested, but let us exercise +# some other errors. + install -m 755 perl-bizarre-1 $(tmp)/usr/bin/ + install -m 750 perl-bizarre-2 $(tmp)/usr/bin/ + install -m 754 perl-bizarre-3 $(tmp)/usr/bin/ + install -m 705 guile-bizarre $(tmp)/usr/bin/ + +# First one should produce a warning; second one shouldn't. + install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/ + install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/ + + install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton + install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb + install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken + install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other + + install -m 755 phpfoo $(tmp)/usr/share/scripts/ + sed 's/php$$/php7.0/' phpfoo > $(tmp)/usr/share/scripts/php7.0foo + chmod 755 $(tmp)/usr/share/scripts/php7.0foo + + install -m 755 phpenvfoo $(tmp)/usr/share/scripts/ + sed 's/php$$/php7.0/' phpenvfoo > $(tmp)/usr/share/scripts/php7.0envfoo + chmod 755 $(tmp)/usr/share/scripts/php7.0envfoo + + echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in + chmod 644 $(tmp)/usr/share/scripts/foobar.in + + touch $(tmp)/usr/share/scripts/mono.exe + chmod 755 $(tmp)/usr/share/scripts/mono.exe + + echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar + chmod 755 $(tmp)/usr/share/scripts/foo\$$bar + + echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script + chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script + + echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh + chmod 755 $(tmp)/usr/bin/test.sh + + + dh_testroot # dummy to test missing debhelper dependency + + + install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian + gzip -n -9 $(tmp)/usr/share/doc/scripts/changelog.Debian + install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright + + install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles + install -m 755 debian/preinst $(tmp)/DEBIAN/preinst + install -m 755 debian/postinst $(tmp)/DEBIAN/postinst + install -m 755 debian/postrm $(tmp)/DEBIAN/postrm + touch $(tmp)/DEBIAN/prerm + chmod 755 $(tmp)/DEBIAN/prerm + dpkg-gencontrol -isp + dpkg --build $(tmp) .. + +binary: binary-arch binary-indep + +clean: + rm -rf debian/files $(tmp) debian/substvars + +.PHONY: build-arch build-indep build binary-arch binary-indep binary clean diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/scripts.conffiles b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/scripts.conffiles new file mode 100644 index 0000000..01a371a --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/scripts.conffiles @@ -0,0 +1,6 @@ +/etc/init.d/lsb-broken +/etc/init.d/lsb-other +/etc/init.d/no-lsb +/etc/X11/Xsession.d/xsession-test +/etc/csh/login.d/csh-foo +/etc/fish.d/fish-foo diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/watch b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/watch new file mode 100644 index 0000000..dba5815 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/debian/watch @@ -0,0 +1,8 @@ +# watch file with upstream version mangling + +version=2 +opts="uversionmangle=s/$/ds/" \ +http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate + +version=3 +http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate \ No newline at end of file diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/fill-values b/t/recipes/checks/init-d/legacy-scripts/build-spec/fill-values new file mode 100644 index 0000000..8a68457 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/fill-values @@ -0,0 +1,6 @@ +Testname: legacy-scripts +Source: scripts +Version: 6ds-1ubuntu0.5.10.1 +Package-Architecture: all +Skeleton: upload-non-native +Description: Legacy test "scripts" diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/csh-foo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/csh-foo new file mode 100644 index 0000000..eaf47a1 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/csh-foo @@ -0,0 +1,2 @@ +#! /bin/csh + diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/envfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/envfoo new file mode 100755 index 0000000..e005037 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/envfoo @@ -0,0 +1,4 @@ +#! /bin/env python + +if __name__ == '__main__': + print 'Hi there' diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/fish-foo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/fish-foo new file mode 100644 index 0000000..7f59139 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/fish-foo @@ -0,0 +1,2 @@ +#! /usr/bin/fish + diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/gccbug.dpatch b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/gccbug.dpatch new file mode 100755 index 0000000..65cbf37 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/gccbug.dpatch @@ -0,0 +1,39 @@ +#! /bin/sh -e + +# DP: Use sensible-editor instead of vi as fallback editor + +# Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being +# a valid dpatch, so don't warn about it if it's in /usr/src. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100 ++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100 +@@ -134,7 +134,7 @@ + # If they don't have a preferred editor set, then use + if [ -z "$VISUAL" ]; then + if [ -z "$EDITOR" ]; then +- EDIT=vi ++ EDIT=/usr/bin/sensible-editor + else + EDIT="$EDITOR" + fi diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/guile-bizarre b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/guile-bizarre new file mode 100644 index 0000000..70e2c74 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/guile-bizarre @@ -0,0 +1,6 @@ +#! /bin/sh +# -*- scheme -*- +exec guile -s $0 $* +# Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1) +# Tests script_is_evil_and_wrong +!# diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-broken b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-broken new file mode 100644 index 0000000..e4dfa92 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-broken @@ -0,0 +1,34 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: bad-lsb +# Required-Start: $local_fs $remote_fs +# Required-Stop: +# Default-Start: 1 2 3 4 5 +# Default-Stop: S 0 1 6 X +# Short-Description: Example Lintian initscript +# but this can't be continued +# Description: An example of a bad LSB section in an init script. +# This continuation is allowed (with spaces). +# This one is too (with tabs). +# X-Debian-Foo: Some unknown but valid keyword. +# Foo: Some invalid keyword. + +# Whoops, no terminating line. + +# And then we have this duplicate section. +### BEGIN INIT INFO +# Required-Start: This one doesn't count. +### END INIT INFO + +# Hey, look at all of those missing actions! But stop isn't missing. +case "$1" in + start|stop) + echo "Blah" + ;; + *) + echo "Usage: foo start" >&2 + exit 3 + ;; +esac + +: diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-other b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-other new file mode 100644 index 0000000..adb4795 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-lsb-other @@ -0,0 +1,22 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: lsb-other +# Required-Start: $local_fs $remote_fs +# Required-Stop: $local_fs $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Description: This is another LSB script test, which has a missing +# Short-Description. +### END INIT INFO + +case "$1" in + start|stop|restart|reload|force-reload) + echo "Blah" + ;; + *) + echo "Usage: foo start" >&2 + exit 3 + ;; +esac + +: diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-no-lsb b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-no-lsb new file mode 100644 index 0000000..6b994dd --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-no-lsb @@ -0,0 +1,17 @@ +#! /bin/sh +# No LSB section, but otherwise okay. (Well, the messages are bad, but we +# don't check that yet.) + +case "$1" in + start) + echo "Blah starting" + ;; + stop) + echo "Blah stopping" + ;; + restart|force-reload) + echo "Blah restarting" + ;; +esac + +: diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-skeleton b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-skeleton new file mode 100644 index 0000000..c868508 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/init-skeleton @@ -0,0 +1,150 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: skeleton +# Required-Start: $local_fs $remote_fs +# Required-Stop: $local_fs $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: S 0 1 6 +# Short-Description: Example Lintian initscript +# Description: This file should be used to construct scripts to be +# placed in /etc/init.d. +### END INIT INFO + +# Do NOT "set -e" + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/usr/sbin:/usr/bin:/sbin:/bin +DESC="Description of the service" +NAME=daemonexecutablename +DAEMON=/usr/sbin/$NAME +DAEMON_ARGS="--options args" +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# Load the VERBOSE setting and other rcS variables +[ -f /etc/default/rcS ] && . /etc/default/rcS + +# Define LSB log_* functions. +# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. +. /lib/lsb/init-functions + +# +# Function that starts the daemon/service +# +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ + || return 1 + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ + $DAEMON_ARGS \ + || return 2 + # Add code here, if necessary, that waits for the process to be ready + # to handle requests from services started subsequently which depend + # on this one. As a last resort, sleep for some time. +} + +# +# Function that stops the daemon/service +# +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME + RETVAL="$?" + [ "$RETVAL" = 2 ] && return 2 + # Wait for children to finish too if this is a daemon that forks + # and if the daemon is only ever run from this initscript. + # If the above conditions are not satisfied then add some other code + # that waits for the process to drop all resources that could be + # needed by services started subsequently. A last resort is to + # sleep for some time. + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON + [ "$?" = 2 ] && return 2 + # Many daemons don't delete their pidfiles when they exit. + rm -f $PIDFILE + return "$RETVAL" +} + +# +# Function that sends a SIGHUP to the daemon/service +# +do_reload() { + # + # If the daemon can reload its configuration without + # restarting (for example, when it is sent a SIGHUP), + # then implement that here. + # + start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME + return 0 +} + +case "$1" in + start) + [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + stop) + [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + #reload|force-reload) + # + # If do_reload() is not implemented then leave this commented out + # and leave 'force-reload' as an alias for 'restart'. + # + #log_daemon_msg "Reloading $DESC" "$NAME" + #do_reload + #log_end_msg $? + #;; + restart|force-reload) + # + # If the "reload" option is implemented then remove the + # 'force-reload' alias + # + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac + ;; + *) + #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 + exit 3 + ;; +esac + +: diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/jruby-broken b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/jruby-broken new file mode 100644 index 0000000..56f574d --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/jruby-broken @@ -0,0 +1,2 @@ +#!/usr/bin/jruby +# There's no non-versioned jruby, so this should be an error. diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/lefty-foo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/lefty-foo new file mode 100644 index 0000000..52c003e --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/lefty-foo @@ -0,0 +1,2 @@ +#!/usr/local/bin/lefty + diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/make-foo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/make-foo new file mode 100644 index 0000000..6b787b5 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/make-foo @@ -0,0 +1,3 @@ +#!/usr/bin/make + + diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-1 b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-1 new file mode 100644 index 0000000..fc632c8 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-1 @@ -0,0 +1,11 @@ +#! /bin/sh +eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \ +;exec perl -x -S -- "$0" ${1+"$@"};#'if 0; +eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+ +#!perl -w +package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1; +# This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003. +# Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib + +# The above was actually seen in the wild and stresses the +# script_is_evil_and_wrong test. diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-2 b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-2 new file mode 100644 index 0000000..afd9cfe --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-2 @@ -0,0 +1,7 @@ +#!/bin/sh +eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}' + if $running_under_some_shell; + +# I'm someone following perlrun except without using the Perl #! line. +# Now something to choke bash. +while (<>) { if (/%#/) { print } } diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-3 b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-3 new file mode 100644 index 0000000..44baf75 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perl-bizarre-3 @@ -0,0 +1,6 @@ +eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}' +& eval 'exec /usr/bin/perl -wS $0 $argv:q' + if $running_under_some_shell; + +# More utterly bizarreness from perlrun. This one even doesn't work if +# there's a valid #! line on the first line. I don't understand why.... diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perlfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perlfoo new file mode 100644 index 0000000..5b27ed0 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/perlfoo @@ -0,0 +1,3 @@ +#! /usr/bin/perl + +print "Hello, World!"; diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpenvfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpenvfoo new file mode 100644 index 0000000..cbbfb2e --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpenvfoo @@ -0,0 +1,7 @@ +#!/usr/bin/env php + + +Dumb PHP script + + + diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpfoo new file mode 100644 index 0000000..e0595e6 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/phpfoo @@ -0,0 +1,7 @@ +#!/usr/bin/php + + +Dumb PHP script + + + diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/rubyfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/rubyfoo new file mode 100644 index 0000000..8024605 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/rubyfoo @@ -0,0 +1,4 @@ +#!/bin/ruby1.8 + +# Ok, that example is really pathetic, but until we have +# some better code in checks/scripts, it will do diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/sh-broken b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/sh-broken new file mode 100644 index 0000000..7b79074 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/sh-broken @@ -0,0 +1,2 @@ +#!/bin/sh +if fi diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/suidperlfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/suidperlfoo new file mode 100644 index 0000000..bcbc471 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/suidperlfoo @@ -0,0 +1,3 @@ +#! /usr/bin/suidperl + +print "Hello, World!"; diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/tkfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/tkfoo new file mode 100755 index 0000000..533595a --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/tkfoo @@ -0,0 +1,31 @@ +#!/bin/sh +# +# Insane amount of empty lines and comments + +# +# +# +# + +# +# + +# +# +# + +# +# + +# +# This line makes the next one a comment in Tcl \ +exec wish "$0" -- ${1+"$@"} + +# lintian should not check the following for syntax +# if it detects the line above correctly +# Code snippet taken from eTkTab + +if { [array names prefs keybindings] != "" } { + # Read in the file + array set unparsed_bindings [ read_settings_file $prefs(keybindings)] +} diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/wishfoo b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/wishfoo new file mode 100644 index 0000000..035c9ad --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/wishfoo @@ -0,0 +1,4 @@ +#!/usr/bin/wish +# +# This is not actually a wish script, here to force a test of wish +# dependencies. diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/xsession-test b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/xsession-test new file mode 100644 index 0000000..ca49d72 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/orig/xsession-test @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "Foo." diff --git a/t/recipes/checks/init-d/legacy-scripts/build-spec/pre-build b/t/recipes/checks/init-d/legacy-scripts/build-spec/pre-build new file mode 100755 index 0000000..b5649a8 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/build-spec/pre-build @@ -0,0 +1,5 @@ +#!/bin/sh + +DIR="$1" + +rm -f "$DIR/debian/compat" diff --git a/t/recipes/checks/init-d/legacy-scripts/eval/desc b/t/recipes/checks/init-d/legacy-scripts/eval/desc new file mode 100644 index 0000000..70aec81 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/eval/desc @@ -0,0 +1,2 @@ +Testname: legacy-scripts +Check: init-d diff --git a/t/recipes/checks/init-d/legacy-scripts/eval/hints b/t/recipes/checks/init-d/legacy-scripts/eval/hints new file mode 100644 index 0000000..8b3fba8 --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/eval/hints @@ -0,0 +1,21 @@ +scripts (binary): init.d-script-not-marked-as-conffile etc/init.d/skeleton +scripts (binary): init.d-script-missing-lsb-short-description [etc/init.d/lsb-other] +scripts (binary): init.d-script-missing-lsb-section [etc/init.d/no-lsb] +scripts (binary): init.d-script-missing-lsb-keyword required-start [etc/init.d/lsb-broken] +scripts (binary): init.d-script-has-unterminated-lsb-section [etc/init.d/lsb-broken:15] +scripts (binary): init.d-script-has-unknown-lsb-keyword foo [etc/init.d/lsb-broken:14] +scripts (binary): init.d-script-has-duplicate-lsb-section [etc/init.d/lsb-broken:19] +scripts (binary): init.d-script-has-conflicting-start-stop 1 [etc/init.d/lsb-broken] +scripts (binary): init.d-script-has-bad-stop-runlevel X [etc/init.d/lsb-broken] +scripts (binary): init.d-script-has-bad-lsb-line [etc/init.d/lsb-broken:9] +scripts (binary): init.d-script-has-bad-lsb-line [etc/init.d/lsb-broken:4] +scripts (binary): init.d-script-does-not-provide-itself [etc/init.d/lsb-broken] +scripts (binary): init.d-script-does-not-implement-status-option [etc/init.d/skeleton] +scripts (binary): init.d-script-does-not-implement-status-option [etc/init.d/no-lsb] +scripts (binary): init.d-script-does-not-implement-status-option [etc/init.d/lsb-other] +scripts (binary): init.d-script-does-not-implement-status-option [etc/init.d/lsb-broken] +scripts (binary): init.d-script-does-not-implement-required-option restart [etc/init.d/lsb-broken] +scripts (binary): init.d-script-does-not-implement-required-option force-reload [etc/init.d/lsb-broken] +scripts (binary): init-d-script-stops-in-s-runlevel [etc/init.d/skeleton] +scripts (binary): init-d-script-stops-in-s-runlevel [etc/init.d/lsb-broken] +scripts (binary): duplicate-updaterc.d-calls-in-postrm lsb-other [postrm:8] diff --git a/t/recipes/checks/init-d/legacy-scripts/eval/post-test b/t/recipes/checks/init-d/legacy-scripts/eval/post-test new file mode 100644 index 0000000..faeef0b --- /dev/null +++ b/t/recipes/checks/init-d/legacy-scripts/eval/post-test @@ -0,0 +1 @@ +s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/changelog.in b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/changelog.in new file mode 100644 index 0000000..a12fc8c --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/changelog.in @@ -0,0 +1,57 @@ +maintainer-scripts ([% $version %]) [% $distribution %]; urgency=low + + * Doing an upload for QA but I fail to give it a correct version number, + have some uploaders, and also fail to mention it... Bad me ;) + + -- Jeroen van Wolffelaar Sun, 18 Apr 2004 02:05:29 +0200 + +maintainer-scripts (6.1) unstable; urgency=low + + * I made this entry on my local PC, oops ;) + + -- Jeroen van Wolffelaar Sat, 21 Feb 2004 18:29:37 +0100 + +maintainer-scripts (6) unstable; urgency=low + + * added ldconfig calls to postrm to check test the postrm tests + from shared-libs + + -- Frank Lichtenheld Sat, 21 Feb 2004 18:29:36 +0100 + +maintainer-scripts (5) unstable; urgency=low + + * added bash style arrays to postinst, this one is for you Torsten (-: + + -- Sean 'Shaleh' Perry Fri, 30 Mar 2001 23:27:06 -0800 + +maintainer-scripts (4) unstable; urgency=low + + * added a here document to the prerm, along with two more bashisms + * made postrm a bash script to check that bash scripts are not searched + + -- Sean 'Shaleh' Perry Mon, 26 Feb 2001 13:02:57 -0800 + +maintainer-scripts (3) unstable; urgency=low + + * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this + thinking the '||' was a argument. + * also added an invalid call to '. foo bar' + * postinst now has a space between the #! and /bin/sh to test the interpreter + checking code. + + -- Sean 'Shaleh' Perry Tue, 9 Jan 2001 23:06:25 -0800 + +maintainer-scripts (2) unstable; urgency=low + + * Fix location of changelog. + * prerm and postrm do 'update-alternatives --remove'; should only complain + about postrm. + + -- Colin Watson Fri, 29 Dec 2000 06:01:24 +0000 + +maintainer-scripts (1) unstable; urgency=low + + * Initial version + * postinst and prerm set the usr/doc symlink + + -- Sean 'Shaleh' Perry Thu, 16 Nov 2000 09:11:40 -0800 diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/config b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/config new file mode 100644 index 0000000..29abeba --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/config @@ -0,0 +1,3 @@ +#!/usr/bin/python + +# I use python, but that's not what I'm supposed to be allowed to use diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/control.in b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/control.in new file mode 100644 index 0000000..63dd2db --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/control.in @@ -0,0 +1,18 @@ +Source: maintainer-scripts +Section: misc +Priority: optional +Maintainer: QA group +Uploaders: Anyone but Jeroen +Build-Depends: [% $build_depends %] +Standards-Version: 3.1.1 +Rules-Requires-Root: binary-targets +XS-Dm-Upload-Allowed: Yes + +Package: maintainer-scripts +Architecture: [% $package_architecture %] +Depends: test +Description: test lintian's maintainer script checks + 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/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/postinst b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/postinst new file mode 100644 index 0000000..e56ed3b --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/postinst @@ -0,0 +1,181 @@ +#! /bin/sh -e + +if [ "$1" = "configure" ]; then + if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then + ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts + fi +fi + +# valid +. /usr/share/lintian/shell || exit 0 +. /usr/share/lintian/shell >/dev/null +. /usr/share/lintian/shell 2>/dev/null +. /usr/share/lintian/shell /dev/null +update-rc.d $FOO defaults +update-rc.d foo remove + +# valid +FOO=/tmp +FOO=/var/tmp +: ${FOO:=/tmp} +FOO=`mktemp /tmp/scripts.XXXXXX` +rm "$FOO" +FOO=`tempfile -n/tmp/scripts.tmp` +mkdir /var/tmp/scripts +FOO="/tmp/false.positive.XXXXXX" +# invalid +echo foo >>/tmp/scripts.tmp +rm /tmp/scripts.tmp +rmdir /var/tmp/scripts + +# invalid, maintainer-script-hides-init-failure +invoke-rc.d foo start || exit 0 + +# The right way to invoke an rc script +if which invoke-rc.d >/dev/null 2>&1; then + invoke-rc.d package start +else + /etc/init.d/package start +fi + +# Example ucf invocation. +ucf /usr/share/foo/configuration /etc/foo.conf + +# Calling gconftool directly. +gconftool-2 --makefile-install-rule foo.schema + +# Calling gconf-schemas with no dependency. +gconf-schemas --register foo.schema + +# Calling update-xmlcatalog with no dependency. +update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \ + --package maintainer-scripts --root + +# Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old +# recipe from the dpkg wiki that should be replaced with dpkg-query. +sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \ + /var/lib/dpkg/status + +# Don't modify these files. +echo 'broken 6714/tcp' >> /etc/services +cp /nonexistent /etc/protocols +mv /usr/share/doc/rpc /etc/rpc + +# But this is okay. +cp /etc/protocols /etc/protocols.new + +# This is also wrong. +echo 'broken' > /etc/inetd.conf +cp /etc/inetd.conf.new /etc/inetd.conf + +# But this is fine. +cp /etc/inetd.conf /srv/chroot/etc/inetd.conf + +# Deprecated +install-sgmlcatalog --install package +install-sgmlcatalog --remove package + +# This too is a heredoc. +some-program > /etc/config-file <<'EOF' +echo "All of the array is: ${H[@]}" +EOF + +# But this isn't. +cat '</dev/null; then + ucf --purge /etc/foo.conf +fi + +# This isn't allowed. +rm /tmp/foo /dev/device +rm /dev/device1 + +# But this is okay. +rm /tmp/foo > /dev/null + +# Not allowed here even with remove. +install-sgmlcatalog --remove package diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/preinst b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/preinst new file mode 100644 index 0000000..6058978 --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/preinst @@ -0,0 +1,18 @@ +#!/bin/sh + +update-rc.d foo remove +update-rc.d bar defaults + +# Obsolete dpkg assertions. +dpkg --assert-support-predepends || exit 1 +dpkg --assert-working-epoch || exit 1 +dpkg --assert-long-filenames || exit 1 +dpkg --assert-multi-conrep || exit 1 + +/bin/grep -E --mmap "^Package: foo$" /var/lib/dpkg/status + +# continuation lines +update-alternatives --install /usr/bin/fakeroot fakeroot \ + /usr/bin/fakeroot-ng 5 \ + --slave /usr/share/man/man1/fakeroot.1.gz \ + fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/prerm b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/prerm new file mode 100644 index 0000000..076ecaf --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/prerm @@ -0,0 +1,188 @@ +#!/bin/sh + +if [ "$1" != "upgrade" ]; then + update-alternatives --remove dummy /usr/bin/dummy-alternative +fi + +if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the +n + rm -f /usr/doc/maintainer-scripts +fi + +cat </dev/null +} + +source $FOO + +trap "echo hi" EXIT HUP 3 + +if [[ "$2" = "purge" ]]; then + kill -HUP $$ +fi + +#this is ok though +if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then + echo 1 +fi + +update-rc.d foo remove + +# More false positives for bashism checks. None of these are errors. +echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//' +echo "$line" | grep -q "${fonts},${foo}" +echo '$[1+2]' +printf "foo |& bar" +perl -e "print q( kill -HUP $? )" + +# Still catch disallowed expansions in double-quotes, though. +echo "${line:3:1}" + +# The wrong way to run an init script (no invoke-rc.d). +/etc/init.d/package stop + +# This is the only install-sgmlcatalog call that's allowed. +install-sgmlcatalog --quiet --remove package + +# More bashisms checks + +read -x foo +read -x +read -r foo +read foo +read + +echo "a\\b" +echo 'a\nb' + +echo "${UID}" +echo "$EUID" +echo "$SHLVL" +echo "$DIRSTACK" +echo "$SECONDS" +echo "$BASH" +echo "$BASH_FOO" +echo "$SHELLOPTS" +echo "$PIPESTATUS" + +bar="$(cut '-d|' -f2 <<< "$foo")" + +VAR=1 +VAR+=a + +echos() { + echo -n -e "bar" + echo -e -n "bar" + echo -en "bar" + echo -ne "bar" + echo "bar" + echo "echo -e foo" +} + +ech.os() { + echo foo >& 2 + echo foo >&bar + echo foo >& bar +} + +echoes() { + echo "abc\nxyz" + echo 'xyz\rabc' + echo foo\cbar + + echo -e "abc\nxyz" + echo -net 'xyz\rabc' + echo -e foo\cbar +} + +foobar.() { + suspend x + suspended x + caller x + complete x + compgen x + declare -a foo +} + +.foobar() { + typeset -x bar + disown 1 + builtin foo + set -B + alias -p + unalias -a +} + +IFS="()" + +ulimit +shopt +type -v bar +time ls +dirs +diff <(tac a) <(tac b) + +pushd + +local foo=bar +local -x foo + +popd + +readonly -f + +echo bar > /dev/tcp +export x +export -x x +export -p x + +sh -x +sh -D +sh --foo +sh +O + +# Brace expansion checks +echo {a,b} +echo {abc},{bcd} + +foobar() +{ + # This is a function +} + + foo.bar() +( + # This is a function with a bad name +) + +foobar@() +{ + # As is this +} + +# This is ok +read -r foo +# but these aren't +read -r +read -p "Would you like to restart the service?" foo bar +read --fish + +set -e + +source "$BAR" +source '$BAR' +source ~/bar +source a diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/rules b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/rules new file mode 100755 index 0000000..de4161e --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/rules @@ -0,0 +1,36 @@ +#!/usr/bin/make -f + +build-arch: + +build-indep: + +build: build-arch build-indep + +binary-arch: + +binary-indep: + install -d debian/tmp/DEBIAN + install -m 0755 debian/config debian/tmp/DEBIAN + install -m 0755 debian/preinst debian/tmp/DEBIAN + install -m 0755 debian/postinst debian/tmp/DEBIAN + install -m 0755 debian/prerm debian/tmp/DEBIAN + install -m 0755 debian/postrm debian/tmp/DEBIAN + install -m 0644 debian/triggers debian/tmp/DEBIAN + install -d debian/tmp/usr/share/doc/maintainer-scripts + install -m 0644 debian/changelog \ + debian/tmp/usr/share/doc/maintainer-scripts/changelog + gzip -n -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog + dpkg-gencontrol -isp + dpkg --build debian/tmp .. + +binary: binary-arch binary-indep + +# Make sure we see dh_clean even in a rule clean depends on. Not the point of +# this test suite, but a convenient place to put it. +clean: clean1 clean2 clean3 +clean1: +clean2: + dh_clean +clean3: + +.PHONY: build-arch build-indep build binary-arch binary-indep binary clean diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/triggers b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/triggers new file mode 100644 index 0000000..f627094 --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/triggers @@ -0,0 +1,4 @@ +# Example triggers file +activate foo + +interest bar diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/watch b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/watch new file mode 100644 index 0000000..430eea3 --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/debian/watch @@ -0,0 +1,11 @@ +# A whitespace is fine for uscan: + version=5 + +# Following line should not be matched: +#opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \ +# Following one is incorrect, there's a missing backslash at the end +opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/ + +# 'active' is useless here, but it works anyway +options=active \ +http://domain.tld/foo-(.+)\.tar\.gz \ No newline at end of file diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/fill-values b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/fill-values new file mode 100644 index 0000000..c281e87 --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/build-spec/fill-values @@ -0,0 +1,6 @@ +Skeleton: upload-non-native +Testname: legacy-maintainer-scripts +Source: maintainer-scripts +Version: 7+dfsg-0.1 +Description: Legacy test "maintainer-scripts" +Extra-Build-Depends: dash (>= 0.5.10.2) diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/desc b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/desc new file mode 100644 index 0000000..6130446 --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/desc @@ -0,0 +1,2 @@ +Testname: legacy-maintainer-scripts +Check: init-d/maintainer-script diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/hints b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/hints new file mode 100644 index 0000000..13ac681 --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/hints @@ -0,0 +1 @@ +maintainer-scripts (binary): maintainer-script-calls-init-script-directly [prerm:55] diff --git a/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/post-test b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/post-test new file mode 100644 index 0000000..faeef0b --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/legacy-maintainer-scripts/eval/post-test @@ -0,0 +1 @@ +s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/install b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/install new file mode 100644 index 0000000..31e3a9e --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/install @@ -0,0 +1,4 @@ +bad /etc/cron.daily +other-action /etc/cron.daily +test-first /etc/cron.daily +self-invoke /etc/init.d diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postinst b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postinst new file mode 100644 index 0000000..3feaa42 --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postinst @@ -0,0 +1,7 @@ +#!/bin/sh +set -e + +update-rc.d self-invoke defaults >/dev/null +/etc/init.d/self-invoke start + +#DEBHELPER# diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postrm b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postrm new file mode 100644 index 0000000..acba064 --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/debian/postrm @@ -0,0 +1,8 @@ +#!/bin/sh +set -e + +if [ "remove" = "$1" ] ; then + update-rc.d self-invoke remove >/dev/null +fi + +#DEBHELPER# diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/fill-values b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/fill-values new file mode 100644 index 0000000..e5cb95f --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/fill-values @@ -0,0 +1,3 @@ +Skeleton: upload-native +Testname: scripts-calls-init-script +Description: Test proper use of invoke-rc.d diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/bad b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/bad new file mode 100755 index 0000000..86c80a7 --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/bad @@ -0,0 +1,2 @@ +#!/bin/sh +/etc/init.d/ntp restart diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/other-action b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/other-action new file mode 100755 index 0000000..cd58f75 --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/other-action @@ -0,0 +1,3 @@ +#!/bin/sh +# Only supported invoke-rc.d actions are required to go through invoke-rc.d. +/etc/init.d/foo frobnicate-the-bazerator diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/self-invoke b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/self-invoke new file mode 100755 index 0000000..048f01f --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/self-invoke @@ -0,0 +1,30 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: self-invoke +# Required-Start: +# Required-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Test init script +# Description: Test init script. +### END INIT INFO + +. /lib/lsb/init-functions + +case "$1" in + start) + : + ;; + stop) + : + ;; + restart) + /etc/init.d/self-invoke start + ;; + status) + : + ;; + force-reload) + : + ;; +esac diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/test-first b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/test-first new file mode 100755 index 0000000..5019218 --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/build-spec/orig/test-first @@ -0,0 +1,6 @@ +#!/bin/sh +if which invoke-rc.d >/dev/null 2>&1 ; then + invoke-rc.d ntp restart +else + /etc/init.d/ntp restart +fi diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/desc b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/desc new file mode 100644 index 0000000..4754f9c --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/desc @@ -0,0 +1,4 @@ +Testname: scripts-calls-init-script +Check: init-d/maintainer-script +See-Also: + Bug#381485 diff --git a/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/hints b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/hints new file mode 100644 index 0000000..1101108 --- /dev/null +++ b/t/recipes/checks/init-d/maintainer-script/scripts-calls-init-script/eval/hints @@ -0,0 +1 @@ +scripts-calls-init-script (binary): maintainer-script-calls-init-script-directly [postinst:5] -- cgit v1.2.3