| 1 | This is a first ported perl for the POSIX subsystem in BS2000 VERSION |
| 2 | 'V121', OSD V3.1, POSIX Shell V03.1A55. It may work on other |
| 3 | versions, but that's the one we've tested it on. |
| 4 | |
| 5 | You may need the following GNU programs in order to install perl: |
| 6 | |
| 7 | gzip: |
| 8 | |
| 9 | We used version 1.2.4, which could be installed out of the box with |
| 10 | one failure during 'make check'. |
| 11 | |
| 12 | bison: |
| 13 | |
| 14 | The yacc coming with BS2000 POSIX didn't work for us. So we had to |
| 15 | use bison. We had to make a few changes to perl in order to use the |
| 16 | pure (reentrant) parser of bison. We used version 1.25, but we had to |
| 17 | add a few changes due to EBCDIC. |
| 18 | |
| 19 | |
| 20 | UNPACKING: |
| 21 | ========== |
| 22 | |
| 23 | To extract an ASCII tar archive on BS2000 POSIX you need an ASCII |
| 24 | filesystem (we used the mountpoint /usr/local/ascii for this). Now |
| 25 | you extract the archive in the ASCII filesystem without I/O-conversion: |
| 26 | |
| 27 | cd /usr/local/ascii |
| 28 | export IO_CONVERSION=NO |
| 29 | gunzip < /usr/local/src/perl.tar.gz | pax -r |
| 30 | |
| 31 | You may ignore the error message for the first element of the archive |
| 32 | (this doesn't look like a tar archive / skipping to next file...), |
| 33 | it's only the directory which will be made anyway. |
| 34 | |
| 35 | After extracting the archive you copy the whole directory tree to your |
| 36 | EBCDIC filesystem. This time you use I/O-conversion: |
| 37 | |
| 38 | cd /usr/local/src |
| 39 | IO_CONVERSION=YES |
| 40 | cp -r /usr/local/ascii/perl5.005_02 ./ |
| 41 | |
| 42 | |
| 43 | COMPILING: |
| 44 | ========== |
| 45 | |
| 46 | There is a "hints" file for posix-bc that specifies the correct values |
| 47 | for most things. The major problem is (of course) the EBCDIC character |
| 48 | set. |
| 49 | |
| 50 | Configure did everything except the perl parser. |
| 51 | |
| 52 | Because of our problems with the native yacc we used GNU bison to |
| 53 | generate a pure (=reentrant) parser for perly.y. So our yacc is |
| 54 | really the following script: |
| 55 | |
| 56 | -----8<-----/usr/local/bin/yacc-----8<----- |
| 57 | #! /usr/bin/sh |
| 58 | |
| 59 | # Bison as a reentrant yacc: |
| 60 | |
| 61 | # save parameters: |
| 62 | params="" |
| 63 | while [[ $# -gt 1 ]]; do |
| 64 | params="$params $1" |
| 65 | shift |
| 66 | done |
| 67 | |
| 68 | # add flag %pure_parser: |
| 69 | |
| 70 | tmpfile=/tmp/bison.$$.y |
| 71 | echo %pure_parser > $tmpfile |
| 72 | cat $1 >> $tmpfile |
| 73 | |
| 74 | # call bison: |
| 75 | |
| 76 | echo "/usr/local/bin/bison --yacc $params $1\t\t\t(Pure Parser)" |
| 77 | /usr/local/bin/bison --yacc $params $tmpfile |
| 78 | |
| 79 | # cleanup: |
| 80 | |
| 81 | rm -f $tmpfile |
| 82 | -----8<----------8<----- |
| 83 | |
| 84 | We still use the normal yacc for a2p.y though!!! We made a softlink |
| 85 | called byacc to distinguish between the two versions: |
| 86 | |
| 87 | ln -s /usr/bin/yacc /usr/local/bin/byacc |
| 88 | |
| 89 | We build perl using both GNU make and the native make. |
| 90 | |
| 91 | |
| 92 | TESTING: |
| 93 | ======== |
| 94 | |
| 95 | We still got a few errors during 'make test'. Some of them are the |
| 96 | result of using bison. Bison prints 'parser error' instead of 'syntax |
| 97 | error', so we may ignore them. The following list shows |
| 98 | our errors, your results may differ: |
| 99 | |
| 100 | op/numconvert.......FAILED tests 1409-1440 |
| 101 | op/regexp...........FAILED tests 483, 496 |
| 102 | op/regexp_noamp.....FAILED tests 483, 496 |
| 103 | pragma/overload.....FAILED tests 152-153, 170-171 |
| 104 | pragma/warnings.....FAILED tests 14, 82, 129, 155, 192, 205, 207 |
| 105 | lib/bigfloat........FAILED tests 351-352, 355 |
| 106 | lib/bigfltpm........FAILED tests 354-355, 358 |
| 107 | lib/complex.........FAILED tests 267, 487 |
| 108 | lib/dumper..........FAILED tests 43, 45 |
| 109 | Failed 11/231 test scripts, 95.24% okay. 57/10595 subtests failed, 99.46% okay. |
| 110 | |
| 111 | INSTALLING: |
| 112 | =========== |
| 113 | |
| 114 | We have no nroff on BS2000 POSIX (yet), so we ignored any errors while |
| 115 | installing the documentation. |
| 116 | |
| 117 | |
| 118 | USING PERL: |
| 119 | =========== |
| 120 | |
| 121 | BS2000 POSIX doesn't support the shebang notation |
| 122 | ('#!/usr/local/bin/perl'), so you have to use the following lines |
| 123 | instead: |
| 124 | |
| 125 | : # use perl |
| 126 | eval 'exec /usr/local/bin/perl -S $0 ${1+"$@"}' |
| 127 | if $running_under_some_shell; |