This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
msgrcv: properly downgrade the receive buffer
[perl5.git] / README.amiga
index 8951f35..41345c1 100644 (file)
@@ -4,245 +4,220 @@ specially designed to be readable as is.
 
 =head1 NAME
 
-perlamiga - Perl under Amiga OS (possibly very outdated information)
+perlamiga - Perl under AmigaOS 4.1
 
-=head1 SYNOPSIS
+=head1 NOTE
 
-NOTE: No one has reported building Perl on the Amiga in a long
-time.  The following information is highly unlikely to be correct.
-If you would like to help the Amiga port to stay current, see:
+This is a port of Perl 5.22.1, it is a fresh port and not in any way
+compatible with my previous ports of Perl 5.8 and 5.16.3. This means
+you will need to reinstall / rebuild any third party modules you have
+installed.
 
-    http://us.aminet.net/aminet/dirs/dev_gg.html
+newlib.library version 53.28 or greater is required.
 
-for Amiga resources and information.
+=head1 SYNOPSIS
 
-One can read this document in the following formats:
+Once perl is installed you can read this document in the following way
 
-       man perlamiga
-       multiview perlamiga.guide
+       sh -c "perldoc perlamiga"
 
-to list some (not all may be available simultaneously), or it may
-be read I<as is>: either as F<README.amiga>, or F<pod/perlamiga.pod>.
+or you may read I<as is>: either as F<README.amiga>, or F<pod/perlamiga.pod>.
 
 =cut
 
-Contents
- perlamiga - Perl under Amiga OS
-
-       NAME 
-       SYNOPSIS 
-       DESCRIPTION 
-         -  Prerequisites 
+       NAME
+       SYNOPSIS
+       DESCRIPTION
+         -  Prerequisites
          -  Starting Perl programs under AmigaOS
          -  Shortcomings of Perl under AmigaOS
-       INSTALLATION 
-       Accessing documentation 
-         -  Manpages 
-         -  HTML 
-         -  GNU info files 
-         -  LaTeX docs 
-       BUILD 
-         -  Prerequisites 
-         -  Getting the perl source 
-         -  Application of the patches 
-         -  Making 
-         -  Testing 
-         -  Installing the built perl 
-       AUTHOR 
-       SEE ALSO 
+       INSTALLATION
+       CHANGES
 
 =head1 DESCRIPTION
 
-=head2 Prerequisites
+=head2 Prerequisites for running Perl 5.22.1 under AmigaOS 4.1
 
 =over 6
 
-=item B<Unix emulation for AmigaOS: ixemul.library>
+=item B<AmigaOS 4.1 update 6 with all updates applied as of 9th October 2013>
 
-You need the Unix emulation for AmigaOS, whose most important part is
-B<ixemul.library>. For a minimum setup, get the following archives from
-ftp://ftp.ninemoons.com/pub/ade/current or a mirror:
+The most important of which is:
 
-ixemul-46.0-bin.lha
-ixemul-46.0-env-bin.lha
-pdksh-4.9-bin.lha
-ADE-misc-bin.lha
+=item B<newlib.library version 53.28 or greater>
 
-Note that there might be newer versions available by the time you read
-this.
+=item B<AmigaOS SDK>
 
-Note also that this is a minimum setup; you might want to add other
-packages of B<ADE> (the I<Amiga Developers Environment>).
+Perl installs into the SDK directory structure and expects many of the
+build tools present in the SDK to be available. So for the best results
+install the SDK first.
 
-=item B<Version of Amiga OS>
+=item B<abc-shell>
 
-You need at the very least AmigaOS version 2.0. Recommended is version 3.1.
+If you do not have the SDK installed you must at least have abc-shell
+installed or some other suitable sh port. This is required to run
+external commands and should be available as 'sh' in your path.
 
 =back
 
-=head2 Starting Perl programs under AmigaOS
-
-Start your Perl program F<foo> with arguments C<arg1 arg2 arg3> the
-same way as on any other platform, by
+=head2 Starting Perl programs under AmigaOS 4.1
 
-       perl foo arg1 arg2 arg3
+Perl may be run from the AmigaOS shell but for best results should be
+run under abc-shell.  (abc-shell handles file globbing, pattern
+expansion, and sets up environment variables in the UN*Xy way that
+Perl expects.)
 
-If you want to specify perl options C<-my_opts> to the perl itself (as
-opposed to to your program), use
+For example:
 
-       perl -my_opts foo arg1 arg2 arg3
+       New Shell process 10
+       10.AmigaOS4:> sh
+       /AmigaOS4>perl path:to/myprog arg1 arrg2 arg3
 
-Alternately, you can try to get a replacement for the system's B<Execute>
-command that honors the #!/usr/bin/perl syntax in scripts and set the s-Bit
-of your scripts. Then you can invoke your scripts like under UNIX with
+Abc-shell can also launch programs via the #! syntax at the start of
+the program file, it's best use the form #!SDK:Local/C/perl so that
+the AmigaOS shell may also find perl in the same way. AmigaOS requires
+the script bit to be set for this to work
 
-       foo arg1 arg2 arg3
+       10.AmigaOS4:> sh
+       /AmigaOS4>myprog arg1 arrg2 arg3
 
-(Note that having *nixish full path to perl F</usr/bin/perl> is not
-necessary, F<perl> would be enough, but having full path would make it
-easier to use your script under *nix.)
-
-=head2 Shortcomings of Perl under AmigaOS
-
-Perl under AmigaOS lacks some features of perl under UNIX because of
-deficiencies in the UNIX-emulation, most notably:
+=head2 Limitations of Perl under AmigaOS 4.1
 
 =over 6
 
-=item fork()
+=item B<Nested Piped programs can crash when run from older abc-shells>
 
-=item some features of the UNIX filesystem regarding link count and file dates
+abc-shell version 53.2 has a bug that can cause crashes in the
+subprocesses used to run piped programs, if a later version is
+available you should install it instead.
 
-=item inplace operation (the -i switch) without backup file
+=item B<Incorrect or unexpected command line unescaping>
 
-=item umask() works, but the correct permissions are only set when the file is
-      finally close()d
+newlib.library 53.30 and earlier incorrectly unescape slashed escape
+sequences e.g. \" \n \t etc requiring unusual extra escaping.
 
-=back
+=item B<Starting subprocesses via open has limitations>
 
-=head1 INSTALLATION
+       open FH, "command |"
 
-Change to the installation directory (most probably ADE:), and
-extract the binary distribution:
+Subprocesses started with open use a minimal popen() routine and
+therefore they do not return pids usable with waitpid etc.
 
-lha -mraxe x perl-5.003-bin.lha
+=item If you find any other limitations or bugs then let me know.
 
-or
+Please report bugs in this version of perl to andy@broad.ology.org.uk
+in the first instance.
 
-tar xvzpf perl-5.003-bin.tgz
+=back
 
-(Of course you need lha or tar and gunzip for this.)
+=head1 INSTALLATION
 
-For installation of the Unix emulation, read the appropriate docs.
+This guide assumes you have obtained a prebuilt archive from os4depot.net.
 
-=head1 Accessing documentation
+Unpack the main archive to a temporary location (RAM: is fine).
 
-=head2 Manpages
+Execute the provided install script from shell or via its icon.
 
-If you have C<man> installed on your system, and you installed perl
-manpages, use something like this:
+You B<must not> attempt to install by hand.
 
-       man perlfunc
-       man less
-       man ExtUtils.MakeMaker
+Once installed you may delete the temporary archive.
 
-to access documentation for different components of Perl. Start with
+This approach will preserve links in the installation without creating
+duplicate binaries.
 
-       man perl
+If you have the earlier ports perl 5.16 or 5.8 installed you may like
+to rename your perl executable to perl516 or perl58 or something
+similar before the installation of 5.22.1, this will allow you to use
+both versions at the same time.
 
-Note: You have to modify your man.conf file to search for manpages
-in the /ade/lib/perl5/man/man3 directory, or the man pages for the
-perl library will not be found. 
+=head1 Amiga Specific Modules
 
-Note that dot (F<.>) is used as a package separator for documentation
-for packages, and as usual, sometimes you need to give the section - C<3>
-above - to avoid shadowing by the I<less(1) manpage>.
+=head2 Amiga::ARexx
 
+The Amiga::ARexx module allows you to easily create a perl based ARexx
+host or to send ARexx commands to other programs.
 
-=head2 B<HTML>
+Try C<perldoc Amiga::ARexx> for more info.
 
-If you have some WWW browser available, you can build B<HTML> docs.
-Cd to directory with F<.pod> files, and do like this
+=head2 Amiga::Exec
 
-       cd /ade/lib/perl5/pod
-       pod2html
+The Amiga::Exec module introduces support for Wait().
 
-After this you can direct your browser the file F<perl.html> in this
-directory, and go ahead with reading docs.
+Try C<perldoc Amiga::Exec> for more info.
 
-Alternatively you may be able to get these docs prebuilt from C<CPAN>.
+=head1 BUILDING
 
-=head2 B<GNU> C<info> files
+To build perl under AmigaOS from the patched sources you will need to
+have a recent version of the SDK. Version 53.29 is recommended,
+earlier versions will probably work too.
 
-Users of C<Emacs> would appreciate it very much, especially with
-C<CPerl> mode loaded. You need to get latest C<pod2info> from C<CPAN>,
-or, alternately, prebuilt info pages.
+With the help of Jarkko Hietaniemi the Configure system has been tweaked to
+run under abc-shell so the recommend build process is as follows.
 
-=head2 C<LaTeX> docs
+       stack 2000000
+       sh Configure -de
+       gmake
 
-can be constructed using C<pod2latex>.
+This will build the default setup that installs under SDK:local/newlib/lib/
 
-=head1 BUILD
+=head1 CHANGES
 
-Here we discuss how to build Perl under AmigaOS.
+=over 6
 
-=head2 Prerequisites
+=item B<August 2015>
 
-You need to have the latest B<ADE> (Amiga Developers Environment)
-from ftp://ftp.ninemoons.com/pub/ade/current.
-Also, you need a lot of free memory, probably at least 8MB.
+=over 2
 
-=head2 Getting the perl source
+=item Port to Perl 5.22
 
-You can either get the latest perl-for-amiga source from Ninemoons
-and extract it with:
+=item Add handling of NIL: to afstat()
 
-  tar xvzpf perl-5.004-src.tgz
+=item Fix inheritance of environment variables by subprocesses.
 
-or get the official source from CPAN:
+=item Fix exec, and exit in "forked" subprocesses.
 
-  http://www.perl.com/CPAN/src/5.0
+=item Fix issue with newlib's unlink, which could cause infinite loops.
 
-Extract it like this
+=item Add flock() emulation using IDOS->LockRecord thanks to Tony Cook
+for the suggestion.
 
-  tar xvzpf perl5.004.tar.gz
+=item Fix issue where kill was using the wrong kind of process ID
 
-You will see a message about errors while extracting F<Configure>. This
-is normal and expected. (There is a conflict with a similarly-named file
-F<configure>, but it causes no harm.)
+=back
 
-=head2 Making
+=item B<27th November 2013>
 
-  sh configure.gnu --prefix=/ade
+=over 2
 
-Now
+=item Create new installation system based on installperl links
+and Amiga protection bits now set correctly.
 
-  make
+=item Pod now defaults to text.
 
-=head2 Testing
+=item File::Spec should now recognise an Amiga style absolute path as well
+as an Unix style one. Relative paths must always be Unix style.
 
-Now run
+=back
 
-  make test
+=item B<20th November 2013>
 
-Some tests will be skipped because they need the fork() function:
+=over 2
 
-F<io/pipe.t>, F<op/fork.t>, F<lib/filehand.t>, F<lib/open2.t>, F<lib/open3.t>, 
-F<lib/io_pipe.t>, F<lib/io_sock.t>
+=item Configured to use SDK:Local/C/perl to start standard scripts
 
-=head2 Installing the built perl
+=item Added Amiga::Exec module with support for Wait() and AmigaOS signal numbers.
 
-Run
+=back
 
-  make install
+=item B<10th October 13>
 
-=head1 AUTHOR
+First release of port to 5.16.3.
 
-Norbert Pueschel, pueschel@imsdd.meb.uni-bonn.de
+=back
 
 =head1 SEE ALSO
 
-perl(1).
+You like this port?  See L<http://www.broad.ology.org.uk/amiga/>
+for how you can help.
 
 =cut