X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/3a1825b5137e86b5a16512c85cd54354148a299f..f3962485cead8dc91a01da568304dfc6b040c479:/README.amiga diff --git a/README.amiga b/README.amiga index f558ac3..41345c1 100644 --- a/README.amiga +++ b/README.amiga @@ -4,275 +4,220 @@ specially designed to be readable as is. =head1 NAME -perlamiga - Perl under Amiga OS +perlamiga - Perl under AmigaOS 4.1 =head1 NOTE -B if you want to help -fixing this problem.> +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. -=head1 SYNOPSIS - -One can read this document in the following formats: +newlib.library version 53.28 or greater is required. - man perlamiga - multiview perlamiga.guide +=head1 SYNOPSIS -to list some (not all may be available simultaneously), or it may -be read I: either as F, or F. +Once perl is installed you can read this document in the following way -A recent version of perl for the Amiga can be found at the Geek Gadgets -section of the Aminet: + sh -c "perldoc perlamiga" - http://www.aminet.net/~aminet/dev/gg/index.html +or you may read I: either as F, or F. =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 - - 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 for Compiling Perl on AmigaOS +=head2 Prerequisites for running Perl 5.22.1 under AmigaOS 4.1 =over 6 -=item B - -You need the Unix emulation for AmigaOS, whose most important part is -B. For a minimum setup, get the latest versions -of the following packages from the Aminet archives -( http://www.aminet.net/~aminet/ ): - - ixemul-bin - ixemul-env-bin - pdksh-bin +=item B -Note also that this is a minimum setup; you might want to add other -packages of B (the I). +The most important of which is: -=item B +=item B -You need at the very least AmigaOS version 2.0. Recommended is version 3.1. +=item B -=back +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. -=head2 Starting Perl programs under AmigaOS +=item B -Start your Perl program F with arguments C the -same way as on any other platform, by +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. - perl foo arg1 arg2 arg3 +=back -If you want to specify perl options C<-my_opts> to the perl itself (as -opposed to your program), use +=head2 Starting Perl programs under AmigaOS 4.1 - perl -my_opts 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.) -Alternately, you can try to get a replacement for the system's B -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 +For example: - foo arg1 arg2 arg3 + New Shell process 10 + 10.AmigaOS4:> sh + /AmigaOS4>perl path:to/myprog arg1 arrg2 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.) +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 -=head2 Shortcomings of Perl under AmigaOS + 10.AmigaOS4:> sh + /AmigaOS4>myprog arg1 arrg2 arg3 -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 * +=item B + +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. -fork() +=item B -=item * +newlib.library 53.30 and earlier incorrectly unescape slashed escape +sequences e.g. \" \n \t etc requiring unusual extra escaping. -some features of the UNIX filesystem regarding link count and file dates +=item B -=item * + open FH, "command |" -inplace operation (the -i switch) without backup file +Subprocesses started with open use a minimal popen() routine and +therefore they do not return pids usable with waitpid etc. -=item * +=item If you find any other limitations or bugs then let me know. -umask() works, but the correct permissions are only set when the file is -finally close()d +Please report bugs in this version of perl to andy@broad.ology.org.uk +in the first instance. =back =head1 INSTALLATION -Change to the installation directory (most probably ADE:), and -extract the binary distribution: - -lha -mraxe x perl-$VERSION-bin.lha - -or - -tar xvzpf perl-$VERSION-bin.tgz +This guide assumes you have obtained a prebuilt archive from os4depot.net. -(Of course you need lha or tar and gunzip for this.) +Unpack the main archive to a temporary location (RAM: is fine). -For installation of the Unix emulation, read the appropriate docs. +Execute the provided install script from shell or via its icon. -=head1 Accessing documentation +You B attempt to install by hand. -=head2 Manpages for Perl on AmigaOS +Once installed you may delete the temporary archive. -If you have C installed on your system, and you installed perl -manpages, use something like this: +This approach will preserve links in the installation without creating +duplicate binaries. - man perlfunc - man less - man ExtUtils.MakeMaker +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. -to access documentation for different components of Perl. Start with +=head1 Amiga Specific Modules - man perl +=head2 Amiga::ARexx -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. +The Amiga::ARexx module allows you to easily create a perl based ARexx +host or to send ARexx commands to other programs. -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. +Try C for more info. +=head2 Amiga::Exec -=head2 Perl HTML Documentation on AmigaOS +The Amiga::Exec module introduces support for Wait(). -If you have some WWW browser available, you can build B docs. -Cd to directory with F<.pod> files, and do like this +Try C for more info. - cd /ade/lib/perl5/pod - pod2html +=head1 BUILDING -After this you can direct your browser the file F in this -directory, and go ahead with reading docs. +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. -Alternatively you may be able to get these docs prebuilt from C. +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 Perl GNU Info Files on AmigaOS + stack 2000000 + sh Configure -de + gmake -Users of C would appreciate it very much, especially with -C mode loaded. You need to get latest C from C, -or, alternately, prebuilt info pages. +This will build the default setup that installs under SDK:local/newlib/lib/ -=head2 Perl LaTeX Documentation on AmigaOS +=head1 CHANGES -Can be constructed using C. - -=head1 BUILDING PERL ON AMIGAOS - -Here we discuss how to build Perl under AmigaOS. - -=head2 Build Prerequisites for Perl on AmigaOS - -You need to have the latest B (Unix emulation for Amiga) -from Aminet. - -=head2 Getting the Perl Source for AmigaOS - -You can either get the latest perl-for-amiga source from Ninemoons -and extract it with: - - tar xvzpf perl-$VERSION-src.tgz +=over 6 -or get the official source from CPAN: +=item B - http://www.cpan.org/src/5.0 +=over 2 -Extract it like this +=item Port to Perl 5.22 - tar xvzpf perl-$VERSION.tar.gz +=item Add handling of NIL: to afstat() -You will see a message about errors while extracting F. This -is normal and expected. (There is a conflict with a similarly-named file -F, but it causes no harm.) +=item Fix inheritance of environment variables by subprocesses. -=head2 Making Perl on AmigaOS +=item Fix exec, and exit in "forked" subprocesses. -Remember to use a hefty wad of stack (I use 2000000) +=item Fix issue with newlib's unlink, which could cause infinite loops. - sh configure.gnu --prefix=/gg +=item Add flock() emulation using IDOS->LockRecord thanks to Tony Cook +for the suggestion. -Now type +=item Fix issue where kill was using the wrong kind of process ID - make depend +=back -Now! +=item B<27th November 2013> - make +=over 2 -=head2 Testing Perl on AmigaOS +=item Create new installation system based on installperl links +and Amiga protection bits now set correctly. -Now run +=item Pod now defaults to text. - make test +=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. -Some tests will be skipped because they need the fork() function: +=back -F, F, F, F, F, -F, F +=item B<20th November 2013> -=head2 Installing the built Perl on AmigaOS +=over 2 -Run +=item Configured to use SDK:Local/C/perl to start standard scripts - make install +=item Added Amiga::Exec module with support for Wait() and AmigaOS signal numbers. -=head1 PERL 5.8.0 BROKEN IN AMIGAOS +=back -As told above, Perl 5.6.1 was still good in AmigaOS, as was 5.7.2. -After Perl 5.7.2 (change #11423, see the Changes file, and the file -pod/perlhack.pod for how to get the individual changes) Perl dropped -its internal support for vfork(), and that was very probably the step -that broke AmigaOS (since the ixemul library has only vfork). -The build finally fails when the ext/DynaLoader is being built, and -PERL ends up as "0" in the produced Makefile, trying to run "0" does -not quite work. Also, executing miniperl in backticks seems to -generate nothing: very probably related to the (v)fork problems. -B +=item B<10th October 13> -=head1 AUTHORS +First release of port to 5.16.3. -Norbert Pueschel, pueschel@imsdd.meb.uni-bonn.de -Jan-Erik Karlsson, trg@privat.utfors.se +=back =head1 SEE ALSO -perl(1). +You like this port? See L +for how you can help. =cut