open SCRIPTS, "utils.lst" or die "Can't open utils.lst: $!";
while (<SCRIPTS>) {
next if /^#/;
- s/\s*#\s*pod\s*=.*//; # install script regardless of pod location
next if /a2p/; # a2p is binary, to be installed separately
chomp;
if (/(\S*)\s*#\s*link\s*=\s*(\S*)/) {
# Exclude nonxs extensions that are not architecture dependent
my @nonxs = grep(!/^Errno$/, split(' ', $Config{'nonxs_ext'}));
-find(sub {
- if (($File::Find::name =~ m{^ext\b(.*)/([^/]+)\.pm$}) &&
- ! grep { (my $dir = $_) =~ s/\//-/g;
- $File::Find::name =~ /^ext\/$dir/ } @nonxs)
- {
- my($path, $modname) = ($1,$2);
+my @ext_dirs = qw(cpan dist ext);
+foreach my $ext_dir (@ext_dirs) {
+ find(sub {
+ if (($File::Find::name =~ m{^$ext_dir\b(.*)/([^/]+)\.pm$}) &&
+ ! grep { (my $dir = $_) =~ s/\//-/g;
+ $File::Find::name =~ /^$ext_dir\/$dir\// } @nonxs)
+ {
+ my($path, $modname) = ($1,$2);
- # strip to optional "/lib", or remove trailing component
- $path =~ s{.*/lib\b}{} or $path =~ s{/[^/]*$}{};
+ # Change hyphenated name like Filter-Util-Call to nested
+ # directory name Filter/Util/Call
+ $path =~ s{-}{/}g;
- # strip any leading /
- $path =~ s{^/}{};
+ # strip to optional "/lib", or remove trailing component
+ $path =~ s{.*/lib\b}{} or $path =~ s{/[^/]*$}{};
- # reconstitute canonical module name
- $modname = "$path/$modname" if length $path;
+ # strip any leading /
+ $path =~ s{^/}{};
- # remember it
- $archpms{$modname} = 1;
- }
-}, 'ext');
+ # reconstitute canonical module name
+ $modname = "$path/$modname" if length $path;
+
+ # remember it
+ $archpms{$modname} = 1;
+ }
+ }, $ext_dir);
+}
# print "[$_]\n" for sort keys %archpms;
# If installing onto a NetWare server
if ($nwinstall) {
# Copy perl.nlm, echo.nlm, type.nlm, a2p.nlm & cgi2perl.nlm
- mkpath($Config{installnwsystem}, 1, 0777);
+ mkpath($Config{installnwsystem}, $opts{verbose}, 0777);
copy("netware\\".$ENV{'MAKE_TYPE'}."\\perl.nlm", $Config{installnwsystem});
copy("netware\\testnlm\\echo\\echo.nlm", $Config{installnwsystem});
copy("netware\\testnlm\\type\\type.nlm", $Config{installnwsystem});
copy("x2p\\a2p.nlm", $Config{installnwsystem});
chmod(0755, "$Config{installnwsystem}\\perl.nlm");
- mkpath($Config{installnwlcgi}, 1, 0777);
+ mkpath($Config{installnwlcgi}, $opts{verbose}, 0777);
copy("lib\\auto\\cgi2perl\\cgi2perl.nlm", $Config{installnwlcgi});
}
} #if (!$Is_NetWare)
# Install library files.
-my ($do_installarchlib, $do_installprivlib) = (0, 0);
+my $do_installarchlib = !samepath($installarchlib, 'lib');
+my $do_installprivlib = !samepath($installprivlib, 'lib');
my $vershort = ($Is_Cygwin and !$Config{usedevel}) ? substr($ver,0,-2) : $ver;
+$do_installprivlib = 0 if $versiononly && !($installprivlib =~ m/\Q$vershort/);
mkpath($installprivlib, $opts{verbose}, 0777);
mkpath($installarchlib, $opts{verbose}, 0777);
mkpath($installsitearch, $opts{verbose}, 0777) if ($installsitearch);
if (chdir "lib") {
- $do_installarchlib = ! samepath($installarchlib, '.');
- $do_installprivlib = ! samepath($installprivlib, '.');
- $do_installprivlib = 0 if $versiononly && !($installprivlib =~ m/\Q$vershort/);
-
if ($do_installarchlib || $do_installprivlib) {
find(\&installlib, '.');
}
mkpath("$installarchlib/CORE/mpeix", $opts{verbose}, 0777);
push(@corefiles,'mpeix/mpeixish.h');
}
- # If they have built sperl.o...
- push(@corefiles,'sperl.o') if -f 'sperl.o';
}
foreach my $file (@corefiles) {
# HP-UX (at least) needs to maintain execute permissions
if ( !$versiononly || ($installprivlib =~ m/\Q$vershort/)) {
mkpath("${installprivlib}/$pod", $opts{verbose}, 0777);
- # If Perl 5.003's perldiag.pod is there, rename it.
- if (open POD, "${installprivlib}/$pod/perldiag.pod") {
- read POD, $_, 4000;
- close POD;
- # Some of Perl 5.003's diagnostic messages ended with periods.
- if (/^=.*\.$/m) {
- my ($from, $to) = ("${installprivlib}/$pod/perldiag.pod",
- "${installprivlib}/$pod/perldiag-5.003.pod");
- print " rename $from $to";
- rename($from, $to)
- or warn "Couldn't rename $from to $to: $!\n"
- unless $opts{notify};
- }
- }
-
for (@pods) {
# $_ is a name like pod/perl.pod
(my $base = $_) =~ s#.*/##;
for ($i = 1; $i < 50; $i++) {
last if rename($to, "$to.$i");
}
- warn("Cannot rename to `$to.$i': $!"), return 0
+ warn("Cannot rename to '$to.$i': $!"), return 0
if $i >= 50; # Give up!
}
link($from,$to) || return 0;
# ignore patch backups, RCS files, emacs backup & temp files and the
# .exists files, .PL files, and test files.
- return if $name =~ m{\.orig$|\.rej$|~$|^#.+#$|,v$|^\.exists|\.PL$|\.plc$|\.t$|^test\.pl$|^dbm_filter_util.pl$} ||
+ return if $name =~ m{\.orig$|\.rej$|~$|^#.+#$|,v$|^\.exists|\.PL$|\.plc$|\.t$|^test\.pl$|^dbm_filter_util\.pl$|^filter-util\.pl$|^uupacktool\.pl$|^\.gitignore$} ||
$dir =~ m{/t(?:/|$)};
# ignore the cpan script in lib/CPAN/bin, the instmodsh and xsubpp
# scripts in lib/ExtUtils, the prove script in lib/Test/Harness,
# the corelist script from lib/Module/CoreList/bin and ptar* in
# lib/Archive/Tar/bin, the config_data script in lib/Module/Build/scripts
+ # and zipdetails in cpan/IO-Compress/bin
# (they're installed later with other utils)
- return if $name =~ /^(?:cpan|instmodsh|prove|corelist|ptar|cpan2dist|cpanp|cpanp-run-perl|ptardiff|config_data)\z/;
+ return if $name =~ /^(?:cpan|instmodsh|prove|corelist|ptar|cpan2dist|cpanp|cpanp-run-perl|ptardiff|ptargrep|config_data|zipdetails)\z/;
# ignore the Makefiles
return if $name =~ /^makefile$/i;
# ignore the test extensions
return if $dir =~ m{\bXS/(?:APItest|Typemap)\b};
return if $name =~ m{\b(?:APItest|Typemap)\.pm$};
+ # ignore the build support code
+ return if $name =~ /\bbuildcustomize\.pl$/;
# ignore the demo files
return if $dir =~ /\b(?:demos?|eg)\b/;
+ # ignore unneeded unicore files
+ if ( $dir =~ /^unicore/ ) {
+ if ( $name =~ /\.txt\z/ ) {
+ # We can ignore most, but not all .txt files
+ return unless $name =~ /\A(?:Blocks|CaseFolding|SpecialCasing|NamedSequences)\.txt\z/;
+ }
+ else {
+ # TestProp only needed during testing
+ return if $name =~ /\ATestProp.pl\z/;
+ # we need version and *.pl files and can skip the rest
+ return unless $name =~ /\A(?:version|\w+\.p[lm])\z/;
+ }
+ }
# ignore READMEs, MANIFESTs, INSTALL docs, META.ymls and change logs.
# Changes.e2x and README.e2x are needed by enc2xs.
return unless $do_installprivlib;
}
+ if ($Is_NetWare && !$nwinstall && /\.(?:nlp|nlm|bs)$/) {
+ # Don't copy .nlp,.nlm files, doesn't make sense on Windows and also
+ # if copied will give problems when building new extensions.
+ # Has to be copied if we are installing on a NetWare server and
+ # hence the check !$nwinstall
+ return;
+ }
+
if (-f $_) {
if (/\.(?:al|ix)$/ && !($dir =~ m[^auto/(.*)$])) {
$installlib = $installprivlib;
mkpath("$installlib/$dir", $opts{verbose}, 0777);
# HP-UX (at least) needs to maintain execute permissions
# on dynamically-loaded libraries.
- if ($Is_NetWare && !$nwinstall) {
- # Don't copy .nlp,.nlm files, doesn't make sense on Windows and also
- # if copied will give problems when building new extensions.
- # Has to be copied if we are installing on a NetWare server and hence
- # the check !$nwinstall
- if (!(/\.(?:nlp|nlm|bs)$/)) {
- copy_if_diff($_, "$installlib/$name")
- and chmod($name =~ /\.(so|$dlext)$/o ? 0555 : 0444,
- "$installlib/$name");
- }
- } else {
- if (copy_if_diff($_, "$installlib/$name")) {
- if ($name =~ /\.(so|$dlext)$/o) {
- strip("-S", "$installlib/$name") if $^O =~ /^(rhapsody|darwin)$/;
- chmod(0555, "$installlib/$name");
- } else {
- strip("-S", "$installlib/$name")
- if ($name =~ /\.a$/o and $^O =~ /^(rhapsody|darwin)$/);
- chmod(0444, "$installlib/$name");
- }
- }
- } #if ($Is_NetWare)
+ if (copy_if_diff($_, "$installlib/$name")) {
+ strip("-S", "$installlib/$name")
+ if $^O =~ /^(rhapsody|darwin)$/ and /\.(?:so|$dlext|a)$/;
+ chmod(/\.(so|$dlext)$/ ? 0555 : 0444, "$installlib/$name");
+ }
}
}
}
}
}
}
+
+# Local variables:
+# cperl-indent-level: 4
+# indent-tabs-mode: nil
+# End:
+#
+# ex: set ts=8 sts=4 sw=4 et: