X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Porting%2Fcorelist.pl;h=87d61e6ca90c4d54a24ffa6d699b9e1d87b2caee;hb=28c5b5bcd7f52e6b2219508a1066cd0ccc8dd19a;hp=7fa8dcd3ffc1eb3f1267ef4868c80c6801ed632d;hpb=3eae08dfbe89d75b89c4024f9ef41b7e8aa46236;p=p5sagit%2Fp5-mst-13.2.git diff --git a/Porting/corelist.pl b/Porting/corelist.pl index 7fa8dcd..87d61e6 100644 --- a/Porting/corelist.pl +++ b/Porting/corelist.pl @@ -16,6 +16,7 @@ use lib "Porting"; use Maintainers qw(%Modules files_to_modules); use File::Spec; use Parse::CPAN::Meta; +use IPC::Cmd 'can_run'; my $corelist_file = 'dist/Module-CoreList/lib/Module/CoreList.pm'; @@ -47,8 +48,9 @@ if ($cpan) { warn "Reading the module list from $modlistfile"; open $fh, '<', $modlistfile or die "Couldn't open $modlistfile: $!"; } elsif ( -e $modlistfile . ".gz" ) { + my $zcat = can_run('gzcat') || can_run('zcat') or die "Can't find gzcat or zcat"; warn "Reading the module list from $modlistfile.gz"; - open $fh, '-|', "gzcat $modlistfile.gz" or die "Couldn't zcat $modlistfile.gz: $!"; + open $fh, '-|', "$zcat $modlistfile.gz" or die "Couldn't zcat $modlistfile.gz: $!"; } else { warn "About to fetch 02packages from ftp.funet.fi. This may take a few minutes\n"; $content = fetch_url('http://ftp.funet.fi/pub/CPAN/modules/02packages.details.txt'); @@ -78,14 +80,13 @@ find( /(\.pm|_pm\.PL)$/ or return; /PPPort\.pm$/ and return; my $module = $File::Find::name; - warn $module; $module =~ /\b(demo|t|private)\b/ and return; # demo or test modules my $version = MM->parse_version($_); defined $version or $version = 'undef'; $version =~ /\d/ and $version = "'$version'"; # some heuristics to figure out the module name from the file name - $module =~ s{^(lib|cpan|dist|(vms/|symbian/)?ext)/}{} + $module =~ s{^(lib|cpan|dist|(?:vms/|symbian/)?ext)/}{} and $1 ne 'lib' and ( $module =~ s{\b(\w+)/\1\b}{$1}, @@ -97,19 +98,20 @@ find( $module =~ s{^MIME-Base64/QuotedPrint}{MIME/QuotedPrint}, $module =~ s{^(?:DynaLoader|Errno|Opcode)/}{}, ); + $module =~ s{^lib/}{}g; $module =~ s{/}{::}g; $module =~ s{-}{::}g; - $module =~ s{^.*::lib::}{}; + $module =~ s{^.*::lib::}{}; # turns Foo/lib/Foo.pm into Foo.pm $module =~ s/(\.pm|_pm\.PL)$//; $lines{$module} = $version; $module_to_file{$module} = $File::Find::name; }, + 'vms/ext', + 'symbian/ext', 'lib', 'ext', 'cpan', - 'dist', - 'vms/ext', - 'symbian/ext' + 'dist' ); -e 'configpm' and $lines{Config} = 'undef'; @@ -137,11 +139,13 @@ my $file_to_M = files_to_modules( values %module_to_file ); my %module_to_upstream; my %module_to_dist; my %dist_to_meta_YAML; +my %module_to_deprecated; while ( my ( $module, $file ) = each %module_to_file ) { my $M = $file_to_M->{$file}; next unless $M; next if $Modules{$M}{MAINTAINER} eq 'p5p'; $module_to_upstream{$module} = $Modules{$M}{UPSTREAM}; + $module_to_deprecated{$module} = 1 if $Modules{$M}{DEPRECATED}; next if defined $module_to_upstream{$module} && $module_to_upstream{$module} =~ /^(?:blead|first-come)$/; @@ -192,6 +196,15 @@ $upstream_stanza .= ");"; $corelist =~ s/^%upstream .*? ;$/$upstream_stanza/ismx; +# Deprecation generation +my $deprecated_stanza = " " . $perl_vnum . " => {\n"; +foreach my $module ( sort keys %module_to_deprecated ) { + my $deprecated = defined $module_to_deprecated{$module} ? "'$module_to_deprecated{$module}'" : 'undef'; + $deprecated_stanza .= sprintf "\t%-24s=> %s,\n", "'$module'", $deprecated; +} +$deprecated_stanza .= " },\n"; +$corelist =~ s/^(%deprecated\s*=\s*.*?)(^\);)$/$1$deprecated_stanza$2/xism; + my $tracker = "%bug_tracker = (\n"; foreach my $module ( sort keys %module_to_upstream ) { my $upstream = defined $module_to_upstream{$module}; @@ -206,7 +219,7 @@ foreach my $module ( sort keys %module_to_upstream ) { if $dist; $bug_tracker = defined $bug_tracker ? "'$bug_tracker'" : 'undef'; - next if $bug_tracker eq "'http://rt.perl.org/perlbug/'"; + next if $bug_tracker eq "'http://rt.perl.org/perlbug/'"; $tracker .= sprintf " %-24s=> %s,\n", "'$module'", $bug_tracker; } $tracker .= ");";