mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-12-05 05:49:27 +00:00
132 lines
3.6 KiB
Plaintext
132 lines
3.6 KiB
Plaintext
This is a first ported perl for the POSIX subsystem in BS2000 VERSION
|
|
'V121', OSD V3.1, POSIX Shell V03.1A55. It may work on other
|
|
versions, but that's the one we've tested it on.
|
|
|
|
You may need the following GNU programs in order to install perl:
|
|
|
|
gzip:
|
|
|
|
We used version 1.2.4, which could be installed out of the box with
|
|
one failure during 'make check'.
|
|
|
|
bison:
|
|
|
|
The yacc coming with BS2000 POSIX didn't work for us. So we had to
|
|
use bison. We had to make a few changes to perl in order to use the
|
|
pure (reentrant) parser of bison. We used version 1.25, but we had to
|
|
add a few changes due to EBCDIC.
|
|
|
|
|
|
UNPACKING:
|
|
==========
|
|
|
|
To extract an ASCII tar archive on BS2000 POSIX you need an ASCII
|
|
filesystem (we used the mountpoint /usr/local/ascii for this). Now
|
|
you extract the archive in the ASCII filesystem without I/O-conversion:
|
|
|
|
cd /usr/local/ascii
|
|
export IO_CONVERSION=NO
|
|
gunzip < /usr/local/src/perl.tar.gz | pax -r
|
|
|
|
You may ignore the error message for the first element of the archive
|
|
(this doesn't look like a tar archive / skipping to next file...),
|
|
it's only the directory which will be made anyway.
|
|
|
|
After extracting the archive you copy the whole directory tree to your
|
|
EBCDIC filesystem. This time you use I/O-conversion:
|
|
|
|
cd /usr/local/src
|
|
IO_CONVERSION=YES
|
|
cp -r /usr/local/ascii/perl5.005_02 ./
|
|
|
|
|
|
COMPILING:
|
|
==========
|
|
|
|
There is a "hints" file for posix-bc that specifies the correct values
|
|
for most things. The major problem is (of course) the EBCDIC character
|
|
set.
|
|
|
|
Configure did everything except the perl parser.
|
|
|
|
Because of our problems with the native yacc we used GNU bison to
|
|
generate a pure (=reentrant) parser for perly.y. So our yacc is
|
|
really the following script:
|
|
|
|
-----8<-----/usr/local/bin/yacc-----8<-----
|
|
#! /usr/bin/sh
|
|
|
|
# Bison as a reentrant yacc:
|
|
|
|
# save parameters:
|
|
params=""
|
|
while [[ $# -gt 1 ]]; do
|
|
params="$params $1"
|
|
shift
|
|
done
|
|
|
|
# add flag %pure_parser:
|
|
|
|
tmpfile=/tmp/bison.$$.y
|
|
echo %pure_parser > $tmpfile
|
|
cat $1 >> $tmpfile
|
|
|
|
# call bison:
|
|
|
|
echo "/usr/local/bin/bison --yacc $params $1\t\t\t(Pure Parser)"
|
|
/usr/local/bin/bison --yacc $params $tmpfile
|
|
|
|
# cleanup:
|
|
|
|
rm -f $tmpfile
|
|
-----8<----------8<-----
|
|
|
|
We still use the normal yacc for a2p.y though!!! We made a softlink
|
|
called byacc to distinguish between the two versions:
|
|
|
|
ln -s /usr/bin/yacc /usr/local/bin/byacc
|
|
|
|
We build perl using both GNU make and the native make.
|
|
|
|
|
|
TESTING:
|
|
========
|
|
|
|
We still got a few errors during 'make test'. Most of them are the
|
|
result of using bison. Bison prints 'parser error' instead of 'syntax
|
|
error', so we may ignore them. One error in the test op/regexp (and
|
|
op/regexp_noamp) seems a bit critical, the result was an 'Out of
|
|
memory' (core dump with op/regexp_noamp). The following list shows
|
|
our errors, your results may differ:
|
|
|
|
op/misc.............FAILED tests 45-46
|
|
op/pack.............FAILED tests 58-60
|
|
op/regexp...........FAILED tests 405-492 (core dump)
|
|
op/regexp_noamp.....FAILED tests 405-492 (core dump)
|
|
pragma/overload.....FAILED tests 152-153, 170-171
|
|
pragma/subs.........FAILED tests 1-2
|
|
pragma/warning......FAILED tests 121, 127, 130, 142
|
|
lib/cgi-html........dubious, FAILED tests 1-17 (ALL)
|
|
lib/complex.........FAILED tests 264, 484
|
|
lib/dumper..........FAILED tests MANY
|
|
Failed 7/190 test scripts, 96.32% okay. 234/6549 subtests failed, 96.43% okay.
|
|
|
|
|
|
INSTALLING:
|
|
===========
|
|
|
|
We have no nroff on BS2000 POSIX (yet), so we ignored any errors while
|
|
installing the documentation.
|
|
|
|
|
|
USING PERL:
|
|
===========
|
|
|
|
BS2000 POSIX doesn't support the shebang notation
|
|
('#!/usr/local/bin/perl'), so you have to use the following lines
|
|
instead:
|
|
|
|
: # use perl
|
|
eval 'exec /usr/local/bin/perl -S $0 ${1+"$@"}'
|
|
if $running_under_some_shell;
|