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'. 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 | |
---|
102 | op/misc.............FAILED tests 45-46 |
---|
103 | op/pack.............FAILED tests 58-60 |
---|
104 | op/regexp...........FAILED tests 405-492 (core dump) |
---|
105 | op/regexp_noamp.....FAILED tests 405-492 (core dump) |
---|
106 | pragma/overload.....FAILED tests 152-153, 170-171 |
---|
107 | pragma/subs.........FAILED tests 1-2 |
---|
108 | pragma/warning......FAILED tests 121, 127, 130, 142 |
---|
109 | lib/cgi-html........dubious, FAILED tests 1-17 (ALL) |
---|
110 | lib/complex.........FAILED tests 264, 484 |
---|
111 | lib/dumper..........FAILED tests MANY |
---|
112 | Failed 7/190 test scripts, 96.32% okay. 234/6549 subtests failed, 96.43% okay. |
---|
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; |
---|