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

[lintian] 03/03: lib/Lintian/Collect/{Changes, Sources}.pm: Add repacked subroutines to check whether a package has been repacked or not.



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

lamby pushed a commit to branch master
in repository lintian.

commit 4cf1e31cd014e61ce9ebde064b53da06b7b2b4d6
Author: Chris Lamb <lamby@debian.org>
Date:   Fri Feb 16 21:53:37 2018 +0000

    lib/Lintian/Collect/{Changes,Sources}.pm: Add repacked subroutines to check whether a package has been repacked or not.
---
 checks/changes-file.pm         |  2 +-
 checks/rules.pm                |  7 +++----
 checks/source-copyright.pm     |  2 +-
 debian/changelog               |  3 +++
 lib/Lintian/Collect/Changes.pm | 19 ++++++++++++++++++-
 lib/Lintian/Collect/Source.pm  | 19 ++++++++++++++++++-
 6 files changed, 44 insertions(+), 8 deletions(-)

diff --git a/checks/changes-file.pm b/checks/changes-file.pm
index 6be546e..3256ccb 100644
--- a/checks/changes-file.pm
+++ b/checks/changes-file.pm
@@ -200,7 +200,7 @@ sub run {
         if (   $has_signing_key
             && $file =~ m/\.orig(-[A-Za-z\d-]+)?\.tar\./
             && $file !~ m/\.asc$/
-            && $info->field('version') !~ m/(?:dfsg|debian|ds|repack)/) {
+            && !$info->repacked) {
             tag 'orig-tarball-missing-upstream-signature', $file
               unless exists $files->{"$file.asc"};
         }
diff --git a/checks/rules.pm b/checks/rules.pm
index dd1143f..2a79fed 100644
--- a/checks/rules.pm
+++ b/checks/rules.pm
@@ -405,10 +405,9 @@ sub run {
                 } elsif ($typerule eq 'recommended_allindep') {
                     tag 'debian-rules-missing-recommended-target', $target;
                 } elsif ($typerule eq 'goodpractice_dfsg') {
-                    if ($version =~ /(dfsg|debian|ds)/) {
-                        tag 'debian-rules-missing-good-practice-target-dfsg',
-                          $target;
-                    }
+                    tag 'debian-rules-missing-good-practice-target-dfsg',
+                      $target
+                      if $info->repacked;
                 } else {
                     $typerule ||= '<N/A>';
                     croak(
diff --git a/checks/source-copyright.pm b/checks/source-copyright.pm
index 47409e9..66c0e4c 100644
--- a/checks/source-copyright.pm
+++ b/checks/source-copyright.pm
@@ -284,7 +284,7 @@ sub _parse_dep5 {
       if $info->source_field('section', '') =~ m{^(contrib|non-free)(/.+)?$}
       and none { defined $first_para->{$_} } qw(comment disclaimer);
     tag 'missing-explanation-for-repacked-upstream-tarball'
-      if $info->field('version', '') =~ m{(?:dfsg|debian|ds|repack)}
+      if $info->repacked
       and none { defined $first_para->{$_} } qw(comment files-excluded);
 
     my (undef, $full_license_header, undef,@short_licenses_header)
diff --git a/debian/changelog b/debian/changelog
index 6ba16e7..de7bf3e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -28,6 +28,9 @@ lintian (2.5.76) UNRELEASED; urgency=medium
   * lib/Lintian/Util.pm:
     + [CL] Factor out the regex that matches "repacked" tarballs based on
       their filename.
+  * lib/Lintian/Collect/{Changes,Sources}.pm:
+    + [CL] Add repacked subroutines to check whether a package has been
+      repacked or not.
 
   * t/scripts/changelog-format.t:
     + [CL] Provide some possibly-helpful advice when violating the "entry
diff --git a/lib/Lintian/Collect/Changes.pm b/lib/Lintian/Collect/Changes.pm
index 112dbfb..e9cef7f 100644
--- a/lib/Lintian/Collect/Changes.pm
+++ b/lib/Lintian/Collect/Changes.pm
@@ -22,7 +22,7 @@ use strict;
 use warnings;
 use parent 'Lintian::Collect';
 
-use Lintian::Util qw(strip);
+use Lintian::Util qw(strip $PKGREPACK_REGEX);
 
 =head1 NAME
 
@@ -168,6 +168,23 @@ sub files {
     return $self->{files};
 }
 
+=item repacked
+
+Returns true if the source package referenced in this changes file has been
+"repacked" and false otherwise. This is determined from the version name
+containing "dfsg" or similar.
+
+Needs-Info requirements for using I<repacked>: L<Same as field|Lintian::Collect/field ([FIELD[, DEFAULT]])>
+
+=cut
+
+sub repacked {
+    my ($self) = @_;
+    return $self->{repacked} if exists $self->{repacked};
+    $self->{repacked} = $self->field('version', '') =~ $PKGREPACK_REGEX;
+    return $self->{repacked};
+}
+
 =back
 
 =head1 AUTHOR
diff --git a/lib/Lintian/Collect/Source.pm b/lib/Lintian/Collect/Source.pm
index 2c89a97..5921df7 100644
--- a/lib/Lintian/Collect/Source.pm
+++ b/lib/Lintian/Collect/Source.pm
@@ -29,7 +29,8 @@ use Scalar::Util qw(blessed);
 use Lintian::Relation;
 use Parse::DebianChangelog;
 
-use Lintian::Util qw(get_file_checksum read_dpkg_control $PKGNAME_REGEX);
+use Lintian::Util
+  qw(get_file_checksum read_dpkg_control $PKGNAME_REGEX $PKGREPACK_REGEX);
 
 =head1 NAME
 
@@ -186,6 +187,22 @@ sub native {
     return $self->{native};
 }
 
+=item repacked
+
+Returns true if the source package has been "repacked" and false otherwise.
+This is determined from the version name containing "dfsg" or similar.
+
+Needs-Info requirements for using I<repacked>: L<Same as field|Lintian::Collect/field ([FIELD[, DEFAULT]])>
+
+=cut
+
+sub repacked {
+    my ($self) = @_;
+    return $self->{repacked} if exists $self->{repacked};
+    $self->{repacked} = $self->field('', '1.0-1') =~ $PKGREPACK_REGEX;
+    return $self->{repacked};
+}
+
 =item binaries
 
 Returns a list of the binary and udeb packages listed in the

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


Reply to: