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

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