Commit | Line | Data |
1d84e8df |
1 | Perl/iX for HP 3000 MPE |
2 | |
3 | http://www.cccd.edu/~markb/perlix.html |
4 | Perl language for MPE |
203df805 |
5 | Last updated July 15, 1998 @ 2030 UTC |
1d84e8df |
6 | |
7 | ------------------------------------------------------------------------ |
8 | |
9 | What's New |
10 | |
203df805 |
11 | * July 15, 1998 |
12 | o Changed startperl to #!/PERL/PUB/perl so that Perl will recognize |
13 | scripts more easily and efficiently. |
1d84e8df |
14 | * July 8, 1998 |
15 | o Updated to version 5.004_70 (internal developer release) which is |
16 | now MPE-ready. The next public freeware release of Perl should |
17 | compile "straight out of the box" on MPE. Note that this version |
18 | of Perl/iX was strictly internal to me and never publicly |
203df805 |
19 | released. Note that BIND/iX is now required (well, the include |
20 | files and libbind.a) if you wish to compile Perl/iX. |
1d84e8df |
21 | * November 6, 1997 |
22 | o Updated to version 5.004_04. No changes in MPE-specific |
23 | functionality. |
1d84e8df |
24 | |
25 | ------------------------------------------------------------------------ |
26 | |
27 | Welcome |
28 | |
29 | This is the official home page for the HP 3000 MPE port of the Perl |
30 | scripting language which gives you all of the power of C, awk, sed, and sh |
31 | in a single language. Check here for the latest news, implemented |
32 | functionality, known bugs, to-do list, etc. Status reports about major |
33 | milestones will also be posted to the HP3000-L mailing list and its |
34 | associated gatewayed newsgroup comp.sys.hp.mpe. |
35 | |
36 | I'm doing this port because I can't live without Perl on the HPUX machines |
37 | that I administer for the Coast Community College District, and I want to |
38 | have the same power available to me on MPE. |
39 | |
40 | Please send your comments, questions, and bug reports directly to me, Mark |
41 | Bixby, by e-mailing to markb@cccd.edu. Or just post them to HP3000-L. You |
42 | can also telephone me at +1 714 438-4647 Monday-Friday 0815-1745 PDT |
43 | (1615-0145 UTC). |
44 | |
45 | The platform I'm using to do this port is an HP 3000 969KS200 running |
46 | MPE/iX 5.5 and using the gcc 2.8 compiler from |
47 | http://www.interex.org/sources/freeware.html. |
48 | |
49 | The combined porting wisdom from all of my ports can be found in my MPE/iX |
50 | Porting Guide. |
51 | |
52 | ------------------------------------------------------------------------ |
53 | |
54 | System Requirements |
55 | |
56 | * MPE/iX 5.5 or later. This version of Perl/iX does NOT run on MPE/iX |
57 | 5.0 or earlier, nor does it run on "classic" MPE/V machines. |
58 | * The Perl binary requires that you must have converted your NMRL |
59 | libraries in /lib/lib*.a and /usr/lib/lib*.a to NMXL libraries |
60 | /lib/lib*.sl and /usr/lib/lib*.sl via the LIBSHP3K script that comes |
61 | with the GNUCORE portion of the FREEWARE tape. |
62 | * If you wish to recompile Perl, you must install both GNUCORE and |
63 | GNUGCC from the FREEWARE tape. |
64 | * Perl/iX will be happier if you install the MPEKX76A additional POSIX |
65 | filename characters patch, but this is optional. |
66 | * If you will be compiling Perl/iX yourself, you will also need the |
67 | /BIND/PUB/include and /BIND/PUB/lib portions of BIND/iX. |
68 | |
69 | ------------------------------------------------------------------------ |
70 | |
71 | Demos |
72 | |
73 | Here is a brief selection of some sample Perl/iX uses: |
74 | |
75 | * A web feedback CGI form that lets a web browser user enter some data |
76 | and send e-mail to the person responsible for reading the feedback |
77 | comments. The CGI is written in Perl and requires Sendmail/iX. |
78 | |
79 | ------------------------------------------------------------------------ |
80 | |
81 | How to Obtain Perl/iX |
82 | |
83 | 1. Download Perl using either FTP.ARPA.SYS or some other client |
84 | 2. Extract the installation script |
85 | 3. Edit the installation script |
86 | 4. Run the installation script |
87 | |
88 | Download Perl using FTP.ARPA.SYS from your HP 3000 (the preferred |
89 | method)..... |
90 | |
91 | :HELLO MANAGER.SYS |
92 | :XEQ FTP.ARPA.SYS |
93 | open ftp.cccd.edu |
94 | anonymous |
95 | your@email.address |
96 | bytestream |
97 | cd /pub/mpe |
203df805 |
98 | get perl5.005.tar.Z /tmp/perl.tar.Z |
1d84e8df |
99 | exit |
100 | |
101 | .....Or download using some other generic web or ftp client (the alternate |
102 | method) |
103 | |
104 | Download the following files (make sure that you use "binary mode" or |
105 | whatever client feature that is 8-bit clean): |
106 | |
203df805 |
107 | * Perl from http://www.cccd.edu/ftp/pub/mpe/perl5.005.tar.Z or |
108 | ftp://ftp.cccd.edu/pub/mpe/perl5.005.tar.Z |
1d84e8df |
109 | |
110 | Upload those files to your HP 3000 in an 8-bit clean bytestream manner to: |
111 | |
112 | * /tmp/perl.tar.Z |
113 | |
114 | Then extract the installation script (after both download methods) |
115 | |
116 | :CHDIR /tmp |
117 | :XEQ TAR.HPBIN.SYS 'xvfopz /tmp/perl.tar.Z INSTALL' |
118 | |
119 | Edit the installation script |
120 | |
121 | Examine the accounting structure creation commands and modify if necessary |
122 | (adding additional capabilities, choosing a non-system volume set, etc). |
123 | |
124 | :XEQ VI.HPBIN.SYS /tmp/INSTALL |
125 | |
126 | Run the installation script |
127 | |
128 | The accounting structure will be created and then all files will be |
129 | extracted from the archive. |
130 | |
131 | :XEQ SH.HPBIN.SYS /tmp/INSTALL |
132 | |
133 | ------------------------------------------------------------------------ |
134 | |
135 | Distribution Contents Highlights |
136 | |
137 | README |
138 | The file you're reading now. |
139 | INSTALL |
140 | Perl/iX Installation script. |
141 | PERL |
142 | Perl NMPRG executable. A version-numbered backup copy also exists. |
143 | You might wish to "ln -s /PERL/PUB/PERL /usr/local/bin/perl". |
144 | lib/ |
145 | Perl libraries, both core and add-on. |
146 | man/ |
147 | Perl man page documentation. |
148 | public_html/feedback.cgi |
149 | Sample feedback CGI form written in Perl. |
203df805 |
150 | src/perl5.005 |
1d84e8df |
151 | Source code. |
152 | |
153 | ------------------------------------------------------------------------ |
154 | |
155 | How to Compile Perl/iX |
156 | |
203df805 |
157 | 1. cd src/perl5.005 |
1d84e8df |
158 | 2. Read the INSTALL file for the official instructions |
159 | 3. ./Configure |
160 | 4. make |
161 | 5. ./mpeix/relink |
162 | 6. make test (expect 31 out of 5899 subtests to fail, mostly due to MPE |
163 | not supporting hard links and handling exit() return codes improperly) |
164 | 7. make install |
165 | 8. Optionally create symbolic links that point to the Perl executable, |
166 | i.e. ln -s /usr/local/bin/perl /PERL/PUB/PERL |
167 | |
168 | The summary test results from "cd t; ./perl -I../lib harness": |
169 | |
170 | Failed Test Status Wstat Total Fail Failed List of failed |
171 | ------------------------------------------------------------------------------- |
172 | io/fs.t 26 8 30.77% 2-5, 7-9, 11 |
173 | io/pipe.t 12 2 16.67% 11-12 |
174 | lib/posix.t 18 1 5.56% 12 |
175 | op/die_exit.t 16 16 100.00% 1-16 |
176 | op/exec.t 8 2 25.00% 5-6 |
177 | op/stat.t 58 2 3.45% 3, 35 |
178 | Failed 6/183 test scripts, 96.72% okay. 31/5899 subtests failed, 99.47% okay. |
179 | |
180 | ------------------------------------------------------------------------ |
181 | |
182 | Getting Started with Perl/iX |
183 | |
203df805 |
184 | Create your Perl script files with "#!/PERL/PUB/perl" (or an equivalent |
1d84e8df |
185 | symbolic link) as the first line. Use the chmod command to make sure that |
186 | your script has execute permission. Run your script! |
187 | |
188 | If you want to use Perl to write web server CGI scripts, obtain and install |
189 | CGI.pm. Build CGI.pm and all other add-on modules below /PERL/PUB/src/. |
190 | |
191 | Be sure to take a look at the CPAN module list. A wide variety of free Perl |
192 | software is available. |
193 | |
194 | ------------------------------------------------------------------------ |
195 | |
196 | MPE/iX Implementation Considerations |
197 | |
198 | There some minor functionality issues to be aware of when comparing Perl |
199 | for Unix (Perl/UX) to Perl/iX: |
200 | |
201 | * MPE gcc/ld doesn't properly support linking NMPRG executables against |
202 | NMXL dynamic libraries, so you must manually run mpeix/relink after |
203 | each re-build of Perl. |
204 | * Perl/iX File::Copy will use MPE's /bin/cp command to copy files by |
205 | name in order to preserve file attributes like file code. |
206 | * MPE (and thus Perl/iX) lacks support for setgrent(), endgrent(), |
207 | setpwent(), endpwent(). |
208 | * MPE (and thus Perl/iX) lacks support for hard links. |
209 | * MPE requires GETPRIVMODE() in order to bind() to ports less than |
210 | 1024. Perl/iX will call GETPRIVMODE() automatically on your behalf if |
211 | you attempt to bind() to these low-numbered ports. Note that the |
212 | Perl/iX executable and the PERL account do not normally have CAP=PM, |
213 | so if you will be bind()-ing to these privileged ports, you will |
214 | manually need to add PM capability as appropriate. |
215 | * MPE requires that you bind() to an IP address of zero. Perl/iX |
216 | automatically replaces the IP address that you pass to bind() with a |
217 | zero. |
218 | * If you use Perl/iX fcntl() against a socket it will fail, because MPE |
219 | requires that you use sfcntl() instead. Perl/iX does not presently |
220 | support sfcntl(). |
221 | * MPE requires GETPRIVMODE() in order to setuid(). There are too many |
222 | calls to setuid() within Perl/iX, so I have not attempted an automatic |
223 | GETPRIVMODE() solution similar to bind(). |
224 | |
225 | ------------------------------------------------------------------------ |
226 | |
227 | Known Bugs Under Investigation |
228 | |
229 | * None |
230 | |
231 | ------------------------------------------------------------------------ |
232 | |
233 | To-Do List |
234 | |
235 | * Make setuid()/setgid() support work. |
236 | * Make sure that fcntl() against a socket descriptor is redirected to |
237 | sfcntl(). |
238 | * Add support for Berkeley DB once I've finished porting Berkeley DB. |
239 | * Write an MPE XS extension library containing miscellaneous important |
240 | MPE functions like GETPRIVMODE(), GETUSERMODE(), and sfcntl(). |
241 | |
242 | ------------------------------------------------------------------------ |
243 | |
244 | Change History |
245 | |
203df805 |
246 | * October 16, 1997 |
247 | o Added Demos section to the Perl/iX home page so you can see some |
248 | sample Perl applications running on my 3000. |
1d84e8df |
249 | * October 3, 1997 |
250 | o Added System Requirements section to the Perl/iX home page just |
251 | so the prerequisites stand out more. Various other home page |
252 | tweaks. |
253 | * October 2, 1997 |
254 | o Initial public release. |
255 | * September 1997 |
256 | o Porting begins. |
257 | |
258 | ------------------------------------------------------------------------ |
259 | |
260 | Mark Bixby, markb@cccd.edu |