%opts $packlist);
my ($dostrip, $versiononly, $force,
$otherperls, $archname, $nwinstall, $nopods);
-# Not sure how easy it would be to refactor to remove the need for local $depth
-# below
-use vars qw /$depth/;
BEGIN {
if ($Is_VMS) { eval 'use VMS::Filespec;' }
use ExtUtils::Packlist;
use Cwd;
+require './Porting/pod_lib.pl';
+
if ($Is_NetWare) {
$Is_W32 = 0;
$scr_ext = '.pl';
if ($scr_ext) { @scripts = map { "$_$scr_ext" } @scripts; }
-my @pods = $nopods ? () : (<pod/*.pod>, 'x2p/a2p.pod');
-
# Specify here any .pm files that are actually architecture-dependent.
# (Those included with XS extensions under ext/ are automatically
# added later.)
mkpath($installsitearch, $opts{verbose}, 0777) if ($installsitearch);
if (-d 'lib') {
- find(\&installlib, 'lib')
+ find({no_chdir => 1, wanted => \&installlib}, 'lib')
if $do_installarchlib || $do_installprivlib;
}
else {
# Install pod pages. Where? I guess in $installprivlib/pod
# ($installprivlib/pods for cygwin).
-
-my $pod = ($Is_Cygwin || $Is_Darwin || $Is_VMS || $Is_W32) ? 'pods' : 'pod';
-if ( !$versiononly || ($installprivlib =~ m/\Q$vershort/)) {
+if (!$nopods && (!$versiononly || ($installprivlib =~ m/\Q$vershort/))) {
+ my $pod = ($Is_Cygwin || $Is_Darwin || $Is_VMS || $Is_W32) ? 'pods' : 'pod';
mkpath("${installprivlib}/$pod", $opts{verbose}, 0777);
- for (@pods) {
+ for (map {$_->[1]} @{get_pod_metadata()->{master}}) {
# $_ is a name like pod/perl.pod
(my $base = $_) =~ s#.*/##;
copy_if_diff($_, "${installprivlib}/$pod/${base}");
sub installlib {
my $dir = $File::Find::dir;
$dir =~ s!\Alib/?!!;
- local($depth) = $File::Find::dir . '/';
- my $name = $_;
+ m!([^/]+)\z!;
+ my $name = $1;
+
+ # This remains ugly, and in need of refactoring.
+
+ # $name always starts as the leafname
+ # $dir is the directory *within* lib
+ # $name later has $dir pre-pended, to give the relative path in lib/
+ # which is used to create the path in the target directory.
+
+ # $_ was always the filename to use on disk. Adding no_chdir doesn't change
+ # this, as $_ becomes a pathname, and so still works. However, it's not
+ # obvious that $_ is needed later, and hence $_ must not be modified.
+
+ # Also, many of the regex exlusion tests below are now superfluous, as the
+ # files in question are either no longer in blead, or now in ext/, dist/ or
+ # cpan/ and not copied into lib/
# Ignore version control directories.
if ($name =~ /^(?:CVS|RCS|SCCS|\.svn)\z/ and -d $name) {
$name = "$dir/$name" if $dir ne '';
+ # ignore pods that are stand alone documentation from dual life modules.
+ return if /\.pod\z/ && is_duplicate_pod($_);
+
return if $name eq 'ExtUtils/XSSymSet.pm' and !$Is_VMS;
my $installlib = $installprivlib;
$packlist->{$xto} = { type => 'file' };
if ($force || compare($from, $to) || $opts{notify}) {
safe_unlink($to); # In case we don't have write permissions.
- if ($opts{notify}) {
- $from = $depth . $from if $depth;
- }
if ($perlpodbadsymlink && $from =~ m!^pod/perl(.+)\.pod$!) {
$from = "README.$1";
}