1PERLMPEIX(1) Perl Programmers Reference Guide PERLMPEIX(1)
2
3
4
6 README.mpeix - Perl/iX for HP e3000 MPE
7
9 http://www.bixby.org/mark/perlix.html
10 Perl language for MPE
11 Last updated January 12, 2006 @ 2100 UTC
12
14 This is a podified version of what used to be on the above-mentioned
15 web page, podified by Jarkko Hietaniemi 2001-Jan-01.
16
18 January 12, 2006
19
20 · Updated for perl-5.8.8 and perl-5.9.3 by Ken Hirsch.
21
22 Simplified the build process by using the MPEAUTOCONF functionality
23 in Mark Klein's ld.
24
25 If you build this from scratch, make sure you have a version of ld
26 which supports it. In the shell, type
27
28 ld --help
29 and look for AUTOCONF or MPEAUTOCONF near the bottom
30
31 or do this:
32 ld --help 2>&1 | grep AUTOCONF
33
34 If you see don't see AUTOCONF or MPEAUTOCONF, make sure you get a
35 new version.
36
37 You also do not have to use mpeix/relink after building, so the
38 recommend sequence is:
39
40 ./Configure -de
41
42 # or ./Configure -de -Dusedevel
43 # if you're building a development version
44
45 make
46 make test
47 # if you run this in a job, do "make test_notty"
48
49 make install
50
51 Be prepared for a wait. These take much longer on MPE/iX than on a
52 Unix system, because of a slow forking, mostly. On a lightly-
53 loaded HP3000 Series 979 running MPE/iX 7.5:
54
55 Configure: 1 hour
56 make: 1 hour 15 minutes
57 make test 1 hour 45 minutes
58
59 Various socket problems were fixed in mpeix.c.
60
61 Mark Klein provided a fixed sigsetjmp (that works with dynamic
62 libraries) in mpeix_setjmp.c
63
64 June 1, 2000
65
66 · Rebuilt to be compatible with mod_perl. If you plan on using
67 mod_perl, you MUST download and install this version of Perl/iX!
68
69 · uselargefiles="undef": not available in MPE for POSIX files yet.
70
71 · Now bundled with various add-on packages:
72
73 · libnet (as seen on CPAN)
74
75 · libwww-perl (LWP) which lets Perl programs behave like web
76 browsers:
77
78 · mod_perl (just the perl portion; the actual DSO will be
79 released soon with Apache/iX 1.3.12 from bixby.org). This
80 module allows you to write high performance persistent Perl
81 CGI scripts and all sorts of cool things.
82 (http://perl.apache.org/)
83
84 and much much more hiding under /PERL/PUB/.cpan/
85
86 · The CPAN module now works for automatic downloading and
87 installing of add-on packages:
88
89 1. export FTP_PASSIVE=1
90 2. perl -MCPAN -e shell
91 3. Ignore any terminal I/O related complaints!
92
93 (http://search.cpan.org/dist/CPAN/)
94
95 May 20, 2000
96
97 · Updated to version 5.6.0. Builds straight out of the box on
98 MPE/iX.
99
100 · Perl's getpwnam() function which had regressed to being
101 unimplemented on MPE is now implemented once again.
102
103 September 17, 1999
104
105 · Migrated from cccd.edu to bixby.org.
106
108 This is the official home page for the HP e3000 MPE/iX (
109 http://www.hp.com/go/e3000 ) port of the Perl scripting language (
110 http://www.perl.com/ ) which gives you all of the power of C, awk, sed,
111 and sh in a single language. Check here for the latest news,
112 implemented functionality, known bugs, to-do list, etc. Status reports
113 about major milestones will also be posted to the HP3000-L mailing list
114 ( http://www.lsoft.com/scripts/wl.exe?SL1=HP3000-L&H=RAVEN.UTC.EDU )
115 and its associated gatewayed newsgroup comp.sys.hp.mpe.
116
117 I'm doing this port because I can't live without Perl on the Unix
118 machines that I administer, and I want to have the same power available
119 to me on MPE.
120
121 Please send your comments, questions, and bug reports directly to me,
122 Mark Bixby ( http://www.bixby.org/mark/ ). Or just post them to
123 HP3000-L.
124
125 The platform I'm using to do this port is an HP 3000 957RX running
126 MPE/iX 6.0 and using the GNU gcc C compiler (
127 http://jazz.external.hp.com/src/gnu/gnuframe.html ).
128
129 The combined porting wisdom from all of my ports can be found in my
130 MPE/iX Porting Guide (http://www.bixby.org/mark/porting.html).
131
132 IMPORTANT NOTICE: Yes, I do work for the HP CSY R&D lab, but ALL of the
133 software you download from bixby.org is my personal freeware that is
134 NOT supported by HP.
135
137 · MPE/iX 5.5 or later. This version of Perl/iX does NOT run on MPE/iX
138 5.0 or earlier, nor does it run on "classic" MPE/V machines.
139
140 · If you wish to recompile Perl, you must install both GNUCORE and
141 GNUGCC from jazz
142 (http://jazz.external.hp.com/src/gnu/gnuframe.html).
143
144 · Perl/iX will be happier on MPE/iX 5.5 if you install the MPEKX40B
145 extended POSIX filename characters patch, but this is optional.
146
147 · Patch LBCJXT6A is required on MPE/iX 5.5 machines in order to
148 prevent Perl/iX from dying with an unresolved external reference to
149 _getenv_libc.
150
151 · If you will be compiling Perl/iX yourself, you will also need
152 Syslog/iX ( http://www.bixby.org/mark/syslogix.html ) and the
153 /BIND/PUB/include and /BIND/PUB/lib portions of BIND/iX (
154 http://www.bixby.org/mark/bindix.html ).
155
157 1. Download Perl using either FTP.ARPA.SYS or some other client
158
159 2. Extract the installation script
160
161 3. Edit the installation script
162
163 4. Run the installation script
164
165 5. Convert your *.a system archive libraries to *.sl shared libraries
166
167 Download Perl using FTP.ARPA.SYS from your HP 3000 (the preferred
168 method).....
169
170 :HELLO MANAGER.SYS
171 :XEQ FTP.ARPA.SYS
172 open ftp.bixby.org
173 anonymous
174 your@email.address
175 bytestream
176 cd /pub/mpe
177 get perl-5.6.0-mpe.tar.Z /tmp/perl.tar.Z;disc=2147483647
178 exit
179
180 .....Or download using some other generic web or ftp client (the
181 alternate method)
182
183 Download the following files (make sure that you use "binary mode" or
184 whatever client feature that is 8-bit clean):
185
186 · Perl from
187
188 http://www.bixby.org/ftp/pub/mpe/perl-5.6.0-mpe.tar.Z
189
190 or
191
192 ftp://ftp.bixby.org/pub/mpe/perl-5.6.0-mpe.tar.Z
193
194 · Upload those files to your HP 3000 in an 8-bit clean bytestream
195 manner to:
196
197 /tmp/perl.tar.Z
198
199 · Then extract the installation script (after both download methods)
200
201 :CHDIR /tmp
202 :XEQ TAR.HPBIN.SYS 'xvfopz /tmp/perl.tar.Z INSTALL'
203
204 · Edit the installation script
205
206 Examine the accounting structure creation commands and modify if
207 necessary (adding additional capabilities, choosing a non-system
208 volume set, etc).
209
210 :XEQ VI.HPBIN.SYS /tmp/INSTALL
211
212 · Run the installation script.
213
214 The accounting structure will be created and then all files will be
215 extracted from the archive.
216
217 :XEQ SH.HPBIN.SYS /tmp/INSTALL
218
219 · Convert your *.a system archive libraries to *.sl shared libraries
220
221 You only have to do this ONCE on your MPE/iX 5.5 machine in order
222 to convert /lib/lib*.a and /usr/lib/lib*.a libraries to their *.sl
223 equivalents. This step should not be necessary on MPE/iX 6.0 or
224 later machines because the 6.0 or later update process does it for
225 you.
226
227 :XEQ SH.HPBIN.SYS /PERL/PUB/LIBSHP3K
228
230 README
231 The file you're reading now.
232
233 INSTALL
234 Perl/iX Installation script.
235
236 LIBSHP3K
237 Script to convert *.a system archive libraries to *.sl shared
238 libraries.
239
240 PERL
241 Perl NMPRG executable. A version-numbered backup copy also exists.
242 You might wish to "ln -s /PERL/PUB/PERL /usr/local/bin/perl".
243
244 .cpan/
245 Much add-on source code downloaded with the CPAN module.
246
247 lib/
248 Perl libraries, both core and add-on.
249
250 man/
251 Perl man page documentation.
252
253 public_html/feedback.cgi
254 Sample feedback CGI form written in Perl.
255
256 src/perl-5.6.0-mpe
257 Source code.
258
260 1. cd src/perl-5.6.0-mpe
261
262 2. Read the INSTALL file for the official instructions
263
264 3. ./Configure -d
265
266 4. make
267
268 5. ./mpeix/relink
269
270 6. make test (expect approximately 15 out of 11306 subtests to fail,
271 mostly due to MPE not supporting hard links, UDP socket problems,
272 and handling exit() return codes improperly)
273
274 7. make install
275
276 8. Optionally create symbolic links that point to the Perl executable,
277 i.e. ln -s /PERL/PUB/PERL /usr/local/bin/perl
278
279 The summary test results from "cd t; ./perl -I../lib harness":
280
281 Failed Test Status Wstat Total Fail Failed List of failed
282 ---------------------------------------------------------------------------
283 io/fs.t 29 8 27.59% 2-5, 7-9, 11
284 io/openpid.t 10 1 10.00% 7
285 lib/io_sock.t 14 1 7.14% 13
286 lib/io_udp.t 7 2 28.57% 3, 5
287 lib/posix.t 27 1 3.70% 12
288 op/lex_assign.t 187 1 0.53% 13
289 op/stat.t 58 1 1.72% 3
290 15 tests and 94 subtests skipped.
291 Failed 7/236 test scripts, 97.03% okay. 15/11306 subtests failed, 99.87% okay.
292
294 Create your Perl script files with "#!/PERL/PUB/perl" (or an equivalent
295 symbolic link) as the first line. Use the chmod command to make sure
296 that your script has execute permission. Run your script!
297
298 Be sure to take a look at the CPAN module list (
299 http://www.cpan.org/CPAN.html ). A wide variety of free Perl software
300 is available. You can automatically download these packages by using
301 the CPAN module ( http://search.cpan.org/dist/CPAN/ ).
302
304 There some minor functionality issues to be aware of when comparing
305 Perl for Unix (Perl/UX) to Perl/iX:
306
307 · MPE gcc/ld doesn't properly support linking NMPRG executables
308 against NMXL dynamic libraries, so you must manually run
309 mpeix/relink after each re-build of Perl.
310
311 · Perl/iX File::Copy will use MPE's /bin/cp command to copy files by
312 name in order to preserve file attributes like file code.
313
314 · MPE (and thus Perl/iX) lacks support for setgrent(), endgrent(),
315 setpwent(), endpwent().
316
317 · MPE (and thus Perl/iX) lacks support for hard links.
318
319 · MPE requires GETPRIVMODE() in order to bind() to ports less than
320 1024. Perl/iX will call GETPRIVMODE() automatically on your behalf
321 if you attempt to bind() to these low-numbered ports. Note that
322 the Perl/iX executable and the PERL account do not normally have
323 CAP=PM, so if you will be bind()-ing to these privileged ports, you
324 will manually need to add PM capability as appropriate.
325
326 · MPE requires that you bind() to an IP address of zero. Perl/iX
327 automatically replaces the IP address that you pass to bind() with
328 a zero.
329
330 · MPE requires GETPRIVMODE() in order to setuid(). There are too
331 many calls to setuid() within Perl/iX, so I have not attempted an
332 automatic GETPRIVMODE() solution similar to bind().
333
335 None.
336
338 · Make setuid()/setgid() support work.
339
340 · Make sure that fcntl() against a socket descriptor is redirected to
341 sfcntl().
342
343 · Add support for Berkeley DB once I've finished porting Berkeley DB.
344
345 · Write an MPE XS extension library containing miscellaneous
346 important MPE functions like GETPRIVMODE(), GETUSERMODE(), and
347 sfcntl().
348
350 May 6, 1999
351
352 · Patch LBCJXT6A is required on MPE/iX 5.5 machines in order to
353 prevent Perl/iX from dying with an unresolved external reference to
354 _getenv_libc.
355
356 April 7, 1999
357
358 · Updated to version 5.005_03.
359
360 · The official source distribution once again compiles "straight out
361 of the box" for MPE.
362
363 · The current incarnation of the 5.5 POSIX filename extended
364 characters patch is now MPEKX40B.
365
366 · The LIBSHP3K *.a -> *.sl library conversion script is now included
367 as /PERL/PUB/LIBSHP3K.
368
369 November 20, 1998
370
371 · Updated to version 5.005_02.
372
373 · Fixed a DynaLoader bug that was unable to load symbols from
374 relative path name libraries.
375
376 · Fixed a .xs compilation bug where the mpeixish.sh include file
377 wasn't being installed into the proper directory.
378
379 · All bugfixes will be submitted back to the official Perl
380 developers.
381
382 · The current incarnation of the POSIX filename extended characters
383 patch is now MPEKXJ3A.
384
385 August 14, 1998
386
387 · The previous POSIX filename extended characters patch MPEKX44C has
388 been superseded by MPEKXB5A.
389
390 August 7, 1998
391
392 · The previous POSIX filename extended characters patch MPEKX76A has
393 been superseded by MPEKX44C.
394
395 July 28, 1998
396
397 · Updated to version 5.005_01.
398
399 July 23, 1998
400
401 · Updated to version 5.005 (production release). The public freeware
402 sources are now 100% MPE-ready "straight out of the box".
403
404 July 17, 1998
405
406 · Updated to version 5.005b1 (public beta release). The public
407 freeware sources are now 99.9% MPE-ready. By installing and
408 testing this beta on your own HP3000, you will be helping to insure
409 that the final release of 5.005 will be 100% MPE-ready and 100% bug
410 free.
411
412 · My MPE binary release is now extracted using my standard INSTALL
413 script.
414
415 July 15, 1998
416
417 · Changed startperl to #!/PERL/PUB/perl so that Perl will recognize
418 scripts more easily and efficiently.
419
420 July 8, 1998
421
422 · Updated to version 5.004_70 (internal developer release) which is
423 now MPE-ready. The next public freeware release of Perl should
424 compile "straight out of the box" on MPE. Note that this version
425 of Perl/iX was strictly internal to me and never publicly released.
426 Note that [21]BIND/iX is now required (well, the include files and
427 libbind.a) if you wish to compile Perl/iX.
428
429 November 6, 1997
430
431 · Updated to version 5.004_04. No changes in MPE-specific
432 functionality.
433
434 October 16, 1997
435
436 · Added Demos section to the Perl/iX home page so you can see some
437 sample Perl applications running on my 3000.
438
439 October 3, 1997
440
441 · Added System Requirements section to the Perl/iX home page just so
442 the prerequisites stand out more. Various other home page tweaks.
443
444 October 2, 1997
445
446 · Initial public release.
447
448 September 1997
449
450 · Porting begins.
451
453 Mark Bixby, http://www.bixby.org/mark/
454
455
456
457perl v5.12.4 2011-06-07 PERLMPEIX(1)