1 | Perl/iX for HP 3000 MPE |
---|
2 | |
---|
3 | http://www.cccd.edu/~markb/perlix.html |
---|
4 | Perl language for MPE |
---|
5 | Last updated July 15, 1998 @ 2030 UTC |
---|
6 | |
---|
7 | ------------------------------------------------------------------------ |
---|
8 | |
---|
9 | What's New |
---|
10 | |
---|
11 | * July 15, 1998 |
---|
12 | o Changed startperl to #!/PERL/PUB/perl so that Perl will recognize |
---|
13 | scripts more easily and efficiently. |
---|
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 |
---|
19 | released. Note that BIND/iX is now required (well, the include |
---|
20 | files and libbind.a) if you wish to compile Perl/iX. |
---|
21 | * November 6, 1997 |
---|
22 | o Updated to version 5.004_04. No changes in MPE-specific |
---|
23 | functionality. |
---|
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 |
---|
98 | get perl5.005.tar.Z /tmp/perl.tar.Z |
---|
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 | |
---|
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 |
---|
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. |
---|
150 | src/perl5.005 |
---|
151 | Source code. |
---|
152 | |
---|
153 | ------------------------------------------------------------------------ |
---|
154 | |
---|
155 | How to Compile Perl/iX |
---|
156 | |
---|
157 | 1. cd src/perl5.005 |
---|
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 | |
---|
184 | Create your Perl script files with "#!/PERL/PUB/perl" (or an equivalent |
---|
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 | |
---|
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. |
---|
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 |
---|