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 <[email protected]> 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

