Subject: | VMS patch for PPI 1.118 |
Date: | Mon, 23 Apr 2007 17:47:15 -0400 |
To: | bug-PPI [...] rt.cpan.org |
From: | Peter Edwards <PEdwards [...] factset.com> |
Hello and thanks for PPI,
To get PPI 1.118 to pass it's tests on VMS with Perl 5.87 I needed to make
the following changes:
==== ppi-1_118/lib/ppi/cache.pm ====
227c227,231
< Storable::lock_nstore( $object, $file );
---
Show quoted text
> if($^O eq 'VMS'){
> Storable::nstore( $object, $file );
> } else {
> Storable::lock_nstore( $object, $file );
> }
238,239c242,247
< my $object = Storable::lock_retrieve( $file );
<
---
Show quoted text> my $object = undef;
> if($^O eq 'VMS'){
> $object = Storable::retrieve( $file );
> } else {
> $object = Storable::lock_retrieve( $file );
> }
There is no lock support for Storable on VMS, it might be better to check
Config, Storable has CAN_FLOCK
VMS Config
'd_fcntl_can_lock' => undef,
'd_flock' => undef,
'd_flockproto' => undef,
'd_lockf' => undef,
==== ppi-1_118/t/15_transform.t ====
19c19,21
< unlink $_ if -e $_;
---
Show quoted text> if(-e $_){
> 1 while(unlink $_);
> }
80,82c82,84
< my $output = "$input.out";
< my $copy = "$input.copy";
< my $copy2 = "$input.copy2";
---
Show quoted text> my $output = $input."_out";
> my $copy = $input."_copy";
> my $copy2 = $input."_copy2";
The above change should probably have been more helpful for other OS's, I
think perlport suggests if you want to be very safe to stick with 8.3 for
filenames, I just needed to remove the 2nd period/dot. VMS also has file
versioning, so the "1 while(unlink $_)" is for that.
==== ppi-1_118/t/18_cache.t ====
18,19c18,19
< my $this_file = catdir( 't', 'data', '03_empiric', 'test.dat' );
< my $cache_dir = catdir( 't', 'data', '18_cache' );
---
Show quoted text> my $this_file = File::Spec::Unix->catfile( 't', 'data', '03_empiric',
'test.dat' );
Show quoted text> my $cache_dir = File::Spec::Unix->catdir( 't', 'data', '18_cache' );
This last change is a bit odd, I should have wrapped the use of
File::Spec::Unix in a "if($^O eq 'VMS')", I needed to use UNIX style file
and dir so that File::Remove worked, this is required because of the
behaviour of some of the File modules File::Remove uses. Perl on VMS
supports both UNIX and VMS file syntax (very confusing). Line 18 also has
a change from "catdir" to "catfile".
I did read, http://search.cpan.org/~adamk/PPI-1.199_02/lib/PPI.pm#SUPPORT
, I do have a CPAN id, it's STIGPJE (non published), I'm happy to clean up
these patches and apply them if you wish to grant access to the
repository.
Cheers,
Peter (Stig) Edwards