summaryrefslogtreecommitdiffstats
path: root/lib/metas/perl.d/perl-dist
diff options
context:
space:
mode:
Diffstat (limited to 'lib/metas/perl.d/perl-dist')
-rwxr-xr-xlib/metas/perl.d/perl-dist31
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;