- Threads
AUTHOR
SEE ALSO
-
+
=head1 DESCRIPTION
=head2 Target
fact RSX is required if there is no VCPI present. Note the
RSX requires DPMI.
-Only the latest runtime is supported, currently C<0.9c>. Perl may run
+Only the latest runtime is supported, currently C<0.9d fix 03>. Perl may run
under earlier versions of EMX, but this is not tested.
One can get different parts of EMX from, say
- ftp://ftp.cdrom.com/pub/os2/emx09c/
- ftp://hobbes.nmsu.edu/os2/unix/emx09c/
+ http://www.leo.org/pub/comp/os/os2/leo/gnu/emx+gcc/
+ http://powerusersbbs.com/pub/os2/dev/ [EMX+GCC Development]
+ http://hobbes.nmsu.edu/pub/os2/dev/emx/v0.9d/
The runtime component should have the name F<emxrt.zip>.
=over 4
-=item
+=item *
Did you run your programs with C<-w> switch? See
L<Starting OS/2 (and DOS) programs under Perl>.
-=item
+=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
=head1 BUILD
Here we discuss how to build Perl under OS/2. There is an alternative
-(but maybe older) view on L<http://www.shadow.net/~troc/os2perl.html>.
+(but maybe older) view on http://www.shadow.net/~troc/os2perl.html
=head2 Prerequisites
=head2 Application of the patches
-You need to apply the patches in F<./os2/diff.*> and
-F<./os2/POSIX.mkfifo> like this:
+You need to apply the patches in F<./os2/diff.*> like this:
- gnupatch -p0 < os2\POSIX.mkfifo
gnupatch -p0 < os2\diff.configure
You may also need to apply the patches supplied with the binary
+++ /emx/include/sys/stat.h Sun Jul 12 14:11:32 1998
@@ -53,7 +53,7 @@ struct stat
#endif
-
+
#if !defined (S_IFMT)
-#define S_IFMT 0160000 /* Mask for file type */
+#define S_IFMT 0170000 /* Mask for file type */
=item F<op/fs.t>
+=over 4
+
=item 18
Checks C<atime> and C<mtime> of C<stat()> - unfortunately, HPFS
You use an old version of GNU make. See L<Prerequisites>.
+=head2 op/sprintf test failure
+
+This can result from a bug in emx sprintf which was fixed in 0.9d fix 03.
+
=head1 Specific (mis)features of OS/2 port
=head2 C<setpriority>, C<getpriority>
file which would have C<name> if CWD were C<dir>. C<Dir> defaults to the
current dir.
-=item C<Cwd::extLibpath([type])
+=item C<Cwd::extLibpath([type])>
Get current value of extended library search path. If C<type> is
present and I<true>, works with END_LIBPATH, otherwise with
=over 4
-=item
+=item *
Since L<flock(3)> is present in EMX, but is not functional, it is
emulated by perl. To disable the emulations, set environment variable
C<USE_PERL_FLOCK=0>.
-=item
+=item *
Here is the list of things which may be "broken" on
EMX (from EMX docs):
-=over
+=over 4
=item *
Note that C<kill -9> does not work with the current version of EMX.
-=item
+=item *
Since F<sh.exe> is used for globing (see L<perlfunc/glob>), the bugs
of F<sh.exe> plague perl as well.
B<Disadvantages:> currently F<sh.exe> of pdksh calls external programs
via fork()/exec(), and there is I<no> functioning exec() on
-OS/2. exec() is emulated by EMX by asyncroneous call while the caller
+OS/2. exec() is emulated by EMX by asynchronous call while the caller
waits for child completion (to pretend that the C<pid> did not change). This
means that 1 I<extra> copy of F<sh.exe> is made active via fork()/exec(),
which may lead to some resources taken from the system (even if we do
For the details of the current situation with calling external programs,
see L<Starting OS/2 (and DOS) programs under Perl>.
-=over
+=over 4
-=item
+=item *
External scripts may be called by name. Perl will try the same extensions
as when processing B<-S> command-line switch.
Perl uses its own malloc() under OS/2 - interpreters are usually malloc-bound
for speed, but perl is not, since its malloc is lightning-fast.
-Perl-memory-usage-tuned benchmarks show that Perl's malloc is 5 times quickier
-than EMX one. I do not have convincing data about memory footpring, but
+Perl-memory-usage-tuned benchmarks show that Perl's malloc is 5 times quicker
+than EMX one. I do not have convincing data about memory footprint, but
a (pretty random) benchmark showed that Perl one is 5% better.
Combination of perl's malloc() and rigid DLL name resolution creates
Most notable problems:
-=over
+=over 4
=item C<COND_WAIT>