Integrate from mainperl.
[p5sagit/p5-mst-13.2.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index 9c0e96e..98e7c62 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -26,6 +26,13 @@ For information on what's new in this release, see the
 pod/perldelta.pod file.  For more detailed information about specific
 changes, see the Changes file.
 
+IMPORTANT NOTE:  5.005_53 and later releases do not export unadorned
+global symbols anymore.  This means most CPAN modules probably won't
+build under this release without adding '-DPERL_POLLUTE' to ccflags
+in config.sh.  This is not the default because we want the modules
+to get fixed *before* the 5.006 release.  pod/perldelta.pod contains
+additional notes about this.
+
 =head1 DESCRIPTION
 
 This document is written in pod format as an easy way to indicate its
@@ -62,7 +69,25 @@ The standard extensions supplied with Perl will be handled automatically.
 
 In a related issue, old extensions may possibly be affected by the
 changes in the Perl language in the current release.  Please see
-pod/perldelta.pod for a description of what's changed.
+pod/perldelta.pod (and pod/perl500Xdelta.pod) for a description of
+what's changed.
+
+=head1 WARNING:  This version requires a compiler that supports ANSI C.
+
+If you find that your C compiler is not ANSI-capable, try obtaining
+GCC, available from GNU mirrors worldwide (e.g. ftp://ftp.gnu.org/pub/gnu).
+Another alternative may be to use a tool like C<ansi2knr> to convert the
+sources back to K&R style, but there is no guarantee this route will get
+you anywhere, since the prototypes are not the only ANSI features used
+in the Perl sources.  C<ansi2knr> is usually found as part of the freely
+available C<Ghostscript> distribution.  Another similar tool is
+C<unprotoize>, distributed with GCC.  Since C<unprotoize> requires GCC to
+run, you may have to run it on a platform where GCC is available, and move
+the sources back to the platform without GCC.
+
+If you succeed in automatically converting the sources to a K&R compatible
+form, be sure to email perlbug@perl.com to let us know the steps you
+followed.  This will enable us to officially support this option.
 
 =head1 Space Requirements
 
@@ -167,6 +192,9 @@ put (symlinks to) perl and its accompanying utilities, such as perldoc,
 into a directory typically found along a user's PATH, or in another
 obvious and convenient place.
 
+You can use "Configure -Uinstallusrbinperl" which causes installperl
+to skip installing perl also as /usr/bin/perl.
+
 By default, Configure will compile perl to use dynamic loading if
 your system supports it.  If you want to force perl to be compiled
 statically, you can either choose this when Configure prompts you or
@@ -472,23 +500,26 @@ that problem.
 
 If you need to install perl on many identical systems, it is
 convenient to compile it once and create an archive that can be
-installed on multiple systems.  Here's one way to do that:
+installed on multiple systems.  Suppose, for example, that you want to
+create an archive that can be installed in /opt/perl.
+Here's one way to do that:
 
     # Set up config.over to install perl into a different directory,
     # e.g. /tmp/perl5 (see previous part).
-    sh Configure -des
+    sh Configure -Dprefix=/opt/perl -des
     make
     make test
-    make install
+    make install   # This will install everything into /tmp/perl5.
     cd /tmp/perl5
-    # Edit $archlib/Config.pm to change all the
+    # Edit $archlib/Config.pm and $archlib/.packlist to change all the
     # install* variables back to reflect where everything will
-    # really be installed.
-    # Edit any of the scripts in $scriptdir to have the correct
+    # really be installed.  (That is, change /tmp/perl5 to /opt/perl
+    # everywhere in those files.)
+    # Check the scripts in $scriptdir to make sure they have the correct
     # #!/wherever/perl line.
     tar cvf ../perl5-archive.tar .
     # Then, on each machine where you want to install perl,
-    cd /usr/local  # Or wherever you specified as $prefix
+    cd /opt/perl # Or wherever you specified as $prefix
     tar xvf perl5-archive.tar
 
 =head2 Site-wide Policy settings
@@ -716,6 +747,11 @@ To build without perl's malloc, you can use the Configure command
 
 or you can answer 'n' at the appropriate interactive Configure prompt.
 
+Note that Perl's malloc family of functions are called Perl_malloc(),
+Perl_realloc(), Perl_calloc() and Perl_mfree().  The names do not clash
+with the system versions of these functions.  See -DPERL_POLLUTE_MALLOC
+below if you want to do that for some reason.
+
 =head2 Malloc Performance Flags
 
 If you are using Perl's malloc, you may add one or more of the following
@@ -736,6 +772,18 @@ in Perl 5.004.
 Undefined by default.  Defining it in addition to NO_FANCY_MALLOC returns
 malloc to the version used in Perl version 5.000.
 
+=item -DPERL_POLLUTE_MALLOC
+
+Undefined by default.  This is used to force Perl's malloc family of functions
+to have the same names as the system versions.  This is normally only required
+when you have a need to replace the system versions of these functions.
+This may be sometimes required when you have libraries that like to free()
+data that may have been allocated by Perl_malloc() and vice versa.
+
+Note that enabling this option may sometimes lead to duplicate symbols from
+the linker for malloc et al.  In such cases, the system probably does not
+allow its malloc functions to be fully replaced with custom versions.
+
 =back
 
 =head2 Building a debugging perl
@@ -980,11 +1028,6 @@ The latter is especially useful if you see something like this
 
 at Perl startup.
 
-=item malloc duplicates
-
-If you get duplicates upon linking for malloc et al, add -DEMBEDMYMALLOC
-to your ccflags variable in config.sh.
-
 =item varargs
 
 If you get varargs problems with gcc, be sure that gcc is installed