This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
new perldelta
[perl5.git] / Policy_sh.SH
old mode 100644 (file)
new mode 100755 (executable)
index b2ea8e9..1c99255
@@ -1,4 +1,6 @@
-case $CONFIG in
+#!/bin/sh
+
+case $PERL_CONFIG_SH in
 '') . ./config.sh ;;
 esac
 echo "Extracting Policy.sh (with variable substitutions)"
@@ -7,113 +9,250 @@ $startsh
 #
 #  This file was produced by running the Policy_sh.SH script, which
 #  gets its values from config.sh, which is generally produced by
-#  running Configure.  The Policy.sh file gets overwritten each time
-#  Configure is run.  Any variables you add to Policy.sh will be lost
-#  unless you copy Policy.sh somewhere else before running Configure.
+#  running Configure.  
 #
 #  The idea here is to distill in one place the common site-wide
 #  "policy" answers (such as installation directories) that are
-#  to be "sticky".  That is, if you keep the file Policy.sh around in
+#  to be "sticky".  If you keep the file Policy.sh around in
 #  the same directory as you are building Perl, then Configure will
 #  (by default) load up the Policy.sh file just before the
-#  platform-specific hints file.
-# 
+#  platform-specific hints file and rewrite it at the end.
+#
+#   The sequence of events is as follows:
+#   A:  If you are NOT re-using an old config.sh:
+#   1.  At start-up, Configure loads up the defaults from the
+#      os-specific  hints/osname_osvers.sh file and any previous
+#      Policy.sh file.
+#   2.  At the end, Configure runs Policy_sh.SH, which creates
+#      Policy.sh, overwriting a previous Policy.sh if necessary.
+#
+#   B: If you are re-using an old config.sh:
+#   1.  At start-up, Configure loads up the defaults from config.sh, 
+#      ignoring any previous Policy.sh file.
+#   2.  At the end, Configure runs Policy_sh.SH, which creates
+#      Policy.sh, overwriting a previous Policy.sh if necessary.
+#
+#  Thus the Policy.sh file gets overwritten each time
+#  Configure is run.  Any variables you add to Policy.sh will be lost
+#  unless you copy Policy.sh somewhere else before running Configure.
+#
+#  Allow Configure command-line overrides; usually these won't be
+#  needed, but something like -Dprefix=/test/location can be quite
+#  useful for testing out new versions.
 
-#Credits:
-#   The original design for this Policy.sh file came from Wayne Davison,
-#   maintainer of trn.
-#   This version for Perl5.004_61 originally written by 
-#   Andy Dougherty <doughera@lafcol.lafayette.edu>.
-#   This file may be distributed under the same terms as Perl itself.
+#Site-specific values:
+
+case "\$perladmin" in
+'') perladmin='$perladmin' ;;
+esac
 
+# Installation prefixes.  Allow a Configure -D override.  You
+# may wish to reinstall perl under a different prefix, perhaps
+# in order to test a different configuration.
+# For an explanation of the installation directories, see the
+# INSTALL file section on "Installation Directories".
+case "\$prefix" in
+'') prefix='$prefix' ;;
+esac
 
-#  Site-specific values 
+# By default, the next three are the same as \$prefix.  
+# If the user changes \$prefix, and previously \$siteprefix was the
+# same as \$prefix, then change \$siteprefix as well.
+# Use similar logic for \$vendorprefix and \$installprefix.
 
-perladmin='$perladmin'
+case "\$siteprefix" in
+'') if test "$siteprefix" = "$prefix"; then
+       siteprefix="\$prefix"
+    else
+       siteprefix='$siteprefix'
+    fi
+    ;;
+esac
+case "\$vendorprefix" in
+'') if test "$vendorprefix" = "$prefix"; then
+       vendorprefix="\$prefix"
+    else
+       vendorprefix='$vendorprefix'
+    fi
+    ;;
+esac
+
+# Where installperl puts things.
+case "\$installprefix" in
+'') if test "$installprefix" = "$prefix"; then
+       installprefix="\$prefix"
+    else
+       installprefix='$installprefix'
+    fi
+    ;;
+esac
 
 # Installation directives.  Note that each one comes in three flavors.
 # For example, we have privlib, privlibexp, and installprivlib.
 # privlib is for private (to perl) library files.
-# privlibexp is the same, expcept any '~' the user gave to Configure
+# privlibexp is the same, except any '~' the user gave to Configure
 #     is expanded to the user's home directory.  This is figured
-#     out automatically by Configure, so you don't have to include it here.   
+#     out automatically by Configure, so you don't have to include it here.
 # installprivlib is for systems (such as those running AFS) that
 #     need to distinguish between the place where things
-#     get installed and where they finally will reside.
+#     get installed and where they finally will reside.  As of 5.005_6x,
+#     this too is handled automatically by Configure based on
+#     $installprefix, so it isn't included here either.
+#
+# Note also that there are three broad hierarchies of installation 
+# directories, as discussed in the INSTALL file under 
+# "Installation Directories":
+#
+#  =item Directories for the perl distribution
+#
+#  =item Directories for site-specific add-on files
+#
+#  =item Directories for vendor-supplied add-on files
+#
+#  See Porting/Glossary for the definitions of these names, and see the
+#  INSTALL file for further explanation and some examples.
+# 
+# In each case, if your previous value was the default, leave it commented
+# out.  That way, if you override prefix, all of these will be
+# automatically adjusted.
+#
+# WARNING:  Be especially careful about architecture-dependent and
+# version-dependent names, particularly if you reuse this file for
+# different versions of perl.
 
-# Installation Prefix.
-prefix='$prefix'
+!GROK!THIS!
 
-bin='$bin'
-installbin='$installbin'
+# Set the following variables.  Mention them here so metaconfig
+# includes the appropriate code in Configure
+#   $bin $scriptdir $privlib $archlib 
+#      $man1dir $man3dir $html1dir $html3dir 
+#   $sitebin $sitescript $sitelib $sitearch 
+#      $siteman1dir $siteman3dir $sitehtml1dir $sitehtml3dir
+#   $vendorbin $vendorscript $vendorlib $vendorarch
+#      $vendorman1dir $vendorman3dir $vendorhtml1dir $vendorhtml3dir
 
-scriptdir='$scriptdir'
-installscript='$installscript'
+for var in \
+       bin scriptdir privlib archlib man1dir man3dir man1ext man3ext \
+       html1dir html3dir \
+       sitebin sitescript sitelib sitearch \
+               siteman1dir siteman3dir sitehtml1dir sitehtml3dir \
+       vendorbin vendorscript vendorlib vendorarch \
+               vendorman1dir vendorman3dir vendorhtml1dir vendorhtml3dir
+do
+       
+    case "$var" in
 
-privlib='$privlib'
-installprivlib='$installprivlib'
+    # Directories for the core perl components
+    bin)       dflt=$prefix/bin ;;
+    # The scriptdir test is more complex, but this is probably usually ok.
+    scriptdir)
+       if $test -d $prefix/script; then
+           dflt=$prefix/script
+       else
+           dflt=$bin
+       fi
+       ;;
+    privlib)
+       case "$prefix" in
+       *perl*) dflt=$prefix/lib/$version ;;
+       *)      dflt=$prefix/lib/$package/$version ;;
+       esac
+       ;;
+    archlib)   dflt="$privlib/$archname" ;;
 
-sitelib='$sitelib'
-installsitelib='$installsitelib'
+    man1dir)   dflt="$prefix/man/man1" ;;
+    man3dir)   dflt="$prefix/man/man3" ;;
+    # Can we assume all sed's have greedy matching?
+    man1ext)   dflt=`echo $man1dir | sed -e 's!.*man!!' -e 's!^\.!!'` ;;
+    man3ext)   dflt=`echo $man3dir | sed -e 's!.*man!!' -e 's!^\.!!'` ;;
 
-# man1 and man3 manpage directories and extensions.
-man1dir='$man1dir'
-man1ext='$man1ext'
-installman1dir='$installman1dir'
-man3dir='$man3dir'
-man3ext='$man3ext'
-installman3dir='$installman3dir'
+    # We don't know what to do with these yet.
+    html1dir)  dflt='' ;;
+    html3dir)  dflt='' ;;
 
-# NOTE:  Be careful about architecture-dependent names.  If you have
-# accepted the default, the following definitions will be commented out.
-# That way you can carry this file to another architecture and this file
-# won't mistakenly set architecture-dependent names to the wrong value.
-#
-# If you have not accepted the default, then be sure to check the
-# following lines before copying this file to another system.
+    # Directories for site-specific add-on files
+    sitebin)   dflt=$siteprefix/bin ;;
+    sitescript)
+       if $test -d $siteprefix/script; then
+           dflt=$siteprefix/script
+       else
+           dflt=$sitebin
+       fi
+       ;;
+    sitelib)
+       case "$siteprefix" in
+       *perl*) dflt=$prefix/lib/site_perl/$version ;;
+       *)      dflt=$prefix/lib/$package/site_perl/$version ;;
+       esac
+       ;;
+    sitearch)  dflt="$sitelib/$archname" ;;
 
-!GROK!THIS!
+    siteman1dir) dflt="$siteprefix/man/man1" ;;
+    siteman3dir) dflt="$siteprefix/man/man3" ;;
+    # We don't know what to do with these yet.
+    sitehtml1dir)      dflt='' ;;
+    sitehtml3dir)      dflt='' ;;
+    
+    # Directories for vendor-supplied add-on files
+    # These are all usually empty.
+    vendor*)
+       if test X"$vendorprefix" = X""; then
+           dflt=''
+       else
+           case "$var" in
+           vendorbin)  dflt=$vendorprefix/bin ;;
+           vendorscript)
+               if $test -d $vendorprefix/script; then
+                   dflt=$vendorprefix/script
+               else
+                   dflt=$vendorbin
+               fi
+               ;;
+           vendorlib)
+               case "$vendorprefix" in
+               *perl*) dflt=$prefix/lib/vendor_perl/$version ;;
+               *)      dflt=$prefix/lib/$package/vendor_perl/$version ;;
+               esac
+               ;;
+           vendorarch) dflt="$vendorlib/$archname" ;;
+
+           vendorman1dir)      dflt="$vendorprefix/man/man1" ;;
+           vendorman3dir)      dflt="$vendorprefix/man/man3" ;;
+           # We don't know what to do with these yet.
+           vendorhtml1dir)     dflt='' ;;
+           vendorhtml3dir)     dflt='' ;;
+
+           esac  # End of vendorprefix != ''
+       fi
+       ;;
+    esac
+    
+    eval val="\$$var"
+    if test X"$val" = X"$dflt"; then
+       echo "# $var='$dflt'"
+    else
+       echo "# Preserving custom $var"
+       echo "$var='$val'"
+    fi
 
-if test 0 -eq "$subversion"; then
-    version=`LC_ALL=C; export LC_ALL; \
-    echo $baserev $patchlevel | 
-       $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
-else
-    version=`LC_ALL=C; export LC_ALL; \
-       echo $baserev $patchlevel $subversion | \
-       $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
-fi
-
-dflt="$privlib/$archname/$version"
-if test X"$archlib" = X"$dflt"; then
-    echo "# archlib='$archlib'"
-    echo "# installarchlib='$installarchlib'"
-else
-    echo '# NOTE:  Preserving your custom archlib.'
-    echo "archlib='$archlib'"
-    echo "installarchlib='$installarchlib'"
-fi >> Policy.sh
-echo >> Policy.sh
-
-# Now consider sitearch.
-dflt="$sitelib/$archname"
-if test X"$sitearch" = X"$dflt"; then
-    echo "# sitearch='$sitearch'"
-    echo "# installsitearch='$installsitearch'"
-else
-    echo '# NOTE:  Preserving your custom sitearch.'
-    echo "sitearch='$sitearch'"
-    echo "installsitearch='$installsitearch'"
-fi >> Policy.sh
+done >> Policy.sh
 
 $spitshell <<!GROK!THIS! >>Policy.sh
 
-#  Lastly, you may add additional items here.  For example, to set the 
+#  Lastly, you may add additional items here.  For example, to set the
 #  pager to your local favorite value, uncomment the following line in
 #  the original Policy_sh.SH file and re-run   sh Policy_sh.SH.
-# pager='$pager'
+#
+#  pager='$pager'
 #
 #  A full Glossary of all the config.sh variables is in the file
 #  Porting/Glossary.
 
 !GROK!THIS!
+
+#Credits:
+#   The original design for this Policy.sh file came from Wayne Davison,
+#   maintainer of trn.
+#   This version for Perl5.004_61 originally written by
+#   Andy Dougherty <doughera@lafayette.edu>.
+#   This file may be distributed under the same terms as Perl itself.