| 1 | This document is written in pod format hence there are punctuation
|
|---|
| 2 | characters in odd places. Do not worry, you've apparently got the
|
|---|
| 3 | ASCII->EBCDIC translation worked out correctly. You can read more
|
|---|
| 4 | about pod in pod/perlpod.pod or the short summary in the INSTALL file.
|
|---|
| 5 |
|
|---|
| 6 | =head1 NAME
|
|---|
| 7 |
|
|---|
| 8 | README.os390 - building and installing Perl for OS/390 and z/OS
|
|---|
| 9 |
|
|---|
| 10 | =head1 SYNOPSIS
|
|---|
| 11 |
|
|---|
| 12 | This document will help you Configure, build, test and install Perl
|
|---|
| 13 | on OS/390 (aka z/OS) Unix System Services.
|
|---|
| 14 |
|
|---|
| 15 | =head1 DESCRIPTION
|
|---|
| 16 |
|
|---|
| 17 | This is a fully ported Perl for OS/390 Version 2 Release 3, 5, 6, 7,
|
|---|
| 18 | 8, and 9. It may work on other versions or releases, but those are
|
|---|
| 19 | the ones we've tested it on.
|
|---|
| 20 |
|
|---|
| 21 | You may need to carry out some system configuration tasks before
|
|---|
| 22 | running the Configure script for Perl.
|
|---|
| 23 |
|
|---|
| 24 |
|
|---|
| 25 | =head2 Tools
|
|---|
| 26 |
|
|---|
| 27 | The z/OS Unix Tools and Toys list may prove helpful and contains links
|
|---|
| 28 | to ports of much of the software helpful for building Perl.
|
|---|
| 29 | http://www-1.ibm.com/servers/eserver/zseries/zos/unix/bpxa1toy.html
|
|---|
| 30 |
|
|---|
| 31 |
|
|---|
| 32 | =head2 Unpacking Perl distribution on OS/390
|
|---|
| 33 |
|
|---|
| 34 | If using ftp remember to transfer the distribution in binary format.
|
|---|
| 35 |
|
|---|
| 36 | Gunzip/gzip for OS/390 is discussed at:
|
|---|
| 37 |
|
|---|
| 38 | http://www-1.ibm.com/servers/eserver/zseries/zos/unix/faq/bpxqp1.html
|
|---|
| 39 |
|
|---|
| 40 | to extract an ASCII tar archive on OS/390, try this:
|
|---|
| 41 |
|
|---|
| 42 | pax -o to=IBM-1047,from=ISO8859-1 -r < latest.tar
|
|---|
| 43 |
|
|---|
| 44 | or
|
|---|
| 45 |
|
|---|
| 46 | zcat latest.tar.Z | pax -o to=IBM-1047,from=ISO8859-1 -r
|
|---|
| 47 |
|
|---|
| 48 | If you get lots of errors of the form
|
|---|
| 49 |
|
|---|
| 50 | tar: FSUM7171 ...: cannot set uid/gid: EDC5139I Operation not permitted.
|
|---|
| 51 |
|
|---|
| 52 | you didn't read the above and tried to use tar instead of pax, you'll
|
|---|
| 53 | first have to remove the (now corrupt) perl directory
|
|---|
| 54 |
|
|---|
| 55 | rm -rf perl-...
|
|---|
| 56 |
|
|---|
| 57 | and then use pax.
|
|---|
| 58 |
|
|---|
| 59 | =head2 Setup and utilities for Perl on OS/390
|
|---|
| 60 |
|
|---|
| 61 | Be sure that your yacc installation is in place including any necessary
|
|---|
| 62 | parser template files. If you have not already done so then be sure to:
|
|---|
| 63 |
|
|---|
| 64 | cp /samples/yyparse.c /etc
|
|---|
| 65 |
|
|---|
| 66 | This may also be a good time to ensure that your /etc/protocol file
|
|---|
| 67 | and either your /etc/resolv.conf or /etc/hosts files are in place.
|
|---|
| 68 | The IBM document that described such USS system setup issues was
|
|---|
| 69 | SC28-1890-07 "OS/390 UNIX System Services Planning", in particular
|
|---|
| 70 | Chapter 6 on customizing the OE shell.
|
|---|
| 71 |
|
|---|
| 72 | GNU make for OS/390, which is recommended for the build of perl (as
|
|---|
| 73 | well as building CPAN modules and extensions), is available from the
|
|---|
| 74 | L</Tools>.
|
|---|
| 75 |
|
|---|
| 76 | Some people have reported encountering "Out of memory!" errors while
|
|---|
| 77 | trying to build Perl using GNU make binaries. If you encounter such
|
|---|
| 78 | trouble then try to download the source code kit and build GNU make
|
|---|
| 79 | from source to eliminate any such trouble. You might also find GNU make
|
|---|
| 80 | (as well as Perl and Apache) in the red-piece/book "Open Source Software
|
|---|
| 81 | for OS/390 UNIX", SG24-5944-00 from IBM.
|
|---|
| 82 |
|
|---|
| 83 | If instead of the recommended GNU make you would like to use the system
|
|---|
| 84 | supplied make program then be sure to install the default rules file
|
|---|
| 85 | properly via the shell command:
|
|---|
| 86 |
|
|---|
| 87 | cp /samples/startup.mk /etc
|
|---|
| 88 |
|
|---|
| 89 | and be sure to also set the environment variable _C89_CCMODE=1 (exporting
|
|---|
| 90 | _C89_CCMODE=1 is also a good idea for users of GNU make).
|
|---|
| 91 |
|
|---|
| 92 | You might also want to have GNU groff for OS/390 installed before
|
|---|
| 93 | running the "make install" step for Perl.
|
|---|
| 94 |
|
|---|
| 95 | There is a syntax error in the /usr/include/sys/socket.h header file
|
|---|
| 96 | that IBM supplies with USS V2R7, V2R8, and possibly V2R9. The problem with
|
|---|
| 97 | the header file is that near the definition of the SO_REUSEPORT constant
|
|---|
| 98 | there is a spurious extra '/' character outside of a comment like so:
|
|---|
| 99 |
|
|---|
| 100 | #define SO_REUSEPORT 0x0200 /* allow local address & port
|
|---|
| 101 | reuse */ /
|
|---|
| 102 |
|
|---|
| 103 | You could edit that header yourself to remove that last '/', or you might
|
|---|
| 104 | note that Language Environment (LE) APAR PQ39997 describes the problem
|
|---|
| 105 | and PTF's UQ46272 and UQ46271 are the (R8 at least) fixes and apply them.
|
|---|
| 106 | If left unattended that syntax error will turn up as an inability for Perl
|
|---|
| 107 | to build its "Socket" extension.
|
|---|
| 108 |
|
|---|
| 109 | For successful testing you may need to turn on the sticky bit for your
|
|---|
| 110 | world readable /tmp directory if you have not already done so (see man chmod).
|
|---|
| 111 |
|
|---|
| 112 | =head2 Configure Perl on OS/390
|
|---|
| 113 |
|
|---|
| 114 | Once you've unpacked the distribution, run "sh Configure" (see INSTALL
|
|---|
| 115 | for a full discussion of the Configure options). There is a "hints" file
|
|---|
| 116 | for os390 that specifies the correct values for most things. Some things
|
|---|
| 117 | to watch out for include:
|
|---|
| 118 |
|
|---|
| 119 | =over 4
|
|---|
| 120 |
|
|---|
| 121 | =item *
|
|---|
| 122 |
|
|---|
| 123 | A message of the form:
|
|---|
| 124 |
|
|---|
| 125 | (I see you are using the Korn shell. Some ksh's blow up on Configure,
|
|---|
| 126 | mainly on older exotic systems. If yours does, try the Bourne shell instead.)
|
|---|
| 127 |
|
|---|
| 128 | is nothing to worry about at all.
|
|---|
| 129 |
|
|---|
| 130 | =item *
|
|---|
| 131 |
|
|---|
| 132 | Some of the parser default template files in /samples are needed in /etc.
|
|---|
| 133 | In particular be sure that you at least copy /samples/yyparse.c to /etc
|
|---|
| 134 | before running Perl's Configure. This step ensures successful extraction
|
|---|
| 135 | of EBCDIC versions of parser files such as perly.c, perly.h, and x2p/a2p.c.
|
|---|
| 136 | This has to be done before running Configure the first time. If you failed
|
|---|
| 137 | to do so then the easiest way to re-Configure Perl is to delete your
|
|---|
| 138 | misconfigured build root and re-extract the source from the tar ball.
|
|---|
| 139 | Then you must ensure that /etc/yyparse.c is properly in place before
|
|---|
| 140 | attempting to re-run Configure.
|
|---|
| 141 |
|
|---|
| 142 | =item *
|
|---|
| 143 |
|
|---|
| 144 | This port will support dynamic loading, but it is not selected by
|
|---|
| 145 | default. If you would like to experiment with dynamic loading then
|
|---|
| 146 | be sure to specify -Dusedl in the arguments to the Configure script.
|
|---|
| 147 | See the comments in hints/os390.sh for more information on dynamic loading.
|
|---|
| 148 | If you build with dynamic loading then you will need to add the
|
|---|
| 149 | $archlibexp/CORE directory to your LIBPATH environment variable in order
|
|---|
| 150 | for perl to work. See the config.sh file for the value of $archlibexp.
|
|---|
| 151 | If in trying to use Perl you see an error message similar to:
|
|---|
| 152 |
|
|---|
| 153 | CEE3501S The module libperl.dll was not found.
|
|---|
| 154 | From entry point __dllstaticinit at compile unit offset +00000194 at
|
|---|
| 155 |
|
|---|
| 156 | then your LIBPATH does not have the location of libperl.x and either
|
|---|
| 157 | libperl.dll or libperl.so in it. Add that directory to your LIBPATH and
|
|---|
| 158 | proceed.
|
|---|
| 159 |
|
|---|
| 160 | =item *
|
|---|
| 161 |
|
|---|
| 162 | Do not turn on the compiler optimization flag "-O". There is
|
|---|
| 163 | a bug in either the optimizer or perl that causes perl to
|
|---|
| 164 | not work correctly when the optimizer is on.
|
|---|
| 165 |
|
|---|
| 166 | =item *
|
|---|
| 167 |
|
|---|
| 168 | Some of the configuration files in /etc used by the
|
|---|
| 169 | networking APIs are either missing or have the wrong
|
|---|
| 170 | names. In particular, make sure that there's either
|
|---|
| 171 | an /etc/resolv.conf or an /etc/hosts, so that
|
|---|
| 172 | gethostbyname() works, and make sure that the file
|
|---|
| 173 | /etc/proto has been renamed to /etc/protocol (NOT
|
|---|
| 174 | /etc/protocols, as used by other Unix systems).
|
|---|
| 175 | You may have to look for things like HOSTNAME and DOMAINORIGIN
|
|---|
| 176 | in the "//'SYS1.TCPPARMS(TCPDATA)'" PDS member in order to
|
|---|
| 177 | properly set up your /etc networking files.
|
|---|
| 178 |
|
|---|
| 179 | =back
|
|---|
| 180 |
|
|---|
| 181 | =head2 Build, Test, Install Perl on OS/390
|
|---|
| 182 |
|
|---|
| 183 | Simply put:
|
|---|
| 184 |
|
|---|
| 185 | sh Configure
|
|---|
| 186 | make
|
|---|
| 187 | make test
|
|---|
| 188 |
|
|---|
| 189 | if everything looks ok (see the next section for test/IVP diagnosis) then:
|
|---|
| 190 |
|
|---|
| 191 | make install
|
|---|
| 192 |
|
|---|
| 193 | this last step may or may not require UID=0 privileges depending
|
|---|
| 194 | on how you answered the questions that Configure asked and whether
|
|---|
| 195 | or not you have write access to the directories you specified.
|
|---|
|
|---|