| 1 | If you read this file _as_is_, just ignore the funny characters you |
| 2 | see. It is written in the POD format (see pod/perlpod.pod) which is |
| 3 | specially designed to be readable as is. |
| 4 | |
| 5 | =head1 NAME |
| 6 | |
| 7 | README.vos - Perl for Stratus VOS |
| 8 | |
| 9 | =head1 SYNOPSIS |
| 10 | |
| 11 | This file contains notes for building perl on the Stratus VOS |
| 12 | operating system. Perl is a scripting or macro language that is |
| 13 | popular on many systems. See L<perlbook> for a number of good |
| 14 | books on Perl. |
| 15 | |
| 16 | These are instructions for building Perl from source. Most people can |
| 17 | simply download a pre-compiled distribution from the VOS anonymous FTP |
| 18 | site. If you are running VOS Release 14.2.0 or earlier, download Perl |
| 19 | from ftp://ftp.stratus.com/pub/vos/posix/alpha/alpha.html If you are |
| 20 | running VOS Release 14.3.0 or later, download Perl from |
| 21 | ftp://ftp.stratus.com/pub/vos/posix/ga/ga.html Instructions for |
| 22 | unbundling the Perl distribution file are at |
| 23 | ftp://ftp.stratus.com/pub/vos/utility/utility.html |
| 24 | |
| 25 | If you are running VOS Release 14.4.1 or later, you can obtain a |
| 26 | pre-compiled, supported copy of perl by purchasing Release 2.0.1 |
| 27 | (or later) of the VOS GNU C++ and GNU Tools product from Stratus |
| 28 | Technologies. |
| 29 | |
| 30 | =head2 Multiple methods to build perl for VOS |
| 31 | |
| 32 | If you elect to build perl from its source code, you have several |
| 33 | different ways that you can build perl. The method that you use |
| 34 | depends on the version of VOS that you are using and on the |
| 35 | architecture of your Stratus hardware platform. |
| 36 | |
| 37 | =over 5 |
| 38 | |
| 39 | =item 1 |
| 40 | |
| 41 | If you have a Stratus XA2000 (Motorola 68k-based) platform, you |
| 42 | must build perl using the alpha version of VOS POSIX support and |
| 43 | using the VOS Standard C Cross-compiler. You must build perl on |
| 44 | VOS Release 14.1.0 (or later) on an XA/R or Continuum platform. |
| 45 | |
| 46 | This version of perl is properly called "miniperl" because it |
| 47 | does not contain the complete perl functionality. |
| 48 | |
| 49 | You must build perl with the compile_perl.cm command macro found |
| 50 | in the vos subdirectory. |
| 51 | |
| 52 | =item 2 |
| 53 | |
| 54 | If you have a Stratus XA/R (Intel i860-based) platform, you must |
| 55 | build perl using the alpha version of VOS POSIX support and using |
| 56 | the VOS Standard C compiler or cross-compiler. You must build |
| 57 | perl on VOS Release 14.1.0 (or later) on an XA/R or Continuum |
| 58 | platform. |
| 59 | |
| 60 | This version of perl is properly called "miniperl" because it |
| 61 | does not contain the complete perl functionality. |
| 62 | |
| 63 | You must build perl with the compile_perl.cm command macro found |
| 64 | in the vos subdirectory. |
| 65 | |
| 66 | =item 3 |
| 67 | |
| 68 | If you have a Stratus Continuum (PA-RISC-based) platform that is |
| 69 | running a version of VOS earlier than VOS 14.3.0, you must build |
| 70 | perl using the alpha version of VOS POSIX support and using the |
| 71 | VOS Standard C compiler or cross-compiler. You must build perl |
| 72 | on VOS Release 14.1.0 (or later) on an XA/R or Continuum |
| 73 | platform. |
| 74 | |
| 75 | This version of perl is properly called "miniperl" because it |
| 76 | does not contain the complete perl functionality. |
| 77 | |
| 78 | You must build perl with the compile_perl.cm command macro found |
| 79 | in the vos subdirectory. |
| 80 | |
| 81 | =item 4 |
| 82 | |
| 83 | If you have a Stratus Continuum (PA-RISC-based) platform that is |
| 84 | running VOS Release 14.3.0 through VOS Release 14.4.1, you must |
| 85 | build perl using the generally-available version of VOS POSIX |
| 86 | support, and using either the VOS Standard C compiler or the VOS |
| 87 | GNU C compiler. You must build perl on VOS Release 14.3.0 (or |
| 88 | later) on a Continuum platform. |
| 89 | |
| 90 | This version of perl is properly called "miniperl" because it |
| 91 | does not contain the complete perl functionality. |
| 92 | |
| 93 | You must build perl with the compile_perl.cm command macro found |
| 94 | in the vos subdirectory. |
| 95 | |
| 96 | =item 5 |
| 97 | |
| 98 | If you have a Stratus Continuum (PA-RISC-based) platform that is |
| 99 | running VOS Release 14.5.0 or later, you can either use the |
| 100 | previous method to build "miniperl" or you can build "full |
| 101 | perl", which contains the complete functionality of perl. I |
| 102 | strongly recommend that you build full perl. To build full |
| 103 | perl, you must use the generally-available version of VOS POSIX |
| 104 | support. You must use the VOS GNU C compiler and the VOS GNU |
| 105 | C/C++ and GNU Tools Release 2.0.1 (or later) product. You must |
| 106 | build full perl on VOS Release 14.5.0 (or later) on a Continuum |
| 107 | platform. |
| 108 | |
| 109 | You must build full perl with the compile_full_perl.cm command |
| 110 | macro found in the vos subdirectory. |
| 111 | |
| 112 | =back |
| 113 | |
| 114 | =head2 Stratus POSIX Support |
| 115 | |
| 116 | Note that there are two different implementations of POSIX.1 |
| 117 | support on VOS. There is an alpha version of POSIX that is |
| 118 | available from the Stratus anonymous ftp site |
| 119 | ( ftp://ftp.stratus.com/pub/vos/posix/alpha/alpha.html ). There |
| 120 | is a generally-available version of POSIX that comes with VOS |
| 121 | Release 14.3.0 or higher. This port of POSIX will compile and |
| 122 | bind with either version of POSIX. |
| 123 | |
| 124 | Most of the Perl features should work on VOS regardless of which |
| 125 | version of POSIX that you are using. However, the alpha version |
| 126 | of POSIX is missing a number of key functions, and therefore any |
| 127 | attempt by perl.pm to call the following unimplemented POSIX |
| 128 | functions will result in an error message and an immediate and |
| 129 | fatal call to the VOS debugger. They are "dup", "fork", and |
| 130 | "waitpid". The lack of these functions prevents you from |
| 131 | starting VOS commands and grabbing their output in perl. The |
| 132 | workaround is to run the commands outside of perl, then have perl |
| 133 | process the output file. These functions are all available in |
| 134 | the generally-available version of POSIX. |
| 135 | |
| 136 | =head1 INSTALLING PERL IN VOS |
| 137 | |
| 138 | =head2 Compiling Perl 5 on VOS |
| 139 | |
| 140 | Before you can build Perl 5 on VOS, you need to have or acquire the |
| 141 | following additional items. |
| 142 | |
| 143 | =over 5 |
| 144 | |
| 145 | =item 1 |
| 146 | |
| 147 | The VOS Standard C Compiler (or the VOS Standard C |
| 148 | Cross-Compiler) and the VOS C Runtime. If you are using |
| 149 | the generally-available version of POSIX support, you may |
| 150 | instead use the VOS GNU C/C++ Compiler. These are |
| 151 | standard Stratus products. |
| 152 | |
| 153 | =item 2 |
| 154 | |
| 155 | Either the VOS OS TCP/IP or STCP product set. If you are |
| 156 | building with the alpha version of POSIX you need the OS |
| 157 | TCP/IP product set. If you are building with the |
| 158 | generally-available version of POSIX you need the STCP |
| 159 | product set. These are standard Stratus products. |
| 160 | |
| 161 | =item 3 |
| 162 | |
| 163 | Either the alpha or generally-available version of the VOS |
| 164 | POSIX.1 environment. |
| 165 | |
| 166 | The alpha version of POSIX.1 support is available on the |
| 167 | Stratus FTP site. Login anonymously to ftp.stratus.com and |
| 168 | get the file /pub/vos/posix/alpha/posix.save.evf.gz in |
| 169 | binary file-transfer mode. Or use the Uniform Resource |
| 170 | Locator (URL) |
| 171 | ftp://ftp.stratus.com/pub/vos/posix/alpha/posix.save.evf.gz from |
| 172 | your web browser. Instructions for unbundling this file |
| 173 | are at ftp://ftp.stratus.com/pub/vos/utility/utility.html |
| 174 | This is NOT a standard Stratus product. |
| 175 | |
| 176 | In VOS Release 14.3.0, the generally-available version of |
| 177 | POSIX.1 support is bundled with the VOS Standard C compiler |
| 178 | (or Standard C Cross-Compiler). In VOS Release 14.4.0 or |
| 179 | higher, it is also bundled with the VOS C Runtime. These |
| 180 | are standard Stratus products. |
| 181 | |
| 182 | =item 4 |
| 183 | |
| 184 | You must compile this version of Perl 5 on VOS Release |
| 185 | 14.1.0 or higher because some of the perl source files |
| 186 | contain more than 32,767 source lines. Due to VOS |
| 187 | release-compatibility rules, this port of perl may not |
| 188 | execute on VOS Release 12 or earlier. |
| 189 | |
| 190 | =item 5 |
| 191 | |
| 192 | If you are using the generally-available version of VOS POSIX |
| 193 | support, then you should also acquire the VOS GNU C/C++ Compiler |
| 194 | and GNU Tools product. When perl is built with this version of |
| 195 | POSIX support, it assumes that it can find "bash", "sed" and |
| 196 | other POSIX-compatible commands in the directory |
| 197 | /system/gnu_library/bin. |
| 198 | |
| 199 | =back |
| 200 | |
| 201 | To build perl using the supplied VOS command macros, change to |
| 202 | the "vos" subdirectory and type the command "compile_perl |
| 203 | -processor X", where X is the processor type (mc68020, i80860, |
| 204 | pa7100, pa8000) that you wish to use. Note that the |
| 205 | generally-available version of POSIX.1 support is not available |
| 206 | for the mc68020 or i80860 processors. |
| 207 | |
| 208 | Use the "-version alpha" control argument to build perl with |
| 209 | the alpha version of POSIX support, and use the "-version |
| 210 | ga" control argument to build it with the |
| 211 | generally-available version of POSIX. The default is "ga". |
| 212 | |
| 213 | Use the "-compiler cc" control argument to build perl with |
| 214 | the VOS Standard C compiler. Use the "-compiler gcc" |
| 215 | control argument to build it with the GNU GCC compiler. The |
| 216 | default is "cc". |
| 217 | |
| 218 | You must have purchased the VOS Standard C Cross Compiler in |
| 219 | order to compile perl for a processor type that is different |
| 220 | from the processor type of the module. |
| 221 | |
| 222 | Note that code compiled for the pa7100 processor type can |
| 223 | execute on the PA7100, PA8000, PA8500 and PA8600 processors, and |
| 224 | that code compiled for the pa8000 processor type can execute on |
| 225 | the PA8000, PA8500 and PA8600 processors. |
| 226 | |
| 227 | To build full perl using the supplied Configure script and |
| 228 | makefiles, change to the "vos" subdirectory and type the command |
| 229 | "compile_full_perl" or "start_process compile_full_perl". This |
| 230 | will configure, build, and test perl. |
| 231 | |
| 232 | =head2 Installing Perl 5 on VOS |
| 233 | |
| 234 | =over 4 |
| 235 | |
| 236 | =item 1 |
| 237 | |
| 238 | If you have built perl using the Configure script, ensure that |
| 239 | you have modify permission to C<< >system>ported >> and type |
| 240 | |
| 241 | gmake install |
| 242 | |
| 243 | =item 2 |
| 244 | |
| 245 | If you have built perl using any of the other methods, type |
| 246 | |
| 247 | install_perl -processor PROCESSOR -name NAME |
| 248 | |
| 249 | where PROCESSOR is mc68020, i80860, pa7100, or pa8000, as |
| 250 | appropriate, and NAME is perl or perl5, according to which name |
| 251 | you wish to use. |
| 252 | |
| 253 | This command macro will install perl and all of its related |
| 254 | files in the proper directories. |
| 255 | |
| 256 | =item 3 |
| 257 | |
| 258 | While there are currently no architecture-specific |
| 259 | extensions or modules distributed with perl, the following |
| 260 | directories can be used to hold such files: |
| 261 | |
| 262 | >system>ported>lib>perl5>5.8.0>68k |
| 263 | >system>ported>lib>perl5>5.8.0>860 |
| 264 | >system>ported>lib>perl5>5.8.0>7100 |
| 265 | >system>ported>lib>perl5>5.8.0>8000 |
| 266 | |
| 267 | =item 4 |
| 268 | |
| 269 | Site-specific perl extensions and modules can be installed in one of |
| 270 | two places. Put architecture-independent files into: |
| 271 | |
| 272 | >system>ported>lib>perl5>site_perl>5.8.0 |
| 273 | |
| 274 | Put site-specific architecture-dependent files into one of the |
| 275 | following directories: |
| 276 | |
| 277 | >system>ported>lib>perl5>site_perl>5.8.0>68k |
| 278 | >system>ported>lib>perl5>site_perl>5.8.0>860 |
| 279 | >system>ported>lib>perl5>site_perl>5.8.0>7100 |
| 280 | >system>ported>lib>perl5>site_perl>5.8.0>8000 |
| 281 | |
| 282 | =item 5 |
| 283 | |
| 284 | You can examine the @INC variable from within a perl program |
| 285 | to see the order in which Perl searches these directories. |
| 286 | |
| 287 | =back |
| 288 | |
| 289 | =head1 USING PERL IN VOS |
| 290 | |
| 291 | =head2 Unimplemented Features of Perl on VOS |
| 292 | |
| 293 | If perl is built with the alpha version of VOS POSIX.1 support |
| 294 | and if it attempts to call an unimplemented VOS POSIX.1 |
| 295 | function, it will print a fatal error message and enter the VOS |
| 296 | debugger. This error is not recoverable. See vos_dummies.c for |
| 297 | a list of the unimplemented POSIX.1 functions. To see what |
| 298 | functions are unimplemented and what the error message looks |
| 299 | like, compile and execute "test_vos_dummies.c". |
| 300 | |
| 301 | =head2 Restrictions of Perl on VOS |
| 302 | |
| 303 | This port of Perl version 5 to VOS prefers Unix-style, |
| 304 | slash-separated pathnames over VOS-style greater-than-separated |
| 305 | pathnames. VOS-style pathnames should work in most contexts, but |
| 306 | if you have trouble, replace all greater-than characters by slash |
| 307 | characters. Because the slash character is used as a pathname |
| 308 | delimiter, Perl cannot process VOS pathnames containing a slash |
| 309 | character in a directory or file name; these must be renamed. |
| 310 | |
| 311 | This port of Perl also uses Unix-epoch date values internally. |
| 312 | As long as you are dealing with ASCII character string |
| 313 | representations of dates, this should not be an issue. The |
| 314 | supported epoch is January 1, 1980 to January 17, 2038. |
| 315 | |
| 316 | See the file pod/perlport.pod for more information about the VOS |
| 317 | port of Perl. |
| 318 | |
| 319 | =head2 Handling of underflow and overflow |
| 320 | |
| 321 | Prior to VOS Release 14.7.0, VOS does not support automatically |
| 322 | mapping overflowed floating-point values to +infinity, nor |
| 323 | automatically mapping underflowed floating-point values to zero, |
| 324 | unlike many other platforms. The Perl pack function has been |
| 325 | modified to perform such mapping in software on VOS. Performing |
| 326 | other floating-point computations that underflow or overflow |
| 327 | will probably result in SIGFPE. Don't push your luck. |
| 328 | |
| 329 | As of VOS Release 14.7.0, the VOS POSIX runtime sets up the |
| 330 | PA-RISC hardware floating-point status register so that the |
| 331 | overflow and underflow exceptions do not trap, but instead |
| 332 | automatically convert the result to infinity or zero, as |
| 333 | appropriate. As of this writing, there are still floating-point |
| 334 | operations that can trap, for example, subtracting two infinite |
| 335 | values. This is recorded as suggestion posix-1022, which is not |
| 336 | yet fixed. |
| 337 | |
| 338 | =head1 TEST STATUS |
| 339 | |
| 340 | When Perl 5.8.3 is built using the native build process on VOS |
| 341 | Release 14.7.0 and GNU C++/GNU Tools 2.0.2a, all but three |
| 342 | attempted tests either pass or result in TODO (ignored) |
| 343 | failures. The tests that fail are: |
| 344 | |
| 345 | t/io/tell.t, test 28 |
| 346 | t/op/pack.t, test 39 |
| 347 | lib/Net/ing/t/450_service.t, test 8 |
| 348 | |
| 349 | =head1 SUPPORT STATUS |
| 350 | |
| 351 | I'm offering this port "as is". You can ask me questions, but I |
| 352 | can't guarantee I'll be able to answer them. There are some |
| 353 | excellent books available on the Perl language; consult a book |
| 354 | seller. |
| 355 | |
| 356 | If you want a supported version of perl for VOS, purchase the |
| 357 | VOS GNU C++ and GNU Tools Release 2.0.1 (or later) product from |
| 358 | Stratus Technologies, along with a support contract (or from |
| 359 | anyone else who will sell you support). |
| 360 | |
| 361 | =head1 AUTHOR |
| 362 | |
| 363 | Paul Green (Paul.Green@stratus.com) |
| 364 | |
| 365 | =head1 LAST UPDATE |
| 366 | |
| 367 | January 15, 2004 |
| 368 | |
| 369 | =cut |