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

[lintian] 01/02: Use Lintian::Data for section/name mapping



This is an automated email from the git hooks/post-receive script.

rouca pushed a commit to branch master
in repository lintian.

commit f71f3901fcc23db666d3de176526e91fd4f228a2
Author: Bastien ROUCARIÈS <roucaries.bastien+debian@gmail.com>
Date:   Fri Aug 25 22:22:39 2017 +0200

    Use Lintian::Data for section/name mapping
---
 checks/fields.pm                  | 34 +++++++++++++---------------------
 data/fields/name_section_mappings | 16 ++++++++++++++++
 debian/changelog                  |  1 +
 3 files changed, 30 insertions(+), 21 deletions(-)

diff --git a/checks/fields.pm b/checks/fields.pm
index cb91491..4ad96ad 100644
--- a/checks/fields.pm
+++ b/checks/fields.pm
@@ -96,23 +96,14 @@ our @known_java_pkg = map { qr/$_/ } (
 );
 
 # Mapping of package names to section names
-my @NAME_SECTION_MAPPINGS = (
-    [qr/-docs?$/                      => 'doc'],
-    [qr/-dbg(?:sym)?$/                => 'debug'],
-    [qr/^(?:python-)?zope/            => 'zope'],
-    [qr/^python3?-/                   => 'python'],
-    [qr/^r-(?:cran|bioc|other)-/      => 'gnu-r'],
-    [qr/^lib.*-perl$/                 => 'perl'],
-    [qr/^lib.*-cil(?:-dev)?$/         => 'cli-mono'],
-    [qr/^lib.*-(?:java|gcj)$/         => 'java'],
-    [qr/^(?:lib)php-/                 => 'php'],
-    [qr/^lib(?:hugs|ghc6?)-/          => 'haskell'],
-    [qr/^lib.*-ruby(?:1\.\d)?$/       => 'ruby'],
-    [qr/^lib.*-(?:ocaml|camlp4)-dev$/ => 'ocaml'],
-    [qr/^lib.*-dev$/                  => 'libdevel'],
-    [qr/^gir\d+\.\d+-.*-\d+\.\d+$/    => 'introspection'],
-    [qr/^libjs-/                      => 'javascript'],
-);
+my $NAME_SECTION_MAPPINGS = Lintian::Data->new(
+    'fields/name_section_mappings',
+    qr/\s*=>\s*/,
+    sub {
+        my $regex = qr/$_[0]/x;
+        $_[0] = $_[1];
+        return $regex;
+    });
 
 my %VCS_EXTRACT = (
     browser => sub { return @_;},
@@ -547,14 +538,15 @@ sub run {
             # Check package name <-> section.  oldlibs is a special case; let
             # anything go there.
             if ($parts[-1] ne 'oldlibs') {
-                foreach my $map (@NAME_SECTION_MAPPINGS) {
-                    next unless ($pkg =~ $map->[0]);
+                foreach my $section ($NAME_SECTION_MAPPINGS->all()) {
+                    my $regex = $NAME_SECTION_MAPPINGS->value($section);
+                    next unless ($pkg =~ m{$regex});
 
                     my $area = '';
                     $area = "$parts[0]/" if (scalar @parts == 2);
                     tag 'wrong-section-according-to-package-name',
-                      "$pkg => ${area}$map->[1]"
-                      unless $parts[-1] eq $map->[1];
+                      "$pkg => ${area}$section"
+                      unless $parts[-1] eq $section;
                     last;
                 }
             }
diff --git a/data/fields/name_section_mappings b/data/fields/name_section_mappings
new file mode 100644
index 0000000..ca9c1de
--- /dev/null
+++ b/data/fields/name_section_mappings
@@ -0,0 +1,16 @@
+# map between regex (x) of package => section
+-docs?$                      => doc
+-dbg(?:sym)?$                => debug
+^(?:python-)?zope            => zope
+^python3?-                   => python
+^r-(?:cran|bioc|other)-      => gnu-r
+^lib.*-perl$                 => perl
+lib.*-cil(?:-dev)?$          => cli-mono
+^lib.*-(?:java|gcj)$         => java
+^(?:lib)php-                 => php
+^lib(?:hugs|ghc6?)-          => haskell
+^lib.*-ruby(?:1\.\d)?$       => ruby
+^lib.*-(?:ocaml|camlp4)-dev$ => ocaml
+^lib.*-dev$                  => libdevel
+^gir\d+\.\d+-.*-\d+\.\d+$    => introspection
+^libjs-                      => javascript
\ No newline at end of file
diff --git a/debian/changelog b/debian/changelog
index e7cbe8d..af300a8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -43,6 +43,7 @@ lintian (2.5.53) UNRELEASED; urgency=medium
     + [CL] Ensure that python3-foo packages have "Section: python", not
       just python2-foo.  (Closes: #870272)
     + [RG] Do no longer require debug packages to be priority extra.
+    + [BR] Use Lintian::Data for name/section mapping
   * checks/files.pm:
     + [BR] Avoid false positive privacy-breach-generic for legal.xml.
   * checks/init.d.desc:

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/lintian/lintian.git


Reply to: