summaryrefslogtreecommitdiff
path: root/README.vms
diff options
context:
space:
mode:
Diffstat (limited to 'README.vms')
-rw-r--r--README.vms232
1 files changed, 232 insertions, 0 deletions
diff --git a/README.vms b/README.vms
new file mode 100644
index 0000000000..dbf6251311
--- /dev/null
+++ b/README.vms
@@ -0,0 +1,232 @@
+Last revised: 09-Oct-1994 by Charles Bailey bailey@genetics.upenn.edu
+
+The VMS port of perl5 is still under development. At this time, the perl
+binaries built under VMS handle internal operations properly, for the most
+part, as well as most of the system calls which have close equivalents under
+VMS. There are still some incompatibilities in process handling (e.g the
+fork/exec model for creating subprocesses doesn't do what you might expect
+under Unix), and there remain some file handling differences from Unix. There
+is a VMS implementation of the DynaLoader, but it hasn't been tested much, so
+it may still have some bugs in it. Over the longer term, we'll try to get many
+of the useful VMS system services integrated as well, depending on time and
+people available. Of course, if you'd like to add something yourself, or join
+the porting team, we'd love to have you!
+
+The current sources and build procedures have been tested on a VAX using VAXC
+and on an AXP using DECC. IF you run into problems with other compilers,
+please let us know.
+
+
+* Other software required
+
+At the moment, in addition to basic VMS, you'll need two things:
+ - a C compiler: VAXC, DECC, or gcc for the VAX; DECC for the AXP
+ - a make tool: DEC's MMS or the free analog MMK (available from ftp.spc.edu)
+ or a standard make utility (e.g. GNU make, also available from
+ ftp.spc.edu).
+In addition, you may include socket support if you have a IP stack running
+on your system. See the topic "Socket support" for more information.
+
+* Socket support
+
+Perl5 includes a number of IP socket routines among its builtin functions,
+which are available if you choose to compile perl with socket support. Since
+IP networking is an optional addition to VMS, there are several different IP
+stacks available, it's difficult to automate the process of building perl5 with
+socket support in a way which will work on all systems.
+
+By default, perl5 is built without IP socket support. If you define the macro
+SOCKET when invoking MMS, however, socket support will be included. As
+distributed, perl5 for VMS includes support for the SOCKETSHR socket library,
+which is layered on MadGoat software's vendor-independent NETLIB interface.
+This provides support for all socket calls used by perl5 except the
+[g|s]et*ent() routines, which are replaced for the moment by stubs which
+generate a fatal error if a perl script attempts to call one of these routines.
+If you'd like to link perl directly to your IP stack to take advantage of these
+routines or to eliminate the intermediate NETLIB, then make the following
+changes:
+ - In Descrip.MMS, locate the section beginning with .ifdef SOCKET, and
+ change the SOCKLIB macro so that it translates to the filespec of your
+ IP stack's socket library. This will be added to the RTL options file.
+ - Edit the file SockAdapt.H in the [.VMS] subdirectory so that it
+ includes the In.H, NetDb.H, and, if necessary, Errno.H header files
+ for your IP stack, or so that it declares the standard TCP/IP data
+ structures appropriately (see the distributed copy of SockAdapt.H
+ for a collection of the structures needed by perl.) You should also
+ define any logical names necessary to find these files before invoking
+ MMS to build perl.
+ - Edit the file SockAdapt.C in the [.VMS] subdirectory so that it
+ contains routines which substitute for any IP library routines
+ required by perl which your IP stack does not provide. This may
+ require a little trial and error; we'll try to compile a complete
+ list soon of socket routines required by perl5.
+
+* Building perl under VMS
+
+Since you're reading this, presumable you've unpacked the perl distribution
+into its directory tree, in which you will find a [.vms] subdirectory below
+the directory in which this file is found. If this isn't the case, then you'll
+need to unpack the distribution properly, or manually edit Descrip.MMS or
+the VMS Makefile. to alter directory paths as necessary. (I'd advise using the
+`normal' directory tree, at least for the first time through.) This
+subdirectory contains several files, among which are the following:
+ Config.VMS - A template C header file set up for VMS.
+ Descrip.MMS - The MMS/MMK dependency file for building perl
+ GenConfig.Pl - A perl script to generate Config.SH retrospectively
+ from Config.VMS, since the Configure shell script which
+ normally generates Config.SH doesn't run under VMS.
+ GenOpt.Com - A little DCL procedure used to write some linker options
+ files, since not all make utilities can do this easily.
+ Gen_ShrFls.Pl - A perl script which generates linker options files and
+ MACRO declarations for PerlShr.Exe.
+ Makefile. - The make dependency file for building perl
+ MMS2Make.Pl - A perl script used to generate Makefile. from Descrip.MMS
+ VMSish.H - C header file containing VMS-specific definitions
+ VMS.C - C source code for VMS-specific routines
+ WriteMain.Pl - A perl script used to generate perlmain.c during the build.
+There may also be other files pertaining to features under development; for the
+most part, you can ignore them.
+
+Config.VMS and Decrip.MMS/Makefile. are set up to build a version of perl which
+includes all features known to work when this release was assembled. If you
+have code at your site which would support additional features (e.g. emulation
+of Unix system calls), feel free to make the appropriate changes to these
+files. (Note: Do not use or edit config.h in the main perl source directory;
+it is superseded by the current Config.VMS during the build.) You may also
+wish to make site-specific changes to Descrip.MMS or Makefile. to reflect local
+conventions for naming of files, etc.
+
+At the moment, system-specific information which becomes part of the perl5
+Config extension is hard-coded into the file genconfig.pl in the vms
+subdirectory. Before you build perl, you should make any changes to the list
+at the end of this file necessary to reflect your system (e.g your hostname and
+VMS version).
+
+Examine the information at the beginning of Descrip.MMS for information about
+specifying alternate C compilers or building a version of perl with debugging
+support. For instance, if you want to use DECC, you'll need to include the
+/macro="decc=1" qualifier to MMS (If you're using make, these options are not
+supported.) If you're on an AXP system, define the macro __AXP__ (MMK does
+this for you), and DECC will automatically be selected.
+
+To start the build, set default to the main source directory.
+Then, if you are using MMS or MMK, issue the command
+$ MMS/Descrip=[.VMS] ! or MMK
+If you are using make, issue the command
+$ Make -f [.VMS]Makefile.
+Note that the Makefile. doesn't support conditional compilation, and is
+set up to use VAXC on a VAX, and does not include socket support. You can
+either edit the Makefile. by hand, using Descrip.MMS as a guide, or use the
+Makefile. to build Miniperl.Exe, and then run the Perl script MMS@Make.pl,
+found in the [.VMS] subdirectory, to generate a new Makefile with the options
+appropriate to your site.
+
+Note for sites using early versions of DECC: A bug in some versions of the
+DECC RTL causes newlines to be lost when writing to a pipe. This causes
+Gen_ShrFls.pl to fail, since it can't read the preprocessor output to identify
+global variables and routines. You can work around this problem by defining
+the macro DECC_PIPES_BROKEN when you invoke MMS or MMK.
+
+This will build the following files:
+ Miniperl.Exe - a stand-alone version of without any extensions.
+ Miniperl has all the intrinsic capabilities of perl,
+ but cannot make use of the DynaLoader or any
+ extensions which use XS code.
+ PerlShr.Exe - a shareable image containing most of perl's internal
+ routines and global variables. Perl.Exe is linked to
+ this image, as are all dynamic extensions, so everyone's
+ using the same set of global variables and routines.
+ Perl.Exe - the main perl executable image. It's contains the
+ main() routine, plus code for any statically linked
+ extensions.
+ PerlShr_Attr.Opt - A linker options file which specifies psect attributes
+ matching those in PerlShr.Exe. It should be used when
+ linking images against PerlShr.Exe
+ [.Lib]Config.pm - the perl extension which saves configuration information
+ about perl and your system.
+ [.lib]DynaLoader.pm - The perl extension which performs dynamic linking of
+ shareable images for extensions.
+There are, of course, a number of other files created for use during the build.
+Once you've got the binaries built, you may wish to `build' the `tidy' or
+`clean' targets to remove extra files.
+
+
+* Installing perl once it's built
+
+Once the build is complete, you'll need to do the following:
+ - Put PerlShr.Exe in a common directory, and make it world-readable.
+ If you place it in a location other than Sys$Share, you'll need to
+ define the logical name PerlShr to point to the image.
+ - Put Perl.Exe in a common directory, and make it world executable
+ - Define a foreign command to invoke perl, using a statement like
+ $ Perl == "$dev:[dir]Perl.Exe"
+ - Create a world-readable directory tree for perl library modules,
+ scripts, and what-have-you, and define PERL_ROOT as a rooted logical
+ name pointing to the top of this tree (i.e. if your perl files were
+ going to live in DKA1:[Perl5...], then you should
+ $ Define/Translation=Concealed Perl_Root DKA1:[Perl5.]
+ - Define the logical name PERLSHR as the full file specification of
+ PERLSHR.EXE, so executable images linked to it can find it. Alternatively,
+ you can justput PERLSHR.EXE int SYS$SHARE.
+ - Place the files from the [.lib] subdirectory in the distribution package
+ into a [.lib] subdirectory off the root directory described above.
+ - Most of the perl5 documentation lives in the [.pod] subdirectory, and
+ is written in a simple markup format which can be easily read. In this
+ directory as well are pod2man and pod2html translators to reformat the
+ docs for common display engines; a pod2hlp translator is under development.
+ Information on perl5 can also be gleaned from the files in the [.doc]
+ subdirectory (internals documents and summaries of changes), and from
+ the test scripts in the [.t...] subdirectories.
+For now, that's it.
+
+
+* For more information
+
+If you're interested in more information on perl in general, consult the Usenet
+newsgroup comp.lang.perl. The FAQ for that group provides pointers to other
+online sources of information, as well as books describing perl in depth.
+
+If you're interested in up-to-date information on perl5 development and
+internals, you might want to subscribe to the perl5-porters mailing list. You
+can do this by sending a message to perl5-porters-request@isi.edu, containing
+the single line
+subscribe perl5-porters Your Name Here
+This is a moderately high-volume list at the moment (25-50 messages/day).
+
+Finally, if you're interested in ongoing information about the VMS port, you
+can subscribe to the VMSperl mailing list by sending a request to
+bailey@genetics.upenn.edu (it's to a human, not a list server - this is a small
+operation at the moment). And, as always, we welcome any help or code you'd
+like to offer - you can send mail to bailey@genetics.upenn.edu or directly to
+the VMSperl list at vmsperl@genetics.upenn.edu.
+
+Good luck using perl. Please let us know how it works for you - we can't
+guarantee that we'll be able to fix bugs quickly, but we'll try, and we'd
+certainly like to know they're out there.
+
+
+* Acknowledgements
+
+There are, of course, far too many people involved in the porting and testing
+of perl5 to mention everyone who deserves it, so please forgive us if we've
+missed someone. That said, special thanks are due to the following:
+ David Denholm <denholm@conmat.phys.soton.ac.uk>
+ for extensive testing and provision of pipe and SocketShr code,
+ Mark Pizzolato <mark@infocomm.com>
+ for the getredirection() code
+ Rich Salz <rsalz@bbn.com>
+ for readdir() and related routines
+ Denis Haskin <DWH@epub.ziff.com>
+ for work on a pod-to-hlp translator for the perl5 documentation
+ Richard Dyson <dyson@blaze.physics.uiowa.edu> and
+ Kent Covert <kacovert@miavx1.acs.muohio.edu>
+ for additional testing on the AXP.
+and to the entire VMSperl group for useful advice and suggestions. In addition
+the perl5-porters, especially Andy Dougherty <doughera@lafcol.lafayette.edu>
+and Tim Bunce <Tim.Bunce@ig.co.uk>, deserve credit for their creativity and
+willingness to work with the VMS newcomers. Finally, the greatest debt of
+gratitude is due to Larry Wall <lwall@netlabs.com>, for having the ideas which
+have made our sleepless nights possible.
+
+Thanks,
+The VMSperl group