[lintian] 01/01: Warn about packages that have either have dependency on default-mta but do not specify mail-transport-agent, have a mail-transport-agent dependency but do not specify default-mta and packages that do not specify default-mta first in their alternatives. (Closes: #892143)
This is an automated email from the git hooks/post-receive script.
lamby pushed a commit to branch master
in repository lintian.
commit 253c36181e5c79d4315e6a4f4847b53696c35a4c
Author: Chris Lamb <lamby@debian.org>
Date: Thu Mar 8 22:35:25 2018 -0800
Warn about packages that have either have dependency on default-mta but do not specify mail-transport-agent, have a mail-transport-agent dependency but do not specify default-mta and packages that do not specify default-mta first in their alternatives. (Closes: #892143)
---
checks/fields.desc | 40 ++++++++++++++++++++++
checks/fields.pm | 24 ++++++++++++++
debian/changelog | 6 ++++
t/tests/fields-mua/debian/debian/control.in | 51 +++++++++++++++++++++++++++++
t/tests/fields-mua/debian/debian/rules | 9 +++++
t/tests/fields-mua/debian/some-file.txt | 0
t/tests/fields-mua/desc | 7 ++++
t/tests/fields-mua/tags | 13 ++++++++
8 files changed, 150 insertions(+)
diff --git a/checks/fields.desc b/checks/fields.desc
index 60181ab..3a61a03 100644
--- a/checks/fields.desc
+++ b/checks/fields.desc
@@ -1446,3 +1446,43 @@ Info: A Vcs-* field in this package is pointing to a repository that
unnecessary and time-consuming clones of the repository.
.
Please add a suitable Vcs-Browser field to the package.
+
+Tag: default-mta-dependency-does-not-specify-mail-transport-agent
+Severity: normal
+Certainty: certain
+Info: This package has a relationship with the default-mta virtual
+ package but does not specify the mail-transport-agent as an
+ alternative.
+ .
+ default-mta and mail-transport-agent should only ever be in a set of
+ alternatives together, with default-mta listed first.
+ .
+ Please add a "or" depedency on mail-transport-agent after
+ default-mta.
+
+Tag: mail-transport-agent-dependency-does-not-specify-default-mta
+Severity: normal
+Certainty: certain
+Info: This package has a relationship with the mail-transport-argent
+ virtual package but does not specify the default-mta as an
+ alternative.
+ .
+ default-mta and mail-transport-agent should only ever be in a set of
+ alternatives together, with default-mta listed first.
+ .
+ Please add a "or" depedency on default-mta before
+ mail-transport-agent.
+
+Tag: default-mta-dependency-not-listed-first
+Severity: normal
+Certainty: certain
+Info: This package has a relationship with the mail-transport-argent
+ or default-mta packages but does not specify the default-mta as an
+ first option.
+ .
+ default-mta and mail-transport-agent should only ever be in a set of
+ alternatives together, with default-mta listed in the primary
+ position.
+ .
+ Please rearrange the dependencies such that default-mta is listed
+ first.
diff --git a/checks/fields.pm b/checks/fields.pm
index 82866cb..a5cb6f3 100644
--- a/checks/fields.pm
+++ b/checks/fields.pm
@@ -743,6 +743,7 @@ sub run {
tag 'alternates-not-allowed', $field
if ($data =~ /\|/ && !&$is_dep_field($field));
+ check_field($info, $field, $data);
for my $dep (split /\s*,\s*/, $data) {
my (@alternatives, @seen_obsolete_packages);
@@ -1042,6 +1043,7 @@ sub run {
#Get data and clean it
my $data = $info->field($field);
unfold($field, \$data);
+ check_field($info, $field, $data);
$depend{$field} = $data;
for my $dep (split /\s*,\s*/, $data) {
@@ -1491,6 +1493,28 @@ sub unfold {
return;
}
+sub check_field {
+ my ($info, $field, $data) = @_;
+ my @seen;
+ $info->relation($field)->visit(sub { push @seen, $_; }, VISIT_PRED_NAME);
+
+ my $has_default_mta = any { $_ eq 'default-mta' } @seen;
+ my $has_mail_transport_agent = any { $_ eq 'mail-transport-agent' } @seen;
+
+ if ($has_default_mta) {
+ tag 'default-mta-dependency-not-listed-first',"$field: $data"
+ if $seen[0] ne 'default-mta';
+ tag 'default-mta-dependency-does-not-specify-mail-transport-agent',
+ "$field: $data"
+ unless $has_mail_transport_agent;
+ } elsif ($has_mail_transport_agent) {
+ tag 'mail-transport-agent-dependency-does-not-specify-default-mta',
+ "$field: $data"
+ unless $has_default_mta;
+ }
+ return;
+}
+
1;
# Local Variables:
diff --git a/debian/changelog b/debian/changelog
index 45a450d..a7ced3c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -17,6 +17,12 @@ lintian (2.5.79) UNRELEASED; urgency=medium
* checks/cruft.pm:
+ [CL] Check all subdirectories under /usr/share/doc/foo to test
whether we ship example files, not just /usr/share/doc/foo/examples/.
+ * checks/fields.{desc,pm}:
+ + [CL] Warn about packages that have either have dependency on
+ default-mta but do not specify mail-transport-agent, have a
+ mail-transport-agent dependency but do not specify default-mta and
+ packages that do not specify default-mta first in their alternatives.
+ Thanks to Paul Wise for the report. (Closes: #892143)
* data/fields/obsolete-packages:
+ [PW] Add exim and apache, replaced by exim4 and apache2
diff --git a/t/tests/fields-mua/debian/debian/control.in b/t/tests/fields-mua/debian/debian/control.in
new file mode 100644
index 0000000..35bd961
--- /dev/null
+++ b/t/tests/fields-mua/debian/debian/control.in
@@ -0,0 +1,51 @@
+Source: {$source}
+Priority: optional
+Section: {$section}
+Maintainer: {$author}
+Standards-Version: {$standards_version}
+Build-Depends:
+ debhelper (>= 11),
+ default-mta | mail-transport-agent,
+ default-mta
+Rules-Requires-Root: no
+Homepage: http://lintian.debian.org/
+
+Package: {$source}-bad-1
+Architecture: all
+# default-mta missing mail-transport-agent
+Depends: $\{misc:Depends\}, default-mta,
+Pre-Depends: mail-transport-agent
+Recommends: default-mta, mail-transport-agent
+Suggests: exim4 | mail-transport-agent
+Description: {$description} (bad set 1)
+ 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.
+ .
+ This package has incorrect dependencies (1).
+
+Package: {$source}-bad-2
+Architecture: all
+# default-mta missing
+Depends: $\{misc:Depends\}, exim4 | postfix | mail-transport-agent
+# default-mta not listed first
+Pre-Depends: exim4 | default-mta | mail-transport-agent
+Description: {$description} (bad set 2)
+ 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.
+ .
+ This package has incorrect dependencies (2).
+
+Package: {$source}-good-1
+Architecture: all
+Depends: $\{misc:Depends\}, default-mta | mail-transport-agent
+Pre-Depends: default-mta | exim4 | mail-transport-agent
+Recommends: default-mta | mail-transport-agent | exim4
+Suggests: lintian
+Description: {$description} (good 1)
+ 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
+ .
+ This package has correct dependencies.
diff --git a/t/tests/fields-mua/debian/debian/rules b/t/tests/fields-mua/debian/debian/rules
new file mode 100644
index 0000000..c3e3793
--- /dev/null
+++ b/t/tests/fields-mua/debian/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+%:
+ dh $@
+
+override_dh_install::
+ set -ex; for X in $$(dh_listpackages); do \
+ dh_install -p$$X some-file.txt usr/share/$$X; \
+ done
diff --git a/t/tests/fields-mua/debian/some-file.txt b/t/tests/fields-mua/debian/some-file.txt
new file mode 100644
index 0000000..e69de29
diff --git a/t/tests/fields-mua/desc b/t/tests/fields-mua/desc
new file mode 100644
index 0000000..5354f01
--- /dev/null
+++ b/t/tests/fields-mua/desc
@@ -0,0 +1,7 @@
+Testname: fields-mua
+Version: 1.0
+Description: Test for tags related to MUA etc.
+Test-For:
+ default-mta-dependency-does-not-specify-mail-transport-agent
+ mail-transport-agent-dependency-does-not-specify-default-mta
+ default-mta-dependency-not-listed-first
diff --git a/t/tests/fields-mua/tags b/t/tests/fields-mua/tags
new file mode 100644
index 0000000..9322ea8
--- /dev/null
+++ b/t/tests/fields-mua/tags
@@ -0,0 +1,13 @@
+W: fields-mua source: default-mta-dependency-does-not-specify-mail-transport-agent build-depends: debhelper (>= 11), default-mta
+W: fields-mua source: default-mta-dependency-not-listed-first build-depends: debhelper (>= 11), default-mta
+W: fields-mua source: stronger-dependency-implies-weaker fields-mua-bad-1 depends -> recommends default-mta
+W: fields-mua source: stronger-dependency-implies-weaker fields-mua-bad-1 pre-depends -> recommends mail-transport-agent
+W: fields-mua source: stronger-dependency-implies-weaker fields-mua-bad-1 pre-depends -> suggests exim4 | mail-transport-agent
+W: fields-mua source: stronger-dependency-implies-weaker fields-mua-bad-1 recommends -> suggests exim4 | mail-transport-agent
+W: fields-mua source: stronger-dependency-implies-weaker fields-mua-good-1 depends -> recommends default-mta | mail-transport-agent | exim4
+W: fields-mua source: stronger-dependency-implies-weaker fields-mua-good-1 pre-depends -> recommends default-mta | mail-transport-agent | exim4
+W: fields-mua-bad-1: default-mta-dependency-does-not-specify-mail-transport-agent depends: default-mta
+W: fields-mua-bad-1: mail-transport-agent-dependency-does-not-specify-default-mta pre-depends: mail-transport-agent
+W: fields-mua-bad-1: virtual-package-depends-without-real-package-depends pre-depends: mail-transport-agent
+W: fields-mua-bad-2: default-mta-dependency-not-listed-first pre-depends: exim4 | default-mta | mail-transport-agent
+W: fields-mua-bad-2: mail-transport-agent-dependency-does-not-specify-default-mta depends: exim4 | postfix | mail-transport-agent
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/lintian/lintian.git
Reply to: