Re: what is YYDEBUG and why does it reset errno?
[p5sagit/p5-mst-13.2.git] / README.mpeix
CommitLineData
ab648d5e 1If you read this file _as_is_, just ignore the funny characters you
2see. It is written in the POD format (see perlpod manpage) which is
3specially designed to be readable as is.
1d84e8df 4
ab648d5e 5=head1 NAME
1d84e8df 6
ab648d5e 7README.mpeix - Perl/iX for HP e3000 MPE
b5ab5069 8
ab648d5e 9=head1 SYNOPSIS
1d84e8df 10
ab648d5e 11 http://www.bixby.org/mark/perlix.html
feb33499 12 http://jazz.external.hp.com/src/hp_freeware/perl/
ab648d5e 13 Perl language for MPE
14 Last updated June 2, 2000 @ 0400 UTC
b5ab5069 15
ab648d5e 16=head1 NOTE
1d84e8df 17
ab648d5e 18This is a podified version of the above-mentioned web page,
19podified by Jarkko Hietaniemi 2001-Jan-01.
1d84e8df 20
37a78d01 21=head1 Binary distribution from HP
22
23The simplest way to obtain Perl for the MPE/iX is to go either of
24these URLs and follow the instructions within.
25
26http://jazz.external.hp.com/src/hp_freeware/perl/
27http://www.bixby.org/mark/perlix.html
28
29Use which ever one is more recent.
30
31
210b36aa 32=head1 What's New in Perl for MPE/iX
1d84e8df 33
ab648d5e 34June 1, 2000
b5ab5069 35
ab648d5e 36=over 4
1d84e8df 37
ab648d5e 38=item *
1d84e8df 39
ab648d5e 40Rebuilt to be compatible with mod_perl. If you plan on using
41mod_perl, you MUST download and install this version of Perl/iX!
b5ab5069 42
ab648d5e 43=item *
1d84e8df 44
ab648d5e 45bincompat5005="undef": sorry, but you will have to recompile any
46binary 5.005 extensions that you may be using (if any; there is no
475.005 code in what you download from bixby.org)
48uselargefiles="undef": not available in MPE for POSIX files yet.
b5ab5069 49
ab648d5e 50=item *
1d84e8df 51
ab648d5e 52Now bundled with various add-on packages:
1d84e8df 53
ab648d5e 54=over 8
1d84e8df 55
ab648d5e 56=item *
1d84e8df 57
37a78d01 58libnet (as seen on CPAN)
1d84e8df 59
ab648d5e 60=item *
1d84e8df 61
ab648d5e 62libwww-perl (LWP) which lets Perl programs behave like web browsers:
b5ab5069 63
ab648d5e 64 1. #!/PERL/PUB/perl
65 2. use LWP::Simple;
66 3. $doc = get('http://www.bixby.org/mark/perlix.html'); # reads the
67 web page into variable $doc
b5ab5069 68
ab648d5e 69(http://www.bixby.org/mark/perlix.html)
1d84e8df 70
ab648d5e 71=item *
1d84e8df 72
ab648d5e 73mod_perl (just the perl portion; the actual DSO will be released
74soon with Apache/iX 1.3.12 from bixby.org). This module allows you to
75write high performance persistent Perl CGI scripts and all sorts of
76cool things. (http://perl.apache.org/)
b5ab5069 77
ab648d5e 78and much much more hiding under /PERL/PUB/.cpan/
b5ab5069 79
ab648d5e 80=item *
1d84e8df 81
ab648d5e 82The CPAN module now works for automatic downloading and
83installing of add-on packages:
1d84e8df 84
ab648d5e 85 1. export FTP_PASSIVE=1
86 2. perl -MCPAN -e shell
87 3. Ignore any terminal I/O related complaints!
b5ab5069 88
ab648d5e 89(http://theoryx5.uwinnipeg.ca/CPAN/data/perl/CPAN.html)
1d84e8df 90
ab648d5e 91=back
1d84e8df 92
ab648d5e 93=back
94
95May 20, 2000
96
97=over 4
98
99=item *
100
101Updated to version 5.6.0. Builds straight out of the box on MPE/iX.
102
103=item *
104
105Perl's getpwnam() function which had regressed to being
106unimplemented on MPE is now implemented once again.
b5ab5069 107
ab648d5e 108=back
109
110September 17, 1999
111
112=over 4
113
114=item *
115
116Migrated from cccd.edu to bixby.org.
117
118=back
b5ab5069 119
a83b6f46 120=head1 Welcome to Perl/iX
ab648d5e 121
122This is the official home page for the HP e3000 MPE/iX
37a78d01 123(http://www.hp.com/go/e3000) port of the Perl scripting
ab648d5e 124language (http://www.perl.com/) which gives you all of the power of C,
125awk, sed, and sh in a single language. Check here for the latest news,
126implemented functionality, known bugs, to-do list, etc. Status reports
127about major milestones will also be posted to the HP3000-L mailing list
128(http://www.lsoft.com/scripts/wl.exe?SL1=HP3000-L&H=RAVEN.UTC.EDU) and
129its associated gatewayed newsgroup comp.sys.hp.mpe.
b5ab5069 130
ab648d5e 131I'm doing this port because I can't live without Perl on the Unix
132machines that I administer, and I want to have the same power
133available to me on MPE.
b5ab5069 134
ab648d5e 135Please send your comments, questions, and bug reports directly to me,
136Mark Bixby (http://www.bixby.org/mark/), by e-mailing to
137mark@bixby.org. Or just post them to HP3000-L.
b5ab5069 138
ab648d5e 139The platform I'm using to do this port is an HP 3000 957RX running
140MPE/iX 6.0 and using the GNU gcc C compiler
141(http://jazz.external.hp.com/src/gnu/gnuframe.html).
b5ab5069 142
ab648d5e 143The combined porting wisdom from all of my ports can be found in my
144MPE/iX Porting Guide (http://www.bixby.org/mark/porting.html).
b5ab5069 145
ab648d5e 146IMPORTANT NOTICE: Yes, I do work for the HP CSY R&D lab, but ALL of
147the software you download from bixby.org is my personal freeware that
148is NOT supported by HP.
149
a83b6f46 150=head1 System Requirements for Perl/iX
ab648d5e 151
152=over 4
153
154=item *
155
156MPE/iX 5.5 or later. This version of Perl/iX does NOT run on
157MPE/iX 5.0 or earlier, nor does it run on "classic" MPE/V machines.
158
159=item *
160
161If you wish to recompile Perl, you must install both GNUCORE and
162GNUGCC from jazz (http://jazz.external.hp.com/src/gnu/gnuframe.html).
163
164=item *
165
166Perl/iX will be happier on MPE/iX 5.5 if you install the MPEKX40B
167extended POSIX filename characters patch, but this is optional.
168
169=item *
170
171Patch LBCJXT6A is required on MPE/iX 5.5 machines in order to
172prevent Perl/iX from dying with an unresolved external reference
173to _getenv_libc.
174
175=item *
176
177If you will be compiling Perl/iX yourself, you will also need
178Syslog/iX (http://www.bixby.org/mark/syslogix.html) and the
179/BIND/PUB/include and /BIND/PUB/lib portions of BIND/iX
180(http://www.bixby.org/mark/bindix.html).
181
182=back
183
184=head1 How to Obtain Perl/iX
185
186=over 4
187
188=item 1.
189
190Download Perl using either FTP.ARPA.SYS or some other client
191
192=item 2.
193
194Extract the installation script
195
196=item 3.
197
198Edit the installation script
199
200=item 4.
201
202Run the installation script
203
204=item 5.
205
206Convert your *.a system archive libraries to *.sl shared libraries
b5ab5069 207
ab648d5e 208=back
1d84e8df 209
210Download Perl using FTP.ARPA.SYS from your HP 3000 (the preferred
211method).....
b5ab5069 212
ab648d5e 213 :HELLO MANAGER.SYS
214 :XEQ FTP.ARPA.SYS
215 open ftp.bixby.org
216 anonymous
217 your@email.address
218 bytestream
219 cd /pub/mpe
220 get perl-5.6.0-mpe.tar.Z /tmp/perl.tar.Z;disc=2147483647
221 exit
1d84e8df 222
223.....Or download using some other generic web or ftp client (the alternate
224method)
b5ab5069 225
1d84e8df 226Download the following files (make sure that you use "binary mode" or
227whatever client feature that is 8-bit clean):
228
ab648d5e 229=over 4
230
231=item *
232
233Perl from
234
235 http://www.bixby.org/ftp/pub/mpe/perl-5.6.0-mpe.tar.Z
236
237or
238
239 ftp://ftp.bixby.org/pub/mpe/perl-5.6.0-mpe.tar.Z
b5ab5069 240
ab648d5e 241=item *
1d84e8df 242
243Upload those files to your HP 3000 in an 8-bit clean bytestream manner to:
244
ab648d5e 245 /tmp/perl.tar.Z
b5ab5069 246
ab648d5e 247=item *
1d84e8df 248
249Then extract the installation script (after both download methods)
b5ab5069 250
ab648d5e 251 :CHDIR /tmp
252 :XEQ TAR.HPBIN.SYS 'xvfopz /tmp/perl.tar.Z INSTALL'
1d84e8df 253
ab648d5e 254=item *
1d84e8df 255
256Edit the installation script
b5ab5069 257
ab648d5e 258Examine the accounting structure creation commands and modify if
259necessary (adding additional capabilities, choosing a non-system
260volume set, etc).
1d84e8df 261
ab648d5e 262 :XEQ VI.HPBIN.SYS /tmp/INSTALL
1d84e8df 263
ab648d5e 264=item *
1d84e8df 265
ab648d5e 266Run the installation script.
b5ab5069 267
1d84e8df 268The accounting structure will be created and then all files will be
269extracted from the archive.
270
ab648d5e 271 :XEQ SH.HPBIN.SYS /tmp/INSTALL
272
273=item *
274
275Convert your *.a system archive libraries to *.sl shared libraries
b5ab5069 276
ab648d5e 277You only have to do this ONCE on your MPE/iX 5.5 machine in order to
278convert /lib/lib*.a and /usr/lib/lib*.a libraries to their *.sl
279equivalents. This step should not be necessary on MPE/iX 6.0 or later
280machines because the 6.0 or later update process does it for you.
281
282 :XEQ SH.HPBIN.SYS /PERL/PUB/LIBSHP3K
283
284=back
285
a83b6f46 286=head1 Perl/iX Distribution Contents Highlights
ab648d5e 287
288=over 4
289
290=item README
291
292The file you're reading now.
b5ab5069 293
ab648d5e 294=item INSTALL
295
296Perl/iX Installation script.
b5ab5069 297
ab648d5e 298=item LIBSHP3K
299
300Script to convert *.a system archive libraries to *.sl shared libraries.
b5ab5069 301
ab648d5e 302=item PERL
303
304Perl NMPRG executable. A version-numbered backup copy also
305exists. You might wish to "ln -s /PERL/PUB/PERL /usr/local/bin/perl".
b5ab5069 306
ab648d5e 307=item .cpan/
308
309Much add-on source code downloaded with the CPAN module.
b5ab5069 310
ab648d5e 311=item lib/
312
313Perl libraries, both core and add-on.
b5ab5069 314
ab648d5e 315=item man/
316
317Perl man page documentation.
318
319=item public_html/feedback.cgi
320
321Sample feedback CGI form written in Perl.
b5ab5069 322
ab648d5e 323=item src/perl-5.6.0-mpe
324
325Source code.
326
327=back
b5ab5069 328
ab648d5e 329=head1 How to Compile Perl/iX
330
331=over 4
332
333=item 1.
334
335cd src/perl-5.6.0-mpe
336
337=item 2.
338
339Read the INSTALL file for the official instructions
340
341=item 3.
342
343./Configure -d
344
345=item 4.
346
347make
348
349=item 5.
350
351./mpeix/relink
352
353=item 6.
354
355make test (expect approximately 15 out of 11306 subtests to fail,
356mostly due to MPE not supporting hard links, UDP socket problems,
357and handling exit() return codes improperly)
358
359=item 7.
360
361make install
362
363=item 8.
364
365Optionally create symbolic links that point to the Perl
366executable, i.e. ln -s /PERL/PUB/PERL /usr/local/bin/perl
b5ab5069 367
ab648d5e 368=back
1d84e8df 369
370The summary test results from "cd t; ./perl -I../lib harness":
371
ab648d5e 372 Failed Test Status Wstat Total Fail Failed List of failed
373 ---------------------------------------------------------------------------
374 io/fs.t 29 8 27.59% 2-5, 7-9, 11
375 io/openpid.t 10 1 10.00% 7
376 lib/io_sock.t 14 1 7.14% 13
377 lib/io_udp.t 7 2 28.57% 3, 5
378 lib/posix.t 27 1 3.70% 12
379 op/lex_assign.t 187 1 0.53% 13
380 op/stat.t 58 1 1.72% 3
381 15 tests and 94 subtests skipped.
382 Failed 7/236 test scripts, 97.03% okay. 15/11306 subtests failed, 99.87% okay.
383
384=head1 Getting Started with Perl/iX
385
386Create your Perl script files with "#!/PERL/PUB/perl" (or an
387equivalent symbolic link) as the first line. Use the chmod command to
388make sure that your script has execute permission. Run your script!
b5ab5069 389
ab648d5e 390Be sure to take a look at the CPAN module list
391(http://www.cpan.org/CPAN.html). A wide variety of free Perl software
392is available. You can automatically download these packages by using
393the CPAN module (http://theoryx5.uwinnipeg.ca/CPAN/data/perl/CPAN.html).
394
395=head1 MPE/iX Implementation Considerations
396
397There some minor functionality issues to be aware of when comparing
398Perl for Unix (Perl/UX) to Perl/iX:
399
400=over 4
401
402=item *
403
404MPE gcc/ld doesn't properly support linking NMPRG executables against
405NMXL dynamic libraries, so you must manually run mpeix/relink after
406each re-build of Perl.
407
408=item *
409
410Perl/iX File::Copy will use MPE's /bin/cp command to copy files by
411name in order to preserve file attributes like file code.
412
413=item *
414
415MPE (and thus Perl/iX) lacks support for setgrent(), endgrent(),
416setpwent(), endpwent().
417
418=item *
419
420MPE (and thus Perl/iX) lacks support for hard links.
421
422=item *
423
424MPE requires GETPRIVMODE() in order to bind() to ports less than 1024.
425Perl/iX will call GETPRIVMODE() automatically on your behalf if you
426attempt to bind() to these low-numbered ports. Note that the Perl/iX
427executable and the PERL account do not normally have CAP=PM, so if you
428will be bind()-ing to these privileged ports, you will manually need
429to add PM capability as appropriate.
430
431=item *
432
433MPE requires that you bind() to an IP address of zero. Perl/iX
434automatically replaces the IP address that you pass to bind() with
435a zero.
436
437=item *
438
439If you use Perl/iX fcntl() against a socket it will fail, because MPE
440requires that you use sfcntl() instead. Perl/iX does not presently
441support sfcntl().
442
443=item *
444
445MPE requires GETPRIVMODE() in order to setuid(). There are too many
446calls to setuid() within Perl/iX, so I have not attempted an automatic
447GETPRIVMODE() solution similar to bind().
448
449=back
b5ab5069 450
a83b6f46 451=head1 Known Perl/iX Bugs Under Investigation
ab648d5e 452
453None.
b5ab5069 454
a83b6f46 455=head1 Perl/iX To-Do List
ab648d5e 456
457=over 4
458
459=item *
460
461Make setuid()/setgid() support work.
462
463=item *
464
465Make sure that fcntl() against a socket descriptor is redirected to sfcntl().
466
467=item *
468
469Add support for Berkeley DB once I've finished porting Berkeley DB.
470
471=item *
472
473Write an MPE XS extension library containing miscellaneous important
474MPE functions like GETPRIVMODE(), GETUSERMODE(), and sfcntl().
b5ab5069 475
ab648d5e 476=back
477
a83b6f46 478=head1 Perl/iX Change History
ab648d5e 479
480May 6, 1999
b5ab5069 481
ab648d5e 482=over 4
483
484=item *
485
486Patch LBCJXT6A is required on MPE/iX 5.5 machines in order to prevent
487Perl/iX from dying with an unresolved external reference to _getenv_libc.
b5ab5069 488
ab648d5e 489=back
490
491April 7, 1999
492
493=over 4
494
495=item *
496
497Updated to version 5.005_03.
498
499=item *
500
501The official source distribution once again compiles "straight out
502of the box" for MPE.
503
504=item *
505
506The current incarnation of the 5.5 POSIX filename extended
507characters patch is now MPEKX40B.
508
509=item *
510
511The LIBSHP3K *.a -> *.sl library conversion script is now included
512as /PERL/PUB/LIBSHP3K.
b5ab5069 513
ab648d5e 514=back
515
516November 20, 1998
517
518=over 4
519
520=item *
521
522Updated to version 5.005_02.
523
524=item *
525
526Fixed a DynaLoader bug that was unable to load symbols from relative
527path name libraries.
528
529=item *
530
531Fixed a .xs compilation bug where the mpeixish.sh include file wasn't
532being installed into the proper directory.
533
534=item *
535
536All bugfixes will be submitted back to the official Perl developers.
537
538=item *
539
540The current incarnation of the POSIX filename extended characters
541patch is now MPEKXJ3A.
b5ab5069 542
ab648d5e 543=back
b5ab5069 544
ab648d5e 545August 14, 1998
546
547=over 4
548
549=item *
550
551The previous POSIX filename extended characters patch MPEKX44C has
552been superseded by MPEKXB5A.
b5ab5069 553
ab648d5e 554=back
b5ab5069 555
ab648d5e 556August 7, 1998
557
558=over 4
559
560=item *
561
562The previous POSIX filename extended characters patch MPEKX76A has
563been superseded by MPEKX44C.
ab648d5e 564
565=back
b5ab5069 566
ab648d5e 567July 28, 1998
568
b5ab5069 569=over 4
570
ab648d5e 571=item *
572
573Updated to version 5.005_01.
b5ab5069 574
ab648d5e 575=back
b5ab5069 576
ab648d5e 577July 23, 1998
578
579=over 4
580
581=item *
582
583Updated to version 5.005 (production release). The public
584freeware sources are now 100% MPE-ready "straight out of the box".
b5ab5069 585
ab648d5e 586=back
b5ab5069 587
ab648d5e 588July 17, 1998
589
590=over 4
591
592=item *
593
594Updated to version 5.005b1 (public beta release). The public
595freeware sources are now 99.9% MPE-ready. By installing and
596testing this beta on your own HP3000, you will be helping to
597insure that the final release of 5.005 will be 100% MPE-ready and
598100% bug free.
599
600=item *
601
602My MPE binary release is now extracted using my standard INSTALL script.
b5ab5069 603
ab648d5e 604=back
b5ab5069 605
ab648d5e 606July 15, 1998
607
608=over 4
609
610=item *
611
612Changed startperl to #!/PERL/PUB/perl so that Perl will recognize
613scripts more easily and efficiently.
b5ab5069 614
ab648d5e 615=back
b5ab5069 616
ab648d5e 617July 8, 1998
618
619=over 4
620
621=item *
622
623Updated to version 5.004_70 (internal developer release) which is now
624MPE-ready. The next public freeware release of Perl should compile
625"straight out of the box" on MPE. Note that this version of Perl/iX
626was strictly internal to me and never publicly released. Note that
627[21]BIND/iX is now required (well, the include files and libbind.a) if
628you wish to compile Perl/iX.
b5ab5069 629
ab648d5e 630=back
b5ab5069 631
ab648d5e 632November 6, 1997
633
634=over 4
635
636=item *
637
638Updated to version 5.004_04. No changes in MPE-specific functionality.
b5ab5069 639
ab648d5e 640=back
b5ab5069 641
ab648d5e 642October 16, 1997
643
644=over 4
645
646=item *
647
648Added Demos section to the Perl/iX home page so you can see some
649sample Perl applications running on my 3000.
b5ab5069 650
ab648d5e 651=back
b5ab5069 652
ab648d5e 653October 3, 1997
654
655=over 4
656
657=item *
658
659Added System Requirements section to the Perl/iX home page just so the
660prerequisites stand out more. Various other home page tweaks.
b5ab5069 661
ab648d5e 662=back
b5ab5069 663
ab648d5e 664October 2, 1997
665
666=over 4
667
668=item *
669
670Initial public release.
b5ab5069 671
ab648d5e 672=back
b5ab5069 673
ab648d5e 674September 1997
675
676=over 4
677
678=item *
679
680Porting begins.
681
682=back
b5ab5069 683
a83b6f46 684=head1 AUTHOR
b5ab5069 685
ab648d5e 686Mark Bixby, mark@bixby.org
687