Commit | Line | Data |
---|---|---|
1d84e8df JH |
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 JH |
6 | |
7 | ------------------------------------------------------------------------ | |
8 | ||
9 | What's New | |
10 | ||
203df805 MB |
11 | * July 15, 1998 |
12 | o Changed startperl to #!/PERL/PUB/perl so that Perl will recognize | |
13 | scripts more easily and efficiently. | |
1d84e8df JH |
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 MB |
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 JH |
21 | * November 6, 1997 |
22 | o Updated to version 5.004_04. No changes in MPE-specific | |
23 | functionality. | |
1d84e8df JH |
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 JH |
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 MB |
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 JH |
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 JH |
151 | Source code. |
152 | ||
153 | ------------------------------------------------------------------------ | |
154 | ||
155 | How to Compile Perl/iX | |
156 | ||
203df805 | 157 | 1. cd src/perl5.005 |
1d84e8df JH |
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 JH |
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 MB |
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 JH |
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 |