diff options
Diffstat (limited to 'README.os2')
-rw-r--r-- | README.os2 | 97 |
1 files changed, 89 insertions, 8 deletions
diff --git a/README.os2 b/README.os2 index f5bf87db06..bbadbf64b0 100644 --- a/README.os2 +++ b/README.os2 @@ -144,9 +144,12 @@ Cf. L<Prerequisites>. =item B<EMX> -B<EMX> runtime is required. Note that it is possible to make F<perl_.exe> -to run under DOS without any external support by binding F<emx.exe> to -it, see L<emxbind>. +B<EMX> runtime is required (may be substituted by B<RSX>). Note that +it is possible to make F<perl_.exe> to run under DOS without any +external support by binding F<emx.exe> to it, see L<emxbind>. Note +that under DOS for best results one should use B<RSX> runtime, which +has much more functions working (like C<fork>, C<popen> and so on). In +fact B<RSX> is required if there is no C<VCPI> present. Only the latest runtime is supported, currently C<0.9c>. @@ -161,7 +164,13 @@ The runtime component should have the name F<emxrt.zip>. To run Perl on C<DPMS> platforms one needs B<RSX> runtime. This is needed under DOS-inside-OS/2, Win0.31, Win0.95 and WinNT (see -L<"Other OSes">). +L<"Other OSes">). I do not know whether B<RSX> would work with C<VCPI> +only, as B<EMX> would. + +Having B<RSX> and the latest F<sh.exe> one gets a fully functional +B<*nix>-ish environment under DOS, say, C<fork>, C<``> and +pipe-C<open> work. In fact, MakeMaker works (for static build), so one +can have Perl development environment under DOS. One can get B<RSX> from, say @@ -170,6 +179,10 @@ One can get B<RSX> from, say Contact the author on C<rainer@mathematik.uni-bielefeld.de>. +The latest F<sh.exe> with DOS hooks is available at + + ftp://ftp.math.ohio-state.edu/pub/users/ilya/os2/sh_dos.exe + =item B<HPFS> Perl does not care about file systems, but to install the whole perl @@ -254,9 +267,22 @@ meta-characters. =head2 I cannot run extenal programs +=over 4 + +=item + Did you run your programs with C<-w> switch? See L<Starting OS/2 programs under Perl>. +=item + +Do you try to run I<internal> shell commands, like C<`copy a b`> +(internal for F<cmd.exe>), or C<`glob a*b`> (internal for ksh)? You +need to specify your shell explicitely, like C<`cmd /c copy a b`>, +since Perl cannot deduce which commands are internal to your shell. + +=back + =head2 I cannot embed perl into my program, or use F<perl.dll> from my program. @@ -273,6 +299,16 @@ I had reports it does not work. Somebody would need to fix it. =back +=head2 C<``> and pipe-C<open> do not work under DOS. + +This may a variant of just L<"I cannot run extenal programs">, or a +deeper problem. Basically: you I<need> B<RSX> (see L<"Prerequisites">) +for these commands to work, and you need a port of F<sh.exe> which +understands command arguments. One of such ports is listed in +L<"Prerequisites"> under B<RSX>. + +I do not know whether C<DPMI> is required. + =head1 INSTALLATION =head2 Automatic binary installation @@ -674,7 +710,7 @@ Now run make test -Some tests (4..6) should fail. Some perl invocations should end in a +Some tests (5..7) should fail. Some perl invocations should end in a segfault (system error C<SYS3175>). To get finer error reports, cd t @@ -692,7 +728,8 @@ The report you get may look like Note that using `make test' target two more tests may fail: C<op/exec:1> because of (mis)feature of C<pdksh>, and C<lib/posix:15>, which checks -that the buffers are not flushed on C<_exit>. +that the buffers are not flushed on C<_exit> (this is a bug in the test +which assumes that tty output is buffered). The reasons for failed tests are: @@ -961,8 +998,22 @@ eventually). =item -Since <lockf> is present in B<EMX>, but is not functional, the same is -true for perl. +Since <flock> is present in B<EMX>, but is not functional, the same is +true for perl. Here is the list of things which may be "broken" on +EMX (from EMX docs): + + - The functions recvmsg(), sendmsg(), and socketpair() are not + implemented. + - sock_init() is not required and not implemented. + - flock() is not yet implemented (dummy function). + - kill: + Special treatment of PID=0, PID=1 and PID=-1 is not implemented. + - waitpid: + WUNTRACED + Not implemented. + waitpid() is not implemented for negative values of PID. + +Note that C<kill -9> does not work with the current version of EMX. =item @@ -974,6 +1025,36 @@ the current C<pdksh>. =back +=head2 Modifications + +Perl modifies some standard C library calls in the following ways: + +=over 9 + +=item C<popen> + +C<my_popen> always uses F<sh.exe>, cf. L<"PERL_SH_DIR">. + +=item C<tmpnam> + +is created using C<TMP> or C<TEMP> environment variable, via +C<tempnam>. + +=item C<tmpfile> + +If the current directory is not writable, it is created using modified +C<tmpnam>, so there may be a race condition. + +=item C<ctermid> + +a dummy implementation. + +=item C<stat> + +C<os2_stat> special-cases F</dev/tty> and F</dev/con>. + +=back + =head1 Perl flavors Because of ideosyncrasies of OS/2 one cannot have all the eggs in the |