summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Rolsky <autarch@urth.org>2001-12-24 07:27:23 -0600
committerJarkko Hietaniemi <jhi@iki.fi>2001-12-24 22:58:18 +0000
commitecf68df6e17568faac489c8f52d98e01e32472af (patch)
tree9cc6067e7520f3d3040c2bc3759cf5a94f024a8b
parente036fef9c83c3a56ef6c3a3bedfa658fcb8a2517 (diff)
downloadperl-ecf68df6e17568faac489c8f52d98e01e32472af.tar.gz
: ExtUtils::MM_* and File::Spec
Message-ID: <Pine.LNX.4.43.0112241305020.21723-100000@urth.org> p4raw-id: //depot/perl@13880
-rw-r--r--MANIFEST2
-rw-r--r--lib/ExtUtils/MM_Cygwin.pm11
-rw-r--r--lib/ExtUtils/MM_NW5.pm51
-rw-r--r--lib/ExtUtils/MM_OS2.pm6
-rw-r--r--lib/ExtUtils/MM_Unix.pm209
-rw-r--r--lib/ExtUtils/MM_VMS.pm73
-rw-r--r--lib/ExtUtils/MM_Win32.pm52
-rw-r--r--lib/File/Spec.pm12
-rw-r--r--lib/File/Spec/Cygwin.pm35
-rw-r--r--lib/File/Spec/NW5.pm48
-rw-r--r--lib/File/Spec/Win32.pm8
11 files changed, 275 insertions, 232 deletions
diff --git a/MANIFEST b/MANIFEST
index 6c21adaa1e..f7ca02c0dd 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -982,6 +982,8 @@ lib/File/Spec.pm portable operations on file names
lib/File/Spec/Epoc.pm portable operations on EPOC file names
lib/File/Spec/Functions.pm Function interface to File::Spec object methods
lib/File/Spec/Mac.pm portable operations on Mac file names
+lib/File/Spec/Cygwin.pm portable operations on Cygwin file names
+lib/File/Spec/NW5.pm portable operations on NetWare file names
lib/File/Spec/OS2.pm portable operations on OS2 file names
lib/File/Spec/t/Functions.t See if File::Spec::Functions works
lib/File/Spec/t/rel2abs2rel.t See if File::Spec->rel2abs/abs2rel works
diff --git a/lib/ExtUtils/MM_Cygwin.pm b/lib/ExtUtils/MM_Cygwin.pm
index 45833ca259..3d03d321f3 100644
--- a/lib/ExtUtils/MM_Cygwin.pm
+++ b/lib/ExtUtils/MM_Cygwin.pm
@@ -12,12 +12,13 @@ require Exporter;
require ExtUtils::MakeMaker;
ExtUtils::MakeMaker->import(qw( $Verbose &neatvalue));
+use File::Spec;
+
unshift @MM::ISA, 'ExtUtils::MM_Cygwin';
sub canonpath {
- my($self,$path) = @_;
- $path =~ s|\\|/|g;
- return $self->ExtUtils::MM_Unix::canonpath($path);
+ shift;
+ return File::Spec->canonpath(@_);
}
sub cflags {
@@ -46,9 +47,9 @@ sub manifypods {
my($dist);
my($pod2man_exe);
if (defined $self->{PERL_SRC}) {
- $pod2man_exe = $self->catfile($self->{PERL_SRC},'pod','pod2man');
+ $pod2man_exe = File::Spec->catfile($self->{PERL_SRC},'pod','pod2man');
} else {
- $pod2man_exe = $self->catfile($Config{scriptdirexp},'pod2man');
+ $pod2man_exe = File::Spec->catfile($Config{scriptdirexp},'pod2man');
}
unless ($self->perl_script($pod2man_exe)) {
# No pod2man but some MAN3PODS to be installed
diff --git a/lib/ExtUtils/MM_NW5.pm b/lib/ExtUtils/MM_NW5.pm
index c4b1be92f3..59080df5f5 100644
--- a/lib/ExtUtils/MM_NW5.pm
+++ b/lib/ExtUtils/MM_NW5.pm
@@ -133,8 +133,8 @@ sub maybe_command {
}
sub file_name_is_absolute {
- my($self,$file) = @_;
- $file =~ m{^([a-z]:)?[\\/]}i ;
+ shift;
+ return File::Spec->file_name_is_absolute(@_);
}
sub find_perl {
@@ -151,12 +151,12 @@ in these dirs:
next unless defined $dir; # $self->{PERL_SRC} may be undefined
foreach $name (@$names){
my ($abs, $val);
- if ($self->file_name_is_absolute($name)) { # /foo/bar
+ if (File::Spec->file_name_is_absolute($name)) { # /foo/bar
$abs = $name;
- } elsif ($self->canonpath($name) eq $self->canonpath(basename($name))) { # foo
- $abs = $self->catfile($dir, $name);
+ } elsif (File::Spec->canonpath($name) eq File::Spec->canonpath(basename($name))) { # foo
+ $abs = File::Spec->catfile($dir, $name);
} else { # foo/bar
- $abs = $self->canonpath($self->catfile($self->curdir, $name));
+ $abs = File::Spec->canonpath(File::Spec->catfile($self->curdir, $name));
}
print "Checking $abs\n" if ($trace >= 2);
next unless $self->maybe_command($abs);
@@ -175,14 +175,8 @@ in these dirs:
}
sub catdir {
- my $self = shift;
- my @args = @_;
- for (@args) {
- # append a slash to each argument unless it has one there
- $_ .= "\\" if $_ eq '' or substr($_,-1) ne "\\";
- }
- my $result = $self->canonpath(join('', @args));
- $result;
+ shift;
+ return File::Spec->catdir(@_);
}
=item catfile
@@ -193,13 +187,8 @@ complete path ending with a filename
=cut
sub catfile {
- my $self = shift @_;
- my $file = pop @_;
- return $file unless @_;
- my $dir = $self->catdir(@_);
- $dir =~ s/(\\\.)$//;
- $dir .= "\\" unless substr($dir,length($dir)-1,1) eq "\\";
- return $dir.$file;
+ shift;
+ return File::Spec->catfile(@_);
}
sub init_others
@@ -403,11 +392,11 @@ CONFIGDEP = \$(PERL_ARCHLIB)\\Config.pm \$(PERL_INC)\\config.h
my @parentdir = split(/::/, $self->{PARENT_NAME});
push @m, q{
# Where to put things:
-INST_LIBDIR = }. $self->catdir('$(INST_LIB)',@parentdir) .q{
-INST_ARCHLIBDIR = }. $self->catdir('$(INST_ARCHLIB)',@parentdir) .q{
+INST_LIBDIR = }. File::Spec->catdir('$(INST_LIB)',@parentdir) .q{
+INST_ARCHLIBDIR = }. File::Spec->catdir('$(INST_ARCHLIB)',@parentdir) .q{
-INST_AUTODIR = }. $self->catdir('$(INST_LIB)','auto','$(FULLEXT)') .q{
-INST_ARCHAUTODIR = }. $self->catdir('$(INST_ARCHLIB)','auto','$(FULLEXT)') .q{
+INST_AUTODIR = }. File::Spec->catdir('$(INST_LIB)','auto','$(FULLEXT)') .q{
+INST_ARCHAUTODIR = }. File::Spec->catdir('$(INST_ARCHLIB)','auto','$(FULLEXT)') .q{
};
if ($self->has_link_code()) {
@@ -450,11 +439,7 @@ PM_TO_BLIB = }.join(" \\\n\t", %{$self->{PM}}).q{
sub path {
- my($self) = @_;
- my $path = $ENV{'PATH'} || $ENV{'Path'} || $ENV{'path'};
- my @path = split(';',$path);
- foreach(@path) { $_ = '.' if $_ eq '' }
- @path;
+ return File::Spec->path();
}
=item static_lib (o)
@@ -688,7 +673,7 @@ destination and autosplits them. See L<ExtUtils::Install/DESCRIPTION>
sub pm_to_blib {
my $self = shift;
- my($autodir) = $self->catdir('$(INST_LIB)','auto');
+ my($autodir) = File::Spec->catdir('$(INST_LIB)','auto');
return q{
pm_to_blib: $(TO_INST_PM)
}.$self->{NOECHO}.q{$(PERL) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" \
@@ -922,9 +907,9 @@ sub htmlifypods {
my($dist);
my($pod2html_exe);
if (defined $self->{PERL_SRC}) {
- $pod2html_exe = $self->catfile($self->{PERL_SRC},'pod','pod2html');
+ $pod2html_exe = File::Spec->catfile($self->{PERL_SRC},'pod','pod2html');
} else {
- $pod2html_exe = $self->catfile($Config{scriptdirexp},'pod2html');
+ $pod2html_exe = File::Spec->catfile($Config{scriptdirexp},'pod2html');
}
unless ($pod2html_exe = $self->perl_script($pod2html_exe)) {
# No pod2html but some HTMLxxxPODS to be installed
diff --git a/lib/ExtUtils/MM_OS2.pm b/lib/ExtUtils/MM_OS2.pm
index a4bcf73c37..f598c71aaf 100644
--- a/lib/ExtUtils/MM_OS2.pm
+++ b/lib/ExtUtils/MM_OS2.pm
@@ -12,6 +12,8 @@ require Exporter;
require ExtUtils::MakeMaker;
ExtUtils::MakeMaker->import(qw( $Verbose &neatvalue));
+use File::Spec;
+
unshift @MM::ISA, 'ExtUtils::MM_OS2';
=pod
@@ -110,8 +112,8 @@ sub maybe_command {
}
sub file_name_is_absolute {
- my($self,$file) = @_;
- $file =~ m{^([a-z]:)?[\\/]}i ;
+ shift;
+ return File::Spec->file_name_is_absolute(@_);
}
sub perl_archive
diff --git a/lib/ExtUtils/MM_Unix.pm b/lib/ExtUtils/MM_Unix.pm
index 0efe2d8782..b8bfe1471d 100644
--- a/lib/ExtUtils/MM_Unix.pm
+++ b/lib/ExtUtils/MM_Unix.pm
@@ -5,6 +5,7 @@ use strict;
use Exporter ();
use Config;
use File::Basename qw(basename dirname fileparse);
+use File::Spec;
use DirHandle;
use strict;
our ($Is_Mac,$Is_OS2,$Is_VMS,$Is_Win32,$Is_Dos,
@@ -105,13 +106,8 @@ trailing slash :-)
# ';
sub catdir {
- my $self = shift @_;
- my @args = @_;
- for (@args) {
- # append a slash to each argument unless it has one there
- $_ .= "/" if $_ eq '' or substr($_,-1) ne "/";
- }
- $self->canonpath(join('', @args));
+ shift;
+ return File::Spec->catdir(@_);
}
=item catfile
@@ -122,14 +118,8 @@ complete path ending with a filename
=cut
sub catfile {
- my $self = shift @_;
- my $file = pop @_;
- return $self->canonpath($file) unless @_;
- my $dir = $self->catdir(@_);
- for ($dir) {
- $_ .= "/" unless substr($_,length($_)-1,1) eq "/";
- }
- return $self->canonpath($dir.$file);
+ shift;
+ return File::Spec->catdir(@_);
}
=item curdir
@@ -139,7 +129,7 @@ Returns a string representing of the current directory. "." on UNIX.
=cut
sub curdir {
- return "." ;
+ return File::Spec->curdir();
}
=item rootdir
@@ -149,7 +139,7 @@ Returns a string representing of the root directory. "/" on UNIX.
=cut
sub rootdir {
- return "/";
+ return File::Spec->rootdir();
}
=item updir
@@ -159,7 +149,7 @@ Returns a string representing of the parent directory. ".." on UNIX.
=cut
sub updir {
- return "..";
+ return File::Spec->updir();
}
sub c_o;
@@ -652,11 +642,11 @@ CONFIGDEP = \$(PERL_ARCHLIB)/Config.pm \$(PERL_INC)/config.h
my @parentdir = split(/::/, $self->{PARENT_NAME});
push @m, q{
# Where to put things:
-INST_LIBDIR = }. $self->catdir('$(INST_LIB)',@parentdir) .q{
-INST_ARCHLIBDIR = }. $self->catdir('$(INST_ARCHLIB)',@parentdir) .q{
+INST_LIBDIR = }. File::Spec->catdir('$(INST_LIB)',@parentdir) .q{
+INST_ARCHLIBDIR = }. File::Spec->catdir('$(INST_ARCHLIB)',@parentdir) .q{
-INST_AUTODIR = }. $self->catdir('$(INST_LIB)','auto','$(FULLEXT)') .q{
-INST_ARCHAUTODIR = }. $self->catdir('$(INST_ARCHLIB)','auto','$(FULLEXT)') .q{
+INST_AUTODIR = }. File::Spec->catdir('$(INST_LIB)','auto','$(FULLEXT)') .q{
+INST_ARCHAUTODIR = }. File::Spec->catdir('$(INST_ARCHLIB)','auto','$(FULLEXT)') .q{
};
if ($self->has_link_code()) {
@@ -739,8 +729,8 @@ sub dir_target {
my($self,@dirs) = @_;
my(@m,$dir,$targdir);
foreach $dir (@dirs) {
- my($src) = $self->catfile($self->{PERL_INC},'perl.h');
- my($targ) = $self->catfile($dir,'.exists');
+ my($src) = File::Spec->catfile($self->{PERL_INC},'perl.h');
+ my($targ) = File::Spec->catfile($dir,'.exists');
# catfile may have adapted syntax of $dir to target OS, so...
if ($Is_VMS) { # Just remove file name; dirspec is often in macro
($targdir = $targ) =~ s:/?\.exists\z::;
@@ -1152,13 +1142,8 @@ Takes as argument a path and returns true, if it is an absolute path.
=cut
sub file_name_is_absolute {
- my($self,$file) = @_;
- if ($Is_Dos){
- $file =~ m{^([a-z]:)?[\\/]}is ;
- }
- else {
- $file =~ m:^/:s ;
- }
+ shift;
+ return File::Spec->file_name_is_absolute(@_);
}
=item find_perl
@@ -1181,12 +1166,12 @@ in these dirs:
foreach $dir (@$dirs){
next unless defined $dir; # $self->{PERL_SRC} may be undefined
my ($abs, $val);
- if ($self->file_name_is_absolute($name)) { # /foo/bar
+ if (File::Spec->file_name_is_absolute($name)) { # /foo/bar
$abs = $name;
- } elsif ($self->canonpath($name) eq $self->canonpath(basename($name))) { # foo
- $abs = $self->catfile($dir, $name);
+ } elsif (File::Spec->canonpath($name) eq File::Spec->canonpath(basename($name))) { # foo
+ $abs = File::Spec->catfile($dir, $name);
} else { # foo/bar
- $abs = $self->canonpath($self->catfile($self->curdir, $name));
+ $abs = File::Spec->canonpath(File::Spec->catfile(File::Spec->curdir, $name));
}
print "Checking $abs\n" if ($trace >= 2);
next unless $self->maybe_command($abs);
@@ -1243,13 +1228,13 @@ sub fixin { # stolen from the pink Camel book, more or less
$interpreter = $Config{perlpath};
}
} else {
- my(@absdirs) = reverse grep {$self->file_name_is_absolute} $self->path;
+ my(@absdirs) = reverse grep {File::Spec->file_name_is_absolute} File::Spec->path;
$interpreter = '';
my($dir);
foreach $dir (@absdirs) {
if ($self->maybe_command($cmd)) {
warn "Ignoring $interpreter in $file\n" if $Verbose && $interpreter;
- $interpreter = $self->catfile($dir,$cmd);
+ $interpreter = File::Spec->catfile($dir,$cmd);
}
}
}
@@ -1384,9 +1369,9 @@ sub htmlifypods {
my($dist);
my($pod2html_exe);
if (defined $self->{PERL_SRC}) {
- $pod2html_exe = $self->catfile($self->{PERL_SRC},'pod','pod2html');
+ $pod2html_exe = File::Spec->catfile($self->{PERL_SRC},'pod','pod2html');
} else {
- $pod2html_exe = $self->catfile($Config{scriptdirexp},'pod2html');
+ $pod2html_exe = File::Spec->catfile($Config{scriptdirexp},'pod2html');
}
unless ($pod2html_exe = $self->perl_script($pod2html_exe)) {
# No pod2html but some HTMLxxxPODS to be installed
@@ -1432,13 +1417,13 @@ sub init_dirscan { # --- File and Directory Lists (.xs .pm .pod etc)
local(%pm); #the sub in find() has to see this hash
@ignore{qw(Makefile.PL test.pl)} = (1,1);
$ignore{'makefile.pl'} = 1 if $Is_VMS;
- foreach $name ($self->lsdir($self->curdir)){
+ foreach $name ($self->lsdir(File::Spec->curdir)){
next if $name =~ /\#/;
- next if $name eq $self->curdir or $name eq $self->updir or $ignore{$name};
+ next if $name eq File::Spec->curdir or $name eq File::Spec->updir or $ignore{$name};
next unless $self->libscan($name);
if (-d $name){
next if -l $name; # We do not support symlinks at all
- $dir{$name} = $name if (-f $self->catfile($name,"Makefile.PL"));
+ $dir{$name} = $name if (-f File::Spec->catfile($name,"Makefile.PL"));
} elsif ($name =~ /\.xs\z/){
my($c); ($c = $name) =~ s/\.xs\z/.c/;
$xs{$name} = $c;
@@ -1457,9 +1442,9 @@ sub init_dirscan { # --- File and Directory Lists (.xs .pm .pod etc)
if ($txt =~ /Extracting \S+ \(with variable substitutions/) {
($pl_files{$name} = $name) =~ s/[._]pl\z//i ;
}
- else { $pm{$name} = $self->catfile('$(INST_LIBDIR)',$name); }
+ else { $pm{$name} = File::Spec->catfile('$(INST_LIBDIR)',$name); }
} elsif ($name =~ /\.(p[ml]|pod)\z/){
- $pm{$name} = $self->catfile('$(INST_LIBDIR)',$name);
+ $pm{$name} = File::Spec->catfile('$(INST_LIBDIR)',$name);
}
}
@@ -1519,7 +1504,7 @@ sub init_dirscan { # --- File and Directory Lists (.xs .pm .pod etc)
my($striplibpath,$striplibname);
$prefix = '$(INST_LIB)' if (($striplibpath = $path) =~ s:^(\W*)lib\W:$1:i);
($striplibname,$striplibpath) = fileparse($striplibpath);
- my($inst) = $self->catfile($prefix,$striplibpath,$striplibname);
+ my($inst) = File::Spec->catfile($prefix,$striplibpath,$striplibname);
local($_) = $inst; # for backwards compatibility
$inst = $self->libscan($inst);
print "libscan($path) => '$inst'\n" if ($Verbose >= 2);
@@ -1566,11 +1551,11 @@ sub init_dirscan { # --- File and Directory Lists (.xs .pm .pod etc)
next unless $ispod;
if ($pods{HTMLSCRIPT}) {
$self->{HTMLSCRIPTPODS}->{$name} =
- $self->catfile("\$(INST_HTMLSCRIPTDIR)", basename($name).".\$(HTMLEXT)");
+ File::Spec->catfile("\$(INST_HTMLSCRIPTDIR)", basename($name).".\$(HTMLEXT)");
}
if ($pods{MAN1}) {
$self->{MAN1PODS}->{$name} =
- $self->catfile("\$(INST_MAN1DIR)", basename($name).".\$(MAN1EXT)");
+ File::Spec->catfile("\$(INST_MAN1DIR)", basename($name).".\$(MAN1EXT)");
}
}
}
@@ -1612,15 +1597,15 @@ sub init_dirscan { # --- File and Directory Lists (.xs .pm .pod etc)
$manpagename =~ s/\.p(od|m|l)\z//;
if ($pods{HTMLLIB}) {
$self->{HTMLLIBPODS}->{$name} =
- $self->catfile("\$(INST_HTMLLIBDIR)", "$manpagename.\$(HTMLEXT)");
+ File::Spec->catfile("\$(INST_HTMLLIBDIR)", "$manpagename.\$(HTMLEXT)");
}
unless ($manpagename =~ s!^\W*lib\W+!!s) { # everything below lib is ok
- $manpagename = $self->catfile(split(/::/,$self->{PARENT_NAME}),$manpagename);
+ $manpagename = File::Spec->catfile(split(/::/,$self->{PARENT_NAME}),$manpagename);
}
if ($pods{MAN3}) {
$manpagename = $self->replace_manpage_separator($manpagename);
$self->{MAN3PODS}->{$name} =
- $self->catfile("\$(INST_MAN3DIR)", "$manpagename.\$(MAN3EXT)");
+ File::Spec->catfile("\$(INST_MAN3DIR)", "$manpagename.\$(MAN3EXT)");
}
}
}
@@ -1648,7 +1633,7 @@ sub init_main {
### Only UNIX:
### ($self->{FULLEXT} =
### $self->{NAME}) =~ s!::!/!g ; #eg. BSD/Foo/Socket
- $self->{FULLEXT} = $self->catdir(split /::/, $self->{NAME});
+ $self->{FULLEXT} = File::Spec->catdir(split /::/, $self->{NAME});
# Copied from DynaLoader:
@@ -1687,13 +1672,13 @@ sub init_main {
unless ($self->{PERL_SRC}){
my($dir);
- foreach $dir ($self->updir(),$self->catdir($self->updir(),$self->updir()),$self->catdir($self->updir(),$self->updir(),$self->updir()),$self->catdir($self->updir(),$self->updir(),$self->updir(),$self->updir())){
+ foreach $dir (File::Spec->updir(),File::Spec->catdir(File::Spec->updir(),File::Spec->updir()),File::Spec->catdir(File::Spec->updir(),File::Spec->updir(),File::Spec->updir()),File::Spec->catdir(File::Spec->updir(),File::Spec->updir(),File::Spec->updir(),File::Spec->updir())){
if (
- -f $self->catfile($dir,"config.sh")
+ -f File::Spec->catfile($dir,"config.sh")
&&
- -f $self->catfile($dir,"perl.h")
+ -f File::Spec->catfile($dir,"perl.h")
&&
- -f $self->catfile($dir,"lib","Exporter.pm")
+ -f File::Spec->catfile($dir,"lib","Exporter.pm")
) {
$self->{PERL_SRC}=$dir ;
last;
@@ -1701,17 +1686,17 @@ sub init_main {
}
}
if ($self->{PERL_SRC}){
- $self->{PERL_LIB} ||= $self->catdir("$self->{PERL_SRC}","lib");
+ $self->{PERL_LIB} ||= File::Spec->catdir("$self->{PERL_SRC}","lib");
$self->{PERL_ARCHLIB} = $self->{PERL_LIB};
- $self->{PERL_INC} = ($Is_Win32) ? $self->catdir($self->{PERL_LIB},"CORE") : $self->{PERL_SRC};
+ $self->{PERL_INC} = ($Is_Win32) ? File::Spec->catdir($self->{PERL_LIB},"CORE") : $self->{PERL_SRC};
# catch a situation that has occurred a few times in the past:
unless (
- -s $self->catfile($self->{PERL_SRC},'cflags')
+ -s File::Spec->catfile($self->{PERL_SRC},'cflags')
or
$Is_VMS
&&
- -s $self->catfile($self->{PERL_SRC},'perlshr_attr.opt')
+ -s File::Spec->catfile($self->{PERL_SRC},'perlshr_attr.opt')
or
$Is_Mac
or
@@ -1736,21 +1721,21 @@ from the perl source tree.
my $old = $self->{PERL_LIB} || $self->{PERL_ARCHLIB} || $self->{PERL_INC};
$self->{PERL_LIB} ||= $Config::Config{privlibexp};
$self->{PERL_ARCHLIB} ||= $Config::Config{archlibexp};
- $self->{PERL_INC} = $self->catdir("$self->{PERL_ARCHLIB}","CORE"); # wild guess for now
+ $self->{PERL_INC} = File::Spec->catdir("$self->{PERL_ARCHLIB}","CORE"); # wild guess for now
my $perl_h;
no warnings 'uninitialized' ;
- if (not -f ($perl_h = $self->catfile($self->{PERL_INC},"perl.h"))
+ if (not -f ($perl_h = File::Spec->catfile($self->{PERL_INC},"perl.h"))
and not $old){
# Maybe somebody tries to build an extension with an
# uninstalled Perl outside of Perl build tree
my $found;
for my $dir (@INC) {
- $found = $dir, last if -e $self->catdir($dir, "Config.pm");
+ $found = $dir, last if -e File::Spec->catdir($dir, "Config.pm");
}
if ($found) {
my $inc = dirname $found;
- if (-e $self->catdir($inc, "perl.h")) {
+ if (-e File::Spec->catdir($inc, "perl.h")) {
$self->{PERL_LIB} = $found;
$self->{PERL_ARCHLIB} = $found;
$self->{PERL_INC} = $inc;
@@ -1798,22 +1783,22 @@ usually solves this kind of problem.
if (defined $self->{PERL_SRC} and $self->{INSTALLDIRS} eq "perl") {
$self->{INST_LIB} = $self->{INST_ARCHLIB} = $self->{PERL_LIB};
} else {
- $self->{INST_LIB} = $self->catdir($self->curdir,"blib","lib");
+ $self->{INST_LIB} = File::Spec->catdir(File::Spec->curdir,"blib","lib");
}
}
- $self->{INST_ARCHLIB} ||= $self->catdir($self->curdir,"blib","arch");
- $self->{INST_BIN} ||= $self->catdir($self->curdir,'blib','bin');
+ $self->{INST_ARCHLIB} ||= File::Spec->catdir(File::Spec->curdir,"blib","arch");
+ $self->{INST_BIN} ||= File::Spec->catdir(File::Spec->curdir,'blib','bin');
# We need to set up INST_LIBDIR before init_libscan() for VMS
my @parentdir = split(/::/, $self->{PARENT_NAME});
- $self->{INST_LIBDIR} = $self->catdir('$(INST_LIB)',@parentdir);
- $self->{INST_ARCHLIBDIR} = $self->catdir('$(INST_ARCHLIB)',@parentdir);
- $self->{INST_AUTODIR} = $self->catdir('$(INST_LIB)','auto','$(FULLEXT)');
- $self->{INST_ARCHAUTODIR} = $self->catdir('$(INST_ARCHLIB)','auto','$(FULLEXT)');
+ $self->{INST_LIBDIR} = File::Spec->catdir('$(INST_LIB)',@parentdir);
+ $self->{INST_ARCHLIBDIR} = File::Spec->catdir('$(INST_ARCHLIB)',@parentdir);
+ $self->{INST_AUTODIR} = File::Spec->catdir('$(INST_LIB)','auto','$(FULLEXT)');
+ $self->{INST_ARCHAUTODIR} = File::Spec->catdir('$(INST_ARCHLIB)','auto','$(FULLEXT)');
# INST_EXE is deprecated, should go away March '97
- $self->{INST_EXE} ||= $self->catdir($self->curdir,'blib','script');
- $self->{INST_SCRIPT} ||= $self->catdir($self->curdir,'blib','script');
+ $self->{INST_EXE} ||= File::Spec->catdir(File::Spec->curdir,'blib','script');
+ $self->{INST_SCRIPT} ||= File::Spec->catdir(File::Spec->curdir,'blib','script');
# The user who requests an installation directory explicitly
# should not have to tell us an architecture installation directory
@@ -1902,14 +1887,14 @@ usually solves this kind of problem.
$self->prefixify($install_variable,$search_prefix,$replace_prefix);
}
}
- my $funkymandir = $self->catdir($configure_prefix,"lib","perl5","man");
+ my $funkymandir = File::Spec->catdir($configure_prefix,"lib","perl5","man");
$funkymandir = '' unless -d $funkymandir;
- $search_prefix = $funkymandir || $self->catdir($configure_prefix,"man");
- if (-d $self->catdir($self->{PREFIX},"lib","perl5", "man")) {
- $replace_prefix = $self->catdir(qq[\$\(PREFIX\)],"lib", "perl5", "man");
+ $search_prefix = $funkymandir || File::Spec->catdir($configure_prefix,"man");
+ if (-d File::Spec->catdir($self->{PREFIX},"lib","perl5", "man")) {
+ $replace_prefix = File::Spec->catdir(qq[\$\(PREFIX\)],"lib", "perl5", "man");
}
else {
- $replace_prefix = $self->catdir(qq[\$\(PREFIX\)],"man");
+ $replace_prefix = File::Spec->catdir(qq[\$\(PREFIX\)],"man");
}
for $install_variable (qw/
INSTALLMAN1DIR
@@ -1927,7 +1912,7 @@ usually solves this kind of problem.
if ($self->{INSTALLMAN1DIR} =~ /^(none|\s*)$/){
$self->{INST_MAN1DIR} = $self->{INSTALLMAN1DIR};
} else {
- $self->{INST_MAN1DIR} = $self->catdir($self->curdir,'blib','man1');
+ $self->{INST_MAN1DIR} = File::Spec->catdir(File::Spec->curdir,'blib','man1');
}
}
$self->{MAN1EXT} ||= $Config::Config{man1ext};
@@ -1938,7 +1923,7 @@ usually solves this kind of problem.
if ($self->{INSTALLMAN3DIR} =~ /^(none|\s*)$/){
$self->{INST_MAN3DIR} = $self->{INSTALLMAN3DIR};
} else {
- $self->{INST_MAN3DIR} = $self->catdir($self->curdir,'blib','man3');
+ $self->{INST_MAN3DIR} = File::Spec->catdir(File::Spec->curdir,'blib','man3');
}
}
$self->{MAN3EXT} ||= $Config::Config{man3ext};
@@ -1952,7 +1937,7 @@ usually solves this kind of problem.
if ($self->{INSTALLHTMLSITELIBDIR} =~ /^(none|\s*)$/){
$self->{INST_HTMLLIBDIR} = $self->{INSTALLHTMLSITELIBDIR};
} else {
- $self->{INST_HTMLLIBDIR} = $self->catdir($self->curdir,'blib','html','lib');
+ $self->{INST_HTMLLIBDIR} = File::Spec->catdir(File::Spec->curdir,'blib','html','lib');
}
}
@@ -1962,7 +1947,7 @@ usually solves this kind of problem.
if ($self->{INSTALLHTMLSCRIPTDIR} =~ /^(none|\s*)$/){
$self->{INST_HTMLSCRIPTDIR} = $self->{INSTALLHTMLSCRIPTDIR};
} else {
- $self->{INST_HTMLSCRIPTDIR} = $self->catdir($self->curdir,'blib','html','bin');
+ $self->{INST_HTMLSCRIPTDIR} = File::Spec->catdir(File::Spec->curdir,'blib','html','bin');
}
}
$self->{HTMLEXT} ||= $Config::Config{htmlext} || 'html';
@@ -2004,7 +1989,7 @@ usually solves this kind of problem.
# make a simple check if we find Exporter
warn "Warning: PERL_LIB ($self->{PERL_LIB}) seems not to be a perl library directory
(Exporter.pm not found)"
- unless -f $self->catfile("$self->{PERL_LIB}","Exporter.pm") ||
+ unless -f File::Spec->catfile("$self->{PERL_LIB}","Exporter.pm") ||
$self->{NAME} eq "ExtUtils::MakeMaker";
# Determine VERSION and VERSION_FROM
@@ -2185,8 +2170,8 @@ doc__install : doc_site_install
pure_perl_install ::
}.$self->{NOECHO}.q{$(MOD_INSTALL) \
- read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
- write }.$self->catfile('$(INSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
+ read }.File::Spec->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
+ write }.File::Spec->catfile('$(INSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
$(INST_LIB) $(INSTALLPRIVLIB) \
$(INST_ARCHLIB) $(INSTALLARCHLIB) \
$(INST_BIN) $(INSTALLBIN) \
@@ -2196,13 +2181,13 @@ pure_perl_install ::
$(INST_MAN1DIR) $(INSTALLMAN1DIR) \
$(INST_MAN3DIR) $(INSTALLMAN3DIR)
}.$self->{NOECHO}.q{$(WARN_IF_OLD_PACKLIST) \
- }.$self->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{
+ }.File::Spec->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{
pure_site_install ::
}.$self->{NOECHO}.q{$(MOD_INSTALL) \
- read }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
- write }.$self->catfile('$(INSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \
+ read }.File::Spec->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
+ write }.File::Spec->catfile('$(INSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \
$(INST_LIB) $(INSTALLSITELIB) \
$(INST_ARCHLIB) $(INSTALLSITEARCH) \
$(INST_BIN) $(INSTALLBIN) \
@@ -2212,7 +2197,7 @@ pure_site_install ::
$(INST_MAN1DIR) $(INSTALLMAN1DIR) \
$(INST_MAN3DIR) $(INSTALLMAN3DIR)
}.$self->{NOECHO}.q{$(WARN_IF_OLD_PACKLIST) \
- }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{
+ }.File::Spec->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{
doc_perl_install ::
-}.$self->{NOECHO}.q{$(MKPATH) $(INSTALLARCHLIB)
@@ -2222,7 +2207,7 @@ doc_perl_install ::
LINKTYPE "$(LINKTYPE)" \
VERSION "$(VERSION)" \
EXE_FILES "$(EXE_FILES)" \
- >> }.$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{
+ >> }.File::Spec->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{
doc_site_install ::
-}.$self->{NOECHO}.q{$(MKPATH) $(INSTALLARCHLIB)
@@ -2232,7 +2217,7 @@ doc_site_install ::
LINKTYPE "$(LINKTYPE)" \
VERSION "$(VERSION)" \
EXE_FILES "$(EXE_FILES)" \
- >> }.$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{
+ >> }.File::Spec->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{
};
@@ -2241,11 +2226,11 @@ uninstall :: uninstall_from_$(INSTALLDIRS)dirs
uninstall_from_perldirs ::
}.$self->{NOECHO}.
- q{$(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{
+ q{$(UNINSTALL) }.File::Spec->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{
uninstall_from_sitedirs ::
}.$self->{NOECHO}.
- q{$(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{
+ q{$(UNINSTALL) }.File::Spec->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{
};
join("",@m);
@@ -2264,7 +2249,7 @@ sub installbin {
my(@m, $from, $to, %fromto, @to);
push @m, $self->dir_target(qw[$(INST_SCRIPT)]);
for $from (@{$self->{EXE_FILES}}) {
- my($path)= $self->catfile('$(INST_SCRIPT)', basename($from));
+ my($path)= File::Spec->catfile('$(INST_SCRIPT)', basename($from));
local($_) = $path; # for backwards compatibility
$to = $self->libscan($path);
print "libscan($from) => '$to'\n" if ($Verbose >=2);
@@ -2291,7 +2276,7 @@ realclean ::
last unless defined $from;
my $todir = dirname($to);
push @m, "
-$to: $from $self->{MAKEFILE} " . $self->catdir($todir,'.exists') . "
+$to: $from $self->{MAKEFILE} " . File::Spec->catdir($todir,'.exists') . "
$self->{NOECHO}$self->{RM_F} $to
$self->{CP} $from $to
\$(FIXIN) $to
@@ -2594,7 +2579,7 @@ doc_inst_perl:
MAP_STATIC "$(MAP_STATIC)" \
MAP_EXTRA "`cat $(INST_ARCHAUTODIR)/extralibs.all`" \
MAP_LIBPERL "$(MAP_LIBPERL)" \
- >> }.$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{
+ >> }.File::Spec->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{
};
@@ -2602,7 +2587,7 @@ doc_inst_perl:
inst_perl: pure_inst_perl doc_inst_perl
pure_inst_perl: $(MAP_TARGET)
- }.$self->{CP}.q{ $(MAP_TARGET) }.$self->catfile('$(INSTALLBIN)','$(MAP_TARGET)').q{
+ }.$self->{CP}.q{ $(MAP_TARGET) }.File::Spec->catfile('$(INSTALLBIN)','$(MAP_TARGET)').q{
clean :: map_clean
@@ -2666,13 +2651,13 @@ sub manifypods {
my($dist);
my($pod2man_exe);
if (defined $self->{PERL_SRC}) {
- $pod2man_exe = $self->catfile($self->{PERL_SRC},'pod','pod2man');
+ $pod2man_exe = File::Spec->catfile($self->{PERL_SRC},'pod','pod2man');
} else {
- $pod2man_exe = $self->catfile($Config{scriptdirexp},'pod2man');
+ $pod2man_exe = File::Spec->catfile($Config{scriptdirexp},'pod2man');
}
unless ($pod2man_exe = $self->perl_script($pod2man_exe)) {
# Maybe a build by uninstalled Perl?
- $pod2man_exe = $self->catfile($self->{PERL_INC}, "pod", "pod2man");
+ $pod2man_exe = File::Spec->catfile($self->{PERL_INC}, "pod", "pod2man");
}
unless ($pod2man_exe = $self->perl_script($pod2man_exe)) {
# No pod2man but some MAN3PODS to be installed
@@ -2731,12 +2716,12 @@ sub maybe_command_in_dirs { # $ver is optional argument if looking for perl
next unless defined $dir; # $self->{PERL_SRC} may be undefined
foreach $name (@$names){
my($abs,$tryabs);
- if ($self->file_name_is_absolute($name)) { # /foo/bar
+ if (File::Spec->file_name_is_absolute($name)) { # /foo/bar
$abs = $name;
- } elsif ($self->canonpath($name) eq $self->canonpath(basename($name))) { # bar
- $abs = $self->catfile($dir, $name);
+ } elsif (File::Spec->canonpath($name) eq File::Spec->canonpath(basename($name))) { # bar
+ $abs = File::Spec->catfile($dir, $name);
} else { # foo/bar
- $abs = $self->catfile($self->curdir, $name);
+ $abs = File::Spec->catfile(File::Spec->curdir, $name);
}
print "Checking $abs for $name\n" if ($trace >= 2);
next unless $tryabs = $self->maybe_command($abs);
@@ -2900,13 +2885,7 @@ Takes no argument, returns the environment variable PATH as an array.
=cut
sub path {
- my($self) = @_;
- my $path_sep = ($Is_OS2 || $Is_Dos) ? ";" : ":";
- my $path = $ENV{PATH};
- $path =~ s:\\:/:g if $Is_OS2;
- my @path = split $path_sep, $path;
- foreach(@path) { $_ = '.' if $_ eq '' }
- @path;
+ return File::Spec->path();
}
=item perl_script
@@ -3108,7 +3087,7 @@ q{ }.$self->{NOECHO}.q[$(PERLRUNINST) -MExtUtils::Install \
sub pm_to_blib {
my $self = shift;
- my($autodir) = $self->catdir('$(INST_LIB)','auto');
+ my($autodir) = File::Spec->catdir('$(INST_LIB)','auto');
my $r = q{
pm_to_blib: $(TO_INST_PM)
};
@@ -3377,7 +3356,7 @@ sub staticmake {
# And as it's not yet built, we add the current extension
# but only if it has some C code (or XS code, which implies C code)
if (@{$self->{C}}) {
- @static = $self->catfile($self->{INST_ARCHLIB},
+ @static = File::Spec->catfile($self->{INST_ARCHLIB},
"auto",
$self->{FULLEXT},
"$self->{BASEEXT}$self->{LIB_EXT}"
@@ -3648,8 +3627,8 @@ Determines typemaps, xsubpp version, prototype behaviour.
sub tool_xsubpp {
my($self) = shift;
return "" unless $self->needs_linking;
- my($xsdir) = $self->catdir($self->{PERL_LIB},"ExtUtils");
- my(@tmdeps) = $self->catdir('$(XSUBPPDIR)','typemap');
+ my($xsdir) = File::Spec->catdir($self->{PERL_LIB},"ExtUtils");
+ my(@tmdeps) = File::Spec->catdir('$(XSUBPPDIR)','typemap');
if( $self->{TYPEMAPS} ){
my $typemap;
foreach $typemap (@{$self->{TYPEMAPS}}){
@@ -3668,7 +3647,7 @@ sub tool_xsubpp {
}
- my $xsubpp_version = $self->xsubpp_version($self->catfile($xsdir,"xsubpp"));
+ my $xsubpp_version = $self->xsubpp_version(File::Spec->catfile($xsdir,"xsubpp"));
# What are the correct thresholds for version 1 && 2 Paul?
if ( $xsubpp_version > 1.923 ){
diff --git a/lib/ExtUtils/MM_VMS.pm b/lib/ExtUtils/MM_VMS.pm
index a3b236a4ed..fc05da2368 100644
--- a/lib/ExtUtils/MM_VMS.pm
+++ b/lib/ExtUtils/MM_VMS.pm
@@ -19,7 +19,6 @@ our($Revision, @ISA, $VERSION, $Verbose);
# All on one line so MakeMaker can see it.
($VERSION) = ($Revision = '5.56 (27-Apr-1999)') =~ /^([\d.]+)/;
-@ISA = qw( File::Spec );
unshift @MM::ISA, 'ExtUtils::MM_VMS';
require ExtUtils::MakeMaker;
@@ -74,7 +73,7 @@ Returns a string representing of the root directory.
=cut
sub rootdir {
- return '';
+ return File::Spec->rootdir();'
}
package ExtUtils::MM_VMS;
@@ -241,8 +240,8 @@ sub find_perl {
local *TCF;
# Check in relative directories first, so we pick up the current
# version of Perl if we're running MakeMaker as part of the main build.
- @sdirs = sort { my($absa) = $self->file_name_is_absolute($a);
- my($absb) = $self->file_name_is_absolute($b);
+ @sdirs = sort { my($absa) = File::Spec->file_name_is_absolute($a);
+ my($absb) = File::Spec->file_name_is_absolute($b);
if ($absa && $absb) { return $a cmp $b }
else { return $absa ? 1 : ($absb ? -1 : ($a cmp $b)); }
} @$dirs;
@@ -268,7 +267,7 @@ sub find_perl {
}
foreach $dir (@sdirs){
next unless defined $dir; # $self->{PERL_SRC} may be undefined
- $inabs++ if $self->file_name_is_absolute($dir);
+ $inabs++ if File::Spec->file_name_is_absolute($dir);
if ($inabs == 1) {
# We've covered relative dirs; everything else is an absolute
# dir (probably an installed location). First, we'll try potential
@@ -277,7 +276,7 @@ sub find_perl {
$inabs++; # Should happen above in next $dir, but just in case . . .
}
foreach $name (@snames){
- if ($name !~ m![/:>\]]!) { push(@cand,$self->catfile($dir,$name)); }
+ if ($name !~ m![/:>\]]!) { push(@cand,File::Spec->catfile($dir,$name)); }
else { push(@cand,$self->fixpath($name,0)); }
}
}
@@ -322,9 +321,7 @@ to C<split> string value of C<$ENV{'PATH'}>.
=cut
sub path {
- my(@dirs,$dir,$i);
- while ($dir = $ENV{'DCL$PATH;' . $i++}) { push(@dirs,$dir); }
- @dirs;
+ return File::Spec->path();
}
=item maybe_command (override)
@@ -374,10 +371,10 @@ sub maybe_command_in_dirs { # $ver is optional argument if looking for perl
next unless defined $dir; # $self->{PERL_SRC} may be undefined
foreach $name (@$names){
my($abs,$tryabs);
- if ($self->file_name_is_absolute($name)) {
+ if (File::Spec->file_name_is_absolute($name)) {
$abs = $name;
} else {
- $abs = $self->catfile($dir, $name);
+ $abs = File::Spec->catfile($dir, $name);
}
print "Checking $abs for $name\n" if ($trace >= 2);
next unless $tryabs = $self->maybe_command($abs);
@@ -420,10 +417,8 @@ Checks for VMS directory spec as well as Unix separators.
=cut
sub file_name_is_absolute {
- my($self,$file) = @_;
- # If it's a logical name, expand it.
- $file = $ENV{$file} while $file =~ /^[\w\$\-]+$/ and $ENV{$file};
- $file =~ m!^/! or $file =~ m![<\[][^.\-\]>]! or $file =~ /:[^<\[]/;
+ shift;
+ return File::Spec->file_name_is_absolute(@_);
}
=item replace_manpage_separator
@@ -520,7 +515,7 @@ sub constants {
next unless defined $self->{$macro};
$self->{$macro} = $self->fixpath($self->{$macro},1);
}
- $self->{PERL_VMS} = $self->catdir($self->{PERL_SRC},q(VMS))
+ $self->{PERL_VMS} = File::Spec->catdir($self->{PERL_SRC},q(VMS))
if ($self->{PERL_SRC});
@@ -552,7 +547,7 @@ DEFINE_VERSION = "$(VERSION_MACRO)=""$(VERSION)"""
XS_VERSION_MACRO = XS_VERSION
XS_DEFINE_VERSION = "$(XS_VERSION_MACRO)=""$(XS_VERSION)"""
-MAKEMAKER = ],$self->catfile($self->{PERL_LIB},'ExtUtils','MakeMaker.pm'),qq[
+MAKEMAKER = ],File::Spec->catfile($self->{PERL_LIB},'ExtUtils','MakeMaker.pm'),qq[
MM_VERSION = $ExtUtils::MakeMaker::VERSION
MM_REVISION = $ExtUtils::MakeMaker::Revision
MM_VMS_REVISION = $ExtUtils::MM_VMS::Revision
@@ -808,7 +803,7 @@ command line to find args.
sub pm_to_blib {
my($self) = @_;
my($line,$from,$to,@m);
- my($autodir) = $self->catdir('$(INST_LIB)','auto');
+ my($autodir) = File::Spec->catdir('$(INST_LIB)','auto');
my(@files) = @{$self->{PM_TO_BLIB}};
push @m, q{
@@ -867,9 +862,9 @@ Use VMS-style quoting on xsubpp command line.
sub tool_xsubpp {
my($self) = @_;
return '' unless $self->needs_linking;
- my($xsdir) = $self->catdir($self->{PERL_LIB},'ExtUtils');
+ my($xsdir) = File::Spec->catdir($self->{PERL_LIB},'ExtUtils');
# drop back to old location if xsubpp is not in new location yet
- $xsdir = $self->catdir($self->{PERL_SRC},'ext') unless (-f $self->catfile($xsdir,'xsubpp'));
+ $xsdir = File::Spec->catdir($self->{PERL_SRC},'ext') unless (-f File::Spec->catfile($xsdir,'xsubpp'));
my(@tmdeps) = '$(XSUBPPDIR)typemap';
if( $self->{TYPEMAPS} ){
my $typemap;
@@ -893,7 +888,7 @@ sub tool_xsubpp {
(!exists($self->{XSOPT}) || $self->{XSOPT} !~ /linenumbers/)) {
unshift(@tmargs,'-nolinenumbers');
}
- my $xsubpp_version = $self->xsubpp_version($self->catfile($xsdir,'xsubpp'));
+ my $xsubpp_version = $self->xsubpp_version(File::Spec->catfile($xsdir,'xsubpp'));
# What are the correct thresholds for version 1 && 2 Paul?
if ( $xsubpp_version > 1.923 ){
@@ -1371,9 +1366,9 @@ sub manifypods {
my($dist);
my($pod2man_exe);
if (defined $self->{PERL_SRC}) {
- $pod2man_exe = $self->catfile($self->{PERL_SRC},'pod','pod2man');
+ $pod2man_exe = File::Spec->catfile($self->{PERL_SRC},'pod','pod2man');
} else {
- $pod2man_exe = $self->catfile($Config{scriptdirexp},'pod2man');
+ $pod2man_exe = File::Spec->catfile($Config{scriptdirexp},'pod2man');
}
if (not ($pod2man_exe = $self->perl_script($pod2man_exe))) {
# No pod2man but some MAN3PODS to be installed
@@ -1551,7 +1546,7 @@ clean ::
}
}
push(@otherfiles, qw[ blib $(MAKE_APERL_FILE) extralibs.ld perlmain.c pm_to_blib.ts ]);
- push(@otherfiles,$self->catfile('$(INST_ARCHAUTODIR)','extralibs.all'));
+ push(@otherfiles,File::Spec->catfile('$(INST_ARCHAUTODIR)','extralibs.all'));
my($file,$line);
$line = ''; #avoid unitialized var warning
# Occasionally files are repeated several times from different sources
@@ -1792,8 +1787,8 @@ doc__install : doc_site_install
# This hack brought to you by DCL's 255-character command line limit
pure_perl_install ::
- $(NOECHO) $(PERL) -e "print 'read ].$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q[ '" >.MM_tmp
- $(NOECHO) $(PERL) -e "print 'write ].$self->catfile('$(INSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q[ '" >>.MM_tmp
+ $(NOECHO) $(PERL) -e "print 'read ].File::Spec->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q[ '" >.MM_tmp
+ $(NOECHO) $(PERL) -e "print 'write ].File::Spec->catfile('$(INSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q[ '" >>.MM_tmp
$(NOECHO) $(PERL) -e "print '$(INST_LIB) $(INSTALLPRIVLIB) '" >>.MM_tmp
$(NOECHO) $(PERL) -e "print '$(INST_ARCHLIB) $(INSTALLARCHLIB) '" >>.MM_tmp
$(NOECHO) $(PERL) -e "print '$(INST_BIN) $(INSTALLBIN) '" >>.MM_tmp
@@ -1802,12 +1797,12 @@ pure_perl_install ::
$(NOECHO) $(PERL) -e "print '$(INST_MAN3DIR) $(INSTALLMAN3DIR) '" >>.MM_tmp
$(MOD_INSTALL) <.MM_tmp
$(NOECHO) Delete/NoLog/NoConfirm .MM_tmp;
- $(NOECHO) $(WARN_IF_OLD_PACKLIST) ].$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q[
+ $(NOECHO) $(WARN_IF_OLD_PACKLIST) ].File::Spec->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q[
# Likewise
pure_site_install ::
- $(NOECHO) $(PERL) -e "print 'read ].$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q[ '" >.MM_tmp
- $(NOECHO) $(PERL) -e "print 'write ].$self->catfile('$(INSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q[ '" >>.MM_tmp
+ $(NOECHO) $(PERL) -e "print 'read ].File::Spec->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q[ '" >.MM_tmp
+ $(NOECHO) $(PERL) -e "print 'write ].File::Spec->catfile('$(INSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q[ '" >>.MM_tmp
$(NOECHO) $(PERL) -e "print '$(INST_LIB) $(INSTALLSITELIB) '" >>.MM_tmp
$(NOECHO) $(PERL) -e "print '$(INST_ARCHLIB) $(INSTALLSITEARCH) '" >>.MM_tmp
$(NOECHO) $(PERL) -e "print '$(INST_BIN) $(INSTALLBIN) '" >>.MM_tmp
@@ -1816,7 +1811,7 @@ pure_site_install ::
$(NOECHO) $(PERL) -e "print '$(INST_MAN3DIR) $(INSTALLMAN3DIR) '" >>.MM_tmp
$(MOD_INSTALL) <.MM_tmp
$(NOECHO) Delete/NoLog/NoConfirm .MM_tmp;
- $(NOECHO) $(WARN_IF_OLD_PACKLIST) ].$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q[
+ $(NOECHO) $(WARN_IF_OLD_PACKLIST) ].File::Spec->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q[
# Ditto
doc_perl_install ::
@@ -1827,7 +1822,7 @@ q% $(NOECHO) $(PERL) -e "print q[@ARGV=split(/\\|/,<STDIN>);]" >.MM2_tmp
$(NOECHO) $(PERL) -e "print q[print '=head2 ',scalar(localtime),': C<',shift,qq[>\\n\\n=over 4\\n\\n];]" >>.MM2_tmp
$(NOECHO) $(PERL) -e "print q[while(($key=shift) && ($val=shift)) ]" >>.MM2_tmp
$(NOECHO) $(PERL) -e "print q[{print qq[=item *\\n\\nC<$key: $val>\\n\\n];}print qq[=back\\n\\n];]" >>.MM2_tmp
- $(NOECHO) $(PERL) .MM2_tmp <.MM_tmp >>%.$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q[
+ $(NOECHO) $(PERL) .MM2_tmp <.MM_tmp >>%.File::Spec->catfile('$(INSTALLARCHLIB)','perllocal.pod').q[
$(NOECHO) Delete/NoLog/NoConfirm .MM_tmp;,.MM2_tmp;
# And again
@@ -1839,7 +1834,7 @@ q% $(NOECHO) $(PERL) -e "print q[@ARGV=split(/\\|/,<STDIN>);]" >.MM2_tmp
$(NOECHO) $(PERL) -e "print q[print '=head2 ',scalar(localtime),': C<',shift,qq[>\\n\\n=over 4\\n\\n];]" >>.MM2_tmp
$(NOECHO) $(PERL) -e "print q[while(($key=shift) && ($val=shift)) ]" >>.MM2_tmp
$(NOECHO) $(PERL) -e "print q[{print qq[=item *\\n\\nC<$key: $val>\\n\\n];}print qq[=back\\n\\n];]" >>.MM2_tmp
- $(NOECHO) $(PERL) .MM2_tmp <.MM_tmp >>%.$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q[
+ $(NOECHO) $(PERL) .MM2_tmp <.MM_tmp >>%.File::Spec->catfile('$(INSTALLARCHLIB)','perllocal.pod').q[
$(NOECHO) Delete/NoLog/NoConfirm .MM_tmp;,.MM2_tmp;
];
@@ -1849,13 +1844,13 @@ uninstall :: uninstall_from_$(INSTALLDIRS)dirs
$(NOECHO) $(NOOP)
uninstall_from_perldirs ::
- $(NOECHO) $(UNINSTALL) ].$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q[
+ $(NOECHO) $(UNINSTALL) ].File::Spec->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q[
$(NOECHO) $(SAY) "Uninstall is now deprecated and makes no actual changes."
$(NOECHO) $(SAY) "Please check the list above carefully for errors, and manually remove"
$(NOECHO) $(SAY) "the appropriate files. Sorry for the inconvenience."
uninstall_from_sitedirs ::
- $(NOECHO) $(UNINSTALL) ],$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist'),"\n",q[
+ $(NOECHO) $(UNINSTALL) ],File::Spec->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist'),"\n",q[
$(NOECHO) $(SAY) "Uninstall is now deprecated and makes no actual changes."
$(NOECHO) $(SAY) "Please check the list above carefully for errors, and manually remove"
$(NOECHO) $(SAY) "the appropriate files. Sorry for the inconvenience."
@@ -2214,15 +2209,15 @@ $(MAP_TARGET) :: $(MAKE_APERL_FILE)
# that's what we're building here).
push @optlibs, grep { !/PerlShr/i } split ' ', +($self->ext())[2];
if ($libperl) {
- unless (-f $libperl || -f ($libperl = $self->catfile($Config{'installarchlib'},'CORE',$libperl))) {
+ unless (-f $libperl || -f ($libperl = File::Spec->catfile($Config{'installarchlib'},'CORE',$libperl))) {
print STDOUT "Warning: $libperl not found\n";
undef $libperl;
}
}
unless ($libperl) {
if (defined $self->{PERL_SRC}) {
- $libperl = $self->catfile($self->{PERL_SRC},"libperl$self->{LIB_EXT}");
- } elsif (-f ($libperl = $self->catfile($Config{'installarchlib'},'CORE',"libperl$self->{LIB_EXT}")) ) {
+ $libperl = File::Spec->catfile($self->{PERL_SRC},"libperl$self->{LIB_EXT}");
+ } elsif (-f ($libperl = File::Spec->catfile($Config{'installarchlib'},'CORE',"libperl$self->{LIB_EXT}")) ) {
} else {
print STDOUT "Warning: $libperl not found
If you're going to build a static perl binary, make sure perl is installed
@@ -2273,9 +2268,9 @@ $(MAP_TARGET) : $(MAP_SHRTARGET) ',"${tmp}perlmain\$(OBJ_EXT) ${tmp}PerlShr.Opt"
doc_inst_perl :
$(NOECHO) $(PERL) -e "print 'Perl binary $(MAP_TARGET)|'" >.MM_tmp
$(NOECHO) $(PERL) -e "print 'MAP_STATIC|$(MAP_STATIC)|'" >>.MM_tmp
- $(NOECHO) $(PERL) -pl040 -e " " ].$self->catfile('$(INST_ARCHAUTODIR)','extralibs.all'),q[ >>.MM_tmp
+ $(NOECHO) $(PERL) -pl040 -e " " ].File::Spec->catfile('$(INST_ARCHAUTODIR)','extralibs.all'),q[ >>.MM_tmp
$(NOECHO) $(PERL) -e "print 'MAP_LIBPERL|$(MAP_LIBPERL)|'" >>.MM_tmp
- $(DOC_INSTALL) <.MM_tmp >>].$self->catfile('$(INSTALLARCHLIB)','perllocal.pod').q[
+ $(DOC_INSTALL) <.MM_tmp >>].File::Spec->catfile('$(INSTALLARCHLIB)','perllocal.pod').q[
$(NOECHO) Delete/NoLog/NoConfirm .MM_tmp;
];
diff --git a/lib/ExtUtils/MM_Win32.pm b/lib/ExtUtils/MM_Win32.pm
index 7b5d142fde..478424958d 100644
--- a/lib/ExtUtils/MM_Win32.pm
+++ b/lib/ExtUtils/MM_Win32.pm
@@ -23,6 +23,7 @@ the semantics.
use Config;
#use Cwd;
use File::Basename;
+use File::Spec;
require Exporter;
require ExtUtils::MakeMaker;
@@ -137,8 +138,8 @@ sub maybe_command {
}
sub file_name_is_absolute {
- my($self,$file) = @_;
- $file =~ m{^([a-z]:)?[\\/]}i ;
+ shift;
+ return File::Spec->file_name_is_absolute(@_);
}
sub find_perl {
@@ -155,12 +156,12 @@ in these dirs:
next unless defined $dir; # $self->{PERL_SRC} may be undefined
foreach $name (@$names){
my ($abs, $val);
- if ($self->file_name_is_absolute($name)) { # /foo/bar
+ if (File::Spec->file_name_is_absolute($name)) { # /foo/bar
$abs = $name;
- } elsif ($self->canonpath($name) eq $self->canonpath(basename($name))) { # foo
- $abs = $self->catfile($dir, $name);
+ } elsif (File::Spec->canonpath($name) eq File::Spec->canonpath(basename($name))) { # foo
+ $abs = File::Spec->catfile($dir, $name);
} else { # foo/bar
- $abs = $self->canonpath($self->catfile($self->curdir, $name));
+ $abs = File::Spec->canonpath(File::Spec->catfile(File::Spec->curdir, $name));
}
print "Checking $abs\n" if ($trace >= 2);
next unless $self->maybe_command($abs);
@@ -179,14 +180,8 @@ in these dirs:
}
sub catdir {
- my $self = shift;
- my @args = @_;
- for (@args) {
- # append a slash to each argument unless it has one there
- $_ .= "\\" if $_ eq '' or substr($_,-1) ne "\\";
- }
- my $result = $self->canonpath(join('', @args));
- $result;
+ shift;
+ return File::Spec->catdir(@_);
}
=item catfile
@@ -197,13 +192,8 @@ complete path ending with a filename
=cut
sub catfile {
- my $self = shift @_;
- my $file = pop @_;
- return $file unless @_;
- my $dir = $self->catdir(@_);
- $dir =~ s/(\\\.)$//;
- $dir .= "\\" unless substr($dir,length($dir)-1,1) eq "\\";
- return $dir.$file;
+ shift;
+ return File::Spec->catfile(@_);
}
sub init_others
@@ -347,11 +337,11 @@ CONFIGDEP = \$(PERL_ARCHLIB)\\Config.pm \$(PERL_INC)\\config.h
my @parentdir = split(/::/, $self->{PARENT_NAME});
push @m, q{
# Where to put things:
-INST_LIBDIR = }. $self->catdir('$(INST_LIB)',@parentdir) .q{
-INST_ARCHLIBDIR = }. $self->catdir('$(INST_ARCHLIB)',@parentdir) .q{
+INST_LIBDIR = }. File::Spec->catdir('$(INST_LIB)',@parentdir) .q{
+INST_ARCHLIBDIR = }. File::Spec->catdir('$(INST_ARCHLIB)',@parentdir) .q{
-INST_AUTODIR = }. $self->catdir('$(INST_LIB)','auto','$(FULLEXT)') .q{
-INST_ARCHAUTODIR = }. $self->catdir('$(INST_ARCHLIB)','auto','$(FULLEXT)') .q{
+INST_AUTODIR = }. File::Spec->catdir('$(INST_LIB)','auto','$(FULLEXT)') .q{
+INST_ARCHAUTODIR = }. File::Spec->catdir('$(INST_ARCHLIB)','auto','$(FULLEXT)') .q{
};
if ($self->has_link_code()) {
@@ -394,11 +384,7 @@ PM_TO_BLIB = }.join(" \\\n\t", %{$self->{PM}}).q{
sub path {
- my($self) = @_;
- my $path = $ENV{'PATH'} || $ENV{'Path'} || $ENV{'path'};
- my @path = split(';',$path);
- foreach(@path) { $_ = '.' if $_ eq '' }
- @path;
+ return File::Spec->path();
}
=item static_lib (o)
@@ -608,7 +594,7 @@ destination and autosplits them. See L<ExtUtils::Install/DESCRIPTION>
sub pm_to_blib {
my $self = shift;
- my($autodir) = $self->catdir('$(INST_LIB)','auto');
+ my($autodir) = File::Spec->catdir('$(INST_LIB)','auto');
return q{
pm_to_blib: $(TO_INST_PM)
}.$self->{NOECHO}.q{$(PERL) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" \
@@ -842,9 +828,9 @@ sub htmlifypods {
my($dist);
my($pod2html_exe);
if (defined $self->{PERL_SRC}) {
- $pod2html_exe = $self->catfile($self->{PERL_SRC},'pod','pod2html');
+ $pod2html_exe = File::Spec->catfile($self->{PERL_SRC},'pod','pod2html');
} else {
- $pod2html_exe = $self->catfile($Config{scriptdirexp},'pod2html');
+ $pod2html_exe = File::Spec->catfile($Config{scriptdirexp},'pod2html');
}
unless ($pod2html_exe = $self->perl_script($pod2html_exe)) {
# No pod2html but some HTMLxxxPODS to be installed
diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm
index f177f68831..9d9d5b676e 100644
--- a/lib/File/Spec.pm
+++ b/lib/File/Spec.pm
@@ -9,9 +9,19 @@ my %module = (MacOS => 'Mac',
MSWin32 => 'Win32',
os2 => 'OS2',
VMS => 'VMS',
- epoc => 'Epoc');
+ epoc => 'Epoc',
+ cygwin => 'Cygwin');
+
my $module = $module{$^O} || 'Unix';
+
+if ($^O eq 'MSWin32') {
+ require Config;
+ if ($Config::Config{osname} eq 'NetWare') {
+ $module = 'NW5';
+ }
+}
+
require "File/Spec/$module.pm";
@ISA = ("File::Spec::$module");
diff --git a/lib/File/Spec/Cygwin.pm b/lib/File/Spec/Cygwin.pm
new file mode 100644
index 0000000000..23fed18f50
--- /dev/null
+++ b/lib/File/Spec/Cygwin.pm
@@ -0,0 +1,35 @@
+package File::Spec::Cygwin;
+
+use strict;
+use vars qw(@ISA $VERSION);
+require File::Spec::Unix;
+
+$VERSION = '1.0';
+
+@ISA = qw(File::Spec::Unix);
+
+sub canonpath {
+ my($self,$path) = @_;
+ $path =~ s|\\|/|g;
+ return $self->SUPER::canonpath($path);
+}
+
+1;
+__END__
+
+=head1 NAME
+
+File::Spec::Cygwin - methods for Cygwin file specs
+
+=head1 SYNOPSIS
+
+ require File::Spec::Cygwin; # Done internally by File::Spec if needed
+
+=head1 DESCRIPTION
+
+See File::Spec::Unix for a documentation of the methods provided
+there. This package overrides the implementation of these methods, not
+the semantics.
+
+This module is still in beta. Cygwin-knowledgeable folks are invited
+to offer patches and suggestions.
diff --git a/lib/File/Spec/NW5.pm b/lib/File/Spec/NW5.pm
new file mode 100644
index 0000000000..772a93df56
--- /dev/null
+++ b/lib/File/Spec/NW5.pm
@@ -0,0 +1,48 @@
+package File::Spec::NW5;
+
+use strict;
+use vars qw(@ISA $VERSION);
+require File::Spec::Win32;
+
+$VERSION = '1.0';
+
+@ISA = qw(File::Spec::Win32);
+
+sub catdir {
+ my $self = shift;
+ my @args = @_;
+ for (@args) {
+ # append a slash to each argument unless it has one there
+ $_ .= "\\" if $_ eq '' or substr($_,-1) ne "\\";
+ }
+ my $result = $self->canonpath(join('', @args));
+ $result;
+}
+
+sub canonpath {
+ my $self = shift;
+ my $path = $self->SUPER::canonpath(@_);
+ $path .= '.' if $path =~ m#\\$#;
+ return $path;
+}
+
+
+1;
+__END__
+
+=head1 NAME
+
+File::Spec::NW5 - methods for NetWare file specs
+
+=head1 SYNOPSIS
+
+ require File::Spec::NW5; # Done internally by File::Spec if needed
+
+=head1 DESCRIPTION
+
+See File::Spec::Win32 and File::Spec::Unix for a documentation of the
+methods provided there. This package overrides the implementation of
+these methods, not the semantics.
+
+This module is still in beta. NetWare-knowledgeable folks are invited
+to offer patches and suggestions.
diff --git a/lib/File/Spec/Win32.pm b/lib/File/Spec/Win32.pm
index ceebb2d100..c2e463b80c 100644
--- a/lib/File/Spec/Win32.pm
+++ b/lib/File/Spec/Win32.pm
@@ -117,11 +117,11 @@ sub canonpath {
my ($self,$path) = @_;
$path =~ s/^([a-z]:)/\u$1/s;
$path =~ s|/|\\|g;
- $path =~ s|([^\\])\\+|$1\\|g; # xx////xx -> xx/xx
- $path =~ s|(\\\.)+\\|\\|g; # xx/././xx -> xx/xx
- $path =~ s|^(\.\\)+||s unless $path eq ".\\"; # ./xx -> xx
+ $path =~ s|([^\\])\\+|$1\\|g; # xx\\\\xx -> xx\xx
+ $path =~ s|(\\\.)+\\|\\|g; # xx\.\.\xx -> xx\xx
+ $path =~ s|^(\.\\)+||s unless $path eq ".\\"; # .\xx -> xx
$path =~ s|\\\Z(?!\n)||
- unless $path =~ m#^([A-Z]:)?\\\Z(?!\n)#s; # xx/ -> xx
+ unless $path =~ m#^([A-Z]:)?\\\Z(?!\n)#s; # xx\ -> xx
return $path;
}