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
=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
>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
>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
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
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).
=head1 LAST UPDATE
-January 15, 2004
+February 7, 2008
=cut
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;
# 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"
_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
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"
# 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";
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);
}
$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
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
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
# 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};
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
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>
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 */
#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, ...);