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

js pushed a commit to branch master
in repository libgd-graph3d-perl.

commit 823bd6d094d00aabc6c4d5b2e45a26471fc4c4e4
Author: Jonas Smedegaard <d...@jones.dk>
Date:   Sat Jun 14 12:17:14 2014 +0200

    Extract metadata from (not suppress) images before copyright check. 
Build-depend on libregexp-assemble-perl, libimage-exiftool-perl and 
libfont-ttf-perl
---
 debian/license-miner | 205 +++++++++++++++++++++++++++++++++++++++++++++++++++
 debian/rules         |  19 ++++-
 2 files changed, 222 insertions(+), 2 deletions(-)

diff --git a/debian/license-miner b/debian/license-miner
new file mode 100644
index 0000000..3cf50f8
--- /dev/null
+++ b/debian/license-miner
@@ -0,0 +1,205 @@
+#! /usr/bin/perl
+
+use autodie;
+use strict;
+use utf8;
+use warnings qw(all);
+use feature 'say';
+
+use Getopt::Long;
+use Pod::Usage;
+use FileHandle;
+use Regexp::Assemble;
+use Image::ExifTool;
+use Font::TTF::Font;
+
+=head1 NAME
+
+license-miner - extract copyright/licensing info from complex files
+
+=head1 SYNOPSIS
+
+license-miner [B<options>] [F<path>|inspector:F<path>...]
+
+=head1 OPTIONS
+
+=over 12
+
+=item B<--help>
+
+Print a brief help message and exits.
+
+=item B<--man>
+
+Prints the manual page and exits.
+
+=item B<--verbose>
+
+Prints names of paths and the inspector used.
+
+=item B<--debug>
+
+Prints extracted info.
+
+=back
+
+=head1 DESCRIPTION
+
+B<This program> will inspect files,
+extract their copyright and licensing info,
+and save the result next to the files
+(adding suffix "F<.metadata_dump>").
+
+File paths are provided either as arguments
+or (if no arguments provided) from STDIN.
+
+Each path may optionally be prefixed with an inspector to use.
+Default is to pick inspector based on file suffix.
+
+=head1 INSPECTORS
+
+Available inspectors are B<ttf> and B<exif>.
+
+=over 12
+
+=item B<ttf>
+
+TrueType fonts (including Truetype-flavored OpenType and WOFF).
+
+Used by default for extensions F<.ttf>, F<.otf>, F<woff>.
+
+Beware that some OpenType fonts are not TrueType but Type1,
+which may fail to parse correctly based on suffix detection.
+If that happens, try force using the exif inspector
+by prefixing the path with "exif:".
+
+=item B<exif>
+
+misc. images and fonts.
+
+Used by default for extensions F<.pdf>, F<.png>, F<.jpg>, F<jpeg>, F<gif>, 
F<icc>.
+
+Beware that some OpenType fonts are not TrueType but Type1,
+which may fail to parse correctly based on suffix detection.
+If that happens, try force using the exif inspector
+by prefixing the path with "exif:".
+
+=back
+
+=cut
+
+# avoid custom configuration of ExifTool
+BEGIN { $Image::ExifTool::configFile = '' }
+
+GetOptions( help => \my $help,
+       man      => \my $man,
+       verbose  => \my $verbose,
+       debug    => \my $debug,
+) or pod2usage(2);
+pod2usage( -verbose => 1 ) if $help;
+pod2usage( -verbose => 2, -exitstatus => 0 ) if $man;
+
+# Fail if no paths provided as arguments and STDIN is interactive
+pod2usage("$0: No paths provided.") if ((@ARGV == 0) && (-t STDIN));
+
+my $dispatch = {
+       # TrueType fonts (including Truetype-flavored OpenType and WOFF)
+       '((?<=\Attf:).*|\A.*\.(?:ttf|otf|woff))$' => sub {
+               my $file = check_infile(shift);
+               say "ttf: $file" if ($verbose);
+               my $handle = ($debug)
+                       ? *STDOUT{IO}
+                       : FileHandle->new( check_outfile($file), 'w' );
+               # source: http://scripts.sil.org/IWS-Chapter08#3054f18b
+               my %table = (
+                       Copyright => 0,
+                       Trademark => 7,
+                       License => 13,
+                       'License URL' => 14,
+               );
+               my $font = Font::TTF::Font->open($file) or do {
+                       say STDERR "ERROR: Failed to parse file as TrueType: 
$_";
+                       exit 1;
+               };
+               my $fn = $font->{'name'}->read;
+               foreach (sort keys %table) {
+                       my $value = $fn->find_name($table{$_});
+                       print $handle $_ . ": " . $value . "\n"
+                               if ($value);
+               }
+       },
+       # exif: misc. images and fonts
+       '((?<=\Aexif:).*|\A.*\.(?:pdf|png|jpg|jpeg|gif|icc))$' => sub {
+               my $file = check_infile(shift);
+               say "exif: $file" if ($verbose);
+               my $exifTool = new Image::ExifTool;
+               my $handle = ($debug)
+                       ? *STDOUT{IO}
+                       : FileHandle->new( check_outfile($file), 'w' );
+               my $info = $exifTool->ImageInfo($file,
+                       # tags to lookup (like `exiftool $file` in shell)
+                       '*Copyright*', '*Licens*', '*Trademark*');
+               my $seen;
+               foreach (sort keys %$info) {
+                       my $tagdesc = $exifTool->GetDescription($_);
+                       print $handle "$tagdesc: $$info{$_}\n";
+               }
+       }
+};
+
+my $re = Regexp::Assemble->new( track => 1 )->add( keys %$dispatch );
+
+while( <> ) {
+       chomp;
+       if( $re->match($_) ) {
+               $dispatch->{ $re->matched }( $re->mvar(1) );
+       }
+       else {
+               say STDERR "ERROR: Unsupported or unparseable string: $_";
+               say STDERR "       maybe you need a prefix (e.g. 
\"exif:fonts/SomeType1Font\"";
+               exit 1;
+       }
+}
+
+sub check_infile {
+       my $infile = shift;
+       unless ( -e $infile ) {
+               say STDERR "ERROR: file does not exist: $infile";
+               exit 1;
+       }
+       return $infile;
+}
+
+sub check_outfile {
+       my $infile = shift;
+       my $outfile = $infile . ".metadata_dump";
+       if ( -e $outfile ) {
+               say STDERR "ERROR: dumpfile exist: $outfile";
+               say STDERR "       remove or put aside and try again";
+               exit 1;
+       }
+       return $outfile;
+}
+
+=head1 AUTHOR
+
+Jonas Smedegaard, C<< <d...@jones.dk> >>
+
+=head1 LICENSE AND COPYRIGHT
+
+Copyright 2014 Jonas Smedegaard
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 3, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+=cut
diff --git a/debian/rules b/debian/rules
index ebc1ed0..3addf2a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -33,5 +33,20 @@ deps +=, libgd-perl | libgd-gd2-noxpm-perl | libgd-gd2-perl
 CDBS_BUILD_DEPENDS +=, $(deps)
 CDBS_DEPENDS_$(pkg) = $(deps)
 
-# Suppress some graphics (in addition to default stuff)
-DEB_COPYRIGHT_CHECK_IGNORE_REGEX = 
^(t/.*\.png|debian/(changelog|copyright(|_hints|_newhints)))$
+# extract metadata from images before copyright check
+CDBS_BUILD_DEPENDS +=, libregexp-assemble-perl, libimage-exiftool-perl
+CDBS_BUILD_DEPENDS +=, libfont-ttf-perl
+local_inspection_regex = png
+DEB_COPYRIGHT_CHECK_IGNORE_REGEX = 
^((.*/)?[^/]+\.($(local_inspection_regex))|debian/(changelog|copyright(|_hints|_newhints)))$$
+debian/stamp-copyright-check: debian/stamp-extract-copyright
+debian/stamp-extract-copyright:
+       find * -type f -regextype posix-extended \
+               -regex '.*\.($(local_inspection_regex))' \
+               -print0 | perl -0 debian/license-miner
+       touch $@
+pre-build:: clean-extracted-copyright-during-build
+clean-extracted-copyright-during-build: debian/stamp-copyright-check
+       find -type f -name '*.metadata_dump' -delete
+clean::
+       find -type f -name '*.metadata_dump' -delete
+       rm -f debian/stamp-extract-copyright

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-perl/packages/libgd-graph3d-perl.git

_______________________________________________
Pkg-perl-cvs-commits mailing list
Pkg-perl-cvs-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits

Reply via email to