You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
675 lines
15 KiB
675 lines
15 KiB
If you read this file _as_is_, just ignore the funny characters you
|
|
see. It is written in the POD format (see perlpod manpage) which is
|
|
specially designed to be readable as is.
|
|
|
|
=head1 NAME
|
|
|
|
README.mpeix - Perl/iX for HP e3000 MPE
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
http://www.bixby.org/mark/perlix.html
|
|
Perl language for MPE
|
|
Last updated June 2, 2000 @ 0400 UTC
|
|
|
|
=head1 NOTE
|
|
|
|
This is a podified version of the above-mentioned web page,
|
|
podified by Jarkko Hietaniemi 2001-Jan-01.
|
|
|
|
=head1 What's New
|
|
|
|
June 1, 2000
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Rebuilt to be compatible with mod_perl. If you plan on using
|
|
mod_perl, you MUST download and install this version of Perl/iX!
|
|
|
|
=item *
|
|
|
|
bincompat5005="undef": sorry, but you will have to recompile any
|
|
binary 5.005 extensions that you may be using (if any; there is no
|
|
5.005 code in what you download from bixby.org)
|
|
uselargefiles="undef": not available in MPE for POSIX files yet.
|
|
|
|
=item *
|
|
|
|
Now bundled with various add-on packages:
|
|
|
|
=over 8
|
|
|
|
=item *
|
|
|
|
libnet (http://www.gbarr.demon.co.uk/libnet/FAQ.html)
|
|
|
|
=item *
|
|
|
|
libwww-perl (LWP) which lets Perl programs behave like web browsers:
|
|
|
|
1. #!/PERL/PUB/perl
|
|
2. use LWP::Simple;
|
|
3. $doc = get('http://www.bixby.org/mark/perlix.html'); # reads the
|
|
web page into variable $doc
|
|
|
|
(http://www.bixby.org/mark/perlix.html)
|
|
|
|
=item *
|
|
|
|
mod_perl (just the perl portion; the actual DSO will be released
|
|
soon with Apache/iX 1.3.12 from bixby.org). This module allows you to
|
|
write high performance persistent Perl CGI scripts and all sorts of
|
|
cool things. (http://perl.apache.org/)
|
|
|
|
and much much more hiding under /PERL/PUB/.cpan/
|
|
|
|
=item *
|
|
|
|
The CPAN module now works for automatic downloading and
|
|
installing of add-on packages:
|
|
|
|
1. export FTP_PASSIVE=1
|
|
2. perl -MCPAN -e shell
|
|
3. Ignore any terminal I/O related complaints!
|
|
|
|
(http://theoryx5.uwinnipeg.ca/CPAN/data/perl/CPAN.html)
|
|
|
|
=back
|
|
|
|
=back
|
|
|
|
May 20, 2000
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Updated to version 5.6.0. Builds straight out of the box on MPE/iX.
|
|
|
|
=item *
|
|
|
|
Perl's getpwnam() function which had regressed to being
|
|
unimplemented on MPE is now implemented once again.
|
|
|
|
=back
|
|
|
|
September 17, 1999
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Migrated from cccd.edu to bixby.org.
|
|
|
|
=back
|
|
|
|
=head1 Welcome
|
|
|
|
This is the official home page for the HP e3000 MPE/iX
|
|
(http://www.businessservers.hp.com/) port of the Perl scripting
|
|
language (http://www.perl.com/) which gives you all of the power of C,
|
|
awk, sed, and sh in a single language. Check here for the latest news,
|
|
implemented functionality, known bugs, to-do list, etc. Status reports
|
|
about major milestones will also be posted to the HP3000-L mailing list
|
|
(http://www.lsoft.com/scripts/wl.exe?SL1=HP3000-L&H=RAVEN.UTC.EDU) and
|
|
its associated gatewayed newsgroup comp.sys.hp.mpe.
|
|
|
|
I'm doing this port because I can't live without Perl on the Unix
|
|
machines that I administer, and I want to have the same power
|
|
available to me on MPE.
|
|
|
|
Please send your comments, questions, and bug reports directly to me,
|
|
Mark Bixby (http://www.bixby.org/mark/), by e-mailing to
|
|
[email protected]. Or just post them to HP3000-L.
|
|
|
|
The platform I'm using to do this port is an HP 3000 957RX running
|
|
MPE/iX 6.0 and using the GNU gcc C compiler
|
|
(http://jazz.external.hp.com/src/gnu/gnuframe.html).
|
|
|
|
The combined porting wisdom from all of my ports can be found in my
|
|
MPE/iX Porting Guide (http://www.bixby.org/mark/porting.html).
|
|
|
|
IMPORTANT NOTICE: Yes, I do work for the HP CSY R&D lab, but ALL of
|
|
the software you download from bixby.org is my personal freeware that
|
|
is NOT supported by HP.
|
|
|
|
=head1 System Requirements
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
MPE/iX 5.5 or later. This version of Perl/iX does NOT run on
|
|
MPE/iX 5.0 or earlier, nor does it run on "classic" MPE/V machines.
|
|
|
|
=item *
|
|
|
|
If you wish to recompile Perl, you must install both GNUCORE and
|
|
GNUGCC from jazz (http://jazz.external.hp.com/src/gnu/gnuframe.html).
|
|
|
|
=item *
|
|
|
|
Perl/iX will be happier on MPE/iX 5.5 if you install the MPEKX40B
|
|
extended POSIX filename characters patch, but this is optional.
|
|
|
|
=item *
|
|
|
|
Patch LBCJXT6A is required on MPE/iX 5.5 machines in order to
|
|
prevent Perl/iX from dying with an unresolved external reference
|
|
to _getenv_libc.
|
|
|
|
=item *
|
|
|
|
If you will be compiling Perl/iX yourself, you will also need
|
|
Syslog/iX (http://www.bixby.org/mark/syslogix.html) and the
|
|
/BIND/PUB/include and /BIND/PUB/lib portions of BIND/iX
|
|
(http://www.bixby.org/mark/bindix.html).
|
|
|
|
=back
|
|
|
|
=head1 How to Obtain Perl/iX
|
|
|
|
=over 4
|
|
|
|
=item 1.
|
|
|
|
Download Perl using either FTP.ARPA.SYS or some other client
|
|
|
|
=item 2.
|
|
|
|
Extract the installation script
|
|
|
|
=item 3.
|
|
|
|
Edit the installation script
|
|
|
|
=item 4.
|
|
|
|
Run the installation script
|
|
|
|
=item 5.
|
|
|
|
Convert your *.a system archive libraries to *.sl shared libraries
|
|
|
|
=back
|
|
|
|
Download Perl using FTP.ARPA.SYS from your HP 3000 (the preferred
|
|
method).....
|
|
|
|
:HELLO MANAGER.SYS
|
|
:XEQ FTP.ARPA.SYS
|
|
open ftp.bixby.org
|
|
anonymous
|
|
[email protected]
|
|
bytestream
|
|
cd /pub/mpe
|
|
get perl-5.6.0-mpe.tar.Z /tmp/perl.tar.Z;disc=2147483647
|
|
exit
|
|
|
|
.....Or download using some other generic web or ftp client (the alternate
|
|
method)
|
|
|
|
Download the following files (make sure that you use "binary mode" or
|
|
whatever client feature that is 8-bit clean):
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Perl from
|
|
|
|
http://www.bixby.org/ftp/pub/mpe/perl-5.6.0-mpe.tar.Z
|
|
|
|
or
|
|
|
|
ftp://ftp.bixby.org/pub/mpe/perl-5.6.0-mpe.tar.Z
|
|
|
|
=item *
|
|
|
|
Upload those files to your HP 3000 in an 8-bit clean bytestream manner to:
|
|
|
|
/tmp/perl.tar.Z
|
|
|
|
=item *
|
|
|
|
Then extract the installation script (after both download methods)
|
|
|
|
:CHDIR /tmp
|
|
:XEQ TAR.HPBIN.SYS 'xvfopz /tmp/perl.tar.Z INSTALL'
|
|
|
|
=item *
|
|
|
|
Edit the installation script
|
|
|
|
Examine the accounting structure creation commands and modify if
|
|
necessary (adding additional capabilities, choosing a non-system
|
|
volume set, etc).
|
|
|
|
:XEQ VI.HPBIN.SYS /tmp/INSTALL
|
|
|
|
=item *
|
|
|
|
Run the installation script.
|
|
|
|
The accounting structure will be created and then all files will be
|
|
extracted from the archive.
|
|
|
|
:XEQ SH.HPBIN.SYS /tmp/INSTALL
|
|
|
|
=item *
|
|
|
|
Convert your *.a system archive libraries to *.sl shared libraries
|
|
|
|
You only have to do this ONCE on your MPE/iX 5.5 machine in order to
|
|
convert /lib/lib*.a and /usr/lib/lib*.a libraries to their *.sl
|
|
equivalents. This step should not be necessary on MPE/iX 6.0 or later
|
|
machines because the 6.0 or later update process does it for you.
|
|
|
|
:XEQ SH.HPBIN.SYS /PERL/PUB/LIBSHP3K
|
|
|
|
=back
|
|
|
|
=head1 Distribution Contents Highlights
|
|
|
|
=over 4
|
|
|
|
=item README
|
|
|
|
The file you're reading now.
|
|
|
|
=item INSTALL
|
|
|
|
Perl/iX Installation script.
|
|
|
|
=item LIBSHP3K
|
|
|
|
Script to convert *.a system archive libraries to *.sl shared libraries.
|
|
|
|
=item PERL
|
|
|
|
Perl NMPRG executable. A version-numbered backup copy also
|
|
exists. You might wish to "ln -s /PERL/PUB/PERL /usr/local/bin/perl".
|
|
|
|
=item .cpan/
|
|
|
|
Much add-on source code downloaded with the CPAN module.
|
|
|
|
=item lib/
|
|
|
|
Perl libraries, both core and add-on.
|
|
|
|
=item man/
|
|
|
|
Perl man page documentation.
|
|
|
|
=item public_html/feedback.cgi
|
|
|
|
Sample feedback CGI form written in Perl.
|
|
|
|
=item src/perl-5.6.0-mpe
|
|
|
|
Source code.
|
|
|
|
=back
|
|
|
|
=head1 How to Compile Perl/iX
|
|
|
|
=over 4
|
|
|
|
=item 1.
|
|
|
|
cd src/perl-5.6.0-mpe
|
|
|
|
=item 2.
|
|
|
|
Read the INSTALL file for the official instructions
|
|
|
|
=item 3.
|
|
|
|
./Configure -d
|
|
|
|
=item 4.
|
|
|
|
make
|
|
|
|
=item 5.
|
|
|
|
./mpeix/relink
|
|
|
|
=item 6.
|
|
|
|
make test (expect approximately 15 out of 11306 subtests to fail,
|
|
mostly due to MPE not supporting hard links, UDP socket problems,
|
|
and handling exit() return codes improperly)
|
|
|
|
=item 7.
|
|
|
|
make install
|
|
|
|
=item 8.
|
|
|
|
Optionally create symbolic links that point to the Perl
|
|
executable, i.e. ln -s /PERL/PUB/PERL /usr/local/bin/perl
|
|
|
|
=back
|
|
|
|
The summary test results from "cd t; ./perl -I../lib harness":
|
|
|
|
Failed Test Status Wstat Total Fail Failed List of failed
|
|
---------------------------------------------------------------------------
|
|
io/fs.t 29 8 27.59% 2-5, 7-9, 11
|
|
io/openpid.t 10 1 10.00% 7
|
|
lib/io_sock.t 14 1 7.14% 13
|
|
lib/io_udp.t 7 2 28.57% 3, 5
|
|
lib/posix.t 27 1 3.70% 12
|
|
op/lex_assign.t 187 1 0.53% 13
|
|
op/stat.t 58 1 1.72% 3
|
|
15 tests and 94 subtests skipped.
|
|
Failed 7/236 test scripts, 97.03% okay. 15/11306 subtests failed, 99.87% okay.
|
|
|
|
=head1 Getting Started with Perl/iX
|
|
|
|
Create your Perl script files with "#!/PERL/PUB/perl" (or an
|
|
equivalent symbolic link) as the first line. Use the chmod command to
|
|
make sure that your script has execute permission. Run your script!
|
|
|
|
Be sure to take a look at the CPAN module list
|
|
(http://www.cpan.org/CPAN.html). A wide variety of free Perl software
|
|
is available. You can automatically download these packages by using
|
|
the CPAN module (http://theoryx5.uwinnipeg.ca/CPAN/data/perl/CPAN.html).
|
|
|
|
=head1 MPE/iX Implementation Considerations
|
|
|
|
There some minor functionality issues to be aware of when comparing
|
|
Perl for Unix (Perl/UX) to Perl/iX:
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
MPE gcc/ld doesn't properly support linking NMPRG executables against
|
|
NMXL dynamic libraries, so you must manually run mpeix/relink after
|
|
each re-build of Perl.
|
|
|
|
=item *
|
|
|
|
Perl/iX File::Copy will use MPE's /bin/cp command to copy files by
|
|
name in order to preserve file attributes like file code.
|
|
|
|
=item *
|
|
|
|
MPE (and thus Perl/iX) lacks support for setgrent(), endgrent(),
|
|
setpwent(), endpwent().
|
|
|
|
=item *
|
|
|
|
MPE (and thus Perl/iX) lacks support for hard links.
|
|
|
|
=item *
|
|
|
|
MPE requires GETPRIVMODE() in order to bind() to ports less than 1024.
|
|
Perl/iX will call GETPRIVMODE() automatically on your behalf if you
|
|
attempt to bind() to these low-numbered ports. Note that the Perl/iX
|
|
executable and the PERL account do not normally have CAP=PM, so if you
|
|
will be bind()-ing to these privileged ports, you will manually need
|
|
to add PM capability as appropriate.
|
|
|
|
=item *
|
|
|
|
MPE requires that you bind() to an IP address of zero. Perl/iX
|
|
automatically replaces the IP address that you pass to bind() with
|
|
a zero.
|
|
|
|
=item *
|
|
|
|
If you use Perl/iX fcntl() against a socket it will fail, because MPE
|
|
requires that you use sfcntl() instead. Perl/iX does not presently
|
|
support sfcntl().
|
|
|
|
=item *
|
|
|
|
MPE requires GETPRIVMODE() in order to setuid(). There are too many
|
|
calls to setuid() within Perl/iX, so I have not attempted an automatic
|
|
GETPRIVMODE() solution similar to bind().
|
|
|
|
=back
|
|
|
|
=head1 Known Bugs Under Investigation
|
|
|
|
None.
|
|
|
|
=head1 To-Do List
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Make setuid()/setgid() support work.
|
|
|
|
=item *
|
|
|
|
Make sure that fcntl() against a socket descriptor is redirected to sfcntl().
|
|
|
|
=item *
|
|
|
|
Add support for Berkeley DB once I've finished porting Berkeley DB.
|
|
|
|
=item *
|
|
|
|
Write an MPE XS extension library containing miscellaneous important
|
|
MPE functions like GETPRIVMODE(), GETUSERMODE(), and sfcntl().
|
|
|
|
=back
|
|
|
|
=head1 Change History
|
|
|
|
May 6, 1999
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Patch LBCJXT6A is required on MPE/iX 5.5 machines in order to prevent
|
|
Perl/iX from dying with an unresolved external reference to _getenv_libc.
|
|
|
|
=back
|
|
|
|
April 7, 1999
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Updated to version 5.005_03.
|
|
|
|
=item *
|
|
|
|
The official source distribution once again compiles "straight out
|
|
of the box" for MPE.
|
|
|
|
=item *
|
|
|
|
The current incarnation of the 5.5 POSIX filename extended
|
|
characters patch is now MPEKX40B.
|
|
|
|
=item *
|
|
|
|
The LIBSHP3K *.a -> *.sl library conversion script is now included
|
|
as /PERL/PUB/LIBSHP3K.
|
|
|
|
=back
|
|
|
|
November 20, 1998
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Updated to version 5.005_02.
|
|
|
|
=item *
|
|
|
|
Fixed a DynaLoader bug that was unable to load symbols from relative
|
|
path name libraries.
|
|
|
|
=item *
|
|
|
|
Fixed a .xs compilation bug where the mpeixish.sh include file wasn't
|
|
being installed into the proper directory.
|
|
|
|
=item *
|
|
|
|
All bugfixes will be submitted back to the official Perl developers.
|
|
|
|
=item *
|
|
|
|
The current incarnation of the POSIX filename extended characters
|
|
patch is now MPEKXJ3A.
|
|
|
|
=back
|
|
|
|
August 14, 1998
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
The previous POSIX filename extended characters patch MPEKX44C has
|
|
been superseded by MPEKXB5A.
|
|
|
|
=back
|
|
|
|
August 7, 1998
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
The previous POSIX filename extended characters patch MPEKX76A has
|
|
been superseded by MPEKX44C.
|
|
|
|
=over 4
|
|
|
|
=back
|
|
|
|
July 28, 1998
|
|
|
|
=item *
|
|
|
|
Updated to version 5.005_01.
|
|
|
|
=back
|
|
|
|
July 23, 1998
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Updated to version 5.005 (production release). The public
|
|
freeware sources are now 100% MPE-ready "straight out of the box".
|
|
|
|
=back
|
|
|
|
July 17, 1998
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Updated to version 5.005b1 (public beta release). The public
|
|
freeware sources are now 99.9% MPE-ready. By installing and
|
|
testing this beta on your own HP3000, you will be helping to
|
|
insure that the final release of 5.005 will be 100% MPE-ready and
|
|
100% bug free.
|
|
|
|
=item *
|
|
|
|
My MPE binary release is now extracted using my standard INSTALL script.
|
|
|
|
=back
|
|
|
|
July 15, 1998
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Changed startperl to #!/PERL/PUB/perl so that Perl will recognize
|
|
scripts more easily and efficiently.
|
|
|
|
=back
|
|
|
|
July 8, 1998
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Updated to version 5.004_70 (internal developer release) which is now
|
|
MPE-ready. The next public freeware release of Perl should compile
|
|
"straight out of the box" on MPE. Note that this version of Perl/iX
|
|
was strictly internal to me and never publicly released. Note that
|
|
[21]BIND/iX is now required (well, the include files and libbind.a) if
|
|
you wish to compile Perl/iX.
|
|
|
|
=back
|
|
|
|
November 6, 1997
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Updated to version 5.004_04. No changes in MPE-specific functionality.
|
|
|
|
=back
|
|
|
|
October 16, 1997
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Added Demos section to the Perl/iX home page so you can see some
|
|
sample Perl applications running on my 3000.
|
|
|
|
=back
|
|
|
|
October 3, 1997
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Added System Requirements section to the Perl/iX home page just so the
|
|
prerequisites stand out more. Various other home page tweaks.
|
|
|
|
=back
|
|
|
|
October 2, 1997
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Initial public release.
|
|
|
|
=back
|
|
|
|
September 1997
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Porting begins.
|
|
|
|
=back
|
|
|
|
=head1 Author
|
|
|
|
Mark Bixby, [email protected]
|
|
|