[libconfig-model-dpkg-perl] 08/11: Scanner: find main license info found in LICENSE or COPYING or README

dod at debian.org dod at debian.org
Fri Jul 3 19:20:13 UTC 2015


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

dod pushed a commit to branch master
in repository libconfig-model-dpkg-perl.

commit cd07b1ad20f9d45e04c77a149d1cf3b9befeb47f
Author: Dominique Dumont <dod at debian.org>
Date:   Thu Jul 2 21:30:02 2015 +0200

    Scanner: find main license info found in LICENSE or COPYING or README
    
    The "weight" is the found info is light: A license file count
    as much as a simple file. Mostly useful if no other license
    info is specified in header of files.
---
 lib/Dpkg/Copyright/Scanner.pm     |  32 ++++++++--
 t/scanner/examples/libtommath.in  | 125 ++++++++++++++++++++++++++++++++++++++
 t/scanner/examples/libtommath.out |   4 ++
 3 files changed, 155 insertions(+), 6 deletions(-)

diff --git a/lib/Dpkg/Copyright/Scanner.pm b/lib/Dpkg/Copyright/Scanner.pm
index 07ebdc0..a1fa6e0 100644
--- a/lib/Dpkg/Copyright/Scanner.pm
+++ b/lib/Dpkg/Copyright/Scanner.pm
@@ -93,11 +93,13 @@ sub scan_files ( %args ) {
         @lines = $args{in}->lines_utf8; # for other tests
     }
     else {
-        my $pipe = IO::Pipe->new();
-        $pipe->reader("licensecheck --copyright -m -r .");
-        binmode($pipe, ":encoding(UTF-8)");
-        @lines = $pipe->getlines;
-        $pipe->close;
+        foreach my $opts ( ('',q! -c '(?i:readme|license|copying).*'!)) {
+            my $pipe = IO::Pipe->new();
+            $pipe->reader("licensecheck --copyright -m -r $opts .");
+            binmode($pipe, ":encoding(UTF-8)");
+            push @lines, $pipe->getlines;
+            $pipe->close;
+        }
     }
 
     my %copyrights ;
@@ -141,6 +143,9 @@ sub scan_files ( %args ) {
 
         $c = __pack_copyright($c);
 
+        next if $l =~ /unknown/i and $c =~ /no-info-found/i;
+
+        #say "Storing '$f' : '$c' '$l'";
         $files->{$f} = $copyrights{$c}{$l} //= $id++;
     }
 
@@ -343,10 +348,24 @@ sub __coalesce_copyright_years($entries, $owners) {
 }
 
 # $h is a tree of hash matching the directory structure. Each leaf is a
-# copyright id.
+# copyright id. Each key is a file name in a directory (not the full path)
 sub __squash ($h) {
     my %count ;
 
+    # find main license info found in LICENCE or COPYING or README
+    # file
+    foreach my $info_name (qw/readme copying license/) {
+        my $re = qr!$info_name[.\w]*$!i;
+        foreach my $name (sort keys %$h) {
+            if ($name =~ $re) {
+                my $id = delete $h->{$name};
+                #say "del global lic info $name with ".Dumper($id);
+                # using 1 means that info from this file is easy to override
+                $count{$id} = 1;
+            };
+        }
+    }
+
     # count the number of times each (c) info is used in this directory.
     # (including the main (c) info of each subdirectory)
     foreach my $name (sort keys %$h) {
@@ -366,6 +385,7 @@ sub __squash ($h) {
     }
 
     # find the most used (c) info in this directory (or the existing '*' entry)
+    # unless info was already found in LICENSE or README content
     my $max = 0;
     my $main_license_id = $h->{'*'};
     if (not defined $main_license_id) {
diff --git a/t/scanner/examples/libtommath.in b/t/scanner/examples/libtommath.in
new file mode 100644
index 0000000..697f0d8
--- /dev/null
+++ b/t/scanner/examples/libtommath.in
@@ -0,0 +1,125 @@
+./bn_s_mp_mul_digs.c	UNKNOWN	*No copyright*
+./bn_mp_clear.c	UNKNOWN	*No copyright*
+./bn_fast_mp_montgomery_reduce.c	UNKNOWN	*No copyright*
+./bn_s_mp_add.c	UNKNOWN	*No copyright*
+./bn_mp_reduce.c	UNKNOWN	*No copyright*
+./bn_mp_init.c	UNKNOWN	*No copyright*
+./bn_mp_xor.c	UNKNOWN	*No copyright*
+./bn_mp_mul_d.c	UNKNOWN	*No copyright*
+./bn_mp_div_2.c	UNKNOWN	*No copyright*
+./bn_mp_invmod.c	UNKNOWN	*No copyright*
+./bn_mp_mul.c	UNKNOWN	*No copyright*
+./bn_mp_div_2d.c	UNKNOWN	*No copyright*
+./bn_mp_read_radix.c	UNKNOWN	*No copyright*
+./bn_mp_to_signed_bin.c	UNKNOWN	*No copyright*
+./bn_mp_get_int.c	UNKNOWN	*No copyright*
+./bn_mp_montgomery_reduce.c	UNKNOWN	*No copyright*
+./bn_mp_reduce_2k.c	UNKNOWN	*No copyright*
+./bn_mp_karatsuba_sqr.c	UNKNOWN	*No copyright*
+./bn_mp_toom_mul.c	UNKNOWN	*No copyright*
+./bn_mp_mulmod.c	UNKNOWN	*No copyright*
+./bn_mp_expt_d.c	UNKNOWN	*No copyright*
+./bn_mp_signed_bin_size.c	UNKNOWN	*No copyright*
+./bn_mp_dr_setup.c	UNKNOWN	*No copyright*
+./bn_mp_grow.c	UNKNOWN	*No copyright*
+./bn_mp_sub_d.c	UNKNOWN	*No copyright*
+./bn_mp_cmp.c	UNKNOWN	*No copyright*
+./bn_mp_to_unsigned_bin.c	UNKNOWN	*No copyright*
+./bn_mp_get_long.c	UNKNOWN	*No copyright*
+./bn_mp_2expt.c	UNKNOWN	*No copyright*
+./bn_reverse.c	UNKNOWN	*No copyright*
+./bn_mp_read_signed_bin.c	UNKNOWN	*No copyright*
+./bn_mp_zero.c	UNKNOWN	*No copyright*
+./bn_mp_prime_fermat.c	UNKNOWN	*No copyright*
+./bn_mp_abs.c	UNKNOWN	*No copyright*
+./bn_mp_copy.c	UNKNOWN	*No copyright*
+./bn_mp_dr_is_modulus.c	UNKNOWN	*No copyright*
+./bn_mp_mul_2.c	UNKNOWN	*No copyright*
+./bn_fast_s_mp_mul_high_digs.c	UNKNOWN	*No copyright*
+./bn_mp_init_set_int.c	UNKNOWN	*No copyright*
+./bn_mp_unsigned_bin_size.c	UNKNOWN	*No copyright*
+./bn_mp_gcd.c	UNKNOWN	*No copyright*
+./bn_mp_radix_smap.c	UNKNOWN	*No copyright*
+./bn_mp_to_unsigned_bin_n.c	UNKNOWN	*No copyright*
+./tommath_class.h	UNKNOWN	*No copyright*
+./bn_mp_or.c	UNKNOWN	*No copyright*
+./bn_mp_toom_sqr.c	UNKNOWN	*No copyright*
+./bn_mp_clamp.c	UNKNOWN	*No copyright*
+./bn_mp_fread.c	UNKNOWN	*No copyright*
+./bn_mp_cmp_mag.c	UNKNOWN	*No copyright*
+./bn_mp_prime_is_prime.c	UNKNOWN	*No copyright*
+./bn_mp_prime_next_prime.c	UNKNOWN	*No copyright*
+./tommath_superclass.h	UNKNOWN	*No copyright*
+./bn_mp_toradix_n.c	UNKNOWN	*No copyright*
+./bn_mp_exch.c	UNKNOWN	*No copyright*
+./bn_mp_sqrmod.c	UNKNOWN	*No copyright*
+./bn_mp_exptmod.c	UNKNOWN	*No copyright*
+./bn_error.c	UNKNOWN	*No copyright*
+./bn_mp_init_copy.c	UNKNOWN	*No copyright*
+./bn_mp_toradix.c	UNKNOWN	*No copyright*
+./bn_mp_shrink.c	UNKNOWN	*No copyright*
+./bn_mp_clear_multi.c	UNKNOWN	*No copyright*
+./bn_mp_lcm.c	UNKNOWN	*No copyright*
+./bn_mp_cnt_lsb.c	UNKNOWN	*No copyright*
+./bn_mp_mul_2d.c	UNKNOWN	*No copyright*
+./bn_mp_lshd.c	UNKNOWN	*No copyright*
+./bn_mp_and.c	UNKNOWN	*No copyright*
+./bn_mp_prime_is_divisible.c	UNKNOWN	*No copyright*
+./bn_mp_karatsuba_mul.c	UNKNOWN	*No copyright*
+./bn_mp_sqrt.c	UNKNOWN	*No copyright*
+./bn_mp_rshd.c	UNKNOWN	*No copyright*
+./bn_mp_cmp_d.c	UNKNOWN	*No copyright*
+./bn_mp_add_d.c	UNKNOWN	*No copyright*
+./tommath.h	UNKNOWN	*No copyright*
+./bn_mp_div.c	UNKNOWN	*No copyright*
+./bn_mp_dr_reduce.c	UNKNOWN	*No copyright*
+./bn_mp_exteuclid.c	UNKNOWN	*No copyright*
+./bn_mp_addmod.c	UNKNOWN	*No copyright*
+./bn_mp_add.c	UNKNOWN	*No copyright*
+./bn_mp_set_int.c	UNKNOWN	*No copyright*
+./bn_mp_fwrite.c	UNKNOWN	*No copyright*
+./bn_s_mp_sqr.c	UNKNOWN	*No copyright*
+./bn_mp_set_long.c	UNKNOWN	*No copyright*
+./bn_mp_exptmod_fast.c	UNKNOWN	*No copyright*
+./bn_s_mp_exptmod.c	UNKNOWN	*No copyright*
+./bn_fast_mp_invmod.c	UNKNOWN	*No copyright*
+./bn_mp_sub.c	UNKNOWN	*No copyright*
+./bn_mp_reduce_2k_setup_l.c	UNKNOWN	*No copyright*
+./bn_mp_to_signed_bin_n.c	UNKNOWN	*No copyright*
+./bn_mp_init_multi.c	UNKNOWN	*No copyright*
+./bn_mp_set.c	UNKNOWN	*No copyright*
+./bn_mp_div_d.c	UNKNOWN	*No copyright*
+./bn_mp_prime_random_ex.c	UNKNOWN	*No copyright*
+./bn_mp_reduce_is_2k_l.c	UNKNOWN	*No copyright*
+./bn_mp_neg.c	UNKNOWN	*No copyright*
+./bn_mp_mod_d.c	UNKNOWN	*No copyright*
+./bn_mp_reduce_2k_setup.c	UNKNOWN	*No copyright*
+./bn_mp_is_square.c	UNKNOWN	*No copyright*
+./bn_fast_s_mp_sqr.c	UNKNOWN	*No copyright*
+./bn_s_mp_mul_high_digs.c	UNKNOWN	*No copyright*
+./bn_mp_reduce_setup.c	UNKNOWN	*No copyright*
+./bn_mp_mod_2d.c	UNKNOWN	*No copyright*
+./bn_mp_montgomery_calc_normalization.c	UNKNOWN	*No copyright*
+./bn_fast_s_mp_mul_digs.c	UNKNOWN	*No copyright*
+./bncore.c	UNKNOWN	*No copyright*
+./bn_mp_count_bits.c	UNKNOWN	*No copyright*
+./bn_mp_read_unsigned_bin.c	UNKNOWN	*No copyright*
+./bn_mp_reduce_2k_l.c	UNKNOWN	*No copyright*
+./bn_mp_rand.c	UNKNOWN	*No copyright*
+./bn_s_mp_sub.c	UNKNOWN	*No copyright*
+./bn_mp_sqr.c	UNKNOWN	*No copyright*
+./bn_mp_div_3.c	UNKNOWN	*No copyright*
+./bn_prime_tab.c	UNKNOWN	*No copyright*
+./bn_mp_init_size.c	UNKNOWN	*No copyright*
+./bn_mp_invmod_slow.c	UNKNOWN	*No copyright*
+./bn_mp_init_set.c	UNKNOWN	*No copyright*
+./bn_mp_prime_rabin_miller_trials.c	UNKNOWN	*No copyright*
+./bn_mp_montgomery_setup.c	UNKNOWN	*No copyright*
+./bn_mp_n_root.c	UNKNOWN	*No copyright*
+./bn_mp_prime_miller_rabin.c	UNKNOWN	*No copyright*
+./bn_mp_mod.c	UNKNOWN	*No copyright*
+./bn_mp_reduce_is_2k.c	UNKNOWN	*No copyright*
+./bn_mp_jacobi.c	UNKNOWN	*No copyright*
+./bn_mp_submod.c	UNKNOWN	*No copyright*
+./bn_mp_radix_size.c	UNKNOWN	*No copyright*
+LICENSE	WTFPL	2004 Sam Hocevar <sam at hocevar.net>
diff --git a/t/scanner/examples/libtommath.out b/t/scanner/examples/libtommath.out
new file mode 100644
index 0000000..ba4bb35
--- /dev/null
+++ b/t/scanner/examples/libtommath.out
@@ -0,0 +1,4 @@
+Files: *
+Copyright: 2004, Sam Hocevar <sam at hocevar.net>
+License: WTFPL
+

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libconfig-model-dpkg-perl.git



More information about the Pkg-perl-cvs-commits mailing list