X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/6dc4b81fd5464bb1978be6b32df331682dfcccbd..3287f6c3a5c077096c5c7fc57423efca85e12336:/Porting/corelist.pl diff --git a/Porting/corelist.pl b/Porting/corelist.pl index b636051..e06f598 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,36 +80,38 @@ 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|dist|(vms/|symbian/)?ext)/}{} - and $1 ne 'lib' + $module =~ s{^(lib|cpan|dist|(?:vms/|symbian/)?ext)/}{} + and $1 ne 'lib' and ( $module =~ s{\b(\w+)/\1\b}{$1}, $module =~ s{^B/O}{O}, $module =~ s{^Devel-PPPort}{Devel}, + $module =~ s{^libnet/}{}, $module =~ s{^Encode/encoding}{encoding}, $module =~ s{^IPC-SysV/}{IPC/}, $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', - 'dist', - 'vms/ext', - 'symbian/ext' + 'cpan', + 'dist' ); -e 'configpm' and $lines{Config} = 'undef'; @@ -135,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)$/; @@ -156,7 +162,7 @@ while ( my ( $module, $file ) = each %module_to_file ) { # Like it or lump it, this has to be Unix format. my $meta_YAML_path = "authors/id/$dist"; - $meta_YAML_path =~ s/(?:tar\.gz|zip)$/meta/ or die "$meta_YAML_path"; + $meta_YAML_path =~ s/(?:tar\.gz|tar\.bz2|zip)$/meta/ or die "$meta_YAML_path"; my $meta_YAML_url = 'http://ftp.funet.fi/pub/CPAN/' . $meta_YAML_path; if ( -e "$cpan/$meta_YAML_path" ) { @@ -190,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}; @@ -204,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 .= ");"; @@ -225,7 +240,7 @@ unless ( { warn "Adding $perl_vnum to the list of released perl versions. Please consider adding a release date.\n"; $corelist =~ s/^(%released \s* = \s* .*?) ( \) ) - /$1 $perl_vnum => '????-??-??',\n $2/ismx; + /$1 $perl_vnum => '????-??-??',\n $2/ismx; } write_corelist($corelist);