[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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