  PYVMS - Python on OpenVMS -installation manual                  PAGE 1
  title page


                        __
                       |  \ |   |       _
                       |__/ |   |  -   / \   -O-
                       |     \ /    \_/   \_/
                       |      |
                                              _
                                |  |  /\/\   / \
                                |  | / || \  \_
                                \  / |    |    \
                                 \/  |    |  \_/



  Copyright, 1996 - 1999 by Uwe Zessin

  ------------------------------------------------------------------------
  PYVMS - installation manual

  August 1999

  This manual contains documentation about 'Python on OpenVMS'.


  Software Version:
          PYVMS V1.5.2-V005


  Uwe Zessin, Germany
  ------------------------------------------------------------------------
  24-AUG-1999 ZE.

  PYVMS - Python on OpenVMS -installation manual                  PAGE 2
  Python copyright


  0.1  The original Python Copyright

  (copied from MISC/COPYRIGHT.)


  Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
  The Netherlands.

                          All Rights Reserved

  Permission to use, copy, modify, and distribute this software and its
  documentation for any purpose and without fee is hereby granted,
  provided that the above copyright notice appear in all copies and that
  both that copyright notice and this permission notice appear in
  supporting documentation, and that the names of Stichting Mathematisch
  Centrum or CWI or Corporation for National Research Initiatives or
  CNRI not be used in advertising or publicity pertaining to
  distribution of the software without specific, written prior
  permission.

  While CWI is the initial source for this software, a modified version
  is made available by the Corporation for National Research Initiatives
  (CNRI) at the Internet address ftp://ftp.python.org.

  STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
  REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
  MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
  CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
  DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  PERFORMANCE OF THIS SOFTWARE.

  ------------------------------------------------------------------------
  18-MAY-1998 ZE.

  PYVMS - Python on OpenVMS -installation manual                  PAGE 3
  PYVMS copyright


  0.2  The PYVMS Copyright


  Copyright 1996-1999, by Uwe Zessin

    This software is provided to you free of charge. Use at your own risk -
    if it doesn't work, I disclaim all responsibility.
    This software may be freely distributed as long as it is accompanied by
    the copyright notice. If you change this software, you may re-distribute
    it only if you keep the original notes AND an additional notice identifying
    you and indicating that you have changed it.

  ------------------------------------------------------------------------
  I have found this wording somewhere on  the  Internet  and  liked  it.
  Unfortunately  I  haven't  noted  the  author's  name so I cannot give
  credit.
  ------------------------------------------------------------------------
  17-JUL-1999 ZE.

  PYVMS - Python on OpenVMS -installation manual                  PAGE 4
  table of contents


                                     CONTENTS

          0.1       The original Python Copyright  . . . . . . . . . . 2
          0.2       The PYVMS Copyright  . . . . . . . . . . . . . . . 3


  CHAPTER 1       Introduction

          1.1     Welcome  . . . . . . . . . . . . . . . . . . . . . 1-1


  CHAPTER 2       files from the Python distribution

          2.1     the Python core files  . . . . . . . . . . . . . . 2-1
          2.2     the Python documentation . . . . . . . . . . . . . 2-2


  CHAPTER 3       files from the PYVMS distribution

          3.1     the PYVMS source kit . . . . . . . . . . . . . . . 3-1
          3.2     the PYVMS documentation  . . . . . . . . . . . . . 3-1
          3.3     precompiled object code  . . . . . . . . . . . . . 3-3
          3.4     tools to build Python on OpenVMS . . . . . . . . . 3-3


  CHAPTER 4       preparations

          4.1     disk space calculations  . . . . . . . . . . . . . 4-1
          4.2     select directory for the installation  . . . . . . 4-2
          4.3     logical names  . . . . . . . . . . . . . . . . . . 4-2
          4.4     create directories . . . . . . . . . . . . . . . . 4-3
          4.5     foreign commands . . . . . . . . . . . . . . . . . 4-3
          4.6     store software kits  . . . . . . . . . . . . . . . 4-4
          4.7     OpenVMS patches  . . . . . . . . . . . . . . . . . 4-4


  CHAPTER 5       install / build

          5.1     restore the Python distribution  . . . . . . . . . 5-1
          5.2     create additional directories  . . . . . . . . . . 5-2
          5.3     save some original files . . . . . . . . . . . . . 5-2
          5.4     extract the PYVMS distribution . . . . . . . . . . 5-3
          5.5     translate and compile ...  . . . . . . . . . . . . 5-4
          5.5.1     translate VMSDEF modules . . . . . . . . . . . . 5-4
          5.5.2     translate configuration  . . . . . . . . . . . . 5-4
          5.5.3     compile for the DCL environment  . . . . . . . . 5-4
          5.5.4     compile for the POSIX environment  . . . . . . . 5-5
          5.6     setup and go . . . . . . . . . . . . . . . . . . . 5-5
          5.7     compile Python files . . . . . . . . . . . . . . . 5-5
          5.8     run tests  . . . . . . . . . . . . . . . . . . . . 5-6
          5.9     convert documentation to RUNOFF format . . . . . . 5-6
          5.10    thread support . . . . . . . . . . . . . . . . . . 5-7

  PYVMS - Python on OpenVMS -installation manual                  PAGE 5
  table of contents


  INDEX
                                                                 INDEX-1












                                CHAPTER 1

                               Introduction



                        __
                       |  \ |   |       _
                       |__/ |   |  -   / \   -O-
                       |     \ /    \_/   \_/
                       |      |
                                              _
                                |  |  /\/\   / \
                                |  | / || \  \_
                                \  / |    |    \
                                 \/  |    |  \_/



  1.1  Welcome

  to PYVMS - the Python programming  language  running  on  the  OpenVMS
  operating system.

                    This is the 'Installation Manual'.

  This manual tells you which software you need, where to  get  it  from
  and  the  steps  to get Python running on OpenVMS.  Please try to read
  the entire manual before you start.

  This manual combines the  contents  of  the  former  'getting  started
  guide' and the 'building' section of the 'GENeral MANual'.

  Descriptions of modules with their interface routines, defined symbols
  and VMS objects are in the 'REFerence MANual'.

  ------------------------------------------------------------------------
  29-APR-1999 ZE.












                                CHAPTER 2

                    files from the Python distribution



  2.1  the Python core files

  Beginning with 'Python  on  OpenVMS'  version  1.5.2-V001  the  Python
  distribution  is  available in a repacked format which should make the
  installation process easier.
  You always need to download the file 'python1_5_2.zip' from:

        -  http://www.decus.de/~zessin/kits/python1_5_2.zip
           5086 blocks

  Note that the '.ZIP' archive contains an OpenVMS BACKUP saveset (20601
  blocks).  The reason is that this gave a better compression factor - a
  'ZIP' of the subdirectory resulted in a 6118 blocks '.ZIP' archive.

  A new version of the ZIP file has been created on 13-MAY-1999, because
  the  "-V"  option  was  ommitted  inadvertently during creation of the
  first one on 01-MAY-1999.  If you have downloaded the old version  you
  should  be  able  to  fix  the saveset after it was extracted from the
  ".ZIP"  archive.   See  'restore  the  Python  distribution'  in   the
  'installation' section.

  The  BACKUP  saveset  contains  the  complete  source  of   the   core
  interpreter  and  the  Python library.  Unpacking this file on OpenVMS
  creates about 1516 files with 19221 blocks.  On a  disk  with  cluster
  size 4 this allocates 21908 blocks.

  Even if you download precompiled object  code  (described  later)  for
  OpenVMS, you still need the library files from 'python1_5_2.zip'.

                                   ---
  For your information:  the original files were downloaded from:

        -  http://www.python.org/ftp/python/src/py152.tgz

           or


  PYVMS - Python on OpenVMS -installation manual                PAGE 2-2
  files from the Python distribution


        -  ftp://ftp.python.org/ftp/python/src/py152.tgz

  (4948 blocks)

  ------------------------------------------------------------------------




  2.2  the Python documentation

  The  Python  documentation   is   decoupled   from   the   interpreter
  distribution.

  Start at:

        -  http://www.python.org/doc/

           or

        -  ftp://ftp.python.org/pub/python/doc/

  (This is the most recent documentation for Python V1.5.2  I  am  aware
  of)

  Note that the PYVMS documentation only  describes  OpenVMS  specifics.
  You should download the Python documentation, too.

  A new version of the documentation was made available  shortly  before
  the  release  of  PYVMS V1.5.2-V004.  This is usually announced in the
  newsgroups comp.lang.python and comp.lang.python.announce.  You  might
  check  the  addresses  mentioned  above from time to time if you can't
  follow the newsgroups.

  ------------------------------------------------------------------------
  07-JUL-1999 ZE.












                                CHAPTER 3

                    files from the PYVMS distribution



  3.1  the PYVMS source kit

  You always need to download the PYVMS 'source kit'.

        -  http://www.decus.de/~zessin/kits/pyvms1_5_2-v005src.zip
           about 2240 blocks

  This is the PYVMS distribution (source kit) with all  files.   It  has
  superseeded the old full kit (pyvms1_5_2-v001src.zip) and contains all
  updates since then.


  You need these files even if  you  intend  not  to  build  the  Python
  interpreter yourself, but download pre-compiled object modules!

  ------------------------------------------------------------------------




  3.2  the PYVMS documentation

  The whole downloadable or  online  browsable  documentation  has  been
  updated for version 1.5.2-V005.

  The documentation is available in different forms:

  HTML documentation
          The '.HTML' files are distributed within the 'source kit' that
          was  mentioned above.  You can put these files on a web server
          or directly read  them  with  a  browser.   See  the  'GENeral
          MANual' for more details.

          Keep the [.VMS.DOC] tree intact, because there are  hyperlinks
          between the 'manuals'.

  simple text format
          These are files that have been run through  a  text  formatter
          but  they  don't  contain any information about bold printing.
          The individual pages are  separated  by  FormFeed  characters.

  PYVMS - Python on OpenVMS -installation manual                PAGE 3-2
  files from the PYVMS distribution


          Maximum  page  size is 66 lines, but there are no empty filler
          lines before a FormFeed character.  You can send  these  files
          to  a  printer  that  doesn't  understand  that  or  read them
          directly with a text editor.

          All three manuals are separately available:

           *  the 'installation manual' -
              http://www.decus.de/~zessin/docu/insman/pyvmsinsman.txt
              about 68 blocks

           *  the 'general manual' -
              http://www.decus.de/~zessin/docu/genman/pyvmsgenman.txt
              about 213 blocks

           *  the 'reference manual' -
              http://www.decus.de/~zessin/docu/refman/pyvmsrefman.txt
              about 1280 blocks


  printer format
          These are files that have been run  through  the  RUNOFF  text
          formatter.   They  contain information for bold printing.  Two
          variants are available:

           *  A '.MEM' file for output on line printers.
              This file can be converted  to  the  'simple  text  format
              ('.TXT')' mentioned above.

           *  A '.LNI' file for output on  printers  understanding  ANSI
              sequences.

          All 3 manuals are stored in  an  OpenVMS  text  library.   The
          library   contains   a  file  (README_TLB.TXT)  with  detailed
          instructions how to extract the manuals from the library,  how
          to  convert  a '.MEM' file to a '.TXT' file to get the 'simple
          text format' mentioned above and how to re-apply  the  correct
          record attributes to the '.MEM' and '.TXT' files.

          Download:

           *  http://www.decus.de/~zessin/kits/pyvms1_5_2-v005doc.tlb
              about 1900 blocks

          After the download to an OpenVMS system do a:
          $ LIBRARY /EXTRACT= README_TLB.TXT -
                    /OUTPUT=  README_TLB.TXT -
                    PYVMS1_5_2-V005DOC.TLB


  Note that the PYVMS documentation only describes the  OpenVMS  related
  parts.  You should download the Python documentation, too.

  ------------------------------------------------------------------------

  PYVMS - Python on OpenVMS -installation manual                PAGE 3-3
  files from the PYVMS distribution


  3.3  precompiled object code

  For very specific configurations I MIGHT make precompiled object  code
  available.   They  may NOT work on your configuration!  I'm sorry, but
  that is the best you can expect from a 'hobby project'.

  Start at http://www.decus.de/~zessin/pyvms/obj.html to see if and what
  versions are available.

  ------------------------------------------------------------------------




  3.4  tools to build Python on OpenVMS

  Beginning with version 1.5.2-V001 you only need the UNZIP tool that is
  used  to  extract  (and  decompress) a single or multiple files from a
  '.ZIP' archive.

  Explaining this tool in more  detail  is  beyond  the  scope  of  this
  manual,  sorry.  You should be able to get along with it if you follow
  the instructions in the 'installing' section.

  I have made available executable files of the tools that I use.   They
  can be downloaded from:


        -  http://www.decus.de/~zessin/pyvms/tools.html


  Of course, there is NO guarantee that they work for you.  The 'General
  Manual'  of the PYVMS documentation has pointers where more up-to date
  versions (perhaps including source) can be found.

  ------------------------------------------------------------------------
  24-AUG-1999 ZE.












                                CHAPTER 4

                               preparations



  This section describes how the environment for  the  installation  and
  building process is to be prepared.
  ------------------------------------------------------------------------



  4.1  disk space calculations

  The following information should help you to calculate the  amount  of
  disk space required during and after installation:

  PYTHON1_5_2.ZIP - 5086 blocks
          Can be stored anywhere, however this file should be saved  for
          future use.

  PYTHON1_5_2.BCK - 20601 blocks
          Resulting  from  decompression  of  PYTHON1_5_2.ZIP.   Can  be
          stored anywhere.  This space is only required until the Python
          directory tree is restored.

  [PYTHON.PYTHON-1_5_2...] - min:  19221 blocks
          The   original   Python   distribution   as   restored    from
          PYTHON1_5_2.BCK.   On  disks with a larger cluster factor more
          blocks are required.

  PYVMS1_5_2-V005SRC.ZIP - about 2250 blocks
          Can be stored anywhere, however this file should be saved  for
          future use.
  [PYTHON.PYTHON-1_5_2.VMS...] - about 8330 blocks
          The    OpenVMS    specific    parts    as    restored     from
          PYVMS1_5_2-V005SRC.ZIP.

  translated documentation - about 8580 blocks
          Is stored in the Python tree by running  CVT_DOC.COM  in  each
          subdirectory   of  [.VMS.DOC].   Required  only  if  the  HTML
          documentation in the source tree  is  translated  to  text  or
          printer  formats.   The  number  of blocks includes '.RNO' and
          other RUNOFF temporary files.

  Alpha object code - about 26000 blocks

  PYVMS - Python on OpenVMS -installation manual                PAGE 4-2
  preparations


          This amount is from compiling /noDEBUG /OPTIMIZE and  includes
          object modules, the object libraries and the executable.

  VAX object code - about 31890 blocks
          This amount is from compiling /noDEBUG /OPTIMIZE and  includes
          object modules, the object libraries and the executable.

  compiled Python code - 2695 blocks
          After building the interpreter the source code from the Python
          library should be pre-compiled.

  Python documentation
          is not listed here

  Total space used on OpenVMS VAX is about 76500 blocks on a disk with a
  cluster size of 4 blocks.

  These numbers  are  from  the  1.5.2-V005  version.   Updates  contain
  bugfixes  for existing files and new functionality in new files so the
  final disk space that is required is higher.



  4.2  select directory for the installation

  The top-level of the directory tree is assumed to be  named  [PYTHON].
  The  current  Python  environment  requires  6  directory levels.  All
  instructions so far assume that the  [PYTHON]  directory  is  directly
  stored  in  the  master  file  directory  ([000000])  of  a disk (e.g.
  DKA100:).  No tests have been done to use a concealed logical name for
  the 'disk'.



  4.3  logical names

  Beginning with version 1.5.2-V001 logical names are used to  point  to
  certain directories within the build process.  The person who installs
  the software  should  be  able  to  type  in  the  commands  from  the
  instructions directly or use cut and paste without changes.

  The following logical names are currently used:

  PYVMS_DISK
          Device on which the software is  to  be  installed.   Using  a
          concealed device might be possible, but has not been tested.

  PYVMS_INS_TMP
          A  temporary  directory   for   scratch   space   during   the
          installation.

  PYVMS_INS_TOOLS
          A directory that contains executables  of  the  tools  (UNZIP)
          that are used during the installation.

  PYVMS - Python on OpenVMS -installation manual                PAGE 4-3
  preparations


  PYTHON_INCLUDE
          Python include directories  -  these  can  be  used  by  other
          modules  that  are  used to enhance Python, but do not live in
          it's directory tree.

  PYTHON_OLB
          Architecture-specific  (Alpha,  VAX)   directory   tree   that
          contains  object libraries and object files of the Python core
          interpreter, OpenVMS support and extensions.

  PYTHON_VMS
          Almost all of the files from the port to OpenVMS are  in  this
          directory tree.

  Example:

  $ define  PYVMS_DISK       DKA100:
  $ define  PYVMS_INS_TMP    DKB100:[PYVMSINSTMP]
  $ define  PYVMS_INS_TOOLS  PYVMS_DISK:[PYTHON.TOOLS]
  $!
  $ define PYTHON_INCLUDE   PYVMS_DISK:[PYTHON.PYTHON-1_5_2], -
                            PYVMS_DISK:[PYTHON.PYTHON-1_5_2.INCLUDE]
  $ _ARCH = "ALPHA"
  $ if (F$GETSYI("HW_MODEL").LT.1024) then $ _ARCH = "VAX"
  $ define PYTHON_OLB       PYVMS_DISK:[PYTHON.PYTHON-1_5_2.O_'_ARCH']
  $ define PYTHON_VMS       PYVMS_DISK:[PYTHON.PYTHON-1_5_2.VMS]




  4.4  create directories

  $ create /DIRECTORY /PROTECTION=(G:RE;W:RE) PYVMS_INS_TMP:
  $ create /DIRECTORY /PROTECTION=(G:RE;W:RE) PYVMS_INS_TOOLS:




  4.5  foreign commands

  Place the executable of the UNZIP  tool  into  PYVMS_INS_TOOLS:.   The
  processor   architecture   should   be  part  of  the  filename,  e.g.
  UNZIP_ALPHA.EXE

  Define a foreign command for UNZIP.  The following example can be  put
  into a command procedure to work on Alpha and VAX systems.

  $ _ARCH = "ALPHA"
  $ if (F$GETSYI("HW_MODEL").LT.1024) then $ _ARCH = "VAX"
  $ UNZIP == "$PYVMS_INS_TOOLS:UNZIP_''_ARCH'.EXE"
  $ delete /SYMBOL /LOCAL _ARCH


  PYVMS - Python on OpenVMS -installation manual                PAGE 4-4
  preparations


  4.6  store software kits

  Store the files that  you  have  downloaded  into  PYVMS_INS_TMP:   or
  download them now into that directory.



  4.7  OpenVMS patches

  See the 'patches' chapter in the 'General Manual' if you might have to
  apply one to your OpenVMS system.

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------

  Now you can start the installation / building.
  ------------------------------------------------------------------------
  24-AUG-1999 ZE.












                                CHAPTER 5

                             install / build




  This chapter describes the steps to build Python on OpenVMS.

  Version 1.5.2-V005 comes as a complete kit.  It should be possible  to
  upgrade from version 1.5.2-V001 or later, but this has not been tried.
  There is no update from 1.5.1-V009 or older available.

  ------------------------------------------------------------------------

  Specify an owner UIC to be assigned to the files:

  $ _O = "/OWNER=[1,4]"

  or use defaults:

  $ _O = ""




  5.1  restore the Python distribution

  $! -- temporary directory
  $ set DEFAULT PYVMS_INS_TMP:
  $!
  $! -- extract BACKUP saveset
  $ UNZIP -e PYTHON1_5_2.ZIP
  $!

  If you have downloaded the ".ZIP" file before  14-MAY-1999,  then  you
  need to apply the following command to the BACKUP saveset, because the
  "-V"  option  was  ommitted  inadvertently  during  the  creation   of
  PYTHON1_5_2.ZIP.

  $ set FILE /ATTRIBUTES=(RFM:FIX,LRL:32256) PYTHON1_5_2.BCK

  A new download should not be necessary.

  $! -- list contents of saveset
  $ backup PYTHON1_5_2.BCK /SAVE_SET -

  PYVMS - Python on OpenVMS -installation manual                PAGE 5-2
  installing + building PYVMS


           /LIST= PYVMS_DISK:[PYTHON]PYTHON1_5_2.LIS
  $!
  $! -- extract files from saveset
  $ backup PYTHON1_5_2.BCK /SAVE_SET -
           PYVMS_DISK:[*...] /TRUNCATE /VERIFY  '_O'
  $!
  $! -- delete saveset - please keep ZIP archive
  $ delete /log PYTHON1_5_2.BCK;*
  $!




  5.2  create additional directories

  The intention is to keep the original directories as much unchanged as
  possible.

  $ set DEFAULT PYTHON_VMS:
  $ CREDIR = "CREATE/DIRECTORY ''_O' /PROTECTION=(G:RE,W:RE)/LOG"
  $!
  $ CREDIR []
  $ CREDIR [.O_ALPHA.MODULES]
  $ CREDIR [.O_ALPHA.OBJECTS]
  $ CREDIR [.O_ALPHA.PARSER]
  $ CREDIR [.O_ALPHA.PYTHON]
  $ CREDIR [.O_ALPHA.VMS]
  $ CREDIR [.O_ALPHA.VMS_TOOLS]
  $ CREDIR [.O_VAX.MODULES]
  $ CREDIR [.O_VAX.OBJECTS]
  $ CREDIR [.O_VAX.PARSER]
  $ CREDIR [.O_VAX.PYTHON]
  $ CREDIR [.O_VAX.VMS]
  $ CREDIR [.O_VAX.VMS_TOOLS]
  $ CREDIR [.TMP]
  $ delete /SYMBOL /LOCAL CREDIR
  $!

  All other directories will automatically be created during the restore
  of the PYVMS distribution.



  5.3  save some original files

  These files will  be  replaced  with  modified  ones  from  the  PYVMS
  distribution.   A  copy is made for easy access to the original files.
  BACKUP is used because it retains the creation  and  revision  date  +
  time of the files.  The following type extensions are used:

  *.*$O
          original file, superceeded by a new one with changes for PYVMS
  *.*$P
          original file, superceeded by a new one with Python patches

  PYVMS - Python on OpenVMS -installation manual                PAGE 5-3
  installing + building PYVMS


  *.*$OP
          original file, superceeded by a new one  with  Python  patches
          AND changes for PYVMS

  $ set default PYVMS_DISK:[PYTHON.PYTHON-1_5_2.LIB]
  $ BACKUP COMPILEALL.PY;1, TEMPFILE.PY;1  *.PY$O;* /OWNER=ORIGINAL
  $!
  $ set DEFAULT PYVMS_DISK:[PYTHON.PYTHON-1_5_2.LIB.TEST]
  $ backup TEST_SUPPORT.PY;1 *.PY$O;* /OWNER=ORIGINAL
  $!
  $ set DEFAULT PYVMS_DISK:[PYTHON.PYTHON-1_5_2.MODULES]
  $ backup MAIN.C, SELECTMODULE.C, SIGNALMODULE.C, SOCKETMODULE.C, -
          TIMEMODULE.C, _LOCALEMODULE.C  *.C$O /BY_OWNER=ORIGINAL /LOG
  $ backup TIMING.H  *.H$O /BY_OWNER=ORIGINAL /LOG
  $!
  $ set DEFAULT PYVMS_DISK:[PYTHON.PYTHON-1_5_2.PYTHON]
  $ backup IMPORT.C  *.C$O /BY_OWNER=ORIGINAL /LOG
  $!




  5.4  extract the PYVMS distribution

  $! -- list contents of .ZIP file
  $ set DEFAULT PYVMS_DISK:[PYTHON]
  $!
  $ define /USER_MODE SYS$OUTPUT [PYTHON]PYVMS1_5_2-V005SRC.LIS
  $ UNZIP -l PYVMS_INS_TMP:PYVMS1_5_2-V005SRC.ZIP
  $!
  $! -- extract files/directories from ZIPped file
  $ set PROTECTION= (S:RWED,O:RWED,G:RE,W:RE) /DEFAULT
  $ define /USER_MODE SYS$OUTPUT -
           PYVMS_DISK:[PYTHON]PYVMS1_5_2-V005SRC.UNZIP
  $ UNZIP -e -o PYVMS_INS_TMP:PYVMS1_5_2-V005SRC.ZIP
  $!

  There are some files that have been saved with OpenVMS  specific  file
  attributes,  because  they contain lines with explicit <LF> characters
  which ZIP/UNZIP would otherwise corrupt.   (The  SRC  kit  is  created
  without the "-V" option).

  $ set DEFAULT PYTHON_VMS:
  $ set DEFAULT [.DOC]
  $!
  $ UNZIP -e CVT__RNO.ZIP
  $!
  $ delete CVT__RNO.ZIP;*
  $!


  PYVMS - Python on OpenVMS -installation manual                PAGE 5-4
  installing + building PYVMS


  5.5  translate and compile ...

  The source kit (SRC) of the PYVMS distribution does  not  contain  any
  pre-translated or pre-compiled files in order to save space.

  Pre-compiled objects kits might be available.   An  objects  kit  will
  contain instructions how to install it.



  5.5.1  translate VMSDEF modules

  These  modules  contain  OpenVMS  version  information,  item   codes,
  bitmasks and constants:

  $ SET DEFAULT PYTHON_VMS:
  $ show TIME
  $ @ VMSDEF2MAR-ALL ! calls VMSDEF2MAR.COM
  $ show TIME
  $ @ VMSDEF_BLDDIR2MAR.COM
  $ show TIME
  $ @ VMSVER2MAR.COM VMSDAT_VMSVER.DAT
  $ show TIME




  5.5.2  translate configuration

  Details of the configuration process are in the 'General Manual'.

  $ @ CONFIG_INITTAB2MAR  CONFIG.DAT  "D"
  $ @ MODULEMETHODS2MAR   VMS_LIB__METHODS.DAT  "."  "."
  $ @ MODULEMETHODS2MAR   VMS_SYS__METHODS.DAT  "."  "."




  5.5.3  compile for the DCL environment

  $ @ DCC-ALL
  $!
  $ @ LINKD_PY
  $!
  $ @ LINKD_PGEN


  The whole translation and compilation process took about one hour on a
  VAXstation 4000 modell 60.

  PYVMS - Python on OpenVMS -installation manual                PAGE 5-5
  installing + building PYVMS


  5.5.4  compile for the POSIX environment

  $ @ PCC-ALL
  $!
  $ @ LINKP_PY

  @@ No attempt has been made to build 'PGEN' for POSIX - I haven't even
  used it in the DCL environment...

  27-MAR-1999 - the Posix part has not been tested / kept up to date.



  5.6  setup and go

  Python on OpenVMS needs some symbols:

  PYTHON
          A foreign command pointing to the executable.
  PYTHONPATH
          Information where the library is.
  PYTHONSTARTUP
          Points to a file.  In VMS speak  this  is  an  'initialization
          file' that Python executes on startup.
  PYTHONUNBUFFERED
          Tell Python to use unbuffered I/O.

  @@maintenance note:   Symbol  list  could  be  moved  to  a  different
  chapter.


  The SETUP.COM procedure defines them dynamically:

  $ @SETUP

  Now you can run Python on OpenVMS:

  $ PYTHON
  Python 1.5.2 (V005, Sun Aug 22 15:22:14 1999) [DECC] on vms
  Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
  portions Copyright 1996-1999 Uwe Zessin
  >>>

  Beginning with version 1.5.2-V005  the  date  printed  is  dynamically
  taken   from   the   image  header's  link  date  -  the  code  is  in
  VMS__GETBUILDINFO.C.



  5.7  compile Python files

  For performance reasons the '.PY' files from the Python library should
  be  pre-compiled,  because  non-privileged users can not create '.PYC'
  files in that directories and each call would  result  in  a  new  (in

  PYVMS - Python on OpenVMS -installation manual                PAGE 5-6
  installing + building PYVMS


  memory) compilation.

  $ SET DEFAULT PYTHON_VMS:
  $ @ SETUP
  $ @ [.TOOLS]COMPILEALL

  This adds about 138 '.PYC' files with 2695 blocks.



  5.8  run tests

  $ python
  Python 1.5.2 (V005, Sun Aug 22 15:22:14 1999) [DECC] on vms
  Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
  portions Copyright 1996-1999 Uwe Zessin
  >>> import test.autotest
  test_grammar
  test_opcodes
  test_operations
  test_builtin
  test_exceptions
  test_types
  All 6 tests OK.
  >>>

  Note:  this (and other tests) (currently) do not work with  the  POSIX
  version.

                                ----------

  You might need a patch to the DEC C RTL.  Please see  the  description
  of  patch VAXACRT11_061 in the 'Patches' chapter even if you don't run
  OpenVMS VAX V6.1.



  5.9  convert documentation to RUNOFF format

  The PYVMS distribution contains full sources to format the  files  for
  line  printer  or  text output.  You do not need to download the files
  'pyvms1_5_2-v005doc.tlb',  'pyvmsinsman.txt',   'pyvmsgenman.txt'   or
  'pyvmsrefman.txt'  from  the  Internet  if  you have the 'PYVMS source
  distribution' and access to this chapter.

  Passing a "*" to CVT_DOC.COM started working with version  1.5.1-V009.
  (Note that version 1.5.2-V001 is newer.)

  $ set DEFAULT [PYTHON.PYTHON-1_5_2.VMS.DOC.GENMAN]
  $ @ CVT_DOC "*"
  $!
  $ set DEFAULT [PYTHON.PYTHON-1_5_2.VMS.DOC.REFMAN]
  $ @ CVT_DOC "*"
  $!

  PYVMS - Python on OpenVMS -installation manual                PAGE 5-7
  installing + building PYVMS


  $ set DEFAULT [PYTHON.PYTHON-1_5_2.VMS.DOC.INSMAN]
  $ @ CVT_DOC "*"

  ------------------------------------------------------------------------



  5.10  thread support

  A short test to make threads available for  the  DCL  variant  of  the
  Python   interpreter  has  been  done  on  OpenVMS  VAX  V6.1.   These
  instructions have been updated for version 1.5.2-V005 (the first tests
  have been done with a version older than 1.5.1-V008).

  Note that with OpenVMS version 7.0 there  have  been  changes  to  the
  threads  library.   At lease two people reported problems, but did not
  attempt to solve them.

  Here are the instructions:

  Uncomment the following lines in CONFIG.H

      #define WITH_THREAD    1
      #define _POSIX_THREADS 1


  (Re)compile all modules:

      $ set DEFAULT PYTHON_VMS:
      $ @ DCC-ALL


  The following two modules need to be compiled, too:

      $ @ DCC_MODULES THREADMODULE
      $ @ DCC_PYTHON  THREAD


  Update the configuration to include the thread module:

      $ @ CONFIG_INITTAB2MAR.COM  CONFIG.DAT  DT
      $ @ DMACRO_VMS              CONFIG_INITTAB.MAR


  Link the executable:

      $ @ LINKD_PY


  Test it:

      $ @ SETUP
      $ SET DEFAULT [.DEMO]
      $ PYTHON

  PYVMS - Python on OpenVMS -installation manual                PAGE 5-8
  installing + building PYVMS


      [...]
      >>> import thread1.py

  Note that no follow-on work has been done regarding threads.

                                   ---

  To revert to non-threading mode:

        -  undo the changes in CONFIG.H
        -  re-compile all modules again, but leave off THREADMODULE  and
           THREAD
        -  Update configuration without the thread module.
           Pass "D", not "DT" to CONFIG_INITTAB2MAR.COM
        -  link the executable again.

  ------------------------------------------------------------------------
  23-AUG-1999 ZE.

  Index                                                     PAGE INDEX-1
   


                                  INDEX



  files                               symbols
    python1_5_2.zip, 2-1                PYTHON, 5-5
    pyvms1_5_2-v005doc.tlb, 3-2,        PYTHONPATH, 5-5
        5-6                             PYTHONSTARTUP, 5-5
    pyvms1_5_2-v005src.zip, 3-1         PYTHONUNBUFFERED, 5-5
    pyvmsgenman.txt, 3-2, 5-6
    pyvmsinsman.txt, 3-2, 5-6
    pyvmsrefman.txt, 3-2, 5-6
    README_TLB.TXT, 3-2               tools
    SETUP.COM, 5-5                      UNZIP, 3-3, 4-3
