RE: Perl @ 33218 (Stratus VOS patches)
Paul Green [Fri, 8 Feb 2008 12:36:03 +0000 (07:36 -0500)]
From: "Green, Paul" <Paul.Green@stratus.com>
Message-ID: <F5F42E77A43DD944B6D664B00A5401CB037149FF@EXNA.corp.stratus.com>

Includes a fix to the patch to ext/Time/HiRes/Makefile.PL

p4raw-id: //depot/perl@33259

README.vos
ext/Time/HiRes/Makefile.PL
hints/vos.sh
lib/ExtUtils/t/MM_Unix.t
lib/ExtUtils/t/eu_command.t
makedepend.SH
pp_pack.c
t/TEST
vos/Changes
vos/vos.c
vos/vosish.h

index 56a3419..9066297 100644 (file)
@@ -24,14 +24,17 @@ ftp://ftp.stratus.com/pub/vos/utility/utility.html.
 
 If you are running VOS Release 14.4.1 or later, you can obtain a
 pre-compiled, supported copy of perl by purchasing Release 2.0.1
-(or later) of the VOS GNU C++ and GNU Tools product from Stratus
-Technologies.
+(or later) of the VOS GNU C/C++ and GNU Tools product from
+Stratus Technologies.
 
 =head1 BUILDING PERL FOR VOS
 
-To build perl from its source code, you must have a Continuum
-platform running VOS Release 14.5.0 or later, the STCP product,
-and the GNU C++ and GNU Tools, Release 2.0.1 or later.
+To build perl from its source code on the Stratus Continuum
+platform, you must be have VOS Release 14.5.0 or later, the STCP
+product, and the GNU C/C++ and GNU Tools, Release 2.0.1 or
+later.  On the V Series platform you must have VOS Release
+15.0.0 or later, and any version of the GNU C/C++ and GNU Tools
+product.
 
 To build full perl using the supplied Configure script and
 makefiles, change to the "vos" subdirectory and type the command
@@ -45,7 +48,8 @@ will configure, build, and test perl.
 =item 1
 
 If you have built perl using the Configure script, ensure that
-you have modify permission to C<< >system>ported >> and type
+you have modify and default write permission to C<<
+>system>ported >> and all subdirectories.  Then type
 
      gmake install
 
@@ -57,6 +61,7 @@ directories can be used to hold such files:
 
      >system>ported>lib>perl5>5.9.0>7100
      >system>ported>lib>perl5>5.9.0>8000
+     >system>ported>lib>perl5>5.9.0>i786
 
 =item 3
 
@@ -70,6 +75,7 @@ following directories:
 
      >system>ported>lib>perl5>site_perl>5.9.0>7100
      >system>ported>lib>perl5>site_perl>5.9.0>8000
+     >system>ported>lib>perl5>site_perl>5.9.0>i786
 
 =item 4
 
@@ -109,13 +115,13 @@ other floating-point computations that underflow or overflow
 will probably result in SIGFPE.  Don't push your luck.
 
 As of VOS Release 14.7.0, the VOS POSIX runtime sets up the
-PA-RISC hardware floating-point status register so that the
-overflow and underflow exceptions do not trap, but instead
-automatically convert the result to infinity or zero, as
+PA-RISC and IA-32 hardware floating-point status register so
+that the overflow and underflow exceptions do not trap, but
+instead automatically convert the result to infinity or zero, as
 appropriate.  As of this writing, there are still floating-point
 operations that can trap, for example, subtracting two infinite
-values.  This is recorded as suggestion posix-1022, which is not
-yet fixed.
+values.  This is recorded as suggestion posix-1022, which has
+been fixed in VOS Release 15.2 and higher.
 
 =head1 TEST STATUS
 
@@ -142,7 +148,7 @@ excellent books available on the Perl language; consult a book
 seller.
 
 If you want a supported version of perl for VOS, purchase the
-VOS GNU C++ and GNU Tools Release 2.0.1 (or later) product from
+VOS GNU C/C++ and GNU Tools Release 2.0.1 (or later) product from
 Stratus Technologies, along with a support contract (or from
 anyone else who will sell you support).
 
@@ -152,6 +158,6 @@ Paul Green (Paul.Green@stratus.com)
 
 =head1 LAST UPDATE
 
-January 15, 2004
+February 7, 2008
 
 =cut
index 2c381e2..a332e4b 100644 (file)
@@ -19,8 +19,11 @@ my $SYSCALL_H;
 
 use vars qw($self); # Used in 'sourcing' the hints.
 
+# TBD: Can we just use $Config(exe_ext) here instead of this complex
+#      expression?
 my $ld_exeext = ($^O eq 'cygwin' ||
-                 $^O eq 'os2' && $Config{ldflags} =~ /-Zexe\b/) ? '.exe' : '';
+                 $^O eq 'os2' && $Config{ldflags} =~ /-Zexe\b/) ? '.exe' :
+                (($^O eq 'vos') ? $Config{exe_ext} : '');
 
 unless($ENV{PERL_CORE}) {
     $ENV{PERL_CORE} = 1 if grep { $_ eq 'PERL_CORE=1' } @ARGV;
index d32f7e6..3401c83 100644 (file)
@@ -3,14 +3,14 @@
 # This is a hints file for Stratus VOS, using the POSIX environment
 # in VOS 14.4.0 and higher.
 #
-# VOS POSIX is based on POSIX.1-1996.  It ships with gcc as the standard
-# compiler.
+# VOS POSIX is based on POSIX.1-1996 and contains elements of
+# POSIX.1-2001.  It ships with gcc as the standard compiler.
 #
 # Paul Green (Paul.Green@stratus.com)
 
 # C compiler and default options.
 cc=gcc
-ccflags="-D_SVID_SOURCE -D_POSIX_C_SOURCE=199509L"
+ccflags="-D_SVID_SOURCE -D_POSIX_C_SOURCE=200112L"
 
 # Make command.
 make="/system/gnu_library/bin/gmake"
@@ -18,7 +18,11 @@ make="/system/gnu_library/bin/gmake"
   _make="/system/gnu_library/bin/gmake"
 
 # Architecture name
-archname="hppa1.1"
+if test `uname -m` = i786; then
+     archname="i786"
+else
+     archname="hppa1.1"
+fi
 
 # Executable suffix.
 # No, this is not a typo.  The ".pm" really is the native
@@ -37,7 +41,13 @@ loclibpth="$loclibpth /system/object_library"
 glibpth="$loclibpth"
 
 # Include library paths
-locincpth="/system/stcp/include_library"
+# Pick up vos/syslog.h on Continuum Platform.
+if test "$archname" = "i786"; then
+     locincpth=""
+else
+     locincpth=`pwd`/vos
+fi
+locincpth="$locincpth /system/stcp/include_library"
 locincpth="$locincpth /system/include_library/sysv"
 usrinc="/system/include_library"
 
index 75af156..1f2762e 100644 (file)
@@ -171,7 +171,11 @@ is ($t->libscan('Fatty'), 'Fatty', 'libscan on something not a VC file' );
 # maybe_command
 
 open(FILE, ">command"); print FILE "foo"; close FILE;
+SKIP: {
+skip ("no separate execute mode", 1) if ($^O eq "vos");
 ok (!$t->maybe_command('command') ,"non executable file isn't a command");
+}
+
 chmod 0755, "command";
 ok ($t->maybe_command('command'),        "executable file is a command");
 unlink "command";
index 2d2fdba..30fb38e 100644 (file)
@@ -146,7 +146,7 @@ BEGIN {
     SKIP: {
         if ($^O eq 'amigaos' || $^O eq 'os2' || $^O eq 'MSWin32' ||
             $^O eq 'NetWare' || $^O eq 'dos' || $^O eq 'cygwin'  ||
-            $^O eq 'MacOS'
+            $^O eq 'MacOS' || $^O eq 'vos'
            ) {
             skip( "different file permission semantics on $^O", 5);
         }
index 87a86c5..229a73d 100755 (executable)
@@ -210,6 +210,10 @@ if $test -s .deptmp; then
     $echo "Updating $mf..."
     $echo "# If this runs make out of memory, delete /usr/include lines." \
        >> $mf.new
+    if [ "$osname" = vos ]; then
+        $sed 's|.incl.c|.h|' .deptmp >.deptmp.vos
+        mv -f .deptmp.vos .deptmp
+    fi
     $sed 's|^\(.*\$(OBJ_EXT):\) *\(.*/.*\.c\) *$|\1 \2; '"$defrule \2|" .deptmp \
        >>$mf.new
 else
index 98d4869..dfcd3e9 100644 (file)
--- a/pp_pack.c
+++ b/pp_pack.c
@@ -3065,11 +3065,14 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )
                   any OS that needs it, or removed if and when VOS implements
                   posix-976 (suggestion to support mapping to infinity).
                   Paul.Green@stratus.com 02-04-02.  */
+{
+extern const float _float_constants[];
                if (anv > FLT_MAX)
                    afloat = _float_constants[0];   /* single prec. inf. */
                else if (anv < -FLT_MAX)
                    afloat = _float_constants[0];   /* single prec. inf. */
                else afloat = (float) anv;
+}
 #else /* __VOS__ */
 # if defined(VMS) && !defined(__IEEE_FP)
                /* IEEE fp overflow shenanigans are unavailable on VAX and optional
@@ -3101,11 +3104,14 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )
                   for any OS that needs it, or removed if and when VOS
                   implements posix-976 (suggestion to support mapping to
                   infinity).  Paul.Green@stratus.com 02-04-02.  */
+{
+extern const double _double_constants[];
                if (anv > DBL_MAX)
                    adouble = _double_constants[0];   /* double prec. inf. */
                else if (anv < -DBL_MAX)
                    adouble = _double_constants[0];   /* double prec. inf. */
                else adouble = (double) anv;
+}
 #else /* __VOS__ */
 # if defined(VMS) && !defined(__IEEE_FP)
                /* IEEE fp overflow shenanigans are unavailable on VAX and optional
diff --git a/t/TEST b/t/TEST
index e702ffb..1fdcb12 100755 (executable)
--- a/t/TEST
+++ b/t/TEST
@@ -383,7 +383,7 @@ EOT
 
                            # SKIP is essentially the same as TODO for t/TEST
                            # this still conforms to TAP:
-                           # http://search.cpan.org/dist/Test-Harness/lib/Test/Harness/TAP.pod
+                           # http://search.cpan.org/dist/TAP/TAP.pod
                            $extra and $istodo = $extra =~ /#\s*(?:TODO|SKIP)\b/;
                            $istodo = 1 if $todo{$num};
 
index 2d49a3c..b5bf0ee 100644 (file)
@@ -1,6 +1,12 @@
 This file documents the changes made to port Perl to the Stratus
 VOS operating system.
 
+For 5.8.9:
+     Updated vos hints file (vos.sh) to use the POSIX-2001
+     standard and to recognize the V Series architecture of
+     i786.  Cleaned-up a few issues so that more tests pass.
+     This version builds on VOS Release 15.3.0.
+
 For 5.10.0:
      Added support for the syslog family of functions to vos.c.
      This allows the source code to be built on versions of VOS
index ee3993d..612b693 100644 (file)
--- a/vos/vos.c
+++ b/vos/vos.c
@@ -6,6 +6,8 @@
      have pow(0,0) return 1, avoiding c-1471. */
 /* Modified 06-09-25 by Paul Green (Paul.Green@stratus.com) to
      add syslog entries. */
+/* Modified 08-02-04 by Paul Green (Paul.Green@stratus.com) to
+     open the syslog file in the working dir. */
 /* End of modification history */
 
 #include <errno.h>
@@ -87,7 +89,7 @@ int  vos_syslog_logopt = 0;
 char vos_syslog_ident[IDENT_LEN] = "";
 int  vos_syslog_ident_len = 0;
 int  vos_syslog_mask = ALL_PRIORITIES;
-char vos_syslog_path[PATH_LEN] = "/Stratus/Green/build_farm/build_farm.syslog";
+char vos_syslog_path[PATH_LEN] = "syslog";
 
 char vos_syslog_facility_name [17][10] = {
      "[KERN] ",    /* LOG_KERN */
index dfddd31..c9e3765 100644 (file)
@@ -4,6 +4,10 @@
 #include "unixish.h"
 #endif
 
+/* VOS does not support SA_SIGINFO, so undefine the macro.  This
+   is a work-around for posix-1302.  */
+#undef SA_SIGINFO
+
 /* The following declaration is an avoidance for posix-950. */
 extern int ioctl (int fd, int request, ...);