newHVhv shouldn't reset xhv_max so often
[p5sagit/p5-mst-13.2.git] / README.vos
index ab9d99d..97ed838 100644 (file)
-Perl 5 README file for the Stratus VOS operating system.
-Paul Green (Paul_Green@stratus.com)
-August 12, 1998
+If you read this file _as_is_, just ignore the funny characters you
+see. It is written in the POD format (see pod/perlpod.pod) which is
+specially designed to be readable as is.
+
+=head1 NAME
+
+README.vos - Perl for Stratus VOS
+
+=head1 SYNOPSIS
 
-Introduction
-------------
-This is a port of Perl version 5, revision 005-02, to VOS.  Perl
-is a scripting or macro language that is popular on many
-systems.  See your local computer bookstore for a number of good
-books on Perl.
+This is a port of Perl version 5 to VOS.  Perl is a scripting or
+macro language that is popular on many systems.  See your local
+computer bookstore for a number of good books on Perl.
 
-Most of the Perl features should work on VOS.  However, any
+=head2 Stratus POSIX Support
+
+Note that there are two different implementations of POSIX.1
+support on VOS.  There is an alpha version of POSIX that is
+available from the Stratus anonymous ftp site
+(ftp://ftp.stratus.com/pub/vos/posix/alpha/alpha.html).  There is
+a generally-available version of POSIX that comes with the VOS
+Standard C Compiler or VOS C runtime in VOS Release 14.3.0 or
+higher.  This port of perl will compile and bind with either
+version of POSIX.
+
+Most of the Perl features should work on VOS regardless of which
+version of POSIX that you are using.  However, the alpha version
+of POSIX is missing a number of key functions, and therefore any
 attempt by perl.pm to call the following unimplemented POSIX
 functions will result in an error message and an immediate and
-fatal call to the VOS debugger.  They are "dup", "execlp",
-"execl", "execvp", "fork", and "waitpid".
+fatal call to the VOS debugger.  They are "dup", "fork", and
+"waitpid".  The lack of these functions prevents you from
+starting VOS commands and grabbing their output in perl.  The
+workaround is to run the commands outside of perl, then have perl
+process the output file.  These functions are all available in
+the generally-available version of POSIX.
+
+=head1 INSTALLING PERL IN VOS
+
+=head2 Compiling Perl 5 on VOS
 
-Compiling Perl 5 on VOS
------------------------
 Before you can build Perl 5 on VOS, you need to have or acquire the
 following additional items.
 
-1.   The VOS Standard C Compiler and Runtime, or the VOS Standard C
-     Cross-Compiler.  This is a standard Stratus product.
-
-2.   The VOS OS TCP/IP product set.  While the necessary header files
-     are included in this distribution, you still need the appropriate
-     object files in order to bind perl.pm.  This is a standard
-     Stratus product.
-
-3.   The VOS POSIX.1 environment.  As of this writing, this is
-     available on the VOS FTP site.  Login to ftp.stratus.com
-     anonymously and get the file /pub/vos/alpha/posix.save.evf.gz in
-     binary file-transfer mode.  Or use the Uniform Resource Locator
-     (URL) ftp://ftp.stratus.com/pub/vos/alpha/posix.save.evf.gz from
-     your web browser.  This is not a standard Stratus product.
-
-To build build 5, change to one of the VOS object directories
-(e.g., perl5.005_02>vos>obj), and give the command "<build".  If
-you have the cross-compilers and wish to build for a specific
-architecture, say "<build -processor pa7100" (for example).  You
-can also customize the "compile_perl.cm" command macro for your
-system.
-
-Changes to Perl for VOS
------------------------
-1.   The header perl.h was changed to include vosish.h instead
-     of unixish.h.  This change is necessary because VOS POSIX.1
-     does not (yet) implement the getgrname() or getgrgid()
-     functions.
-
-Unimplemented Features
-----------------------
-If Perl 5 attempts to call an unimplemented VOS POSIX.1
+=over 5
+
+=item 1
+
+The VOS Standard C Compiler (or the VOS Standard C
+Cross-Compiler) and the VOS C Runtime.  If you are using
+the generally-available version of POSIX support, you may
+instead use the the VOS GNU C/C++ Compiler.  These are
+standard Stratus products.
+
+=item 2
+
+Either the VOS OS TCP/IP or STCP product set.  If you are
+building with the alpha version of POSIX you need the OS
+TCP/IP product set.  If you are building with the
+generally-available version of POSIX you need the STCP
+product set.  These are standard Stratus products.
+
+=item 3
+
+Either the alpha or generally-available version of the VOS
+POSIX.1 environment.
+
+The alpha version of POSIX.1 support is available on the
+Stratus FTP site.  Login anonymously to ftp.stratus.com and
+get the file /pub/vos/posix/alpha/posix.save.evf.gz in
+binary file-transfer mode.  Or use the Uniform Resource
+Locator (URL)
+ftp://ftp.stratus.com/pub/vos/alpha/posix.save.evf.gz from
+your web browser.  Instructions for unbundling this file
+are at ftp://ftp.stratus.com/pub/vos/utility/utility.html.
+This is not a standard Stratus product.
+
+In VOS Release 14.3.0, the generally-available version of
+POSIX.1 support is bundled with the VOS Standard C compiler
+(or Standard C Cross-Compiler).  In VOS Release 14.4.0 or
+higher, it is also bundled with the VOS C Runtime.  These
+are standard Stratus products.
+
+=item 4
+
+You must compile this version of Perl 5 on VOS Release
+14.1.0 or higher because some of the perl source files
+contain more than 32,767 source lines.  Due to VOS
+release-compatibility rules, this port of perl may not
+execute on VOS Release 12 or earlier.
+
+=item 5
+
+If you are using the generally-available version of VOS POSIX
+support, then you should also acquire the VOS GNU C/C++ Compiler
+and GNU Tools product because it provides many common Unix or
+POSIX commands.  When perl is built with this version of POSIX
+support, it assumes that it can find "bash", "sed" and other
+POSIX-compatible commands in the directory
+/system/gnu_library/bin.
+
+=back
+
+To build perl 5, change to the "vos" subdirectory and type the
+command "compile_perl -processor X", where X is the processor
+type (mc68020, i80860, pa7100, pa8000) that you wish to use.
+Note that the generally-available version of POSIX.1 support is
+not available for the mc68020 or i80860 processors.
+
+Use the "-version alpha" control argument to build perl with
+the alpha version of POSIX support, and use the "-version
+ga" control argument to build it with the
+generally-available version of POSIX.  The default is "ga".
+
+Use the "-compiler cc" control argument to build perl with
+the VOS Standard C compiler.  Use the "-compiler gcc"
+control argument to build it with the GNU GCC compiler.  The
+default is "cc".
+
+You must have purchased the VOS Standard C Cross Compiler in
+order to compile perl for a processor type that is different
+from the processor type of the module.
+
+Note that code compiled for the pa7100 processor type can
+execute on the PA7100, PA8000, PA8500 and PA8600 processors, and
+that code compiled for the pa8000 processor type can execute on
+the PA8000, PA8500 and PA8600 processors.
+
+=head2 Installing Perl 5 on VOS
+
+=over 4
+
+=item 1
+
+Create the directory >system>ported>command_library.
+
+=item 2
+
+Copy the appropriate version of the perl program module to
+this directory.  For example, with your current directory
+set to the top-level directory of Perl 5, to install the
+executable program module for the Motorola 68K
+architecture, enter:
+
+          !copy_file vos>obj>perl.pm >system>ported>command_library>*
+
+(If you wish to use both Perl version 4 and Perl version 5,
+you must give them different names; for example, perl.pm
+and perl5.pm).
+
+=item 3
+
+Create the directory >system>ported>perl>lib.
+
+=item 4
+
+Copy all of the files and subdirectories from the lib
+subdirectory into this new directory.  For example, with
+the current directory set to the top-level directory of the
+perl distribution, enter:
+
+          !copy_dir lib >system>ported>perl>lib>5.7
+
+=item 5
+
+While there are currently no architecture-specific
+extensions or modules distributed with perl, the following
+directories can be used to hold such files:
+
+          >system>ported>perl>lib>5.7.68k
+          >system>ported>perl>lib>5.7.860
+          >system>ported>perl>lib>5.7.7100
+          >system>ported>perl>lib>5.7.8000
+
+=item 6
+
+Site-specific perl extensions and modules can be installed in one of
+two places.  Put architecture-independent files into:
+
+          >system>ported>perl>lib>site>5.7
+
+Put architecture-dependent files into one of the following
+directories:
+
+          >system>ported>perl>lib>site>5.7.68k
+          >system>ported>perl>lib>site>5.7.860
+          >system>ported>perl>lib>site>5.7.7100
+          >system>ported>perl>lib>site>5.7.8000
+
+=item 7
+
+You can examine the @INC variable from within a perl program
+to see the order in which Perl searches these directories.
+
+=back
+
+=head1 USING PERL IN VOS
+
+=head2 Unimplemented Features of Perl on VOS
+
+If perl is built with the alpha version of VOS POSIX.1 support
+and if it attempts to call an unimplemented VOS POSIX.1
 function, it will print a fatal error message and enter the VOS
 debugger.  This error is not recoverable.  See vos_dummies.c for
-a list of the unimplemented POSIX.1 functions.  To see what the
-error message looks like, compile and execute
-"test_vos_dummies.c".
+a list of the unimplemented POSIX.1 functions.  To see what
+functions are unimplemented and what the error message looks
+like, compile and execute "test_vos_dummies.c".
 
-Restrictions
-------------
-This port of Perl version 5 to VOS uses Unix-style,
-slash-separated pathnames, not VOS-style greater-than-separated
-pathnames.  If you wish to have it use VOS-style pathnames, try
-setting the external variable s$c_options to 4 with the
-following command line.  Note that this way of configuring Perl
-5 has not been tested; I don't know if Perl can handle the
-presence of the greater-thans, and the absence of the slashes.
+=head2 Restrictions of Perl on VOS
 
-     set_external_variable s$c_options -in perl.pm -type integer -to 4
+This port of Perl version 5 to VOS prefers Unix-style,
+slash-separated pathnames over VOS-style greater-than-separated
+pathnames.  VOS-style pathnames should work in most contexts, but
+if you have trouble, replace all greater-than characters by slash
+characters.  Because the slash character is used as a pathname
+delimiter, Perl cannot process VOS pathnames containing a slash
+character in a directory or file name; these must be renamed.
 
-The following command can be used to check the value:
+This port of Perl also uses Unix-epoch date values internally.
+As long as you are dealing with ASCII character string
+representations of dates, this should not be an issue.  The
+supported epoch is January 1, 1980 to January 17, 2038.
 
-     get_external_variable s$c_options -in perl.pm -type integer
+See the file pod/perlport.pod for more information about the VOS
+port of Perl.
 
-See the documentation for VOS POSIX.1 for the full set of option
-values.
+=head1 SUPPORT STATUS
 
-Support Status
---------------
 I'm offering this port "as is".  You can ask me questions, but I
-can't guarantee I'll be able to answer them; I don't know much
-about Perl itself; I'm still learning that.
+can't guarantee I'll be able to answer them.  There are some
+excellent books available on the Perl language; consult a book
+seller.
+
+=head1 AUTHOR
+
+Paul Green (Paul_Green@stratus.com)
+
+=head1 LAST UPDATE
 
-(end)
+July 4, 2001
 
+=cut