| 1 | If you read this file _as_is_, just ignore the funny characters you see.
|
|---|
| 2 | It is written in the POD format (see pod/perlpod.pod) which is specially
|
|---|
| 3 | designed to be readable as is.
|
|---|
| 4 |
|
|---|
| 5 | =head1 NAME
|
|---|
| 6 |
|
|---|
| 7 | README.mint - Perl version 5 on Atari MiNT
|
|---|
| 8 |
|
|---|
| 9 | =head1 DESCRIPTION
|
|---|
| 10 |
|
|---|
| 11 | There is a binary version of perl available from the FreeMiNT project
|
|---|
| 12 | http://freemint.de/ You may wish to use this instead of trying to
|
|---|
| 13 | compile yourself.
|
|---|
| 14 |
|
|---|
| 15 | B<The following advice is from perl 5.004_02 and is probably rather
|
|---|
| 16 | out of date.>
|
|---|
| 17 |
|
|---|
| 18 | If you want to build perl yourself on MiNT (or maybe on an Atari without
|
|---|
| 19 | MiNT) you may want to accept some advice from somebody who already did it...
|
|---|
| 20 |
|
|---|
| 21 | There was a perl port for Atari ST done by ++jrb [email protected].
|
|---|
| 22 | This port tried very hard to build on non-MiNT-systems. For the
|
|---|
| 23 | sake of efficiency I've left this way. Yet, I haven't removed bammi's
|
|---|
| 24 | patches but left them intact. Unfortunately some of the files that
|
|---|
| 25 | bammi contributed to the perl distribution seem to have vanished?
|
|---|
| 26 |
|
|---|
| 27 | So, how can you distinguish my patches from bammi's patches? All of
|
|---|
| 28 | bammi's stuff is embedded in "#ifdef atarist" preprocessor macros.
|
|---|
| 29 | My MiNT port uses "#ifdef __MINT__" instead (and unconditionally
|
|---|
| 30 | undefines "atarist". If you want to continue on bammi's port, all
|
|---|
| 31 | you have to do is to swap the "-D" and "-U" switches for "__MINT__"
|
|---|
| 32 | and "atarist" in the variable ccflags.
|
|---|
| 33 |
|
|---|
| 34 | However, I think that my version will still run on non-MiNT-systems
|
|---|
| 35 | provided that the user has a Eunuchs-like environment (i.e. the
|
|---|
| 36 | standard envariables like $PATH, $HOME, ... are set, there is a
|
|---|
| 37 | POSIX compliant shell in /bin/sh, and...)
|
|---|
| 38 |
|
|---|
| 39 | =head1 Known problems with Perl on MiNT
|
|---|
| 40 |
|
|---|
| 41 | The problems you may encounter when building perl on your machine
|
|---|
| 42 | are most probably due to deficiencies in MiNT resp. the Atari
|
|---|
| 43 | platform in general.
|
|---|
| 44 |
|
|---|
| 45 | First of all, if you have less than 8 MB of RAM you shouldn't
|
|---|
| 46 | even try to build Perl yourself. Better grab a binary pre-compiled
|
|---|
| 47 | version somewhere. Even if you have more memory you should take
|
|---|
| 48 | some care. Try to run in a fresh environment (without memory
|
|---|
| 49 | fragmented too much) with as few daemons, accessories, xcontrol
|
|---|
| 50 | modules etc. as possible. If you run some AES you should
|
|---|
| 51 | consider to start a console based environment instead.
|
|---|
| 52 |
|
|---|
| 53 | A problem has been reported with sed. Sed is used to create
|
|---|
| 54 | some configuration files based on the answers you have given
|
|---|
| 55 | to the Configure script. Unfortunately the Perl Configure script
|
|---|
| 56 | shows sed on MiNT its limits. I have sed 2.05 with a stacksize
|
|---|
| 57 | of 64k and I have encountered no problems. If sed crashes
|
|---|
| 58 | during your configuration process you should first try to
|
|---|
| 59 | augment sed's stacksize:
|
|---|
| 60 |
|
|---|
| 61 | fixstk 64k /usr/bin/sed
|
|---|
| 62 |
|
|---|
| 63 | (or similar). If it still doesn't help you may have a look
|
|---|
| 64 | which other versions of sed are installed on your system.
|
|---|
| 65 | If you have a KGMD 1.0 installation you will find three
|
|---|
| 66 | in /usr/bin. Have a look there.
|
|---|
| 67 |
|
|---|
| 68 | Perl has some "mammut" C files. If gcc reports "internal
|
|---|
| 69 | compiler error: program cc1 got fatal signal 10" this is very
|
|---|
| 70 | likely due to a stack overflow in program cc1. Find cc1
|
|---|
| 71 | and fix its stack. I have made good experiences with
|
|---|
| 72 |
|
|---|
| 73 | fixstk 2 cc1
|
|---|
| 74 |
|
|---|
| 75 | This doesn't establish a stack of 2 Bytes only as you might
|
|---|
| 76 | think. It really reserves one half of the available memory
|
|---|
| 77 | for cc1's stack. A setting of 1 would reserve the entire
|
|---|
| 78 | memory for cc1, 3 would reserve three fourths. You will have
|
|---|
| 79 | to find out the value that suits to your system yourself.
|
|---|
| 80 |
|
|---|
| 81 | To find out the location of the program "cc1" simply type
|
|---|
| 82 | `gcc --print-prog-name cc1' at your shell prompt.
|
|---|
| 83 |
|
|---|
| 84 | Now run make (maybe "make -k"). If you get a fatal signal 10
|
|---|
| 85 | increase cc1's stacksize, if you run out of memory you should
|
|---|
| 86 | either decrease the stacksize or follow some more hints:
|
|---|
| 87 |
|
|---|
| 88 | Perl's building process is very handy on machines with a lot
|
|---|
| 89 | of virtual memory but may result in a disaster if you are short
|
|---|
| 90 | of memory. If gcc fails to compile many source files you should
|
|---|
| 91 | reduce the optimization. Grep for "optimize" in the file
|
|---|
| 92 | config.sh and change the flags.
|
|---|
| 93 |
|
|---|
| 94 | If only several huge files cause problems (actually it is not a
|
|---|
| 95 | matter of the file size resp. the amount of code but depends on
|
|---|
| 96 | the size of the individual functions) it is useful to bypass
|
|---|
| 97 | the make program and compile these files directly from the
|
|---|
| 98 | command line. For example if you got something like the
|
|---|
| 99 | following from make:
|
|---|
| 100 |
|
|---|
| 101 | CCCMD = gcc -DPERL_CORE ....
|
|---|
| 102 | ...
|
|---|
| 103 | ...: virtual memory exhausted
|
|---|
| 104 |
|
|---|
| 105 | you should hack into the shell:
|
|---|
| 106 |
|
|---|
| 107 | gcc -DPERL_CORE ... toke.c
|
|---|
| 108 |
|
|---|
| 109 | Please note that you have to add the name of the source file
|
|---|
| 110 | (here toke.c) at the end.
|
|---|
| 111 |
|
|---|
| 112 | If none of this helps, you're helpless. Wait for a binary
|
|---|
| 113 | release. If you have succeeded you may encounter another problem
|
|---|
| 114 | at the linking process. If gcc complains that it can't find
|
|---|
| 115 | some libraries within the perl distribution you probably have
|
|---|
|
|---|