Commit | Line | Data |
615d1a09 |
1 | Current state of the patches here is with respect to perl5.002b1d ;-). |
2 | |
3 | ======================================================== |
4 | |
5 | The OS/2 patchkit was submitted by ilya@math.ohio-state.edu. I have |
6 | applied some parts that I suspect won't cause any problems. |
7 | Others do things that I haven't had time to fully consider. |
8 | |
9 | Still other patches included here should perhaps be integrated with the |
10 | metaconfig package that generates Configure. |
11 | |
12 | Andy Dougherty <doughera@lafcol.lafayette.edu> |
13 | |
14 | ======================================================== |
15 | |
16 | Notes on the patch: |
17 | ~~~~~~~~~~~~~~~~~~~ |
18 | patches should be applied as |
19 | patch -p0 <..... |
20 | All the diff.* files and POSIX.mkfifo should be applied. |
21 | |
22 | Additional files are available on |
23 | ftp://ftp.math.ohio-state.edu/pub/users/ilya/os2 |
24 | including patched pdksh and gnumake, needed for build. |
25 | |
26 | |
27 | Target: |
28 | ~~~~~~~ |
29 | |
30 | This is not supposed to make a perfect Perl on OS/2. This patch is |
31 | concerned only with perfect _build_ of Perl on OS/2. Some good |
32 | features from Andreas Kaiser port missed this port. However, most of |
33 | the features are available in different form. |
34 | |
35 | !!! Note that [gs]etpriority functions in this port are compatible |
36 | !!! with *nix, not with ak's port!!! |
37 | |
38 | The priorities are absolute, go from 32 to -95, lower is quickier. 0 |
39 | is default, |
40 | |
41 | Notes on build on OS/2: |
42 | ~~~~~~~~~~~~~~~~~~~~~~~ |
43 | The change of C code in this patch is based on the ak port of 5.001+. |
44 | |
45 | a) Make sure your sort is not the broken OS/2 one, and that you have /tmp |
46 | on the build partition. |
47 | |
48 | b) when extracting perl5.*.tar.gz you need to extract perl5.*/Configure |
49 | separately, since by default perl5.001m/configure may overwrite it; |
50 | like this: |
51 | tar vzxf perl5.004.tar.gz --case-sensitive perl5.004/Configure |
52 | |
53 | c) Necessary manual intervention when compiling on OS/2: |
54 | |
55 | Need to put perl.dll on LIBPATH after it is created. |
56 | |
57 | d) Compile summary: |
58 | ~~~~~~~~~~~~~~~ |
59 | !!! At the end of this README is independent description of the build |
60 | !!! process by Rocco Caputo. |
61 | |
62 | # Look for hints/os2.sh and correct what is different on your system |
63 | # I have rather spartan configuration. |
64 | |
65 | # Prefix means where to install: |
66 | sh Configure -des -D prefix=f:/perl5.005 |
67 | # Ignore the message about missing `ln', and about `c' option |
68 | # to tr. |
69 | make |
70 | # Will probably die after build of miniperl (unless you have DLL |
71 | # from previous compile). Need to move DLL where it belongs |
72 | # |
73 | # Somehow with 5.002b3 I needed to type another make after pod2man |
74 | make |
75 | # some warnings in POSIX.c |
76 | make test |
77 | # some tests fail, 9 or 10 on my system (see the list at end). |
78 | # |
79 | # before this you should create subdirs bin and lib in the |
80 | # prefix directory (f:/perl5.005 above): |
81 | # |
82 | # To run finer tests, cd t && perl harness |
83 | make install |
84 | |
85 | e) At the end of August GNU make and pdksh were too buggy for compile. |
86 | Both maintainers have patches that make it possible to compile perl. |
87 | The binaries are included in |
88 | ftp://ftp.math.ohio-state.edu/pub/users/ilya/os2 |
89 | patches are available too. |
90 | Note that the pdksh5.2.4 broke builds with -Zexe option because of a |
91 | changed order of executable extensions. A patch is sent to |
92 | maintainer. The version 5.2.5alpha was OK for the build, |
93 | |
94 | !!!!!!!!!!!!!!!!! |
95 | If you see that some '/' became '\' in pdksh 5.2.3, you did not apply |
96 | my patches! |
97 | Same with segfaults in Make 3.74. |
98 | !!!!!!!!!!!!!!!!! |
99 | |
100 | Problems reported: |
101 | |
102 | a) one of the latest tr is broken, get an old one :-( |
103 | 1.11 works. (On compuserver?) |
104 | b) You need a link386. |
105 | c) Get rid of invalid perl.dll on your LIBPATH. |
106 | |
107 | Note the EMX does not support en_us locale (most nobody does ;-). Some |
108 | TCP/IP update could have installed it to your config.sys. You need to |
109 | delete it until EMX is updated to support this newest discovery by IBM. |
110 | |
111 | |
112 | Send comments to ilya@math.ohio-state.edu. |
113 | |
114 | ====================================================== |
115 | Requires 0.9b (well, provision are made to make it build under 0.9a6, |
116 | but they are not tested, please inform me on success). |
117 | (earlier than 0.9b ttyname was not present, it is hard to maintain this |
118 | difference automatically, though I try). |
119 | ====================================================== |
120 | |
121 | Building with a.out style is supported by the `perl_' target of make. |
122 | Dynamic extensions are not possible with perl_.exe, since boot code |
123 | should return the retvalue on stack, the address of which is not known |
124 | to the extension. |
125 | |
126 | The reason why compiling with a.out style executables leads to problems |
127 | with dynamic extensions is: |
128 | a) OS/2 does not export symbols from executables; |
129 | b) Thus if extension needs to import symbols from an application |
130 | the symbols for the application should reside in a .dll. |
131 | c) You cannot export data from a .dll compiled with a.out style. |
132 | On the other hand, aout-style compiled extension enjoys all the |
133 | (dis)advantages of fork(). |
134 | |
135 | Check A.OUT compile with the following make targets: |
136 | |
137 | aout_test |
138 | aout_install |
139 | aout_clean |
140 | |
141 | ====================================================== |
142 | Tests which fail with OMF compile: |
143 | |
144 | io/fs.t: 2-5, 7-11, 18 as they should. |
145 | io/pipe: all, since open("|-") is not working (works with perl_.exe). |
146 | lib/"all the dbm".t: 1 test should fail (file permission). |
147 | op/fork all fail, as they should (except with perl_.exe) |
148 | op/stat 3 20 35 as they should, 39 (-t on /dev/null) ???? Sometimes 4 |
149 | - timing problem ???? |
150 | |
151 | Sometimes I have seen segfault in socket ????, only if run with Testing tools. |
152 | |
153 | A lot of `bad free'... in databases, bug in DB confirmed on other |
154 | platforms. |
155 | |
156 | Fail: Total 30 subtests (if stat:4 fails) in 10 scripts (one of 10 |
157 | is socket, which runs OK standalone). With newer configs I could not |
158 | reproduce most the crashes. |
159 | |
160 | ======================================================= |
161 | |
162 | Changes to calls to external programs: |
163 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Due to a popular demand the perl |
164 | external program calling has been changed. _If_ perl needs to call an |
165 | external program _via shell_, the X:/bin/sh.exe will be called. The |
166 | name of the shell is not overridable, except the drive letter. |
167 | |
168 | Thus means that you need to pickup some copy of a sh.exe as well (I use one |
169 | from pdksh). The drive X: above is set up automatically during the |
170 | build, is settable in runtime from $ENV{PERL_SH_DRIVE}. |
171 | |
172 | Reasons: a consensus on perl5-porters was that perl should use one |
173 | non-overridable shell per platform. The obvious choices for OS/2 are cmd.exe |
174 | and sh.exe. Having perl build itself would be impossible with cmd.exe as |
175 | a shell, thus I picked up sh.exe. Thus assures almost 100% compatibility |
176 | with the scripts coming from *nix. |
177 | |
178 | Disadvantages: sh.exe calls external programs via fork/exec, and there is |
179 | _no_ functioning exec on OS/2. exec is emulated by EMX by asyncroneous call |
180 | while the caller waits for child completion (to pretend that pid did |
181 | not change). This means that 1 _extra_ copy of sh.exe is made active via |
182 | fork/exec, which may lead to some resources taken from the system. |
183 | |
184 | The long-term solution proposed on p5-p is to have a directive |
185 | use OS2::Cmd; |
186 | which will override system(), exec(), ``, and open(,' |'). With current |
187 | perl you may override only system(), readpipe() - the explicit version |
188 | of ``, and maybe exec(). The code will substitute a one-argument system |
189 | by CORE::system('cmd.exe', '/c', shift). |
190 | |
191 | If you have some working code for OS2::Cmd.pm, please send it to me, |
192 | I will include it into distribution. I have no need for such a module, so |
193 | cannot test it. |
194 | |
195 | =================================================== |
196 | |
197 | OS/2 extensions |
198 | ~~~~~~~~~~~~~~~ |
199 | Since binaries cannot go into perl distribution, no extensions are |
200 | included. They are available in .../os2/ilyaz directory of CPAN, as |
201 | well as in my directory |
202 | ftp://ftp.math.ohio-state.edu/pub/users/ilya/os2 |
203 | |
204 | I include 3 extensions by Andread Kaiser, OS2::REXX, OS2::UPM, and OS2::FTP, |
205 | into my ftp directory, mirrored on CPAN. I made |
206 | some minor changes needed to compile them by standard tools. I cannot |
207 | test UPM and FTP, so I will appreciate your feedback. Other extensions |
208 | there are OS2::ExtAttribs, OS2::PrfDB for tied access to EAs and .INI |
209 | files - and maybe some other extensions at the time you read it. |
210 | |
211 | Note that OS2 perl defines 2 pseudo-extension functions |
212 | OS2::Copy::copy and DynaLoader::mod2fname. |
213 | |
214 | The -R switch of older perl is deprecated. If you need to call a REXX code |
215 | which needs access to variables, include the call into a REXX compartment |
216 | created by |
217 | REXX_call {...block...}; |
218 | |
219 | Two new functions are supported by REXX code, |
220 | REXX_eval 'string'; |
221 | REXX_eval_with 'string', REXX_function_name => \&perl_sub_reference; |
222 | |
223 | If you have some other extensions you want to share, send the code to me. |
224 | Two jump to mind: tied access to EA's, and tied access to system databases. |
225 | |
226 | ================================================================== |
227 | == == |
228 | == User report [my comments in brackets, IZ] == |
229 | == == |
230 | ================================================================== |
231 | |
232 | Starting in x:/usr/src, using 4OS2/32 2.5 as the command interpreter on |
233 | OS/2 2.30 with FixPak-17. DAX is installed, but this shouldn't be a |
234 | factor. Drive X is a TVFS virtual drive pointing to several physical |
235 | HPFS drives. |
236 | |
237 | >>> Make sure that no copies or perl are currently running. Miniperl |
238 | may fail during the build because it will find an older version |
239 | of perl.dll loaded in memory. |
240 | |
241 | Close any running perl scripts. |
242 | Shut down anything that might run perl scripts, like cron. |
243 | `emxload -l` to check for loaded versions of perl. |
244 | `emxload -u perl.exe` to unload them. |
245 | |
246 | >>> Pre-load some common utilities: |
247 | |
248 | emxload -e sh.exe make.exe ls.exe tr.exe id.exe sed.exe |
249 | SET GCCLOAD=30 (number of minutes to hold the compiler) |
250 | [grep egrep fgrep cat rm uniq basename uniq sort - are not bad too.] |
251 | The theory is that it's faster to demand-load the development tools |
252 | from virtual memory than it is to re-load and re-link them all the |
253 | time. This is definitely true with my system because swapfile.dat |
254 | is on a faster drive than my development environment. |
255 | |
256 | ls, tr, and id represent the GNU file, text, and shell utilities. |
257 | These may not be needed, but it makes sure that their respective |
258 | DLLs are in memory. |
259 | |
260 | >>> Unpack the perl 5_002_01 archive onto an HPFS partition. |
261 | |
262 | tar vxzf perl5_002_01.tar-gz |
263 | cd perl5.002_01 |
264 | |
265 | [Do not forget to extract Configure as described above.] |
266 | |
267 | >>> Read the README, keeping a copy open in another session for reference. |
268 | |
269 | start /c /fg less os2/README |
270 | |
271 | >>> Apply the OS/2 patches included with 5.002_01, as per the README. |
272 | |
273 | for %m in (os2\diff.*) patch -p0 < %m |
274 | patch -p0 < os2\POSIX.mkfifo |
275 | |
276 | [The patch below is already applied.] |
277 | |
278 | >>> You may need to apply this patch if you plan to run a non-standard |
279 | Configure (that is, if you defy the README). This patch will ensure |
280 | that Makefile inherits the libraries specified during Configure. |
281 | People running standard perl builds can probably ignore this patch. |
282 | |
283 | *** os2\Makefile.SHs Mon Mar 25 02:05:00 1996 |
284 | --- os2\Makefile.SHs.new Fri May 24 10:37:10 1996 |
285 | *************** |
286 | *** 9,15 **** |
287 | emximp -o perl.imp perl5.def |
288 | |
289 | perl.dll: $(obj) perl5.def perl$(OBJ_EXT) |
290 | ! $(LD) $(LDDLFLAGS) -o $@ perl$(OBJ_EXT) $(obj) -lsocket perl5.def |
291 | |
292 | perl5.def: perl.linkexp |
293 | echo "LIBRARY 'Perl' INITINSTANCE TERMINSTANCE" > $@ |
294 | --- 9,15 ---- |
295 | emximp -o perl.imp perl5.def |
296 | |
297 | perl.dll: $(obj) perl5.def perl$(OBJ_EXT) |
298 | ! $(LD) $(LDDLFLAGS) -o $@ perl$(OBJ_EXT) $(obj) $(libs) perl5.def |
299 | |
300 | perl5.def: perl.linkexp |
301 | echo "LIBRARY 'Perl' INITINSTANCE TERMINSTANCE" > $@ |
302 | *************** |
303 | *** 49,55 **** |
304 | cat perl.exports perl.map | sort | uniq -d | sed -e 's/\w\+/ "\0"/' > perl.linkexp |
305 | |
306 | perl.map: $(obj) perl$(OBJ_EXT) miniperlmain$(OBJ_EXT) |
307 | ! $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o dummy.exe miniperlmain$(OBJ_EXT) perl$(OBJ_EXT) $(obj) -lsocket -lm -Zmap -Zlinker /map |
308 | awk '{if ($$3 == "") print $$2}' <dummy.map | sort | uniq > perl.map |
309 | rm dummy.exe dummy.map |
310 | |
311 | --- 49,55 ---- |
312 | cat perl.exports perl.map | sort | uniq -d | sed -e 's/\w\+/ "\0"/' > perl.linkexp |
313 | |
314 | perl.map: $(obj) perl$(OBJ_EXT) miniperlmain$(OBJ_EXT) |
315 | ! $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o dummy.exe miniperlmain$(OBJ_EXT) perl$(OBJ_EXT) $(obj) $(libs) -Zmap -Zlinker /map |
316 | awk '{if ($$3 == "") print $$2}' <dummy.map | sort | uniq > perl.map |
317 | rm dummy.exe dummy.map |
318 | |
319 | >>> Apply the patches from Ilya's perl5.002_01 binary distribution: |
320 | |
321 | touch os2/dlfcn.h os2/dl_os2.c |
322 | patch -p1 < f:\perllib\README.fix1 |
323 | |
324 | >>> Run Configure. Most people can run it by following the README: |
325 | |
326 | sh Configure -des -D prefix=f:/usr/local |
327 | |
328 | Advanced perl users (experienced C programmers, recommended) can run |
329 | the interactive Configure and answer the questions. When in doubt |
330 | about an answer, check the EMX headers and documentation. Pick the |
331 | default answer if that doesn't help: |
332 | |
333 | sh Configure |
334 | |
335 | [Yet more advanced users just specify the answers on the command line |
336 | of Configure, like I did with prefix.] |
337 | |
338 | Note: You may need to wrap an answer in quotes if it contains |
339 | spaces. For example, "-lsocket -lm". |
340 | |
341 | Note: If you want to add some options to a long default, you can |
342 | use $* to include the default in your answer: "$* -DDEBUGGING". |
343 | |
344 | Configure warnings and errors, and possible work-arounds: |
345 | |
346 | I don't know where 'ln' is.... |
347 | (ignored; OS/2 doesn't have a ln command) |
348 | |
349 | nm didn't seem to work right. Trying emxomfar instead... |
350 | (nothing to worry about) |
351 | |
352 | The recommended value for $d_shrplib on this machine was "define"! |
353 | (kept the recommended value: y) |
354 | |
355 | Directory f:/usr/lib/perl5/os2/5.00201/CORE doesn't exist. |
356 | (created the directory from another window with |
357 | \usr\bin\mkdir -p f:/usr/lib/perl5/os2/5.00201/CORE |
358 | and then answered: y. Your directory may look different.) |
359 | |
360 | [Ignore this as well, install script will create it for you.] |
361 | |
362 | The recommended value for $i_dlfcn on this machine was "define"! |
363 | (kept the recommended value: y) |
364 | |
365 | The recommended value for $d_fork on this machine was "undef"! |
366 | (kept the recommended value: y) |
367 | |
368 | Figuring out the flag used by open() for non-blocking I/O... |
369 | Seems like we can use O_NONBLOCK. |
370 | This seems to be used for informative purposes only. |
371 | The errors that follow this (including a SIGPIPE) don't seem |
372 | to affect perl at all. These were safely ignored. |
373 | |
374 | What pager is used on your system? [/usr/ucb/more] |
375 | Had to answer "/usr/bin/less.exe" because Configure wants a |
376 | leading / (unix full path). Need to edit config.sh later with |
377 | the real full path to the pager, including the drive letter. |
378 | |
379 | [Apparently this setting is never used, so it is safe to ignore it.] |
380 | |
381 | Hmm... F:/USR/BIN/sed: Unterminated `s' command |
382 | Perl built fine even with this error, so it seems safe to |
383 | ignore. |
384 | |
385 | Things I did different from the defaults. Most (if not all) of these |
386 | are optional changes. They're listed here to show how good Configure |
387 | is at detecting the system setup. |
388 | |
389 | [I add the options to put it on command line of Configure, see below.] |
390 | |
391 | Selected 'none' for the man1 location. |
392 | (I prefer the pod2html version.) |
393 | [-D man1dir=none] |
394 | Selected 'none' for the man3 location. |
395 | (I prefer the pod2html version.) |
396 | [-D man3dir=none] |
397 | Changed the hostname and domain. |
398 | (I wanted to override a dynamic PPP address. This only |
399 | matters if other people will be using your perl build.) |
400 | [-D myhostname=my_host_name -D mydomain=.foo.org] |
401 | Fixed the e-mail address. |
402 | (Put in a known working e-mail address. This only matters |
403 | if other people will be using your perl build.) |
404 | [-D cf_email=root@myhostname.uucp] |
405 | Added some directories to the library search path. |
406 | [-D "libpth=f:/emx/lib/st f:/emx/lib"] |
407 | Added -g to the optimizer/debugger flags. |
408 | [-D optimize=-g] |
409 | Added "-lgdbm -ldb -lcrypt -lbsd" to the additional libraries. |
410 | [ -D "libs=-lsocket -lcrypt -lgdbm" |
411 | the rest of libraries will not be used] |
412 | |
413 | >>> Advanced users may want to edit config.sh when prompted by Configure. |
414 | Most (all?) of these changes aren't really necessary: |
415 | |
416 | d_getprior='define' |
417 | d_setprior='define' |
418 | (getpriority and setpriority are included in os2.c, but |
419 | Configure doesn't know to look there.) |
420 | [fixed already] |
421 | pager='f:/usr/bin/less.exe' |
422 | (Correcting Configure's insistence on a leading slash.) |
423 | bin_sh='f:/usr/bin/sh.exe' |
424 | (If Configure detects sh.exe somewhere else first. Example: |
425 | it saw sh.exe at /bin/sh.exe on my TVFS drive, but I want |
426 | perl to look for it on the physical F drive.) |
427 | aout_ccflags='... existing flags... -DDEBUGGING' |
428 | aout_cppflags='... existing flags... -DDEBUGGING' |
429 | (If you want to include DEBUGGING for the aout version.) |
430 | [Do not do it, -D optimize=-g will automatically add these flags.] |
431 | |
432 | >>> Allow Configure to make the build scripts. |
433 | |
434 | >>> Allow Configure to run `make depend`. Ignore the following warning: |
435 | |
436 | perl.h:861: warning: `DEBUGGING_MSTATS' redefined |
437 | [corrected now] |
438 | |
439 | >>> Rename any existing perl.dll, preventing anything from loading it and |
440 | saving a known working copy in case something goes wrong: |
441 | |
442 | mv /usr/lib/perl.dll /usr/lib/ilya-perl.dll |
443 | |
444 | >>> Run `make`, and ignore the following warnings: |
445 | |
446 | perl.h:861: warning: `DEBUGGING_MSTATS' redefined |
447 | [corrected now] |
448 | invalid preprocessing directive name |
449 | emxomf warning: Cycle detected by make_type |
450 | LINK386 : warning L4071: application type not specified; assuming WINDOWCOMPAT |
451 | Warning (will try anyway): No library found for -lposix |
452 | Warning (will try anyway): No library found for -lcposix |
453 | POSIX.c:203: warning: `mkfifo' redefined |
454 | POSIX.c:4603: warning: assignment makes pointer from integer without a cast |
455 | |
456 | >>> If `make` dies while "Making DynaLoader (static)", you'll need to |
457 | put miniperl in the OS/2 paths. This step is only necessary if `make` |
458 | can't find miniperl: |
459 | [I would be interested if somebody confirmes this.] |
460 | |
461 | cp perl.dll /usr/lib (where /usr/lib is in your LIBPATH) |
462 | cp miniperl.exe /usr/bin (where /usr/bin is in your PATH) |
463 | make (ignore the errors in the previous step) |
464 | |
465 | This should run to completion. |
466 | |
467 | >>> Test the build: |
468 | |
469 | make test |
470 | |
471 | These tests fail: |
472 | |
473 | io/fs..........FAILED on test 2 |
474 | |
475 | "OS/2 is not unix". Test 2 checks the link() command, which |
476 | is not supported by OS/2. |
477 | |
478 | io/pipe........f:/usr/bin/sh.exe: -c requires an argument |
479 | f:/usr/bin/sh.exe: -c requires an argument |
480 | The Unsupported function fork function is unimplemented at |
481 | io/pipe.t line 26. |
482 | FAILED on test 1 |
483 | |
484 | More "OS/2 is not unix" errors. Read ahead to find out |
485 | why fork() fails. |
486 | |
487 | op/exec........FAILED on test 4 |
488 | |
489 | if (system "true") {print "not ok 4\n";} else \ |
490 | {print "ok 4\n";} |
491 | |
492 | This fails for me, but changing it to read like this works: |
493 | |
494 | if (system '\usr\bin\true.cmd') {print "not ok 4\n";} \ |
495 | else {print "ok 4\n";} |
496 | |
497 | So you can count this as another "OS/2 is not unix". |
498 | |
499 | op/fork........The Unsupported function fork function is \ |
500 | unimplemented at op/fork.t line 8. |
501 | FAILED on test 1 |
502 | |
503 | The dynamically-loaded version of perl currently doesn't |
504 | support fork(). This is a known behavior of EMX. |
505 | |
506 | op/magic....... |
507 | Process terminated by SIGINT |
508 | ok |
509 | |
510 | The test passed even with the SIGINT message. I don't |
511 | know why, but I won't argue. |
512 | |
513 | op/stat........ls: /dev: No such file or directory |
514 | f:/usr/bin/sh.exe: ln: not found |
515 | ls: perl: No such file or directory |
516 | FAILED on test 3 |
517 | |
518 | "OS/2 is not unix". We don't have the ln command. |
519 | |
520 | lib/anydbm.....Bad free() ignored at lib/anydbm.t line 51. |
521 | Bad free() ignored at lib/anydbm.t line 51. |
522 | Bad free() ignored at lib/anydbm.t line 51. |
523 | Bad free() ignored during global destruction. |
524 | Bad free() ignored during global destruction. |
525 | Bad free() ignored during global destruction. |
526 | FAILED on test 2 |
527 | |
528 | Test 2 looks at the file permissions for a database. "OS/2 |
529 | is not unix" so the permissions aren't exactly what this test |
530 | expects. |
531 | |
532 | lib/db-btree...Bad free() ignored at lib/db-btree.t line 109. |
533 | Bad free() ignored at lib/db-btree.t line 221. |
534 | Bad free() ignored at lib/db-btree.t line 337. |
535 | Bad free() ignored at lib/db-btree.t line 349. |
536 | Bad free() ignored at lib/db-btree.t line 349. |
537 | Bad free() ignored at lib/db-btree.t line 399. |
538 | Bad free() ignored at lib/db-btree.t line 400. |
539 | Bad free() ignored at lib/db-btree.t line 401. |
540 | FAILED on test 20 |
541 | |
542 | Another file permissions test fails. |
543 | |
544 | lib/db-hash....Bad free() ignored at lib/db-hash.t line 101. |
545 | Bad free() ignored at lib/db-hash.t line 101. |
546 | Bad free() ignored at lib/db-hash.t line 101. |
547 | Bad free() ignored at lib/db-hash.t line 239. |
548 | Bad free() ignored at lib/db-hash.t line 239. |
549 | Bad free() ignored at lib/db-hash.t line 239. |
550 | Bad free() ignored at lib/db-hash.t line 253. |
551 | Bad free() ignored at lib/db-hash.t line 253. |
552 | Bad free() ignored at lib/db-hash.t line 253. |
553 | FAILED on test 16 |
554 | |
555 | Another file permissions test fails. |
556 | |
557 | lib/db-recno...Bad free() ignored at lib/db-recno.t line 138. |
558 | Bad free() ignored at lib/db-recno.t line 138. |
559 | FAILED on test 18 |
560 | |
561 | Another file permissions test fails. |
562 | |
563 | lib/gdbm.......FAILED on test 2 |
564 | |
565 | Another file permissions test fails. |
566 | |
567 | lib/sdbm.......FAILED on test 2 |
568 | |
569 | Another file permissions test fails. |
570 | |
571 | Failed 11/94 tests, 88.30% okay. |
572 | |
573 | All of which are known differences with unix or documented |
574 | behaviors in EMX. I re-run the test with Ilya's version, |
575 | and the same tests fail. This new build is a success. |
576 | [Note that bad free() mentioned above are bugs in the Berkeley |
577 | DB. They just are more visible under OS/2 with perl free(), because of |
578 | "rigid" function name resolution. |
579 | To get finer tests, cd to ./t and run |
580 | perl harness |
581 | ] |
582 | |
583 | (Actually, Ilya's perl release fails an extra test because I don't |
584 | have sed in f:\emx.add. This shows how important it is to configure |
585 | and build perl yourself instead of grabbing pre-built binaries.) |
586 | [Hmm, should not happen... There is no mentions of full_sed under ./t |
587 | directory...] |
588 | |
589 | >>> Cross your fingers and install it: |
590 | |
591 | make install |
592 | |
593 | Warnings encountered and workarounds presented.: |
594 | |
595 | WARNING: You've never run 'make test'!!! (Installing anyway.) |
596 | (Lies! All lies! At least it still installs.) |
597 | |
598 | WARNING: Can't find libperl*.dll* to install into \ |
599 | f:/usr/lib/perl5/os2/5.00201/CORE. (Installing other things anyway.) |
600 | (Safe to ignore. The important one, libperl.lib, gets copied.) |
601 | |
602 | Couldn't copy f:/usr/bin/perl5.00201.exe to f:/usr/bin/perl.exe: \ |
603 | No such file or directory |
604 | cp /usr/bin/perl5.00201.exe /usr/bin/perl.exe |
605 | |
606 | Couldn't copy f:/usr/bin/perl.exe to /usr/bin/perl.exe: No such \ |
607 | file or directory |
608 | (I think this one is safe to ignore since the two directories |
609 | point to the same place.) |
610 | |
611 | >>> Laugh maniacally because you just built and installed your own copy |
612 | of perl, with all the paths set "just so" and with whatever little |
613 | psychotic modifications you've always wanted but were afraid to add. |
614 | |
615 | ----------------------------------------------------------------------------- |
616 | |
617 | Development tools and versions: |
618 | |
619 | EMX 0.9b with emxfix04 applied. |
620 | |
621 | `ls --version` reports: 'GNU file utilities 3.12' |
622 | `tr --version` reports: 'tr - GNU textutils 1.14' |
623 | `id --version` reports: 'id - GNU sh-utils 1.12' |
624 | |
625 | `sed --version` reports: 'GNU sed version 2.05' |
626 | `awk --version` reports: 'Gnu Awk (gawk) 2.15, patchlevel 6' |
627 | `grep --version` reports an illegal option and: 'GNU grep version 2.0' |
628 | (this includes egrep) |
629 | |
630 | `sort --version` reports: 'sort - GNU textutils 1.14' |
631 | `uniq --version` reports: 'uniq - GNU textutils 1.14' |
632 | `find --version` reports: 'GNU find version 4.1' |
633 | |
634 | KSH_VERSION='@(#)PD KSH v5.2.4 96/01/17' |
635 | (Ilya's patched version.) |
636 | |
637 | `make --version` reports: 'GNU Make version 3.74' |
638 | (Ilya's patched version.) |
639 | |
640 | `emxrev` reports: |
641 | EMX : revision = 42 |
642 | EMXIO : revision = 40 |
643 | EMXLIBC : revision = 40 |
644 | EMXLIBCM : revision = 43 |
645 | EMXLIBCS : revision = 43 |
646 | EMXWRAP : revision = 40 |
647 | |
648 | ----------------------------------------------------------------------------- |
649 | |
650 | Rocco |
651 | <troc@shadow.net> |
652 | |