diff options
author | Nicholas Clark <nick@ccl4.org> | 2009-02-23 14:43:09 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2009-02-23 14:43:09 +0000 |
commit | 86bddcbfaf2555223ec8fc596416d13d7a1a1118 (patch) | |
tree | 1545e817e294f3eaeb7ee4f06e29780b92b512e5 /lib/Module | |
parent | 66e531b6b23122113bed8498baac1ef25a958d57 (diff) | |
download | perl-86bddcbfaf2555223ec8fc596416d13d7a1a1118.tar.gz |
Re-apply cd5cc49dbc0e5ee748252c2da8b435855908e6d2 (Module::Build on VMS, #42724)
Diffstat (limited to 'lib/Module')
-rw-r--r-- | lib/Module/Build.pm | 2 | ||||
-rw-r--r-- | lib/Module/Build/Base.pm | 4 | ||||
-rw-r--r-- | lib/Module/Build/Compat.pm | 2 | ||||
-rw-r--r-- | lib/Module/Build/Platform/VMS.pm | 30 | ||||
-rw-r--r-- | lib/Module/Build/t/compat.t | 2 |
5 files changed, 35 insertions, 5 deletions
diff --git a/lib/Module/Build.pm b/lib/Module/Build.pm index 0dc1a88d5e..de0bb968c3 100644 --- a/lib/Module/Build.pm +++ b/lib/Module/Build.pm @@ -15,7 +15,7 @@ use Module::Build::Base; use vars qw($VERSION @ISA); @ISA = qw(Module::Build::Base); -$VERSION = '0.31_04'; +$VERSION = '0.31_0401'; $VERSION = eval $VERSION; # Okay, this is the brute-force method of finding out what kind of diff --git a/lib/Module/Build/Base.pm b/lib/Module/Build/Base.pm index 71eb214752..891d5df5b1 100644 --- a/lib/Module/Build/Base.pm +++ b/lib/Module/Build/Base.pm @@ -2827,7 +2827,7 @@ sub htmlify_pods { my ($name, $path) = File::Basename::fileparse($pods->{$pod}, file_qr('\.(?:pm|plx?|pod)$')); my @dirs = File::Spec->splitdir( File::Spec->canonpath( $path ) ); - pop( @dirs ) if $dirs[-1] eq File::Spec->curdir; + pop( @dirs ) if scalar(@dirs) && $dirs[-1] eq File::Spec->curdir; my $fulldir = File::Spec->catfile($htmldir, @rootdirs, @dirs); my $outfile = File::Spec->catfile($fulldir, "${name}.html"); @@ -4077,7 +4077,7 @@ sub install_map { # Need to remove volume from $map{$_} using splitpath, or else # we'll create something crazy like C:\Foo\Bar\E:\Baz\Quux # VMS will always have the file separate than the path. - my ($volume, $path, $file) = File::Spec->splitpath( $map{$_}, 1 ); + my ($volume, $path, $file) = File::Spec->splitpath( $map{$_}, 0 ); # catdir needs a list of directories, or it will create something # crazy like volume:[Foo.Bar.volume.Baz.Quux] diff --git a/lib/Module/Build/Compat.pm b/lib/Module/Build/Compat.pm index f6c7c62c31..36dc2177c8 100644 --- a/lib/Module/Build/Compat.pm +++ b/lib/Module/Build/Compat.pm @@ -280,7 +280,7 @@ sub fake_makefile { my $Build = 'Build' . $filetype . ' --makefile_env_macros 1'; my $unlink = $class->oneliner('1 while unlink $ARGV[0]', [], [$args{makefile}]); - $unlink =~ s/\$/\$\$/g; + $unlink =~ s/\$/\$\$/g unless $class->is_vmsish; my $maketext = <<"EOF"; all : force_do_it diff --git a/lib/Module/Build/Platform/VMS.pm b/lib/Module/Build/Platform/VMS.pm index 7584baef43..699f5ae13d 100644 --- a/lib/Module/Build/Platform/VMS.pm +++ b/lib/Module/Build/Platform/VMS.pm @@ -188,6 +188,21 @@ sub do_system { return !system("$cmd $args"); } +=item oneliner + +Override to ensure that we do not quote the command. + +=cut + +sub oneliner { + my $self = shift; + my $oneliner = $self->SUPER::oneliner(@_); + + $oneliner =~ s/^\"\S+\"//; + + return "MCR $^X $oneliner"; +} + =item _infer_xs_spec Inherit the standard version but tweak the library file name to be @@ -309,6 +324,7 @@ sub _detildefy { # Trivial case of just ~ by it self if ($spec eq '') { + $home =~ s#/$##; return $home; } @@ -385,6 +401,20 @@ sub localize_dir_path { return VMS::Filespec::vmspath($path); } +=item ACTION_clean + +The home-grown glob() expands a bit too aggressively when given a bare name, +so default in a zero-length extension. + +=cut + +sub ACTION_clean { + my ($self) = @_; + foreach my $item (map glob(VMS::Filespec::rmsexpand($_, '.;0')), $self->cleanup) { + $self->delete_filetree($item); + } +} + =back =head1 AUTHOR diff --git a/lib/Module/Build/t/compat.t b/lib/Module/Build/t/compat.t index 86e68692aa..cb219aab42 100644 --- a/lib/Module/Build/t/compat.t +++ b/lib/Module/Build/t/compat.t @@ -237,7 +237,7 @@ ok $mb, "Module::Build->new_from_context"; ok $ran_ok, "make fakeinstall with INSTALLDIRS=vendor ran ok"; $output =~ s/^/# /gm; # Don't confuse our own test output like $output, - qr/\Q$libdir2\E .* Simple\.pm/x, + qr/\Q$libdir2\E .* Simple\.pm/ix, 'Should have installdirs=vendor'; } |