X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/1d84e8dfc14d5303f4e9e567bd263f6b4d88e584..f4ace20533c7295f26a2f677bffc32caf66b86aa:/README.mpeix diff --git a/README.mpeix b/README.mpeix index bb81fb1..f6727b1 100644 --- a/README.mpeix +++ b/README.mpeix @@ -1,102 +1,273 @@ +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. -Perl/iX for HP 3000 MPE +=head1 NAME -http://www.cccd.edu/~markb/perlix.html -Perl language for MPE -Last updated July 8, 1998 @ 2030 UTC +README.mpeix - Perl/iX for HP e3000 MPE - ------------------------------------------------------------------------ +=head1 SYNOPSIS -What's New + http://www.bixby.org/mark/perlix.html + http://jazz.external.hp.com/src/hp_freeware/perl/ + Perl language for MPE + Last updated January 12, 2006 @ 2100 UTC - * July 8, 1998 - o 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. - * November 6, 1997 - o Updated to version 5.004_04. No changes in MPE-specific - functionality. - * October 16, 1997 - o Added Demos section to the Perl/iX home page so you can see some - sample Perl applications running on my 3000. - ------------------------------------------------------------------------ +=head1 NOTE -Welcome +This is a podified version of the above-mentioned web page, +podified by Jarkko Hietaniemi 2001-Jan-01. -This is the official home page for the HP 3000 MPE port of the Perl -scripting language 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 and its -associated gatewayed newsgroup comp.sys.hp.mpe. +=head1 Binary distribution from HP -I'm doing this port because I can't live without Perl on the HPUX machines -that I administer for the Coast Community College District, and I want to -have the same power available to me on MPE. +The simplest way to obtain Perl for the MPE/iX is to go either of +these URLs and follow the instructions within. -Please send your comments, questions, and bug reports directly to me, Mark -Bixby, by e-mailing to markb@cccd.edu. Or just post them to HP3000-L. You -can also telephone me at +1 714 438-4647 Monday-Friday 0815-1745 PDT -(1615-0145 UTC). +http://jazz.external.hp.com/src/hp_freeware/perl/ +http://www.bixby.org/mark/perlix.html -The platform I'm using to do this port is an HP 3000 969KS200 running -MPE/iX 5.5 and using the gcc 2.8 compiler from -http://www.interex.org/sources/freeware.html. +Use which ever one is more recent. -The combined porting wisdom from all of my ports can be found in my MPE/iX -Porting Guide. - ------------------------------------------------------------------------ +=head1 What's New in Perl for MPE/iX -System Requirements +January 12, 2006 - * 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. - * The Perl binary requires that you must have converted your NMRL - libraries in /lib/lib*.a and /usr/lib/lib*.a to NMXL libraries - /lib/lib*.sl and /usr/lib/lib*.sl via the LIBSHP3K script that comes - with the GNUCORE portion of the FREEWARE tape. - * If you wish to recompile Perl, you must install both GNUCORE and - GNUGCC from the FREEWARE tape. - * Perl/iX will be happier if you install the MPEKX76A additional POSIX - filename characters patch, but this is optional. - * If you will be compiling Perl/iX yourself, you will also need the - /BIND/PUB/include and /BIND/PUB/lib portions of BIND/iX. +=over 4 - ------------------------------------------------------------------------ +=item * -Demos +Updated for perl-5.8.8 and perl-5.9.3 by Ken Hirsch. -Here is a brief selection of some sample Perl/iX uses: +Simplified the build process by using the MPEAUTOCONF +functionality in Mark Klein's ld. - * A web feedback CGI form that lets a web browser user enter some data - and send e-mail to the person responsible for reading the feedback - comments. The CGI is written in Perl and requires Sendmail/iX. +If you build this from scratch, make sure you have a version +of ld which supports it. In the shell, type - ------------------------------------------------------------------------ + ld --help + and look for AUTOCONF or MPEAUTOCONF near the bottom -How to Obtain Perl/iX + or do this: + ld --help 2>&1 | grep AUTOCONF - 1. Download Perl using either FTP.ARPA.SYS or some other client - 2. Extract the installation script - 3. Edit the installation script - 4. Run the installation script +If you see don't see AUTOCONF or MPEAUTOCONF, make sure you get a new +version. + +You also do not have to use mpeix/relink after building, so the +recommend sequence is: + + ./Configure -de + + # or ./Configure -de -Dusedevel + # if you're building a development version + + make + make test + # if you run this in a job, do "make test_notty" + + make install + +Be prepared for a wait. These take much longer on MPE/iX than on a Unix +system, because of a slow forking, mostly. On a lightly-loaded HP3000 +Series 979 running MPE/iX 7.5: + + Configure: 1 hour + make: 1 hour 15 minutes + make test 1 hour 45 minutes + +Various socket problems were fixed in mpeix.c. + +Mark Klein provided a fixed sigsetjmp (that works with dynamic +libraries) in mpeix_setjmp.c + +=item * + +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 * + +uselargefiles="undef": not available in MPE for POSIX files yet. + +=item * + +Now bundled with various add-on packages: + +=over 8 + +=item * + +libnet (as seen on CPAN) + +=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 to Perl/iX + +This is the official home page for the HP e3000 MPE/iX +( http://www.hp.com/go/e3000 ) 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/ ). 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 for Perl/iX + +=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.cccd.edu -anonymous -your@email.address -bytestream -cd /pub/mpe -get perl5.004_70.tar.Z /tmp/perl.tar.Z -exit + :HELLO MANAGER.SYS + :XEQ FTP.ARPA.SYS + open ftp.bixby.org + anonymous + your@email.address + 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) @@ -104,155 +275,456 @@ method) Download the following files (make sure that you use "binary mode" or whatever client feature that is 8-bit clean): - * Perl from http://www.cccd.edu/ftp/pub/mpe/perl5.004_70.tar.Z or - ftp://ftp.cccd.edu/pub/mpe/perl5.004_70.tar.Z +=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 + /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' + :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). +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 + :XEQ VI.HPBIN.SYS /tmp/INSTALL -Run the installation script +=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 - - ------------------------------------------------------------------------ - -Distribution Contents Highlights - -README - The file you're reading now. -INSTALL - Perl/iX Installation script. -PERL - Perl NMPRG executable. A version-numbered backup copy also exists. - You might wish to "ln -s /PERL/PUB/PERL /usr/local/bin/perl". -lib/ - Perl libraries, both core and add-on. -man/ - Perl man page documentation. -public_html/feedback.cgi - Sample feedback CGI form written in Perl. -src/perl5.004_70 - Source code. - - ------------------------------------------------------------------------ - -How to Compile Perl/iX - - 1. cd src/perl5.004_70 - 2. Read the INSTALL file for the official instructions - 3. ./Configure - 4. make - 5. ./mpeix/relink - 6. make test (expect 31 out of 5899 subtests to fail, mostly due to MPE - not supporting hard links and handling exit() return codes improperly) - 7. make install - 8. Optionally create symbolic links that point to the Perl executable, - i.e. ln -s /usr/local/bin/perl /PERL/PUB/PERL + :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 Perl/iX 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 26 8 30.77% 2-5, 7-9, 11 -io/pipe.t 12 2 16.67% 11-12 -lib/posix.t 18 1 5.56% 12 -op/die_exit.t 16 16 100.00% 1-16 -op/exec.t 8 2 25.00% 5-6 -op/stat.t 58 2 3.45% 3, 35 -Failed 6/183 test scripts, 96.72% okay. 31/5899 subtests failed, 99.47% okay. - - ------------------------------------------------------------------------ - -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! - -If you want to use Perl to write web server CGI scripts, obtain and install -CGI.pm. Build CGI.pm and all other add-on modules below /PERL/PUB/src/. - -Be sure to take a look at the CPAN module list. A wide variety of free Perl -software is available. - - ------------------------------------------------------------------------ - -MPE/iX Implementation Considerations - -There some minor functionality issues to be aware of when comparing Perl -for Unix (Perl/UX) to Perl/iX: - - * 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. - * 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. - * MPE (and thus Perl/iX) lacks support for setgrent(), endgrent(), - setpwent(), endpwent(). - * MPE (and thus Perl/iX) lacks support for hard links. - * 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. - * 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. - * 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(). - * 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(). - - ------------------------------------------------------------------------ - -Known Bugs Under Investigation - - * None - - ------------------------------------------------------------------------ - -To-Do List - - * Make setuid()/setgid() support work. - * Make sure that fcntl() against a socket descriptor is redirected to - sfcntl(). - * Add support for Berkeley DB once I've finished porting Berkeley DB. - * Write an MPE XS extension library containing miscellaneous important - MPE functions like GETPRIVMODE(), GETUSERMODE(), and sfcntl(). - - ------------------------------------------------------------------------ - -Change History - - * October 3, 1997 - o Added System Requirements section to the Perl/iX home page just - so the prerequisites stand out more. Various other home page - tweaks. - * October 2, 1997 - o Initial public release. - * September 1997 - o Porting begins. - - ------------------------------------------------------------------------ - -Mark Bixby, markb@cccd.edu + 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 * + +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 Perl/iX Bugs Under Investigation + +None. + +=head1 Perl/iX 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 Perl/iX 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. + +=back + +July 28, 1998 + +=over 4 + +=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, http://www.bixby.org/mark/