Commit | Line | Data |
---|---|---|
a1a0e61e TD |
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 | |
93fb2ac3 JH |
53 | generate a pure (=reentrant) parser for perly.y. So our yacc is |
54 | really the following script: | |
a1a0e61e | 55 | |
93fb2ac3 JH |
56 | -----8<-----/usr/local/bin/yacc-----8<----- |
57 | #! /usr/bin/sh | |
a1a0e61e | 58 | |
93fb2ac3 JH |
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 | |
d5047e56 | 88 | |
93fb2ac3 | 89 | We build perl using both GNU make and the native make. |
a1a0e61e TD |
90 | |
91 | ||
92 | TESTING: | |
93 | ======== | |
94 | ||
95 | We still got a few errors during 'make test'. Most of them are the | |
96 | result of using bison. Bison prints 'parser error' instead of 'syntax | |
97 | error', so we may ignore them. One error in the test op/regexp (and | |
98 | op/regexp_noamp) seems a bit critical, the result was an 'Out of | |
99 | memory' (core dump with op/regexp_noamp). The following list shows | |
100 | our errors, your results may differ: | |
101 | ||
a1a0e61e TD |
102 | op/misc.............FAILED tests 45-46 |
103 | op/pack.............FAILED tests 58-60 | |
93fb2ac3 JH |
104 | op/regexp...........FAILED tests 405-492 (core dump) |
105 | op/regexp_noamp.....FAILED tests 405-492 (core dump) | |
a1a0e61e TD |
106 | pragma/overload.....FAILED tests 152-153, 170-171 |
107 | pragma/subs.........FAILED tests 1-2 | |
93fb2ac3 | 108 | pragma/warning......FAILED tests 121, 127, 130, 142 |
a1a0e61e TD |
109 | lib/cgi-html........dubious, FAILED tests 1-17 (ALL) |
110 | lib/complex.........FAILED tests 264, 484 | |
111 | lib/dumper..........FAILED tests MANY | |
93fb2ac3 | 112 | Failed 7/190 test scripts, 96.32% okay. 234/6549 subtests failed, 96.43% okay. |
a1a0e61e TD |
113 | |
114 | ||
115 | INSTALLING: | |
116 | =========== | |
117 | ||
118 | We have no nroff on BS2000 POSIX (yet), so we ignored any errors while | |
119 | installing the documentation. | |
120 | ||
121 | ||
122 | USING PERL: | |
123 | =========== | |
124 | ||
125 | BS2000 POSIX doesn't support the shebang notation | |
126 | ('#!/usr/local/bin/perl'), so you have to use the following lines | |
127 | instead: | |
128 | ||
129 | : # use perl | |
130 | eval 'exec /usr/local/bin/perl -S $0 ${1+"$@"}' | |
131 | if $running_under_some_shell; |