From: Paul Green Date: Fri, 8 Feb 2008 12:36:03 +0000 (-0500) Subject: RE: Perl @ 33218 (Stratus VOS patches) X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=3722f0dc40a30b6ceedaf8704b690b384a8adb00;p=p5sagit%2Fp5-mst-13.2.git RE: Perl @ 33218 (Stratus VOS patches) From: "Green, Paul" Message-ID: Includes a fix to the patch to ext/Time/HiRes/Makefile.PL p4raw-id: //depot/perl@33259 --- diff --git a/README.vos b/README.vos index 56a3419..9066297 100644 --- a/README.vos +++ b/README.vos @@ -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 diff --git a/ext/Time/HiRes/Makefile.PL b/ext/Time/HiRes/Makefile.PL index 2c381e2..a332e4b 100644 --- a/ext/Time/HiRes/Makefile.PL +++ b/ext/Time/HiRes/Makefile.PL @@ -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; diff --git a/hints/vos.sh b/hints/vos.sh index d32f7e6..3401c83 100644 --- a/hints/vos.sh +++ b/hints/vos.sh @@ -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" diff --git a/lib/ExtUtils/t/MM_Unix.t b/lib/ExtUtils/t/MM_Unix.t index 75af156..1f2762e 100644 --- a/lib/ExtUtils/t/MM_Unix.t +++ b/lib/ExtUtils/t/MM_Unix.t @@ -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"; diff --git a/lib/ExtUtils/t/eu_command.t b/lib/ExtUtils/t/eu_command.t index 2d2fdba..30fb38e 100644 --- a/lib/ExtUtils/t/eu_command.t +++ b/lib/ExtUtils/t/eu_command.t @@ -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); } diff --git a/makedepend.SH b/makedepend.SH index 87a86c5..229a73d 100755 --- a/makedepend.SH +++ b/makedepend.SH @@ -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 diff --git a/pp_pack.c b/pp_pack.c index 98d4869..dfcd3e9 100644 --- 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 --- 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}; diff --git a/vos/Changes b/vos/Changes index 2d49a3c..b5bf0ee 100644 --- a/vos/Changes +++ b/vos/Changes @@ -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 diff --git a/vos/vos.c b/vos/vos.c index ee3993d..612b693 100644 --- 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 @@ -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 */ diff --git a/vos/vosish.h b/vos/vosish.h index dfddd31..c9e3765 100644 --- a/vos/vosish.h +++ b/vos/vosish.h @@ -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, ...);