10 Calls to external programs
12 Report from the battlefield on 5.002_01
16 patches should be applied as
18 All the diff.* files and POSIX.mkfifo should be applied.
20 Additional files are available on
21 ftp://ftp.math.ohio-state.edu/pub/users/ilya/os2
22 including patched pdksh and gnumake, needed for build.
24 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
25 IMPORTANT NOTE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
26 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
28 Note with the release 5.003_01 the dynamically loadable libraries
29 should be rebuilt. In particular, DLLs are now created with the names
30 which contain a checksum, thus allowing workaround for OS/2 scheme of
33 In particular, it is VERY IMPORTANT to have a correct perl.dll on
34 LIBPATH during build, otherwise DLLs with wrong names will be
35 created. Or have a perl.dll with the same naming convention for DLLs
36 (hopefully, it should not change any time soon), or remove it from
37 LIBPATH, add . to LIBPATH, wait until the build of DynaLoader fails,
38 and then move the built DLL into LIBPATH.
40 I also used this possibility to change perl linking type to -Zmt. It
41 means that Perl now uses multithreaded CRTDLL, so your extensions can
42 be multithreaded (note that the perl core is not thread-safe so far,
43 so make sure you access Perl from one thread only). In particular, it
44 is no longer needed to statically link X11_s.lib if you compile
47 This newer port includes
48 . numeric first argument to system(), see OS2::Process docs;
49 . modules OS2::Process, OS2::REXX, OS2::PrfDB, OS2::ExtAttrib.
50 . {get,set,end}*ent may work now (not checked)
51 (most of this merged from ak's port).
53 Note that static build of OS2::ExtAttrib fails some tests!
58 This is not supposed to make a perfect Perl on OS/2. This patch is
59 concerned only with perfect _build_ of Perl on OS/2. Some good
60 features from Andreas Kaiser port missed this port. However, most of
61 the features are available (possibly in different form).
63 !!! Note that [gs]etpriority functions in this port are compatible
64 !!! with *nix, not with ak's port!!!
66 The priorities are absolute, go from 32 to -95, lower is quickier. 0
71 This version of perl allows binary installation on another site. There
72 are two possibilities:
73 a) sh.exe is in the directory with the same name as on machine
74 where perl was compiled (f:/bin here), and perl library is installed
75 into the same directory as the built target (f:/perllib);
76 b) One of the above conditions is not true. Perl may be
77 informed about location of sh.exe via PERL_SH_DRIVE or PERL_SH_DIR
78 (see below). To relocate the perl library, one can
79 b1) either use the usual PERLLIB environment variable - but
80 you should deduce yourself which components should be put there, say,
85 in the directory of the perl library. Another problem with this is
86 that a module is missing, then perl will try to scan the builtin
87 directories nevertheless. If perl was intended to be installed on
88 f:/perllib, but your f: is a CDROM, then you may have some trouble.
89 b2) Best: binary edit perl.dll and perl_.exe (using perl
90 itself as a binary editor) to fix the paths. Note that the new paths
91 should be better no longer than the old.
92 b3) More convinient: set PERLLIB_PREFIX environment
93 variable. It should contain two components, separated by whitespace
94 and/or semicolon `;'. The first component is translated to the second
98 Perl library lookup path.
99 Say, if you install perllibrary into c:/lib/perl/ instead of
100 f:/perllib/, set it to
101 set PERLLIB_PREFIX=f:/perllib/;c:/lib/perl/
105 If your `man' is correctly installed, you should just add
106 x:/perllib/man directory to the end of MANPATH like this:
107 set MANPATH=c:/man;f:/perllib/man
108 After this you can access the docs like this:
111 man ExtUtils.MakeMaker
112 Note that dot is used as package separator for package documentation,
113 and as usual, sometimes you need to give the section - 3 above - to
114 avoid shadowing by the less(1) manpage.
116 Alternatively, you can build HTML docs by running
118 in x:/perllib/lib/pod directory.
120 Alternatively, you can build IPF source by running
122 in x:/perllib/lib/pod directory, and build (excellent! - best of perl
123 docs available!) .INF documentation by running
125 Move it on your BOOKSHELF path, and now you may inspect docs by
128 view perl keyword_to_see
130 Alternatively you may pick up precompiled HTML and .INF docs from the
131 net, as usual, .INF is available on CPAN/.../os2/ilyaz.
133 There are also _very_ good docs in TexInfo and Adobe PDF format.
135 Notes on build on OS/2:
136 ~~~~~~~~~~~~~~~~~~~~~~~
137 a) Make sure your sort is not the broken OS/2 one, and that you have /tmp
138 on the build partition. Make sure that your pdksh.exe, make.exe and
139 db.lib are OK (look elsewhere in this file).
141 b) when extracting perl5.*.tar.gz you need to extract perl5.*/Configure
142 separately, since by default perl5.001m/configure may overwrite it;
144 tar vzxf perl5.004.tar.gz --case-sensitive perl5.004/Configure
146 tar --case-sensitive -vzxf perl5.004.tar.gz perl5.004/Configure
148 c) Necessary manual intervention when compiling on OS/2:
150 Need to put perl.dll on LIBPATH after it is created.
154 !!! At the end of this README is independent description of the build
155 !!! process by Rocco Caputo.
157 # Look for hints/os2.sh and correct what is different on your system
158 # I have rather spartan configuration.
160 # Prefix means where to install:
161 sh Configure -des -D prefix=f:/perl5.005
162 # Note that you need to have /tmp/ ready.
164 # Ignore the message about missing `ln', and about `c' option
167 # Will probably die after build of miniperl (unless you have DLL
168 # from previous compile). Need to move DLL where it belongs
170 # Somehow with 5.002b3 I needed to type another make after pod2man
172 # some warnings in POSIX.c
174 # some tests fail, 9 or 10 on my system (see the list at end).
176 # before this you should create subdirs bin and lib in the
177 # prefix directory (f:/perl5.005 above):
179 # To run finer tests, cd t && perl harness
182 e) At the end of July 1996 GNU make was too buggy for compile.
183 The maintainer has the patch (for a year now) that make it possible to
184 compile perl. The binaries are included in
185 ftp://ftp.math.ohio-state.edu/pub/users/ilya/os2
186 patches are available too.
188 Note that the pdksh5.2.7 or later is required.
191 If you see that some '/' became '\' in pdksh, you use an old pdksh!
192 Same with segfaults in Make 3.76 (?) - use my patched verions.
195 f) As distributed the DB library db.a-db.lib is not suitable for
196 linking with -Zmt. A recompiled version must be available from my FTP
197 site in os2/db_mt.zip.
201 'errno' - unresolved external
202 it means you use a wrong db.lib.
207 a) one of the latest tr is broken, get an old one :-(
208 1.11 works. (On compuserver?)
209 b) You need a perlglob.exe and link386.
210 c) Get rid of invalid perl.dll on your LIBPATH.
213 Send comments to ilya@math.ohio-state.edu.
215 ======================================================
216 Requires 0.9b (well, provision are made to make it build under 0.9a6,
217 but they are not tested, please inform me on success).
218 (earlier than 0.9b ttyname was not present, it is hard to maintain this
219 difference automatically, though I try).
220 ======================================================
222 Building with a.out style is supported by the `perl_' target of make.
223 Dynamic extensions are not possible with perl_.exe, since boot code
224 should return the retvalue on the Perl stack, the address of which is
225 not known to the extension. Moreover: The build process for `perl_'
226 DOES NOT KNOW about dependencies, so you should make sure that
227 anything is up-to-date, say, by doing
231 The reason why compiling with a.out style executables leads to problems
232 with dynamic extensions is:
233 a) OS/2 does not export symbols from executables;
234 b) Thus if extension needs to import symbols from an application
235 the symbols for the application should reside in a .dll.
236 c) You cannot export data from a .dll compiled with a.out style.
237 On the other hand, aout-style compiled extension enjoys all the
238 (dis)advantages of fork().
240 ======================================================
242 If you need to run PM code from perl, you may use PM mode executable
243 perl__.exe. It is subject to restrictions specific to PM programs: it
244 will close the VIO window the moment any PM call is performed.
246 It is needed to run Perl/Tk (currently 7/96 - pre-alpha).
248 ======================================================
250 The reason why the executables are named perl_.exe and perl__.exe is
251 the following: Perl may parse #! lines in perl scripts to find out the
252 additional switches to enable. Thus there is a convention `What is a
253 perl executable - judging by name', and the above names conform to
256 ======================================================
259 with OMF compile (fork works - and all the related
260 test - with A.OUT compile):
262 io/fs.t: 2-5, 7-11, 18 as they should.
263 io/pipe: all, since open("|-") is not working (works with perl_.exe).
264 lib/"all the dbm".t: 1 test should fail (file permission).
265 lib/io_pipe io_sock, as they should: use fork.
266 op/fork all fail, as they should (except with perl_.exe)
267 op/stat 3 20 35 as they should, 39 (-t on /dev/null) ???? Sometimes 4
268 - timing problem ????
270 Sometimes I have seen segfault in socket ????, only if run with Testing tools.
272 A lot of `bad free'... in databases, bug in DB confirmed on other
273 platforms. You may disable it by setting PERL_BADFREE environment variable
276 Here is my result with OMF:
278 Test Status Wstat Total Fail Success List of failed
279 ------------------------------------------------------------------------------
280 io/fs.t 22 10 45.45% 2-5, 7-11, 18
281 io/pipe.t 1 256 8 ?? % ??
282 lib/anydbm.t 12 1 8.33% 2
283 lib/db-btree.t 86 1 1.16% 20
284 lib/db-hash.t 43 1 2.33% 16
285 lib/db-recno.t 35 1 2.86% 18
286 lib/io_pipe.t 2 512 6 ?? % ??
287 lib/io_sock.t 255 65280 5 ?? % ??
288 lib/sdbm.t 12 1 8.33% 2
289 op/exec.t 8 1 12.50% 5
290 op/fork.t 255 65280 2 ?? % ??
291 op/stat.t 56 4 7.14% 3, 20, 35, 39
292 Failed 12/104 test scripts, 88.46% okay. 41/2224 subtests failed, 98.16% okay.
296 Test Status Wstat Total Fail Failed List of failed
297 ------------------------------------------------------------------------------
298 io/fs.t 22 10 45.45% 2-5, 7-11, 18
299 lib/anydbm.t 12 1 8.33% 2
300 lib/db-btree.t 86 1 1.16% 20
301 lib/db-hash.t 43 1 2.33% 16
302 lib/db-recno.t 35 1 2.86% 18
303 lib/sdbm.t 12 1 8.33% 2
304 op/exec.t 8 1 12.50% 5
305 op/stat.t 56 4 7.14% 3, 20, 35, 39
306 Failed 8/104 test scripts, 92.31% okay. 20/2224 subtests failed, 99.10% okay.
308 Note that op/exec.5 fail because I do not have /bin/sh on this drive.
310 With newer configs I could not reproduce most the crashes. However,
311 after fixpak17 REXX variables acquire a trailing '\0' at end when go
312 through the variable pool (even if they had one), thus making some
315 =======================================================
317 Calls to external programs:
318 ~~~~~~~~~~~~~~~~~~~~~~~~~~
319 Due to a popular demand the perl external program calling has been
320 changed. _If_ perl needs to call an external program _via shell_, the
321 X:/bin/sh.exe will be called. The name of the shell is
322 overridable, as described below.
324 Thus means that you need to pickup some copy of a sh.exe as well (I use one
325 from pdksh). The drive X: above is set up automatically during the
326 build, is settable in runtime from $ENV{PERL_SH_DRIVE}. Another way to
327 change it is to set $ENV{PERL_SH_DIR} to be the directory in which
330 Reasons: a consensus on perl5-porters was that perl should use one
331 non-overridable shell per platform. The obvious choices for OS/2 are cmd.exe
332 and sh.exe. Having perl build itself would be impossible with cmd.exe as
333 a shell, thus I picked up sh.exe. Thus assures almost 100% compatibility
334 with the scripts coming from *nix.
336 Disadvantages: sh.exe calls external programs via fork/exec, and there is
337 _no_ functioning exec on OS/2. exec is emulated by EMX by asyncroneous call
338 while the caller waits for child completion (to pretend that pid did
339 not change). This means that 1 _extra_ copy of sh.exe is made active via
340 fork/exec, which may lead to some resources taken from the system.
342 The long-term solution proposed on p5-p is to have a directive
344 which will override system(), exec(), ``, and open(,' |'). With current
345 perl you may override only system(), readpipe() - the explicit version
346 of ``, and maybe exec(). The code will substitute a one-argument system
347 by CORE::system('cmd.exe', '/c', shift).
349 If you have some working code for OS2::Cmd.pm, please send it to me,
350 I will include it into distribution. I have no need for such a module, so
353 ===================================================
357 Since binaries cannot go into perl distribution, no extensions are
358 included. They are available in .../os2/ilyaz directory of CPAN, as
359 well as in my directory
360 ftp://ftp.math.ohio-state.edu/pub/users/ilya/os2
362 I include 3 extensions by Andread Kaiser, OS2::REXX, OS2::UPM, and OS2::FTP,
363 into my ftp directory, mirrored on CPAN. I made
364 some minor changes needed to compile them by standard tools. I cannot
365 test UPM and FTP, so I will appreciate your feedback. Other extensions
366 there are OS2::ExtAttribs, OS2::PrfDB for tied access to EAs and .INI
367 files - and maybe some other extensions at the time you read it.
369 Note that OS2 perl defines 2 pseudo-extension functions
370 OS2::Copy::copy and DynaLoader::mod2fname.
372 The -R switch of older perl is deprecated. If you need to call a REXX code
373 which needs access to variables, include the call into a REXX compartment
375 REXX_call {...block...};
377 Two new functions are supported by REXX code,
379 REXX_eval_with 'string', REXX_function_name => \&perl_sub_reference;
381 If you have some other extensions you want to share, send the code to
382 me. At least two are available: tied access to EA's, and tied access
385 ==================================================================
387 == User report [my comments in brackets, IZ] ==
389 == A web page: http://www.shadow.net/~troc/os2perl.html ==
391 ==================================================================
393 Starting in x:/usr/src, using 4OS2/32 2.5 as the command interpreter on
394 OS/2 2.30 with FixPak-17. DAX is installed, but this shouldn't be a
395 factor. Drive X is a TVFS virtual drive pointing to several physical
398 >>> Make sure that no copies or perl are currently running. Miniperl
399 may fail during the build because it will find an older version
400 of perl.dll loaded in memory.
402 Close any running perl scripts.
403 Shut down anything that might run perl scripts, like cron.
404 `emxload -l` to check for loaded versions of perl.
405 `emxload -u perl.exe` to unload them.
407 >>> Pre-load some common utilities:
409 emxload -e sh.exe make.exe ls.exe tr.exe id.exe sed.exe
410 SET GCCLOAD=30 (number of minutes to hold the compiler)
411 [grep egrep fgrep cat rm uniq basename uniq sort - are not bad too.]
412 The theory is that it's faster to demand-load the development tools
413 from virtual memory than it is to re-load and re-link them all the
414 time. This is definitely true with my system because swapfile.dat
415 is on a faster drive than my development environment.
417 ls, tr, and id represent the GNU file, text, and shell utilities.
418 These may not be needed, but it makes sure that their respective
421 >>> Unpack the perl 5_002_01 archive onto an HPFS partition.
423 tar vxzf perl5_002_01.tar-gz
426 [Do not forget to extract Configure as described above.]
428 >>> Read the README, keeping a copy open in another session for reference.
430 start /c /fg less os2/README
432 >>> Apply the OS/2 patches included with 5.002_01, as per the README.
434 for %m in (os2\diff.*) patch -p0 < %m
435 patch -p0 < os2\POSIX.mkfifo
437 [The patch below is already applied.]
439 >>> You may need to apply this patch if you plan to run a non-standard
440 Configure (that is, if you defy the README). This patch will ensure
441 that Makefile inherits the libraries specified during Configure.
442 People running standard perl builds can probably ignore this patch.
444 *** os2\Makefile.SHs Mon Mar 25 02:05:00 1996
445 --- os2\Makefile.SHs.new Fri May 24 10:37:10 1996
448 emximp -o perl.imp perl5.def
450 perl.dll: $(obj) perl5.def perl$(OBJ_EXT)
451 ! $(LD) $(LDDLFLAGS) -o $@ perl$(OBJ_EXT) $(obj) -lsocket perl5.def
453 perl5.def: perl.linkexp
454 echo "LIBRARY 'Perl' INITINSTANCE TERMINSTANCE" > $@
456 emximp -o perl.imp perl5.def
458 perl.dll: $(obj) perl5.def perl$(OBJ_EXT)
459 ! $(LD) $(LDDLFLAGS) -o $@ perl$(OBJ_EXT) $(obj) $(libs) perl5.def
461 perl5.def: perl.linkexp
462 echo "LIBRARY 'Perl' INITINSTANCE TERMINSTANCE" > $@
465 cat perl.exports perl.map | sort | uniq -d | sed -e 's/\w\+/ "\0"/' > perl.linkexp
467 perl.map: $(obj) perl$(OBJ_EXT) miniperlmain$(OBJ_EXT)
468 ! $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o dummy.exe miniperlmain$(OBJ_EXT) perl$(OBJ_EXT) $(obj) -lsocket -lm -Zmap -Zlinker /map
469 awk '{if ($$3 == "") print $$2}' <dummy.map | sort | uniq > perl.map
470 rm dummy.exe dummy.map
473 cat perl.exports perl.map | sort | uniq -d | sed -e 's/\w\+/ "\0"/' > perl.linkexp
475 perl.map: $(obj) perl$(OBJ_EXT) miniperlmain$(OBJ_EXT)
476 ! $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o dummy.exe miniperlmain$(OBJ_EXT) perl$(OBJ_EXT) $(obj) $(libs) -Zmap -Zlinker /map
477 awk '{if ($$3 == "") print $$2}' <dummy.map | sort | uniq > perl.map
478 rm dummy.exe dummy.map
480 >>> Apply the patches from Ilya's perl5.002_01 binary distribution:
482 touch os2/dlfcn.h os2/dl_os2.c
483 patch -p1 < f:\perllib\README.fix1
485 >>> Run Configure. Most people can run it by following the README:
487 sh Configure -des -D prefix=f:/usr/local
489 Advanced perl users (experienced C programmers, recommended) can run
490 the interactive Configure and answer the questions. When in doubt
491 about an answer, check the EMX headers and documentation. Pick the
492 default answer if that doesn't help:
496 [Yet more advanced users just specify the answers on the command line
497 of Configure, like I did with prefix.]
499 Note: You may need to wrap an answer in quotes if it contains
500 spaces. For example, "-lsocket -lm".
502 Note: If you want to add some options to a long default, you can
503 use $* to include the default in your answer: "$* -DDEBUGGING".
505 Configure warnings and errors, and possible work-arounds:
507 I don't know where 'ln' is....
508 (ignored; OS/2 doesn't have a ln command)
510 nm didn't seem to work right. Trying emxomfar instead...
511 (nothing to worry about)
513 The recommended value for $d_shrplib on this machine was "define"!
514 (kept the recommended value: y)
516 Directory f:/usr/lib/perl5/os2/5.00201/CORE doesn't exist.
517 (created the directory from another window with
518 \usr\bin\mkdir -p f:/usr/lib/perl5/os2/5.00201/CORE
519 and then answered: y. Your directory may look different.)
521 [Ignore this as well, install script will create it for you.]
523 The recommended value for $i_dlfcn on this machine was "define"!
524 (kept the recommended value: y)
526 The recommended value for $d_fork on this machine was "undef"!
527 (kept the recommended value: y)
529 Figuring out the flag used by open() for non-blocking I/O...
530 Seems like we can use O_NONBLOCK.
531 This seems to be used for informative purposes only.
532 The errors that follow this (including a SIGPIPE) don't seem
533 to affect perl at all. These were safely ignored.
535 What pager is used on your system? [/usr/ucb/more]
536 Had to answer "/usr/bin/less.exe" because Configure wants a
537 leading / (unix full path). Need to edit config.sh later with
538 the real full path to the pager, including the drive letter.
540 [Apparently this setting is never used, so it is safe to ignore it.]
542 Hmm... F:/USR/BIN/sed: Unterminated `s' command
543 Perl built fine even with this error, so it seems safe to
546 Things I did different from the defaults. Most (if not all) of these
547 are optional changes. They're listed here to show how good Configure
548 is at detecting the system setup.
550 [I add the options to put it on command line of Configure, see below.]
552 Selected 'none' for the man1 location.
553 (I prefer the pod2html version.)
555 Selected 'none' for the man3 location.
556 (I prefer the pod2html version.)
558 Changed the hostname and domain.
559 (I wanted to override a dynamic PPP address. This only
560 matters if other people will be using your perl build.)
561 [-D myhostname=my_host_name -D mydomain=.foo.org]
562 Fixed the e-mail address.
563 (Put in a known working e-mail address. This only matters
564 if other people will be using your perl build.)
565 [-D cf_email=root@myhostname.uucp]
566 Added some directories to the library search path.
567 [-D "libpth=f:/emx/lib/st f:/emx/lib"]
568 Added -g to the optimizer/debugger flags.
570 Added "-lgdbm -ldb -lcrypt -lbsd" to the additional libraries.
571 [ -D "libs=-lsocket -lcrypt -lgdbm"
572 the rest of libraries will not be used]
574 >>> Advanced users may want to edit config.sh when prompted by Configure.
575 Most (all?) of these changes aren't really necessary:
579 (getpriority and setpriority are included in os2.c, but
580 Configure doesn't know to look there.)
582 pager='f:/usr/bin/less.exe'
583 (Correcting Configure's insistence on a leading slash.)
584 bin_sh='f:/usr/bin/sh.exe'
585 (If Configure detects sh.exe somewhere else first. Example:
586 it saw sh.exe at /bin/sh.exe on my TVFS drive, but I want
587 perl to look for it on the physical F drive.)
588 aout_ccflags='... existing flags... -DDEBUGGING'
589 aout_cppflags='... existing flags... -DDEBUGGING'
590 (If you want to include DEBUGGING for the aout version.)
591 [Do not do it, -D optimize=-g will automatically add these flags.]
593 >>> Allow Configure to make the build scripts.
595 >>> Allow Configure to run `make depend`. Ignore the following warning:
597 perl.h:861: warning: `DEBUGGING_MSTATS' redefined
600 >>> Rename any existing perl.dll, preventing anything from loading it and
601 saving a known working copy in case something goes wrong:
603 mv /usr/lib/perl.dll /usr/lib/ilya-perl.dll
605 >>> Run `make`, and ignore the following warnings:
607 perl.h:861: warning: `DEBUGGING_MSTATS' redefined
609 invalid preprocessing directive name
610 emxomf warning: Cycle detected by make_type
611 LINK386 : warning L4071: application type not specified; assuming WINDOWCOMPAT
612 Warning (will try anyway): No library found for -lposix
613 Warning (will try anyway): No library found for -lcposix
614 POSIX.c:203: warning: `mkfifo' redefined
615 POSIX.c:4603: warning: assignment makes pointer from integer without a cast
617 >>> If `make` dies while "Making DynaLoader (static)", you'll need to
618 put miniperl in the OS/2 paths. This step is only necessary if `make`
620 [I would be interested if somebody confirmes this.]
622 cp perl.dll /usr/lib (where /usr/lib is in your LIBPATH)
623 cp miniperl.exe /usr/bin (where /usr/bin is in your PATH)
624 make (ignore the errors in the previous step)
626 This should run to completion.
634 io/fs..........FAILED on test 2
636 "OS/2 is not unix". Test 2 checks the link() command, which
637 is not supported by OS/2.
639 io/pipe........f:/usr/bin/sh.exe: -c requires an argument
640 f:/usr/bin/sh.exe: -c requires an argument
641 The Unsupported function fork function is unimplemented at
645 More "OS/2 is not unix" errors. Read ahead to find out
648 op/exec........FAILED on test 4
650 if (system "true") {print "not ok 4\n";} else \
653 This fails for me, but changing it to read like this works:
655 if (system '\usr\bin\true.cmd') {print "not ok 4\n";} \
656 else {print "ok 4\n";}
658 So you can count this as another "OS/2 is not unix".
660 op/fork........The Unsupported function fork function is \
661 unimplemented at op/fork.t line 8.
664 The dynamically-loaded version of perl currently doesn't
665 support fork(). This is a known behavior of EMX.
668 Process terminated by SIGINT
671 The test passed even with the SIGINT message. I don't
672 know why, but I won't argue.
674 op/stat........ls: /dev: No such file or directory
675 f:/usr/bin/sh.exe: ln: not found
676 ls: perl: No such file or directory
679 "OS/2 is not unix". We don't have the ln command.
681 lib/anydbm.....Bad free() ignored at lib/anydbm.t line 51.
682 Bad free() ignored at lib/anydbm.t line 51.
683 Bad free() ignored at lib/anydbm.t line 51.
684 Bad free() ignored during global destruction.
685 Bad free() ignored during global destruction.
686 Bad free() ignored during global destruction.
689 Test 2 looks at the file permissions for a database. "OS/2
690 is not unix" so the permissions aren't exactly what this test
693 lib/db-btree...Bad free() ignored at lib/db-btree.t line 109.
694 Bad free() ignored at lib/db-btree.t line 221.
695 Bad free() ignored at lib/db-btree.t line 337.
696 Bad free() ignored at lib/db-btree.t line 349.
697 Bad free() ignored at lib/db-btree.t line 349.
698 Bad free() ignored at lib/db-btree.t line 399.
699 Bad free() ignored at lib/db-btree.t line 400.
700 Bad free() ignored at lib/db-btree.t line 401.
703 Another file permissions test fails.
705 lib/db-hash....Bad free() ignored at lib/db-hash.t line 101.
706 Bad free() ignored at lib/db-hash.t line 101.
707 Bad free() ignored at lib/db-hash.t line 101.
708 Bad free() ignored at lib/db-hash.t line 239.
709 Bad free() ignored at lib/db-hash.t line 239.
710 Bad free() ignored at lib/db-hash.t line 239.
711 Bad free() ignored at lib/db-hash.t line 253.
712 Bad free() ignored at lib/db-hash.t line 253.
713 Bad free() ignored at lib/db-hash.t line 253.
716 Another file permissions test fails.
718 lib/db-recno...Bad free() ignored at lib/db-recno.t line 138.
719 Bad free() ignored at lib/db-recno.t line 138.
722 Another file permissions test fails.
724 lib/gdbm.......FAILED on test 2
726 Another file permissions test fails.
728 lib/sdbm.......FAILED on test 2
730 Another file permissions test fails.
732 Failed 11/94 tests, 88.30% okay.
734 All of which are known differences with unix or documented
735 behaviors in EMX. I re-run the test with Ilya's version,
736 and the same tests fail. This new build is a success.
737 [Note that bad free() mentioned above are bugs in the Berkeley
738 DB. They just are more visible under OS/2 with perl free(), because of
739 "rigid" function name resolution. You may disable it by setting
740 PERL_BADFREE environment variable to 0.
741 To get finer tests, cd to ./t and run
745 (Actually, Ilya's perl release fails an extra test because I don't
746 have sed in f:\emx.add. This shows how important it is to configure
747 and build perl yourself instead of grabbing pre-built binaries.)
748 [Hmm, should not happen... There is no mentions of full_sed under ./t
751 >>> Cross your fingers and install it:
755 Warnings encountered and workarounds presented.:
757 WARNING: You've never run 'make test'!!! (Installing anyway.)
758 (Lies! All lies! At least it still installs.)
760 WARNING: Can't find libperl*.dll* to install into \
761 f:/usr/lib/perl5/os2/5.00201/CORE. (Installing other things anyway.)
762 (Safe to ignore. The important one, libperl.lib, gets copied.)
764 Couldn't copy f:/usr/bin/perl5.00201.exe to f:/usr/bin/perl.exe: \
765 No such file or directory
766 cp /usr/bin/perl5.00201.exe /usr/bin/perl.exe
768 Couldn't copy f:/usr/bin/perl.exe to /usr/bin/perl.exe: No such \
770 (I think this one is safe to ignore since the two directories
771 point to the same place.)
773 >>> Laugh maniacally because you just built and installed your own copy
774 of perl, with all the paths set "just so" and with whatever little
775 psychotic modifications you've always wanted but were afraid to add.
777 -----------------------------------------------------------------------------
779 Development tools and versions:
781 EMX 0.9b with emxfix04 applied.
783 `ls --version` reports: 'GNU file utilities 3.12'
784 `tr --version` reports: 'tr - GNU textutils 1.14'
785 `id --version` reports: 'id - GNU sh-utils 1.12'
787 `sed --version` reports: 'GNU sed version 2.05'
788 `awk --version` reports: 'Gnu Awk (gawk) 2.15, patchlevel 6'
789 `grep --version` reports an illegal option and: 'GNU grep version 2.0'
790 (this includes egrep)
792 `sort --version` reports: 'sort - GNU textutils 1.14'
793 `uniq --version` reports: 'uniq - GNU textutils 1.14'
794 `find --version` reports: 'GNU find version 4.1'
796 KSH_VERSION='@(#)PD KSH v5.2.4 96/01/17'
797 (Ilya's patched version.)
799 `make --version` reports: 'GNU Make version 3.74'
800 (Ilya's patched version.)
804 EMXIO : revision = 40
805 EMXLIBC : revision = 40
806 EMXLIBCM : revision = 43
807 EMXLIBCS : revision = 43
808 EMXWRAP : revision = 40
810 -----------------------------------------------------------------------------