VMS update
Charles Bailey [Wed, 12 Mar 1997 03:00:55 +0000 (22:00 -0500)]
Subject: Re: _93 is a keeper

In article <199703112146.QAA12455@nielsenmedia.com>, Chip Salzenberg <salzench@nielsenmedia.com> writes:
> Based on feedback so far, I think we can release _93 as the first beta.
> ("And there was much rejoicing." "yeah") However, the announcement will
> refer to the Win32 support as "not yet ready"; that will wait for _94.

Here's my $0.02, just in from the field :-):

5.003_93 unchanged:
VMS hmivax.humgen.upenn.edu 6.0 MicroVAX 3400 Series
All tests successful.
u=1649.55  s=0  cu=0  cs=0  files=120  tests=3337

5.003_93 with minor patches:
VMS ssrl.slac.stanford.edu 6.2 AlphaServer 2100 4/275:
All tests successful.
u=352.57  s=0  cu=0  cs=0  files=118  tests=3328

I've appended a few patches below, some necessary for the AXP build,
and others just cleaning up the last remnants of old VMS subprocess
status code and some other nits.

If you're just going to rename _93 on CPAN, don't worry about this stuff.
OTOH, if you're planning a new kit, it'd be nice if you could sneak in the
vms/descrip.mms patch (necessary for build on some systems) and the
utils/perlbug.PL patch (necessary for perlbug to work on all systems).

Thanks again for all the work!

Off to the docs . . .

p5p-msgid: 1997Mar11.220056.1873182@hmivax.humgen.upenn.edu

lib/ExtUtils/MM_VMS.pm
lib/Test/Harness.pm
t/op/taint.t
utils/perlbug.PL
vms/descrip.mms

index 0e2897c..23e8fdb 100644 (file)
@@ -1051,7 +1051,10 @@ EOM
     $command = "$self->{PERL} $xsubpp $file";
     print "Running: $command\n" if $Verbose;
     my $text = `$command` ;
-    warn "Running '$command' exits with status " . $? unless ($? & 1);
+    if ($?) {
+       use vmsish 'status';
+       warn "Running '$command' exits with status $?";
+    }
     unlink $file ;
 
     # gets 1.2 -> 1.92 and 2.000a1
index 1bc791b..4a6a369 100644 (file)
@@ -58,12 +58,13 @@ sub runtests {
     while ($test = shift(@tests)) {
        $te = $test;
        chop($te);
+       if ($^O eq 'VMS') { $te =~ s/^.*\.t\./[.t./; }
        print "$te" . '.' x (20 - length($te));
        my $fh = new FileHandle;
        $fh->open($test) or print "can't open $test. $!\n";
        my $first = <$fh>;
        my $s = $switches;
-       $s .= " -T" if $first =~ /^#!.*\bperl.*-\w*T/;
+       $s .= q[ "-T"] if $first =~ /^#!.*\bperl.*-\w*T/;
        $fh->close or print "can't close $test. $!\n";
        my $cmd = "$^X $s $test|";
        $cmd = "MCR $cmd" if $^O eq 'VMS';
@@ -103,10 +104,12 @@ sub runtests {
        }
        $fh->close; # must close to reap child resource values
        my $wstatus = $?;
-       my $estatus = $^O eq 'VMS' ? $wstatus : $wstatus >> 8;
-       if ($^O eq 'VMS' ? !($wstatus & 1) : $wstatus) {
+       my $estatus = $wstatus >> 8;
+       if ($^O eq 'VMS') { use vmsish 'status'; $estatus = $?; }
+       if ($wstatus) {
            my ($failed, $canon, $percent) = ('??', '??');
            print "dubious\n\tTest returned status $estatus (wstat $wstatus)\n";
+           print "\t\t(VMS status is $estatus)\n" if $^O eq 'VMS';
            if (corestatus($wstatus)) { # until we have a wait module
                if ($have_devel_corestack) {
                    Devel::CoreStack::stack($^X);
index 56765fb..2558e13 100755 (executable)
@@ -18,12 +18,14 @@ use Config;
 my $Is_VMS = $^O eq 'VMS';
 my $Invoke_Perl = $Is_VMS ? 'MCR Sys$Disk:[]Perl.' : './perl';
 if ($Is_VMS) {
+    my($olddcl) = $ENV{'DCL$PATH'} =~ /^(.*)$/;
+    my($oldifs) = $ENV{IFS} =~ /^(.*)$/;
     eval <<EndOfCleanup;
        END {
            \$ENV{PATH} = '';
            warn "# Note: logical name 'PATH' may have been deleted\n";
-           \$ENV{IFS} =  "$ENV{IFS}";
-           \$ENV{'DCL\$PATH'} = "$ENV{'DCL$PATH'}";
+           \$ENV{IFS} =  "$oldifs";
+           \$ENV{'DCL\$PATH'} = "$olddcl";
        }
 EndOfCleanup
 }
index 064d71d..040c6cb 100644 (file)
@@ -505,7 +505,7 @@ EOF
 tryagain:
        if(!$usefile and !$body) {
                my($sts) = system("$ed $filename");
-               if( $Is_VMS ? !($sts & 1) : $sts ) {
+               if( $sts ) {
                        #print "\nUnable to run editor!\n";
                        paraprint <<EOF;
 
@@ -683,7 +683,7 @@ sub Send {
                        }
                        $subject =~ s/"/""/g; $address =~ s/"/""/g; $cc =~ s/"/""/g;
                        my($sts) = system(qq[mail/Subject="$subject" $filename. "$address","$cc"]);
-                       if (!($sts & 1)) { die "Can't spawn off mail\n\t(leaving bug report in $filename): $sts\n;" }
+                       if ($sts) { die "Can't spawn off mail\n\t(leaving bug report in $filename): $sts\n;" }
                } else {
                        my($sendmail) = "";
                        
index c22dcde..eb20aa1 100644 (file)
@@ -935,6 +935,10 @@ $(ARCHAUTO)time.stamp :
 
 .ifdef LINK_ONLY
 .else
+# We need an action line here for broken older versions of MMS which
+# otherwise conclude that they should be compiling [.x2p]utils.c :-(
+util$(O) : util.c
+       $(CC) $(CFLAGS) util.c
 # AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
 av$(O) : EXTERN.h
 av$(O) : av.c
@@ -1628,9 +1632,7 @@ globals$(O) : util.h
 [.x2p]str$(O) : [.x2p]str.h
 [.x2p]str$(O) : handy.h
 [.x2p]str$(O) : [.x2p]util.h
-.ifdef __MMK__
 [.x2p]util$(O) : [.x2p]util.c
-.endif
 [.x2p]util$(O) : [.x2p]EXTERN.h
 [.x2p]util$(O) : [.x2p]a2p.h
 [.x2p]util$(O) : [.x2p]hash.h