2 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml">
5 <title>README.mpeix - Perl/iX for HP e3000 MPE
</title>
6 <meta http-equiv=
"content-type" content=
"text/html; charset=utf-8" />
7 <link rev=
"made" href=
"mailto:" />
10 <body style=
"background-color: white">
11 <table border=
"0" width=
"100%" cellspacing=
"0" cellpadding=
"3">
12 <tr><td class=
"block" style=
"background-color: #cccccc" valign=
"middle">
13 <big><strong><span class=
"block"> README.mpeix - Perl/iX for HP e3000 MPE
</span></strong></big>
17 <p><a name=
"__index__"></a></p>
22 <li><a href=
"#name">NAME
</a></li>
23 <li><a href=
"#synopsis">SYNOPSIS
</a></li>
24 <li><a href=
"#note">NOTE
</a></li>
25 <li><a href=
"#binary_distribution_from_hp">Binary distribution from HP
</a></li>
26 <li><a href=
"#what_s_new_in_perl_for_mpe_ix">What's New in Perl for MPE/iX
</a></li>
27 <li><a href=
"#welcome_to_perl_ix">Welcome to Perl/iX
</a></li>
28 <li><a href=
"#system_requirements_for_perl_ix">System Requirements for Perl/iX
</a></li>
29 <li><a href=
"#how_to_obtain_perl_ix">How to Obtain Perl/iX
</a></li>
30 <li><a href=
"#perl_ix_distribution_contents_highlights">Perl/iX Distribution Contents Highlights
</a></li>
31 <li><a href=
"#how_to_compile_perl_ix">How to Compile Perl/iX
</a></li>
32 <li><a href=
"#getting_started_with_perl_ix">Getting Started with Perl/iX
</a></li>
33 <li><a href=
"#mpe_ix_implementation_considerations">MPE/iX Implementation Considerations
</a></li>
34 <li><a href=
"#known_perl_ix_bugs_under_investigation">Known Perl/iX Bugs Under Investigation
</a></li>
35 <li><a href=
"#perl_ix_todo_list">Perl/iX To-Do List
</a></li>
36 <li><a href=
"#perl_ix_change_history">Perl/iX Change History
</a></li>
37 <li><a href=
"#author">AUTHOR
</a></li>
44 <h1><a name=
"name">NAME
</a></h1>
45 <p>README.mpeix - Perl/iX for HP e3000 MPE
</p>
49 <h1><a name=
"synopsis">SYNOPSIS
</a></h1>
51 <a href=
"http://www.bixby.org/mark/perlix.html">http://www.bixby.org/mark/perlix.html
</a>
52 <a href=
"http://jazz.external.hp.com/src/hp_freeware/perl/">http://jazz.external.hp.com/src/hp_freeware/perl/
</a>
54 Last updated January
12,
2006 @
2100 UTC
</pre>
58 <h1><a name=
"note">NOTE
</a></h1>
59 <p>This is a podified version of the above-mentioned web page,
60 podified by Jarkko Hietaniemi
2001-Jan-
01.
</p>
64 <h1><a name=
"binary_distribution_from_hp">Binary distribution from HP
</a></h1>
65 <p>The simplest way to obtain Perl for the MPE/iX is to go either of
66 these URLs and follow the instructions within.
</p>
67 <p><a href=
"http://jazz.external.hp.com/src/hp_freeware/perl/">http://jazz.external.hp.com/src/hp_freeware/perl/
</a>
68 <a href=
"http://www.bixby.org/mark/perlix.html">http://www.bixby.org/mark/perlix.html
</a></p>
69 <p>Use which ever one is more recent.
</p>
73 <h1><a name=
"what_s_new_in_perl_for_mpe_ix">What's New in Perl for MPE/iX
</a></h1>
74 <p>January
12,
2006</p>
77 <p>Updated for perl-
5.8.8 and perl-
5.9.3 by Ken Hirsch.
</p>
78 <p>Simplified the build process by using the MPEAUTOCONF
79 functionality in Mark Klein's ld.
</p>
80 <p>If you build this from scratch, make sure you have a version
81 of ld which supports it. In the shell, type
</p>
84 and look for AUTOCONF or MPEAUTOCONF near the bottom
</pre>
87 ld --help
2>&1 | grep AUTOCONF
</pre>
88 <p>If you see don't see AUTOCONF or MPEAUTOCONF, make sure you get a new
90 <p>You also do not have to use mpeix/relink after building, so the
91 recommend sequence is:
</p>
95 # or ./Configure -de -Dusedevel
96 # if you're building a development version
</pre>
100 # if you run this in a job, do
"make test_notty
"</pre>
103 <p>Be prepared for a wait. These take much longer on MPE/iX than on a Unix
104 system, because of a slow forking, mostly. On a lightly-loaded HP3000
105 Series
979 running MPE/iX
7.5:
</p>
108 make:
1 hour
15 minutes
109 make test
1 hour
45 minutes
</pre>
110 <p>Various socket problems were fixed in mpeix.c.
</p>
111 <p>Mark Klein provided a fixed sigsetjmp (that works with dynamic
112 libraries) in mpeix_setjmp.c
</p>
118 <p>Rebuilt to be compatible with mod_perl. If you plan on using
119 mod_perl, you MUST download and install this version of Perl/iX!
</p>
122 <p>uselargefiles=``undef'': not available in MPE for POSIX files yet.
</p>
125 <p>Now bundled with various add-on packages:
</p>
128 <p>libnet (as seen on CPAN)
</p>
131 <p>libwww-perl (LWP) which lets Perl programs behave like web browsers:
</p>
135 3. $doc = get('
<a href=
"http://www.bixby.org/mark/perlix.html">http://www.bixby.org/mark/perlix.html
</a>'); # reads the
136 web page into variable $doc
</pre>
137 <p>(http://www.bixby.org/mark/perlix.html)
</p>
140 <p>mod_perl (just the perl portion; the actual DSO will be released
141 soon with Apache/iX
1.3.12 from bixby.org). This module allows you to
142 write high performance persistent Perl CGI scripts and all sorts of
143 cool things. (http://perl.apache.org/)
</p>
144 <p>and much much more hiding under /PERL/PUB/.cpan/
</p>
147 <p>The CPAN module now works for automatic downloading and
148 installing of add-on packages:
</p>
150 1. export FTP_PASSIVE=
1
151 2. perl -MCPAN -e shell
152 3. Ignore any terminal I/O related complaints!
</pre>
153 <p>(http://theoryx5.uwinnipeg.ca/CPAN/data/perl/CPAN.html)
</p>
160 <p>Updated to version
5.6.0. Builds straight out of the box on MPE/iX.
</p>
163 <p>Perl's
<code>getpwnam()
</code> function which had regressed to being
164 unimplemented on MPE is now implemented once again.
</p>
167 <p>September
17,
1999</p>
170 <p>Migrated from cccd.edu to bixby.org.
</p>
177 <h1><a name=
"welcome_to_perl_ix">Welcome to Perl/iX
</a></h1>
178 <p>This is the official home page for the HP e3000 MPE/iX
179 (
<a href=
"http://www.hp.com/go/e3000">http://www.hp.com/go/e3000
</a> ) port of the Perl scripting
180 language (
<a href=
"http://www.perl.com/">http://www.perl.com/
</a> ) which gives you all of the power of C,
181 awk, sed, and sh in a single language. Check here for the latest news,
182 implemented functionality, known bugs, to-do list, etc. Status reports
183 about major milestones will also be posted to the HP3000-L mailing list
184 (
<a href=
"http://www.lsoft.com/scripts/wl.exe?SL1=HP3000-L&H=RAVEN.UTC.EDU">http://www.lsoft.com/scripts/wl.exe?SL1=HP3000-L&H=RAVEN.UTC.EDU
</a> ) and
185 its associated gatewayed newsgroup comp.sys.hp.mpe.
</p>
186 <p>I'm doing this port because I can't live without Perl on the Unix
187 machines that I administer, and I want to have the same power
188 available to me on MPE.
</p>
189 <p>Please send your comments, questions, and bug reports directly to me,
190 Mark Bixby (
<a href=
"http://www.bixby.org/mark/">http://www.bixby.org/mark/
</a> ). Or just post them to HP3000-L.
</p>
191 <p>The platform I'm using to do this port is an HP
3000 957RX running
192 MPE/iX
6.0 and using the GNU gcc C compiler
193 (
<a href=
"http://jazz.external.hp.com/src/gnu/gnuframe.html">http://jazz.external.hp.com/src/gnu/gnuframe.html
</a> ).
</p>
194 <p>The combined porting wisdom from all of my ports can be found in my
195 MPE/iX Porting Guide (http://www.bixby.org/mark/porting.html).
</p>
196 <p>IMPORTANT NOTICE: Yes, I do work for the HP CSY R
&D lab, but ALL of
197 the software you download from bixby.org is my personal freeware that
198 is NOT supported by HP.
</p>
202 <h1><a name=
"system_requirements_for_perl_ix">System Requirements for Perl/iX
</a></h1>
205 <p>MPE/iX
5.5 or later. This version of Perl/iX does NOT run on
206 MPE/iX
5.0 or earlier, nor does it run on ``classic'' MPE/V machines.
</p>
209 <p>If you wish to recompile Perl, you must install both GNUCORE and
210 GNUGCC from jazz (http://jazz.external.hp.com/src/gnu/gnuframe.html).
</p>
213 <p>Perl/iX will be happier on MPE/iX
5.5 if you install the MPEKX40B
214 extended POSIX filename characters patch, but this is optional.
</p>
217 <p>Patch LBCJXT6A is required on MPE/iX
5.5 machines in order to
218 prevent Perl/iX from dying with an unresolved external reference
222 <p>If you will be compiling Perl/iX yourself, you will also need
223 Syslog/iX (
<a href=
"http://www.bixby.org/mark/syslogix.html">http://www.bixby.org/mark/syslogix.html
</a> ) and the
224 /BIND/PUB/include and /BIND/PUB/lib portions of BIND/iX
225 (
<a href=
"http://www.bixby.org/mark/bindix.html">http://www.bixby.org/mark/bindix.html
</a> ).
</p>
231 <h1><a name=
"how_to_obtain_perl_ix">How to Obtain Perl/iX
</a></h1>
234 <p>Download Perl using either FTP.ARPA.SYS or some other client
</p>
237 <p>Extract the installation script
</p>
240 <p>Edit the installation script
</p>
243 <p>Run the installation script
</p>
246 <p>Convert your *.a system archive libraries to *.sl shared libraries
</p>
249 <p>Download Perl using FTP.ARPA.SYS from your HP
3000 (the preferred
259 get perl-
5.6.0-mpe.tar.Z /tmp/perl.tar.Z;disc=
2147483647
261 <p>.....Or download using some other generic web or ftp client (the alternate
263 <p>Download the following files (make sure that you use ``binary mode'' or
264 whatever client feature that is
8-bit clean):
</p>
269 <a href=
"http://www.bixby.org/ftp/pub/mpe/perl-5.6.0-mpe.tar.Z">http://www.bixby.org/ftp/pub/mpe/perl-
5.6.0-mpe.tar.Z
</a></pre>
272 <a href=
"ftp://ftp.bixby.org/pub/mpe/perl-5.6.0-mpe.tar.Z">ftp://ftp.bixby.org/pub/mpe/perl-
5.6.0-mpe.tar.Z
</a></pre>
275 <p>Upload those files to your HP
3000 in an
8-bit clean bytestream manner to:
</p>
277 /tmp/perl.tar.Z
</pre>
280 <p>Then extract the installation script (after both download methods)
</p>
283 :XEQ TAR.HPBIN.SYS 'xvfopz /tmp/perl.tar.Z INSTALL'
</pre>
286 <p>Edit the installation script
</p>
287 <p>Examine the accounting structure creation commands and modify if
288 necessary (adding additional capabilities, choosing a non-system
289 volume set, etc).
</p>
291 :XEQ VI.HPBIN.SYS /tmp/INSTALL
</pre>
294 <p>Run the installation script.
</p>
295 <p>The accounting structure will be created and then all files will be
296 extracted from the archive.
</p>
298 :XEQ SH.HPBIN.SYS /tmp/INSTALL
</pre>
301 <p>Convert your *.a system archive libraries to *.sl shared libraries
</p>
302 <p>You only have to do this ONCE on your MPE/iX
5.5 machine in order to
303 convert /lib/lib*.a and /usr/lib/lib*.a libraries to their *.sl
304 equivalents. This step should not be necessary on MPE/iX
6.0 or later
305 machines because the
6.0 or later update process does it for you.
</p>
307 :XEQ SH.HPBIN.SYS /PERL/PUB/LIBSHP3K
</pre>
313 <h1><a name=
"perl_ix_distribution_contents_highlights">Perl/iX Distribution Contents Highlights
</a></h1>
315 <dt><strong><a name=
"item_readme">README
</a></strong>
318 <p>The file you're reading now.
</p>
321 <dt><strong><a name=
"item_install">INSTALL
</a></strong>
324 <p>Perl/iX Installation script.
</p>
327 <dt><strong><a name=
"item_libshp3k">LIBSHP3K
</a></strong>
330 <p>Script to convert *.a system archive libraries to *.sl shared libraries.
</p>
333 <dt><strong><a name=
"item_perl">PERL
</a></strong>
336 <p>Perl NMPRG executable. A version-numbered backup copy also
337 exists. You might wish to ``ln -s /PERL/PUB/PERL /usr/local/bin/perl''.
</p>
340 <dt><strong><a name=
"item__2ecpan_2f">.cpan/
</a></strong>
343 <p>Much add-on source code downloaded with the CPAN module.
</p>
346 <dt><strong><a name=
"item_lib_2f">lib/
</a></strong>
349 <p>Perl libraries, both core and add-on.
</p>
352 <dt><strong><a name=
"item_man_2f">man/
</a></strong>
355 <p>Perl man page documentation.
</p>
358 <dt><strong><a name=
"item_public_html_2ffeedback_2ecgi">public_html/feedback.cgi
</a></strong>
361 <p>Sample feedback CGI form written in Perl.
</p>
364 <dt><strong><a name=
"item_src_2fperl_2d5_2e6_2e0_2dmpe">src/perl-
5.6.0-mpe
</a></strong>
374 <h1><a name=
"how_to_compile_perl_ix">How to Compile Perl/iX
</a></h1>
377 <p>cd src/perl-
5.6.0-mpe
</p>
380 <p>Read the INSTALL file for the official instructions
</p>
383 <p>./Configure -d
</p>
389 <p>./mpeix/relink
</p>
392 <p>make test (expect approximately
15 out of
11306 subtests to fail,
393 mostly due to MPE not supporting hard links, UDP socket problems,
394 and handling
<a href=
"file://C|\msysgit\mingw\html/pod/perlfunc.html#item_exit"><code>exit()
</code></a> return codes improperly)
</p>
400 <p>Optionally create symbolic links that point to the Perl
401 executable, i.e. ln -s /PERL/PUB/PERL /usr/local/bin/perl
</p>
404 <p>The summary test results from ``cd t; ./perl -I../lib harness'':
</p>
406 Failed Test Status Wstat Total Fail Failed List of failed
407 ---------------------------------------------------------------------------
408 io/fs.t
29 8 27.59%
2-
5,
7-
9,
11
409 io/openpid.t
10 1 10.00%
7
410 lib/io_sock.t
14 1 7.14%
13
411 lib/io_udp.t
7 2 28.57%
3,
5
412 lib/posix.t
27 1 3.70%
12
413 op/lex_assign.t
187 1 0.53%
13
414 op/stat.t
58 1 1.72%
3
415 15 tests and
94 subtests skipped.
416 Failed
7/
236 test scripts,
97.03% okay.
15/
11306 subtests failed,
99.87% okay.
</pre>
420 <h1><a name=
"getting_started_with_perl_ix">Getting Started with Perl/iX
</a></h1>
421 <p>Create your Perl script files with ``#!/PERL/PUB/perl'' (or an
422 equivalent symbolic link) as the first line. Use the chmod command to
423 make sure that your script has execute permission. Run your script!
</p>
424 <p>Be sure to take a look at the CPAN module list
425 (
<a href=
"http://www.cpan.org/CPAN.html">http://www.cpan.org/CPAN.html
</a> ). A wide variety of free Perl software
426 is available. You can automatically download these packages by using
427 the CPAN module (
<a href=
"http://theoryx5.uwinnipeg.ca/CPAN/data/perl/CPAN.html">http://theoryx5.uwinnipeg.ca/CPAN/data/perl/CPAN.html
</a> ).
</p>
431 <h1><a name=
"mpe_ix_implementation_considerations">MPE/iX Implementation Considerations
</a></h1>
432 <p>There some minor functionality issues to be aware of when comparing
433 Perl for Unix (Perl/UX) to Perl/iX:
</p>
436 <p>MPE gcc/ld doesn't properly support linking NMPRG executables against
437 NMXL dynamic libraries, so you must manually run mpeix/relink after
438 each re-build of Perl.
</p>
441 <p>Perl/iX File::Copy will use MPE's /bin/cp command to copy files by
442 name in order to preserve file attributes like file code.
</p>
445 <p>MPE (and thus Perl/iX) lacks support for setgrent(), endgrent(),
446 setpwent(), endpwent().
</p>
449 <p>MPE (and thus Perl/iX) lacks support for hard links.
</p>
452 <p>MPE requires
<code>GETPRIVMODE()
</code> in order to
<code>bind()
</code> to ports less than
1024.
453 Perl/iX will call
<code>GETPRIVMODE()
</code> automatically on your behalf if you
454 attempt to
<code>bind()
</code> to these low-numbered ports. Note that the Perl/iX
455 executable and the PERL account do not normally have CAP=PM, so if you
456 will be bind()-ing to these privileged ports, you will manually need
457 to add PM capability as appropriate.
</p>
460 <p>MPE requires that you
<code>bind()
</code> to an IP address of zero. Perl/iX
461 automatically replaces the IP address that you pass to
<code>bind()
</code> with
465 <p>MPE requires
<code>GETPRIVMODE()
</code> in order to setuid(). There are too many
466 calls to
<code>setuid()
</code> within Perl/iX, so I have not attempted an automatic
467 <code>GETPRIVMODE()
</code> solution similar to bind().
</p>
473 <h1><a name=
"known_perl_ix_bugs_under_investigation">Known Perl/iX Bugs Under Investigation
</a></h1>
478 <h1><a name=
"perl_ix_todo_list">Perl/iX To-Do List
</a></h1>
481 <p>Make
<code>setuid()/setgid()
</code> support work.
</p>
484 <p>Make sure that
<code>fcntl()
</code> against a socket descriptor is redirected to sfcntl().
</p>
487 <p>Add support for Berkeley DB once I've finished porting Berkeley DB.
</p>
490 <p>Write an MPE XS extension library containing miscellaneous important
491 MPE functions like GETPRIVMODE(), GETUSERMODE(), and sfcntl().
</p>
497 <h1><a name=
"perl_ix_change_history">Perl/iX Change History
</a></h1>
501 <p>Patch LBCJXT6A is required on MPE/iX
5.5 machines in order to prevent
502 Perl/iX from dying with an unresolved external reference to _getenv_libc.
</p>
508 <p>Updated to version
5.005_03.
</p>
511 <p>The official source distribution once again compiles ``straight out
512 of the box'' for MPE.
</p>
515 <p>The current incarnation of the
5.5 POSIX filename extended
516 characters patch is now MPEKX40B.
</p>
519 <p>The LIBSHP3K *.a -
> *.sl library conversion script is now included
520 as /PERL/PUB/LIBSHP3K.
</p>
523 <p>November
20,
1998</p>
526 <p>Updated to version
5.005_02.
</p>
529 <p>Fixed a DynaLoader bug that was unable to load symbols from relative
530 path name libraries.
</p>
533 <p>Fixed a .xs compilation bug where the mpeixish.sh include file wasn't
534 being installed into the proper directory.
</p>
537 <p>All bugfixes will be submitted back to the official Perl developers.
</p>
540 <p>The current incarnation of the POSIX filename extended characters
541 patch is now MPEKXJ3A.
</p>
544 <p>August
14,
1998</p>
547 <p>The previous POSIX filename extended characters patch MPEKX44C has
548 been superseded by MPEKXB5A.
</p>
551 <p>August
7,
1998</p>
554 <p>The previous POSIX filename extended characters patch MPEKX76A has
555 been superseded by MPEKX44C.
</p>
561 <p>Updated to version
5.005_01.
</p>
567 <p>Updated to version
5.005 (production release). The public
568 freeware sources are now
100% MPE-ready ``straight out of the box''.
</p>
574 <p>Updated to version
5.005b1 (public beta release). The public
575 freeware sources are now
99.9% MPE-ready. By installing and
576 testing this beta on your own HP3000, you will be helping to
577 insure that the final release of
5.005 will be
100% MPE-ready and
581 <p>My MPE binary release is now extracted using my standard INSTALL script.
</p>
587 <p>Changed startperl to #!/PERL/PUB/perl so that Perl will recognize
588 scripts more easily and efficiently.
</p>
594 <p>Updated to version
5.004_70 (internal developer release) which is now
595 MPE-ready. The next public freeware release of Perl should compile
596 ``straight out of the box'' on MPE. Note that this version of Perl/iX
597 was strictly internal to me and never publicly released. Note that
598 [
21]BIND/iX is now required (well, the include files and libbind.a) if
599 you wish to compile Perl/iX.
</p>
602 <p>November
6,
1997</p>
605 <p>Updated to version
5.004_04. No changes in MPE-specific functionality.
</p>
608 <p>October
16,
1997</p>
611 <p>Added Demos section to the Perl/iX home page so you can see some
612 sample Perl applications running on my
3000.
</p>
615 <p>October
3,
1997</p>
618 <p>Added System Requirements section to the Perl/iX home page just so the
619 prerequisites stand out more. Various other home page tweaks.
</p>
622 <p>October
2,
1997</p>
625 <p>Initial public release.
</p>
628 <p>September
1997</p>
631 <p>Porting begins.
</p>
637 <h1><a name=
"author">AUTHOR
</a></h1>
638 <p>Mark Bixby,
<a href=
"http://www.bixby.org/mark/">http://www.bixby.org/mark/
</a></p>
639 <table border=
"0" width=
"100%" cellspacing=
"0" cellpadding=
"3">
640 <tr><td class=
"block" style=
"background-color: #cccccc" valign=
"middle">
641 <big><strong><span class=
"block"> README.mpeix - Perl/iX for HP e3000 MPE
</span></strong></big>