From 2cb1ad0a6b296a4da159144909674fb99896c236 Mon Sep 17 00:00:00 2001 From: Chris 'BinGOs' Williams Date: Wed, 4 Dec 2013 08:46:07 +0000 Subject: [PATCH] Update CPAN-Meta to CPAN version 2.133380 [DELTA] 2.133380 2013-12-03 23:01:07 America/New_York [FIXED] - Improved bad version handling during META conversion - When downgrading multiple licenses to version 1.x META formats, if all the licenses are open source, the downgraded license will be "open_source", not "unknown" --- META.json | 2 +- META.yml | 2 +- Porting/Maintainers.pl | 2 +- cpan/CPAN-Meta/lib/CPAN/Meta.pm | 6 +++--- cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm | 35 +++++++++++++++++++++++-------- cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm | 6 +++--- cpan/CPAN-Meta/lib/CPAN/Meta/History.pm | 6 +++--- cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm | 6 +++--- cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm | 8 +++---- cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm | 6 +++--- cpan/CPAN-Meta/t/converter.t | 21 +++++++++++++++++++ cpan/CPAN-Meta/t/data-test/META-2.json | 3 ++- 12 files changed, 71 insertions(+), 32 deletions(-) diff --git a/META.json b/META.json index c5559de..91f378d 100644 --- a/META.json +++ b/META.json @@ -4,7 +4,7 @@ "perl5-porters@perl.org" ], "dynamic_config" : 1, - "generated_by" : "CPAN::Meta version 2.132830", + "generated_by" : "CPAN::Meta version 2.133380", "license" : [ "perl_5" ], diff --git a/META.yml b/META.yml index 1a1fc6a..3130f01 100644 --- a/META.yml +++ b/META.yml @@ -4,7 +4,7 @@ author: - perl5-porters@perl.org build_requires: {} dynamic_config: 1 -generated_by: 'CPAN::Meta version 2.132830, CPAN::Meta::Converter version 2.132830' +generated_by: 'CPAN::Meta version 2.133380, CPAN::Meta::Converter version 2.133380' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl index 06ec362..2e13c08 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -302,7 +302,7 @@ use File::Glob qw(:case); # Note: When updating CPAN-Meta the META.* files will need to be regenerated # perl -Icpan/CPAN-Meta/lib Porting/makemeta 'CPAN::Meta' => { - 'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-2.132830.tar.gz', + 'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-2.133380.tar.gz', 'FILES' => q[cpan/CPAN-Meta], 'EXCLUDED' => [ qw(t/00-compile.t), diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta.pm b/cpan/CPAN-Meta/lib/CPAN/Meta.pm index 25a4d1a..87bbfa2 100644 --- a/cpan/CPAN-Meta/lib/CPAN/Meta.pm +++ b/cpan/CPAN-Meta/lib/CPAN/Meta.pm @@ -2,7 +2,7 @@ use 5.006; use strict; use warnings; package CPAN::Meta; -our $VERSION = '2.132830'; # VERSION +our $VERSION = '2.133380'; # VERSION use Carp qw(carp croak); @@ -340,7 +340,7 @@ __END__ =pod -=encoding utf-8 +=encoding UTF-8 =head1 NAME @@ -348,7 +348,7 @@ CPAN::Meta - the distribution metadata for a CPAN dist =head1 VERSION -version 2.132830 +version 2.133380 =head1 SYNOPSIS diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm b/cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm index 2825eb2..aa8749b 100644 --- a/cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm +++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm @@ -2,13 +2,14 @@ use 5.006; use strict; use warnings; package CPAN::Meta::Converter; -our $VERSION = '2.132830'; # VERSION +our $VERSION = '2.133380'; # VERSION use CPAN::Meta::Validator; use CPAN::Meta::Requirements; use version 0.88 (); use Parse::CPAN::Meta 1.4400 (); +use List::Util 1.33 qw/all/; sub _dclone { my $ref = shift; @@ -94,7 +95,7 @@ sub _change_meta_spec { }; } -my @valid_licenses_1 = ( +my @open_source = ( 'perl', 'gpl', 'apache', @@ -106,6 +107,12 @@ my @valid_licenses_1 = ( 'mit', 'mozilla', 'open_source', +); + +my %is_open_source = map {; $_ => 1 } @open_source; + +my @valid_licenses_1 = ( + @open_source, 'unrestricted', 'restrictive', 'unknown', @@ -122,7 +129,9 @@ sub _license_1 { if ( $license_map_1{lc $element} ) { return $license_map_1{lc $element}; } - return 'unknown'; + else { + return 'unknown'; + } } my @valid_licenses_2 = qw( @@ -220,12 +229,20 @@ sub _downgrade_license { return "unknown"; } elsif( ref $element eq 'ARRAY' ) { - if ( @$element == 1 ) { - return $license_downgrade_map{$element->[0]} || "unknown"; + if ( @$element > 1) { + if ( all { $is_open_source{ $license_downgrade_map{lc $_} || 'unknown' } } @$element ) { + return 'open_source'; + } + else { + return 'unknown'; + } + } + elsif ( @$element == 1 ) { + return $license_downgrade_map{lc $element->[0]} || "unknown"; } } elsif ( ! ref $element ) { - return $license_downgrade_map{$element} || "unknown"; + return $license_downgrade_map{lc $element} || "unknown"; } return "unknown"; } @@ -349,7 +366,7 @@ sub _version_map { # XXX turn this into CPAN::Meta::Requirements with bad version hook # and then turn it back into a hash my $new_map = CPAN::Meta::Requirements->new( - { bad_version_hook => sub { version->new(0) } } # punt + { bad_version_hook => \&_bad_version_hook } # punt ); while ( my ($k,$v) = each %$element ) { next unless _is_module_name($k); @@ -1293,7 +1310,7 @@ __END__ =pod -=encoding utf-8 +=encoding UTF-8 =head1 NAME @@ -1301,7 +1318,7 @@ CPAN::Meta::Converter - Convert CPAN distribution metadata structures =head1 VERSION -version 2.132830 +version 2.133380 =head1 SYNOPSIS diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm b/cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm index 978aa3d..6631586 100644 --- a/cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm +++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm @@ -2,7 +2,7 @@ use 5.006; use strict; use warnings; package CPAN::Meta::Feature; -our $VERSION = '2.132830'; # VERSION +our $VERSION = '2.133380'; # VERSION use CPAN::Meta::Prereqs; @@ -36,7 +36,7 @@ __END__ =pod -=encoding utf-8 +=encoding UTF-8 =head1 NAME @@ -44,7 +44,7 @@ CPAN::Meta::Feature - an optional feature provided by a CPAN distribution =head1 VERSION -version 2.132830 +version 2.133380 =head1 DESCRIPTION diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/History.pm b/cpan/CPAN-Meta/lib/CPAN/Meta/History.pm index d52e8c7..30bbb06 100644 --- a/cpan/CPAN-Meta/lib/CPAN/Meta/History.pm +++ b/cpan/CPAN-Meta/lib/CPAN/Meta/History.pm @@ -3,7 +3,7 @@ use 5.006; use strict; use warnings; package CPAN::Meta::History; -our $VERSION = '2.132830'; # VERSION +our $VERSION = '2.133380'; # VERSION 1; @@ -13,7 +13,7 @@ __END__ =pod -=encoding utf-8 +=encoding UTF-8 =head1 NAME @@ -21,7 +21,7 @@ CPAN::Meta::History - history of CPAN Meta Spec changes =head1 VERSION -version 2.132830 +version 2.133380 =head1 DESCRIPTION diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm b/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm index 169b28e..a4e6057 100644 --- a/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm +++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm @@ -2,7 +2,7 @@ use 5.006; use strict; use warnings; package CPAN::Meta::Prereqs; -our $VERSION = '2.132830'; # VERSION +our $VERSION = '2.133380'; # VERSION use Carp qw(confess); @@ -174,7 +174,7 @@ __END__ =pod -=encoding utf-8 +=encoding UTF-8 =head1 NAME @@ -182,7 +182,7 @@ CPAN::Meta::Prereqs - a set of distribution prerequisites by phase and type =head1 VERSION -version 2.132830 +version 2.133380 =head1 DESCRIPTION diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm b/cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm index cbc0ff9..bc745f9 100644 --- a/cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm +++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm @@ -7,7 +7,7 @@ use 5.006; use strict; use warnings; package CPAN::Meta::Spec; -our $VERSION = '2.132830'; # VERSION +our $VERSION = '2.133380'; # VERSION 1; @@ -20,7 +20,7 @@ __END__ =pod -=encoding utf-8 +=encoding UTF-8 =head1 NAME @@ -28,7 +28,7 @@ CPAN::Meta::Spec - specification for CPAN distribution metadata =head1 VERSION -version 2.132830 +version 2.133380 =head1 SYNOPSIS @@ -315,7 +315,7 @@ Example: license => [ 'perl_5' ] - license => [ 'apache_2', 'mozilla_1_0' ] + license => [ 'apache_2_0', 'mozilla_1_0' ] (Spec 2) [required] {List of one or more License Strings} diff --git a/cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm b/cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm index 8fabd4b..e094b8f 100644 --- a/cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm +++ b/cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm @@ -2,7 +2,7 @@ use 5.006; use strict; use warnings; package CPAN::Meta::Validator; -our $VERSION = '2.132830'; # VERSION +our $VERSION = '2.133380'; # VERSION #--------------------------------------------------------------------------# @@ -815,7 +815,7 @@ __END__ =pod -=encoding utf-8 +=encoding UTF-8 =head1 NAME @@ -823,7 +823,7 @@ CPAN::Meta::Validator - validate CPAN distribution metadata structures =head1 VERSION -version 2.132830 +version 2.133380 =head1 SYNOPSIS diff --git a/cpan/CPAN-Meta/t/converter.t b/cpan/CPAN-Meta/t/converter.t index e963168..0811828 100644 --- a/cpan/CPAN-Meta/t/converter.t +++ b/cpan/CPAN-Meta/t/converter.t @@ -274,4 +274,25 @@ sub _normalize_reqs { } } +# specific test for multiple licenses +{ + my $path = File::Spec->catfile('t','data-test','META-2.json'); + my $original = Parse::CPAN::Meta->load_file( $path ); + ok( $original, "loaded META-2.json" ); + my $cmc = CPAN::Meta::Converter->new( $original ); + my $cleaned_up = $cmc->convert( version => "2" ); + is_deeply( + $cleaned_up->{license}, + [ 'perl_5', 'bsd' ], + "multiple license preserved (v2)" + ); + + $cleaned_up = $cmc->convert( version => "1.4" ); + is( + $cleaned_up->{license}, + 'open_source', + "multiple license converted to open_source (v1.4)" + ); +} + done_testing; diff --git a/cpan/CPAN-Meta/t/data-test/META-2.json b/cpan/CPAN-Meta/t/data-test/META-2.json index d737fef..e0c7e32 100644 --- a/cpan/CPAN-Meta/t/data-test/META-2.json +++ b/cpan/CPAN-Meta/t/data-test/META-2.json @@ -22,7 +22,8 @@ ], "release_status" : "stable", "license" : [ - "perl_5" + "perl_5", + "bsd" ], "description" : "Module::Build is a system for building, testing, and installing Perl modules. It is meant to be an alternative to ExtUtils::MakeMaker... blah blah blah", "keywords" : [ -- 2.7.4