[lintian] 02/03: c/fields: Validate Built-Using field
This is an automated email from the git hooks/post-receive script.
nthykier pushed a commit to branch master
in repository lintian.
commit a8d4da47200127e1edbfa1482ade37256950a941
Author: Niels Thykier <niels@thykier.net>
Date: Sat Dec 17 11:25:58 2016 +0000
c/fields: Validate Built-Using field
Signed-off-by: Niels Thykier <niels@thykier.net>
---
checks/fields.desc | 12 ++++++++++++
checks/fields.pm | 22 +++++++++++++++++++++-
debian/changelog | 3 +++
.../fields-built-using/debian/debian/control.in | 18 ++++++++++++++++++
t/tests/fields-built-using/desc | 5 +++++
t/tests/fields-built-using/tags | 1 +
6 files changed, 60 insertions(+), 1 deletion(-)
diff --git a/checks/fields.desc b/checks/fields.desc
index 7df3dee..bd93fe5 100644
--- a/checks/fields.desc
+++ b/checks/fields.desc
@@ -1333,3 +1333,15 @@ Info: The Homepage field for this package points to an uncanonical Bioconductor
not:
.
https://www.bioconductor.org/packages/(release|devel|*)/bioc/html/foo.html
+
+Tag: invalid-value-in-built-using-field
+Severity: serious
+Certainty: certain
+Info: The Built-Using field contains invalid fields.
+ .
+ The Built-Using field must consist of simple <tt>source (=
+ version)</tt> clauses. Notably, it must use a strictly equal in the
+ relation.
+ .
+ Only first issue is shown.
+Ref: policy 7.8
diff --git a/checks/fields.pm b/checks/fields.pm
index 58eeec7..54bd812 100644
--- a/checks/fields.pm
+++ b/checks/fields.pm
@@ -36,7 +36,11 @@ use Lintian::Check qw(check_maintainer);
use Lintian::Relation qw(:constants);
use Lintian::Relation::Version qw(versions_compare);
use Lintian::Tags qw(tag);
-use Lintian::Util qw($PKGNAME_REGEX);
+use Lintian::Util qw($PKGNAME_REGEX $PKGVERSION_REGEX);
+
+use constant {
+ BUILT_USING_REGEX => qr/^$PKGNAME_REGEX \(= $PKGVERSION_REGEX\)$/o,
+};
our $KNOWN_ESSENTIAL = Lintian::Data->new('fields/essential');
our $KNOWN_METAPACKAGES = Lintian::Data->new('fields/metapackages');
@@ -935,6 +939,22 @@ sub run {
}
}
+ #---- Built-Using
+ if (defined(my $built_using = $info->field('built-using'))) {
+ my $built_using_rel = Lintian::Relation->new($built_using);
+ $built_using_rel->visit(
+ sub {
+ if ($_ !~ BUILT_USING_REGEX) {
+ tag 'invalid-value-in-built-using-field', $_;
+ return 1;
+ }
+ return 0;
+ },
+ VISIT_OR_CLAUSE_FULL | VISIT_STOP_FIRST_MATCH
+ );
+
+ }
+
#---- Package relations (source package)
if ($type eq 'source') {
diff --git a/debian/changelog b/debian/changelog
index 02282a4..4d33f00 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -17,6 +17,9 @@ lintian (2.5.50) UNRELEASED; urgency=medium
+ [BR] Apply patch from Yann Soubeyrand :
"Allow debhelper "--with" addons to be quoted".
(Closes: #839822)
+ * checks/files.{desc,pm}:
+ + [NT] Check for invalid clauses in "Built-Using" fields. Thanks to
+ Andrey Rahmatullin for the suggestion. (Closes: #847558)
* checks/files.desc:
+ [NT] Document that we no longer accept "virtual packages"
for deliberately empty packages. If your package receives
diff --git a/t/tests/fields-built-using/debian/debian/control.in b/t/tests/fields-built-using/debian/debian/control.in
new file mode 100644
index 0000000..3d87722
--- /dev/null
+++ b/t/tests/fields-built-using/debian/debian/control.in
@@ -0,0 +1,18 @@
+Source: {$source}
+Priority: extra
+Section: devel
+Maintainer: {$author}
+Standards-Version: {$standards_version}
+Build-Depends: {$build_depends}
+Homepage: https://lintian.debian.org/
+
+Package: {$source}
+Architecture: {$architecture}
+Depends: $\{shlibs:Depends\}, $\{misc:Depends\}
+Built-Using: foo (>= 1.0)
+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. It may
+ be an empty package.
+
diff --git a/t/tests/fields-built-using/desc b/t/tests/fields-built-using/desc
new file mode 100644
index 0000000..42dd966
--- /dev/null
+++ b/t/tests/fields-built-using/desc
@@ -0,0 +1,5 @@
+Testname: fields-built-using
+Version: 1.0
+Description: Test for built-using field
+Test-For:
+ invalid-value-in-built-using-field
diff --git a/t/tests/fields-built-using/tags b/t/tests/fields-built-using/tags
new file mode 100644
index 0000000..e00c88b
--- /dev/null
+++ b/t/tests/fields-built-using/tags
@@ -0,0 +1 @@
+E: fields-built-using: invalid-value-in-built-using-field foo (>= 1.0)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/lintian/lintian.git
Reply to: