diff options
Diffstat (limited to 'lib/metas/perl.d/perl-dist')
-rwxr-xr-x | lib/metas/perl.d/perl-dist | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/lib/metas/perl.d/perl-dist b/lib/metas/perl.d/perl-dist index 36a7b60..3259fd8 100755 --- a/lib/metas/perl.d/perl-dist +++ b/lib/metas/perl.d/perl-dist @@ -48,7 +48,7 @@ sub dist_pkgname # Package names should be lowercase and consist of alphanumeric # characters only (and hyphens!)... - $distname = lc($distname); + $distname = lc($distname); $distname =~ tr/_+/--/; $distname =~ tr/-a-z0-9//cd; # Delete all other chars $distname =~ tr/-/-/s; @@ -103,7 +103,7 @@ sub _merge MERGE_LOOP: while(my ($pkg, $ver) = each(%$right_deps)) { if($left_deps->{$pkg}) { - my $leftver = version->parse($left_deps->{$pkg}); + my $leftver = version->parse($left_deps->{$pkg}); my $rightver = version->parse($ver); next MERGE_LOOP if $leftver > $rightver; } @@ -122,8 +122,8 @@ sub _mergedups for my $name (keys %$left) { my $rver = delete($right->{$name}) or next; my $lver = $left->{$name}; - my $lvo = ($lver ? version->parse($lver) : 0); - my $rvo = ($rver ? version->parse($rver) : 0); + my $lvo = ($lver ? version->parse($lver) : 0); + my $rvo = ($rver ? version->parse($rver) : 0); $left->{$name} = ($lvo > $rvo ? $lvo : $rvo); } @@ -174,14 +174,19 @@ sub _reqs2deps my ($prereqs) = @_; my (@mods, %pkgdeps); - CPAN_DEP_LOOP: + # Filter out deps on 'perl' and any core modules that we can. while(my ($name, $ver) = each(%$prereqs)) { - # Sometimes a perl version is given as a prerequisite + my $cver = $Module::CoreList::version{$]}{$name}; if($name eq 'perl') { $pkgdeps{'perl'} = _perldepver($ver); - next CPAN_DEP_LOOP; + }elsif($cver && !$ver + || version->parse($ver) > version->parse($cver)){ + # Only add deps for core modules if we need a higher + # version than what is in the core for our perl interpreter. + ; + }else{ + push @mods, $name; } - push @mods, $name; } my %dists = _distsofmods(@mods); @@ -343,7 +348,7 @@ use Digest::SHA (); sub main { my $distpath = shift() or die "Usage: $PROG [path to cpan dist file]\n"; - my $dir = dirname($distpath); + my $dir = dirname($distpath); my $file = basename($distpath); my $info = distinfo($file); @@ -352,7 +357,7 @@ sub main my $meta = loadmeta($dir); my $desc = $meta->{'abstract'}; - if(!$desc || $desc eq '~') { + if(!$desc || $desc eq '~' || $desc eq 'unknown') { $meta->{'abstract'} = distdesc($dir, $info->{'mod'}); } @@ -453,9 +458,9 @@ sub loadmeta my $meta = do { local $/; <$metafh> }; close($metafh); - $meta = ($metaext eq 'json' ? decode_json($meta) : - $metaext eq 'yml' ? YAML::XS::Load($meta) : - die "internal error: unknown \$metaext: $metaext"); + $meta = ($metaext eq 'json' ? decode_json($meta) : + $metaext eq 'yml' ? YAML::XS::Load($meta) : + die "internal error: unknown \$metaext: $metaext"); upgrademeta($meta); return $meta; |