X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=README.os2;h=4cef16f0aa862f569986fc91a88dd5825c16c966;hb=2ddcc7aa6c936ba8e7a9703319dfd8959bb54574;hp=e6782e3dc127220ae031b4dfd98614d09fac5888;hpb=df3ef7a9a68db503d1aecd7cb40d5f974fa0066b;p=p5sagit%2Fp5-mst-13.2.git
diff --git a/README.os2 b/README.os2
index e6782e3..4cef16f 100644
--- a/README.os2
+++ b/README.os2
@@ -27,9 +27,15 @@ A copy of a Win* viewer is contained in the "Just add OS/2 Warp" package
ftp://ftp.software.ibm.com/ps/products/os2/tools/jaow/jaow.zip
-in F. This gives one an access to B's
+in F. This gives one an access to EMX's
F<.INF> docs as well (text form is available in F in
-B's distribution).
+EMX's distribution).
+
+Note that if you have F installed, you can follow WWW links
+from this document in F<.INF> format. If you have EMX docs installed
+correctly, you can follow library links (you need to have C
+working by setting C environment variable as it is described
+in EMX docs).
=cut
@@ -43,12 +49,13 @@ Contents
- Target
- Other OSes
- Prerequisites
- - Starting Perl programs under OS/2
- - Starting OS/2 programs under Perl
+ - Starting Perl programs under OS/2 (and DOS and...)
+ - Starting OS/2 (and DOS) programs under Perl
Frequently asked questions
- I cannot run external programs
- I cannot embed perl into my program, or use perl.dll from my program.
- `` and pipe-open do not work under DOS.
+ - Cannot start find.exe "pattern" file
INSTALLATION
- Automatic binary installation
- Manual binary installation
@@ -77,9 +84,10 @@ Contents
- Some problem (forget which ;-)
- Library ... not found
- Segfault in make
- Specific (mis)features of OS/2 port
+ Specific (mis)features of EMX port
- setpriority, getpriority
- system()
+ - extproc on the first line
- Additional modules:
- Prebuilt methods:
- Misfeatures
@@ -113,7 +121,8 @@ Contents
The target is to make OS/2 the best supported platform for
using/building/developing Perl and I, as well as
-make Perl the best language to use under OS/2.
+make Perl the best language to use under OS/2. The secondary target is
+to try to make this work under DOS and Win* as well (but not B hard).
The current state is quite close to this target. Known limitations:
@@ -131,10 +140,10 @@ to use PM code in your application (like the forthcoming Perl/Tk).
=item *
-There is no simple way to access B objects. The only way I know
+There is no simple way to access WPS objects. The only way I know
is via C extension (see L), and we do not have access to
-convenience methods of B. (Is it possible at all? I know
-of no B API.)
+convenience methods of Object-REXX. (Is it possible at all? I know
+of no Object-REXX API.)
=back
@@ -142,7 +151,7 @@ Please keep this list up-to-date by informing me about other items.
=head2 Other OSes
-Since OS/2 port of perl uses a remarkable B environment, it can
+Since OS/2 port of perl uses a remarkable EMX environment, it can
run (and build extensions, and - possibly - be build itself) under any
environment which can run EMX. The current list is DOS,
DOS-inside-OS/2, Win0.3*, Win0.95 and WinNT. Out of many perl flavors,
@@ -150,7 +159,7 @@ only one works, see L<"perl_.exe">.
Note that not all features of Perl are available under these
environments. This depends on the features the I - most
-probably C - decided to implement.
+probably RSX - decided to implement.
Cf. L.
@@ -158,22 +167,23 @@ Cf. L.
=over 6
-=item B
+=item EMX
-B runtime is required (may be substituted by B). Note that
+EMX runtime is required (may be substituted by RSX). Note that
it is possible to make F to run under DOS without any
external support by binding F/F to it, see L. Note
-that under DOS for best results one should use B runtime, which
+that under DOS for best results one should use RSX runtime, which
has much more functions working (like C, C and so on). In
-fact B is required if there is no C present. Note the
-B requires C.
+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>.
+Only the latest runtime is supported, currently C<0.9c>. Perl may run
+under earlier versions of EMX, but this is not tested.
-One can get different parts of B from, say
+One can get different parts of EMX from, say
- ftp://ftp.cdrom.com/pub/os2/emx0.9c/
- ftp://hobbes.nmsu.edu/os2/unix/gnu/
+ ftp://ftp.cdrom.com/pub/os2/emx09c/
+ ftp://hobbes.nmsu.edu/os2/unix/emx09c/
The runtime component should have the name F.
@@ -184,41 +194,56 @@ does not need to specify them explicitly (though this
will work as well.)
-=item B
+=item RSX
-To run Perl on C platforms one needs B runtime. This is
+To run Perl on DPMI platforms one needs RSX runtime. This is
needed under DOS-inside-OS/2, Win0.3*, Win0.95 and WinNT (see
-L<"Other OSes">). B would not work with C
-only, as B would, it requires C.
+L<"Other OSes">). RSX would not work with VCPI
+only, as EMX would, it requires DMPI.
-Having B and the latest F one gets a fully functional
+Having RSX and the latest F one gets a fully functional
B<*nix>-ish environment under DOS, say, C, C<``> and
pipe-C work. In fact, MakeMaker works (for static build), so one
can have Perl development environment under DOS.
-One can get B from, say
+One can get RSX from, say
- ftp://ftp.cdrom.com/pub/os2/emx0.9c/contrib
+ ftp://ftp.cdrom.com/pub/os2/emx09c/contrib
ftp://ftp.uni-bielefeld.de/pub/systems/msdos/misc
+ ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/contrib
Contact the author on C.
The latest F with DOS hooks is available at
- ftp://ftp.math.ohio-state.edu/pub/users/ilya/os2/sh_dos.exe
+ ftp://ftp.math.ohio-state.edu/pub/users/ilya/os2/sh_dos.zip
-=item B
+=item HPFS
Perl does not care about file systems, but to install the whole perl
library intact one needs a file system which supports long file names.
Note that if you do not plan to build the perl itself, it may be
-possible to fool B to truncate file names. This is not supported,
-read B docs to see how to do it.
+possible to fool EMX to truncate file names. This is not supported,
+read EMX docs to see how to do it.
+
+=item pdksh
+
+To start external programs with complicated command lines (like with
+pipes in between, and/or quoting of arguments), Perl uses an external
+shell. With EMX port such shell should be named , and located
+either in the wired-in-during-compile locations (usually F),
+or in configurable location (see L<"PERL_SH_DIR">).
+
+For best results use EMX pdksh. The soon-to-be-available standard
+binary (5.2.12?) runs under DOS (with L) as well, meanwhile use
+the binary from
+
+ ftp://ftp.math.ohio-state.edu/pub/users/ilya/os2/sh_dos.zip
=back
-=head2 Starting Perl programs under OS/2
+=head2 Starting Perl programs under OS/2 (and DOS and...)
Start your Perl program F with arguments C the
same way as on any other platform, by
@@ -230,33 +255,28 @@ opposed to to your program), use
perl -my_opts foo.pl arg1 arg2 arg3
-Alternately, if you use OS/2-ish shell, like C or C<4os2>, put
+Alternately, if you use OS/2-ish shell, like CMD or 4os2, put
the following at the start of your perl script:
- extproc perl -x -S
- #!/usr/bin/perl -my_opts
+ extproc perl -S -my_opts
rename your program to F, and start it by typing
foo arg1 arg2 arg3
-(Note that having *nixish full path to perl F is not
-necessary, F would be enough, but having full path would make it
-easier to use your script under *nix.)
-
Note that because of stupid OS/2 limitations the full path of the perl
script is not available when you use C, thus you are forced to
use C<-S> perl switch, and your script should be on path. As a plus
side, if you know a full path to your script, you may still start it
with
- perl -x ../../blah/foo.cmd arg1 arg2 arg3
+ perl ../../blah/foo.cmd arg1 arg2 arg3
-(note that the argument C<-my_opts> is taken care of by the C<#!> line
-in your script).
+(note that the argument C<-my_opts> is taken care of by the C line
+in your script, see L on the first line>).
To understand what the above I does, read perl docs about C<-S>
-and C<-x> switches - see L, and cmdref about C:
+switch - see L, and cmdref about C:
view perl perlrun
man perlrun
@@ -266,11 +286,11 @@ and C<-x> switches - see L, and cmdref about C:
or whatever method you prefer.
There are also endless possibilities to use I of
-B<4OS2>, I of B and so on... However, if you use
+4os2, I of WPS and so on... However, if you use
*nixish shell (like F supplied in the binary distribution),
you need to follow the syntax specified in L.
-=head2 Starting OS/2 programs under Perl
+=head2 Starting OS/2 (and DOS) programs under Perl
This is what system() (see L), C<``> (see
L), and I (see L)
@@ -278,7 +298,7 @@ are for. (Avoid exec() (see L) unless you know what you
do).
Note however that to use some of these operators you need to have a
-C-syntax shell installed (see L<"Pdksh">,
+sh-syntax shell installed (see L<"Pdksh">,
L<"Frequently asked questions">), and perl should be able to find it
(see L<"PERL_SH_DIR">).
@@ -296,7 +316,7 @@ meta-characters.
=item
Did you run your programs with C<-w> switch? See
-L.
+L.
=item
@@ -312,12 +332,12 @@ program.
=over 4
-=item Is your program B-compiled with C<-Zmt -Zcrtdll>?
+=item Is your program EMX-compiled with C<-Zmt -Zcrtdll>?
If not, you need to build a stand-alone DLL for perl. Contact me, I
did it once. Sockets would not work, as a lot of other stuff.
-=item Did you use C?
+=item Did you use L?
I had reports it does not work. Somebody would need to fix it.
@@ -326,12 +346,29 @@ I had reports it does not work. Somebody would need to fix it.
=head2 C<``> and pipe-C do not work under DOS.
This may a variant of just L<"I cannot run external programs">, or a
-deeper problem. Basically: you I B (see L<"Prerequisites">)
+deeper problem. Basically: you I RSX (see L<"Prerequisites">)
for these commands to work, and you may need a port of F which
understands command arguments. One of such ports is listed in
-L<"Prerequisites"> under B.
+L<"Prerequisites"> under RSX. Do not forget to set variable
+C> as well.
+
+DPMI is required for RSX.
+
+=head2 Cannot start C
+
+Use one of
-C is required for B.
+ system 'cmd', '/c', 'find "pattern" file';
+ `cmd /c 'find "pattern" file'`
+
+This would start F via F via C via
+C, but this is a price to pay if you want to use
+non-conforming program. In fact F cannot be started at all
+using C library API only. Otherwise the following command-lines were
+equivalent:
+
+ find "pattern" file
+ find pattern file
=head1 INSTALLATION
@@ -342,9 +379,9 @@ F. Just follow the instructions, and 99% of the
installation blues would go away.
Note however, that you need to have F on your path, and
-B environment I. The latter means that if you just
-installed B, and made all the needed changes to F,
-you may need to reboot in between. Check B runtime by running
+EMX environment I. The latter means that if you just
+installed EMX, and made all the needed changes to F,
+you may need to reboot in between. Check EMX runtime by running
emxrev
@@ -358,7 +395,7 @@ B
=item C
may be needed if you change your codepage I perl installation,
-and the new value is not supported by B. See L<"PERL_BADLANG">.
+and the new value is not supported by EMX. See L<"PERL_BADLANG">.
=item C
@@ -377,19 +414,23 @@ data, please keep me informed if you find one.
=back
+B. Because of a typo the binary installer of 5.00305
+would install a variable C into F. Please
+remove this variable and put C> instead.
+
=head2 Manual binary installation
As of version 5.00305, OS/2 perl binary distribution comes split
into 11 components. Unfortunately, to enable configurable binary
-installation, the file paths in the C files are not absolute, but
+installation, the file paths in the zip files are not absolute, but
relative to some directory.
Note that the extraction with the stored paths is still necessary
-(default with C, specify C<-d> to C). However, you
+(default with unzip, specify C<-d> to pkunzip). However, you
need to know where to extract the files. You need also to manually
change entries in F to reflect where did you put the
files. Note that if you have some primitive unzipper (like
-C), you may get a lot of warnings/errors during
+pkunzip), you may get a lot of warnings/errors during
unzipping. Upgrade to C<(w)unzip>.
Below is the sample of what to do to reproduce the configuration on my
@@ -402,20 +443,20 @@ machine:
unzip perl_exc.zip *.exe *.ico -d f:/emx.add/bin
unzip perl_exc.zip *.dll -d f:/emx.add/dll
-(have the directories with C<*.exe> on C, and C<*.dll> on
-C);
+(have the directories with C<*.exe> on PATH, and C<*.dll> on
+LIBPATH);
=item Perl_ VIO executable (statically linked)
unzip perl_aou.zip -d f:/emx.add/bin
-(have the directory on C);
+(have the directory on PATH);
=item Executables for Perl utilities
unzip perl_utl.zip -d f:/emx.add/bin
-(have the directory on C);
+(have the directory on PATH);
=item Main Perl library
@@ -447,25 +488,25 @@ C in F, see L<"PERLLIB_PREFIX">.
unzip perl_man.zip -d f:/perllib/man
This directory should better be on C. You need to have a
-working C to access these files.
+working man to access these files.
=item Manpages for Perl modules
unzip perl_mam.zip -d f:/perllib/man
This directory should better be on C. You need to have a
-working C to access these files.
+working man to access these files.
=item Source for Perl documentation
unzip perl_pod.zip -d f:/perllib/lib
This is used by by C program (see L), and may be used to
-generate B documentation usable by WWW browsers, and
+generate HTML documentation usable by WWW browsers, and
documentation in zillions of other formats: C, C,
C, C and so on.
-=item Perl manual in .INF format
+=item Perl manual in F<.INF> format
unzip perl_inf.zip -d d:/os2/book
@@ -482,7 +523,7 @@ metacharacters>. It is also used instead of explicit F.
Set C (see L<"PERL_SH_DIR">) if you move F from
the above location.
-B It may be possible to use some other C-compatible shell
+B It may be possible to use some other sh-compatible shell
(I).
=back
@@ -511,7 +552,7 @@ identical) Perl documentation in the following formats:
=head2 OS/2 F<.INF> file
-Most probably the most convenient form. View it as
+Most probably the most convenient form. Under OS/2 view it as
view perl
view perl perlfunc
@@ -519,7 +560,7 @@ Most probably the most convenient form. View it as
view perl ExtUtils::MakeMaker
(currently the last two may hit a wrong location, but this may improve
-soon).
+soon). Under Win* see L<"SYNOPSIS">.
If you want to build the docs yourself, and have I, run
@@ -535,7 +576,7 @@ BOOKSHELF path.
=head2 Plain text
If you have perl documentation in the source form, perl utilities
-installed, and B C installed, you may use
+installed, and GNU groff installed, you may use
perldoc perlfunc
perldoc less
@@ -548,7 +589,7 @@ Alternately, try running pod2text on F<.pod> files.
=head2 Manpages
-If you have C installed on your system, and you installed perl
+If you have man installed on your system, and you installed perl
manpages, use something like this:
man perlfunc
@@ -568,11 +609,11 @@ on our C, like this
set MANPATH=c:/man;f:/perllib/man
-=head2 B
+=head2 HTML
If you have some WWW browser available, installed the Perl
documentation in the source form, and Perl utilities, you can build
-B docs. Cd to directory with F<.pod> files, and do like this
+HTML docs. Cd to directory with F<.pod> files, and do like this
cd f:/perllib/lib/pod
pod2html
@@ -582,11 +623,11 @@ directory, and go ahead with reading docs, like this:
explore file:///f:/perllib/lib/pod/perl.html
-Alternatively you may be able to get these docs prebuilt from C.
+Alternatively you may be able to get these docs prebuilt from CPAN.
-=head2 B C files
+=head2 GNU C files
-Users of C would appreciate it very much, especially with
+Users of Emacs would appreciate it very much, especially with
C mode loaded. You need to get latest C from C,
or, alternately, prebuilt info pages.
@@ -606,8 +647,8 @@ Here we discuss how to build Perl under OS/2. There is an alternative
=head2 Prerequisites
-You need to have the latest B development environment, the full
-B tool suite (C renamed to C, and B F
+You need to have the latest EMX development environment, the full
+GNU tool suite (gawk renamed to awk, and GNU F
earlier on path than the OS/2 F, same with F, to
check use
@@ -618,11 +659,17 @@ check use
Possible locations to get this from are
- ftp://hobbes.nmsu.edu/os2/unix/gnu/
+ ftp://hobbes.nmsu.edu/os2/unix/
ftp://ftp.cdrom.com/pub/os2/unix/
ftp://ftp.cdrom.com/pub/os2/dev32/
- ftp://ftp.cdrom.com/pub/os2/emx0.9c/
+ ftp://ftp.cdrom.com/pub/os2/emx09c/
+It is reported that the following archives contain enough utils to
+build perl: gnufutil.zip, gnusutil.zip, gnututil.zip, gnused.zip,
+gnupatch.zip, gnuawk.zip, gnumake.zip and ksh527rt.zip. Note that
+all these utilities are known to be available from LEO:
+
+ ftp://ftp.leo.org/pub/comp/os/os2/leo/gnu
Make sure that no copies or perl are currently running. Later steps
of the build may fail since an older version of perl.dll loaded into
@@ -636,17 +683,17 @@ latter condition by
if you use something like F or latest versions of F<4os2.exe>.
-Make sure your C is good for C<-Zomf> linking: run C
+Make sure your gcc is good for C<-Zomf> linking: run C
script in F directory.
-Check that you have C installed. It comes standard with OS/2,
+Check that you have link386 installed. It comes standard with OS/2,
but may be not installed due to customization. If typing
link386
shows you do not have it, do I, and choose C in I. If you get into
-C, press C.
+link386, press C.
=head2 Getting perl source
@@ -675,10 +722,6 @@ Extract it like this
You may see a message about errors while extracting F. This is
because there is a conflict with a similarly-named file F.
-Rename F to F. Extract F like this
-
- tar --case-sensitive -vzxf perl5.00409.tar.gz perl5.00409/Configure
-
Change to the directory of extraction.
=head2 Application of the patches
@@ -692,10 +735,10 @@ F<./os2/POSIX.mkfifo> like this:
You may also need to apply the patches supplied with the binary
distribution of perl.
-Note also that the F and F from the B distribution
+Note also that the F and F from the EMX distribution
are not suitable for multi-threaded compile (note that currently perl
-is not multithreaded, but is compiled as multithreaded for
-compatibility with B-OS/2). Get a corrected one from
+is not multithread-safe, but is compiled as multithreaded for
+compatibility with XFree86-OS/2). Get a corrected one from
ftp://ftp.math.ohio-state.edu/pub/users/ilya/os2/db_mt.zip
@@ -708,12 +751,12 @@ wrong you find there. I do not expect it is needed anywhere.
sh Configure -des -D prefix=f:/perllib
-Prefix means where to install the resulting perl library. Giving
+C means: where to install the resulting perl library. Giving
correct prefix you may avoid the need to specify C,
see L<"PERLLIB_PREFIX">.
I, and about C<-c> option to
-C>. In fact if you can trace where the latter spurious warning
+tr>. In fact if you can trace where the latter spurious warning
comes from, please inform me.
Now
@@ -723,9 +766,11 @@ Now
At some moment the built may die, reporting a I or
I>. This means that most of the build has been
finished, and it is the time to move the constructed F to
-some I location in C. After this done the build
-should finish without a lot of fuss. I on C.>
+some I location in LIBPATH. After this is done the build
+should finish without a lot of fuss. I on LIBPATH, but
+probably this is not needed anymore, since F is linked
+statically now.>
Warnings which are safe to ignore: I inside
F.
@@ -740,7 +785,7 @@ Some tests (4..6) should fail. Some perl invocations should end in a
segfault (system error C). To get finer error reports,
cd t
- perl -I ../lib harness
+ perl harness
The report you get may look like
@@ -753,11 +798,11 @@ The report you get may look like
Failed 4/140 test scripts, 97.14% okay. 27/2937 subtests failed, 99.08% okay.
Note that using `make test' target two more tests may fail: C
-because of (mis)feature of C, and C, which checks
+because of (mis)feature of pdksh, and C, which checks
that the buffers are not flushed on C<_exit> (this is a bug in the test
which assumes that tty output is buffered).
-I submitted a patch to B which makes it possible to fork() with EMX
+I submitted a patch to EMX which makes it possible to fork() with EMX
dynamic libraries loaded, which makes F tests pass. This means
that soon the number of failing tests may decrease yet more.
@@ -791,12 +836,12 @@ know why this should or should not work.
=item F
-Checks C module. Some feature of B - test fork()s with
+Checks C module. Some feature of EMX - test fork()s with
dynamic extension loaded - unsupported now.
=item F
-Checks C module. Some feature of B - test fork()s
+Checks C module. Some feature of EMX - test fork()s
with dynamic extension loaded - unsupported now.
=item F
@@ -869,14 +914,14 @@ Run
It would put the generated files into needed locations. Manually put
F, F and F to a location on your
-C, F to a location on your C.
+PATH, F to a location on your LIBPATH.
Run
make cmdscripts INSTALLCMDDIR=d:/ir/on/path
to convert perl utilities to F<.cmd> files and put them on
-C. You need to put F<.EXE>-utilities on path manually. They are
+PATH. You need to put F<.EXE>-utilities on path manually. They are
installed in C<$prefix/bin>, here C<$prefix> is what you gave to
F, see L.
@@ -891,7 +936,7 @@ test and install by
make aout_test
make aout_install
-Manually put F to a location on your C.
+Manually put F to a location on your PATH.
Since C has the extensions prebuilt, it does not suffer from
the I syndrome, thus the failing tests
@@ -921,13 +966,13 @@ You have a very old pdksh. See L.
You do not have MT-safe F. See L.
-=head2 Problems with C
+=head2 Problems with tr
-reported with very old version of C .
+reported with very old version of tr.
=head2 Some problem (forget which ;-)
-You have an older version of F on your C, which
+You have an older version of F on your LIBPATH, which
broke the build of extensions.
=head2 Library ... not found
@@ -936,7 +981,7 @@ You did not run C. See L.
=head2 Segfault in make
-You use an old version of C make. See L.
+You use an old version of GNU make. See L.
=head1 Specific (mis)features of OS/2 port
@@ -952,6 +997,12 @@ Multi-argument form of C allows an additional numeric
argument. The meaning of this argument is described in
L.
+=head2 C on the first line
+
+If the first chars of a script are C<"extproc ">, this line is treated
+as C<#!>-line, thus all the switches on this line are processed (twice
+if script was started via cmd.exe).
+
=head2 Additional modules:
L, L, L, L. This
@@ -968,7 +1019,7 @@ C, are included into my ftp directory, mirrored on CPAN.
=item C
-used by C, see L.
+used by C, see L.
=item C
@@ -999,7 +1050,7 @@ means changes with current dir.
=item C
-Interface to cwd from B. Used by C.
+Interface to cwd from EMX. Used by C.
=item C
@@ -1031,21 +1082,39 @@ eventually).
=item
-Since is present in B