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

guillem pushed a commit to branch master
in repository dpkg.

View the commit online:
https://git.dpkg.org/cgit/dpkg/dpkg.git/commit/?id=76b05dce1342834fec1b3d9b6ff3fc33a33c1fb2

commit 76b05dce1342834fec1b3d9b6ff3fc33a33c1fb2
Author: Guillem Jover <guil...@debian.org>
AuthorDate: Mon Sep 17 00:12:56 2018 +0200

    Dpkg::Source::Package::V2: Move binary file detection to BinaryFiles module
    
    This makes it possible to reuse the code by other modules.
---
 debian/changelog                   |  2 ++
 scripts/Dpkg/Source/BinaryFiles.pm | 53 ++++++++++++++++++++++++++++++++++++++
 scripts/Dpkg/Source/Package/V2.pm  | 50 +++++------------------------------
 3 files changed, 61 insertions(+), 44 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 139a287f6..73d76a09c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -8,6 +8,8 @@ dpkg (1.19.2) UNRELEASED; urgency=medium
     - Dpkg::Source::Functions: Reimplement is_binary() w/o using diff(1).
     - Dpkg::Source::Package::V2: Split the BinaryFiles module into its own
       file, and give it a more generic name (Dpkg::Source::BinaryFiles).
+    - Dpkg::Source::Package::V2: Move binary file detection to BinaryFiles
+      module.
   * Documentation:
     - dpkg-buildpackage(1): Clarify --build=source explanation.
     - dsc(5): Clarify what “flattened” means in Testsuite-Triggers.
diff --git a/scripts/Dpkg/Source/BinaryFiles.pm 
b/scripts/Dpkg/Source/BinaryFiles.pm
index c503e42b6..48c84c8fc 100644
--- a/scripts/Dpkg/Source/BinaryFiles.pm
+++ b/scripts/Dpkg/Source/BinaryFiles.pm
@@ -21,11 +21,14 @@ use warnings;
 
 our $VERSION = '0.01';
 
+use Cwd;
 use File::Path qw(make_path);
 use File::Spec;
+use File::Find;
 
 use Dpkg::ErrorHandling;
 use Dpkg::Gettext;
+use Dpkg::Source::Functions qw(is_binary);
 
 sub new {
     my ($this, $dir) = @_;
@@ -105,4 +108,54 @@ sub get_seen_binaries {
     return @seen;
 }
 
+sub detect_binary_files {
+    my ($self, %opts) = @_;
+
+    my $unwanted_binaries = 0;
+    my $check_binary = sub {
+        if (-f and is_binary($_)) {
+            my $fn = File::Spec->abs2rel($_, $self->{dir});
+            $self->new_binary_found($fn);
+            unless ($opts{include_binaries} or $self->binary_is_allowed($fn)) {
+                errormsg(g_('unwanted binary file: %s'), $fn);
+                $unwanted_binaries++;
+            }
+        }
+    };
+    my $exclude_glob = '{' .
+        join(',', map { s/,/\\,/rg } @{$opts{exclude_globs}}) .
+    '}';
+    my $filter_ignore = sub {
+        # Filter out files that are not going to be included in the debian
+        # tarball due to ignores.
+        my %exclude;
+        my $reldir = File::Spec->abs2rel($File::Find::dir, $self->{dir});
+        my $cwd = getcwd();
+        # Apply the pattern both from the top dir and from the inspected dir
+        chdir $self->{dir}
+            or syserr(g_("unable to chdir to '%s'"), $self->{dir});
+        $exclude{$_} = 1 foreach glob $exclude_glob;
+        chdir $cwd or syserr(g_("unable to chdir to '%s'"), $cwd);
+        chdir $File::Find::dir
+            or syserr(g_("unable to chdir to '%s'"), $File::Find::dir);
+        $exclude{$_} = 1 foreach glob $exclude_glob;
+        chdir $cwd or syserr(g_("unable to chdir to '%s'"), $cwd);
+        my @result;
+        foreach my $fn (@_) {
+            unless (exists $exclude{$fn} or exists $exclude{"$reldir/$fn"}) {
+                push @result, $fn;
+            }
+        }
+        return @result;
+    };
+    find({ wanted => $check_binary, preprocess => $filter_ignore,
+           no_chdir => 1 }, File::Spec->catdir($self->{dir}, 'debian'));
+    error(P_('detected %d unwanted binary file (add it in ' .
+             'debian/source/include-binaries to allow its inclusion).',
+             'detected %d unwanted binary files (add them in ' .
+             'debian/source/include-binaries to allow their inclusion).',
+             $unwanted_binaries), $unwanted_binaries)
+        if $unwanted_binaries;
+}
+
 1;
diff --git a/scripts/Dpkg/Source/Package/V2.pm 
b/scripts/Dpkg/Source/Package/V2.pm
index 8be647d7b..fe9a1727d 100644
--- a/scripts/Dpkg/Source/Package/V2.pm
+++ b/scripts/Dpkg/Source/Package/V2.pm
@@ -39,7 +39,7 @@ use Dpkg::Source::Archive;
 use Dpkg::Source::Patch;
 use Dpkg::Source::BinaryFiles;
 use Dpkg::Exit qw(push_exit_handler pop_exit_handler);
-use Dpkg::Source::Functions qw(erasedir chmod_if_needed is_binary fs_time);
+use Dpkg::Source::Functions qw(erasedir chmod_if_needed fs_time);
 use Dpkg::Vendor qw(run_vendor_hook);
 use Dpkg::Control;
 use Dpkg::Changelog::Parse;
@@ -519,49 +519,11 @@ sub do_build {
 
     # Check if the debian directory contains unwanted binary files
     my $binaryfiles = Dpkg::Source::BinaryFiles->new($dir);
-    my $unwanted_binaries = 0;
-    my $check_binary = sub {
-        if (-f and is_binary($_)) {
-            my $fn = File::Spec->abs2rel($_, $dir);
-            $binaryfiles->new_binary_found($fn);
-            unless ($include_binaries or $binaryfiles->binary_is_allowed($fn)) 
{
-                errormsg(g_('unwanted binary file: %s'), $fn);
-                $unwanted_binaries++;
-            }
-        }
-    };
-    my $tar_ignore_glob = '{' . join(',',
-        map { s/,/\\,/rg } @{$self->{options}{tar_ignore}}) . '}';
-    my $filter_ignore = sub {
-        # Filter out files that are not going to be included in the debian
-        # tarball due to ignores.
-        my %exclude;
-        my $reldir = File::Spec->abs2rel($File::Find::dir, $dir);
-        my $cwd = getcwd();
-        # Apply the pattern both from the top dir and from the inspected dir
-        chdir $dir or syserr(g_("unable to chdir to '%s'"), $dir);
-        $exclude{$_} = 1 foreach glob($tar_ignore_glob);
-        chdir $cwd or syserr(g_("unable to chdir to '%s'"), $cwd);
-        chdir($File::Find::dir)
-            or syserr(g_("unable to chdir to '%s'"), $File::Find::dir);
-        $exclude{$_} = 1 foreach glob($tar_ignore_glob);
-        chdir $cwd or syserr(g_("unable to chdir to '%s'"), $cwd);
-        my @result;
-        foreach my $fn (@_) {
-            unless (exists $exclude{$fn} or exists $exclude{"$reldir/$fn"}) {
-                push @result, $fn;
-            }
-        }
-        return @result;
-    };
-    find({ wanted => $check_binary, preprocess => $filter_ignore,
-           no_chdir => 1 }, File::Spec->catdir($dir, 'debian'));
-    error(P_('detected %d unwanted binary file (add it in ' .
-             'debian/source/include-binaries to allow its inclusion).',
-             'detected %d unwanted binary files (add them in ' .
-             'debian/source/include-binaries to allow their inclusion).',
-             $unwanted_binaries), $unwanted_binaries)
-         if $unwanted_binaries;
+
+    $binaryfiles->detect_binary_files(
+        exclude_globs => $self->{options}{tar_ignore},
+        include_binaries => $include_binaries,
+    );
 
     # Handle modified binary files detected by the auto-patch generation
     my $handle_binary = sub {

-- 
Dpkg.Org's dpkg

Reply via email to