diff options
-rwxr-xr-x | bin/genpkg | 10 | ||||
-rwxr-xr-x | lib/metas/perl | 14 | ||||
-rwxr-xr-x | lib/metas/perl.d/perl-dist | 31 | ||||
-rwxr-xr-x | lib/templ/pbfields | 12 | ||||
-rw-r--r-- | tweaks/perl-anyevent | 9 | ||||
-rw-r--r-- | tweaks/perl-guard | 1 | ||||
-rw-r--r-- | tweaks/perl-package-stash | 1 |
7 files changed, 45 insertions, 33 deletions
@@ -40,15 +40,11 @@ do METABIN=$libd/metas PKGVAR=$vard makepkgmeta "$pkg" >PKGMETA case $? in - 1) cd .. - rm -r "$pkgd/$pkg" - echo "$prog: aborting." 1>&2 - exit 1 + 0) echo "Generated $pkgd/$pkg/PKGMETA" ;; + *) exit $? esac - echo "Generated $pkgd/$pkg/PKGMETA" - - twk=$libd/tweakd/$pkg + twk=$tweakd/$pkg if [ -f "$twk" -a -r "$twk" ] then if ! tweakmeta >PKGMETA.new <$twk diff --git a/lib/metas/perl b/lib/metas/perl index 4d310a6..961084d 100755 --- a/lib/metas/perl +++ b/lib/metas/perl @@ -7,7 +7,8 @@ use File::Fetch; use IO::Handle; # for autoflush use Cwd; -my $PROG = 'metas/perl'; +my $PROG = 'perl'; +my %BADNAMES = ('perl-libwww' => 'libwww-perl'); sub err { @@ -65,12 +66,11 @@ sub fetchdist sub main { - my $pkg = shift or die "Usage: $PROG [package name]\n"; - my $dist = $pkg; + my $dist = shift or die "Usage: $PROG [package name]\n"; - my $forcechk; - if($dist =~ s/^perl-// == 0){ - $forcechk = 1; + if($BADNAMES{$dist}){ + $dist = $BADNAMES{$dist}; + }elsif($dist =~ s/^perl-// == 0){ $dist = "app-$dist"; } @@ -94,7 +94,7 @@ http://search.cpan.org/CPAN/authors/id/$cpath END_META - my $file = $cpath; $file =~ s{^.*/}{}; + my $file = $cpath; $file =~ s{.*/}{}; system('perl-dist', $file); return $?; } 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; diff --git a/lib/templ/pbfields b/lib/templ/pbfields index 247b18c..5e7844c 100755 --- a/lib/templ/pbfields +++ b/lib/templ/pbfields @@ -29,6 +29,8 @@ $1 == "pkgdesc" { $2 = sprintf("\"%s\"", $2) } +$1 == "pkgverfmt" { pkgverfmt = $2 } + strfield[$1] { output[$1] = $2 } arrfield[$1] { @@ -36,15 +38,21 @@ arrfield[$1] { } END { + if(pkgverfmt){ + output["pkgver"] = sprintf(pkgverfmt, output["pkgver"]) + } + if(!maintainer && !packager) { packager = "Anonymous" } if(maintainer) print "# Maintainer: " maintainer else if(packager) print "# Packager: " packager print "" OFS = "="; ORS = "\n"; - for(i=1; i<=max; i++) { + for(i=1; i<=max; i++){ name = fields[i] - if(name in output) print name, output[name] + if(name in output){ + print name, output[name] + } } } diff --git a/tweaks/perl-anyevent b/tweaks/perl-anyevent index 8eea46d..2cbf10c 100644 --- a/tweaks/perl-anyevent +++ b/tweaks/perl-anyevent @@ -1,6 +1,7 @@ -! perl-cpan AnyEvent -+ optdepends perl-async-interrupt: Faster signal handling for some event loops. ++ optdepends perl-async-interrupt: signal handling for other event loops ++ optdepends perl-net-ssleay: TLS/SSL connections with AnyEvent::Handle ++ optdepends perl-json-xs: send or receive JSON with AnyEvent::Handle + depends perl-ev>=4.00 + depends perl-guard>=1.02 -+ depends perl-json-xs>=2.2 -+ depends perl-net-ssleay>=1.33 ++ depends perl-async-interrupt>=1.0 += pkgverfmt %.02f diff --git a/tweaks/perl-guard b/tweaks/perl-guard new file mode 100644 index 0000000..1fe8888 --- /dev/null +++ b/tweaks/perl-guard @@ -0,0 +1 @@ += license custom:unknown diff --git a/tweaks/perl-package-stash b/tweaks/perl-package-stash new file mode 100644 index 0000000..fd218f7 --- /dev/null +++ b/tweaks/perl-package-stash @@ -0,0 +1 @@ ++ depends perl-package-stash-xs>=0.24 |