X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/4375e838ae24b385ae79fa7b6918e613bedaaee6..c4a2ac437ed67b458e466f3724f82c10afc3eb40:/README.amiga diff --git a/README.amiga b/README.amiga index 8951f35..41345c1 100644 --- a/README.amiga +++ b/README.amiga @@ -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: either as F, or F. +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 - - 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 +=item B -You need the Unix emulation for AmigaOS, whose most important part is -B. 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 -Note that there might be newer versions available by the time you read -this. +=item B -Note also that this is a minimum setup; you might want to add other -packages of B (the I). +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 +=item B -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 with arguments C 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 -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 is not -necessary, F 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 -=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 -=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 -=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 installed on your system, and you installed perl -manpages, use something like this: +You B 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. +=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 +Try C for more info. -If you have some WWW browser available, you can build B 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 in this -directory, and go ahead with reading docs. +Try C for more info. -Alternatively you may be able to get these docs prebuilt from C. +=head1 BUILDING -=head2 B C 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 would appreciate it very much, especially with -C mode loaded. You need to get latest C from C, -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 docs + stack 2000000 + sh Configure -de + gmake -can be constructed using C. +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 -You need to have the latest B (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. This -is normal and expected. (There is a conflict with a similarly-named file -F, 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, F, F, F, F, -F, F +=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 +for how you can help. =cut