From: Andy Dougherty Date: Tue, 3 Mar 1998 16:41:16 +0000 (-0500) Subject: Configure patches -01 and -02 for 5.004_61. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=693762b493165ab96822ef2342af62f74dc0367b;p=p5sagit%2Fp5-mst-13.2.git Configure patches -01 and -02 for 5.004_61. p4raw-id: //depot/perl@783 --- diff --git a/Configure b/Configure index a34a5db..4695391 100755 --- a/Configure +++ b/Configure @@ -20,7 +20,7 @@ # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $ # -# Generated on Wed Feb 25 16:44:06 EST 1998 [metaconfig 3.0 PL70] +# Generated on Tue Mar 3 11:16:26 EST 1998 [metaconfig 3.0 PL70] cat >/tmp/c1$$ <&4 $cat >gccvers.c < /dev/null 2>&1; then + if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then nm_so_opt='--dynamic' fi ;; @@ -4574,8 +4612,8 @@ $echo $n "This may take a while...$c" >&4 for file in $*; do case $file in - *$so*) nm $nm_so_opt $nm_opt $file 2>/dev/null;; - *) nm $nm_opt $file 2>/dev/null;; + *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;; + *) $nm $nm_opt $file 2>/dev/null;; esac done >libc.tmp @@ -4638,7 +4676,7 @@ elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\ $contains '^fprintf$' libc.list >/dev/null 2>&1; then eval $xrun else - nm -p $* 2>/dev/null >libc.tmp + $nm -p $* 2>/dev/null >libc.tmp $grep fprintf libc.tmp > libc.ptf if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\ eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1 @@ -4647,7 +4685,7 @@ else eval $xrun else echo " " - echo "nm didn't seem to work right. Trying ar instead..." >&4 + echo "$nm didn't seem to work right. Trying ar instead..." >&4 com='' if ar t $libc > libc.tmp; then for thisname in $libnames; do @@ -5120,10 +5158,10 @@ EOM next4*) xxx='DYLD_LIBRARY_PATH' ;; *) xxx='LD_LIBRARY_PATH' ;; esac - $cat <&4 + $cat <&4 To build perl, you must add the current working directory to your -$xxx environtment variable before running make. You can do +$xxx environment variable before running make. You can do this with $xxx=\`pwd\`; export $xxx for Bourne-style shells, or @@ -6803,6 +6841,14 @@ eval $inlibc set fsetpos d_fsetpos eval $inlibc +: see if gethostbyaddr exists +set gethostbyaddr d_gethbyaddr +eval $inlibc + +: see if gethostbyname exists +set gethostbyname d_gethbyname +eval $inlibc + : see if gethostent exists set gethostent d_gethent eval $inlibc @@ -6811,6 +6857,22 @@ eval $inlibc set getlogin d_getlogin eval $inlibc +: see if getnetbyaddr exists +set getnetbyaddr d_getnbyaddr +eval $inlibc + +: see if getnetbyname exists +set getnetbyname d_getnbyname +eval $inlibc + + +: see if getprotobyname exists +set getprotobyname d_getpbyname +eval $inlibc + +: see if getprotobynumber exists +set getprotobynumber d_getpbynumber +eval $inlibc : see if getpgid exists set getpgid d_getpgid eval $inlibc @@ -6827,6 +6889,14 @@ eval $inlibc set getpriority d_getprior eval $inlibc + +: see if getservbyname exists +set getservbyname d_getsbyname +eval $inlibc + +: see if getservbyport exists +set getservbyport d_getsbyport +eval $inlibc : see if gettimeofday or ftime exists set gettimeofday d_gettimeod eval $inlibc @@ -7602,6 +7672,10 @@ eval $inlibc set seteuid d_seteuid eval $inlibc +: see if sethostent exists +set sethostent d_sethent +eval $inlibc + : see if setlinebuf exists set setlinebuf d_setlinebuf eval $inlibc @@ -8601,12 +8675,11 @@ main() printf("db.h and libdb are compatible\n") ; Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000 - + DB_VERSION_PATCH ; + + DB_VERSION_PATCH ; /* needs to be >= 2.3.4 */ if (Version < 2003004) { - /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH -< 5) { */ + /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */ printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ; exit(2); } @@ -8783,6 +8856,32 @@ case "$voidflags" in esac $rm -f try.* .out +: check for length of double +echo " " +case "$doublesize" in +'') + echo "Checking to see how big your double precision numbers are..." >&4 + $cat >try.c <<'EOCP' +#include +main() +{ + printf("%d\n", sizeof(double)); +} +EOCP + set try + if eval $compile; then + doublesize=`./try` + else + dflt='8' + echo "(I can't seem to compile the test program. Guessing...)" + rp="What is the size of a double precision number (in bytes)?" + . ./myread + doublesize="$ans" + fi + ;; +esac +$rm -f try.c try + : see what type file positions are declared as in the library set fpos_t fpostype long stdio.h sys/types.h eval $typedef @@ -8940,18 +9039,6 @@ EOSH chmod +x protochk $eunicefix protochk -: see if gethostbyaddr exists -set gethostbyaddr d_gethbyaddr -eval $inlibc - -: see if gethostbyname exists -set gethostbyname d_gethbyname -eval $inlibc - -: see if getnetbyaddr exists -set getnetbyaddr d_getnbyaddr -eval $inlibc - : see if this is a netdb.h system set netdb.h i_netdb eval $inhdr @@ -9126,6 +9213,38 @@ rp="What type are process ids on this system declared as?" . ./myread pidtype="$ans" +: check for length of pointer +echo " " +case "$ptrsize" in +'') + echo "Checking to see how big your pointers are..." >&4 + if test "$voidflags" -gt 7; then + echo '#define VOID_PTR char *' > try.c + else + echo '#define VOID_PTR void *' > try.c + fi + $cat >>try.c <<'EOCP' +#include +main() +{ + printf("%d\n", sizeof(VOID_PTR)); + exit(0); +} +EOCP + set try + if eval $compile; then + ptrsize=`./try` + else + dflt='4' + echo "(I can't seem to compile the test program. Guessing...)" >&4 + rp="What is the size of a pointer (in bytes)?" + . ./myread + ptrsize="$ans" + fi + ;; +esac +$rm -f try.c try + : check for size of random number generator echo " " case "$randbits" in @@ -10205,22 +10324,23 @@ known_extensions='' : some additional extensions into the source tree and expect them : to be built. for xxx in * ; do - case "$xxx" in - DynaLoader) ;; - *) if $test -f $xxx/$xxx.xs; then - known_extensions="$known_extensions $xxx" - else - if $test -d $xxx; then - cd $xxx - for yyy in * ; do - if $test -f $yyy/$yyy.xs; then - known_extensions="$known_extensions $xxx/$yyy" - fi - done - cd .. - fi - fi ;; - esac + case "$xxx" in + DynaLoader) ;; + *) if $test -f $xxx/$xxx.xs; then + known_extensions="$known_extensions $xxx" + else + if $test -d $xxx; then + cd $xxx + for yyy in * ; do + if $test -f $yyy/$yyy.xs; then + known_extensions="$known_extensions $xxx/$yyy" + fi + done + cd .. + fi + fi + ;; + esac done set X $known_extensions shift @@ -10230,42 +10350,50 @@ cd ../UU : Now see which are supported on this system. avail_ext='' for xxx in $known_extensions ; do - case "$xxx" in - DB_File|db_file) case "$i_db" in - $define) avail_ext="$avail_ext $xxx" ;; - esac - ;; - GDBM_File|gdbm_fil) case "$i_gdbm" in - $define) avail_ext="$avail_ext $xxx" ;; - esac - ;; - NDBM_File|ndbm_fil) case "$i_ndbm" in - $define) avail_ext="$avail_ext $xxx" ;; - esac - ;; - ODBM_File|odbm_fil) case "${i_dbm}${i_rpcsvcdbm}" in - *"${define}"*) avail_ext="$avail_ext $xxx" ;; - esac - ;; - POSIX|posix) case "$useposix" in - true|define|y) avail_ext="$avail_ext $xxx" ;; - esac - ;; - Opcode|opcode) case "$useopcode" in - true|define|y) avail_ext="$avail_ext $xxx" ;; - esac - ;; - Socket|socket) case "$d_socket" in - true|$define|y) avail_ext="$avail_ext $xxx" ;; - esac - ;; - Thread|thread) case "$usethreads" in - true|$define|y) avail_ext="$avail_ext $xxx" ;; - esac - ;; - *) avail_ext="$avail_ext $xxx" - ;; - esac + case "$xxx" in + DB_File|db_file) + case "$i_db" in + $define) avail_ext="$avail_ext $xxx" ;; + esac + ;; + GDBM_File|gdbm_fil) + case "$i_gdbm" in + $define) avail_ext="$avail_ext $xxx" ;; + esac + ;; + NDBM_File|ndbm_fil) + case "$i_ndbm" in + $define) avail_ext="$avail_ext $xxx" ;; + esac + ;; + ODBM_File|odbm_fil) + case "${i_dbm}${i_rpcsvcdbm}" in + *"${define}"*) avail_ext="$avail_ext $xxx" ;; + esac + ;; + POSIX|posix) + case "$useposix" in + true|define|y) avail_ext="$avail_ext $xxx" ;; + esac + ;; + Opcode|opcode) + case "$useopcode" in + true|define|y) avail_ext="$avail_ext $xxx" ;; + esac + ;; + Socket|socket) + case "$d_socket" in + true|$define|y) avail_ext="$avail_ext $xxx" ;; + esac + ;; + Thread|thread) + case "$usethreads" in + true|$define|y) avail_ext="$avail_ext $xxx" ;; + esac + ;; + *) avail_ext="$avail_ext $xxx" + ;; + esac done set X $avail_ext @@ -10279,11 +10407,28 @@ A number of extensions are supplied with $package. You may choose to compile these extensions for dynamic loading (the default), compile them into the $package executable (static loading), or not include them at all. Answer "none" to include no extensions. +Note that DynaLoader is always built and need not be mentioned here. EOM case "$dynamic_ext" in '') dflt="$avail_ext" ;; - *) dflt="$dynamic_ext" ;; + *) dflt="$dynamic_ext" + # Perhaps we are reusing an old out-of-date config.sh. + case "$hint" in + previous) + if test X"$dynamic_ext" != X$"avail_ext"; then + $cat <&4 + $rm -f config.msg +fi $rm -f kit*isdone ark*isdone $rm -rf UU diff --git a/INSTALL b/INSTALL index 782cd94..7a4faec 100644 --- a/INSTALL +++ b/INSTALL @@ -48,6 +48,26 @@ If there is a hint file for your system (in the hints/ directory) you should also read that hint file for specific information for your system. (Unixware users should use the svr4.sh hint file.) +=head1 NOTE: This version is not binary compatible with Perl 5.004. + +For Perl 5.004 it was possible to be binary compatible with 5.003. +Starting from Perl 5.004_50 this is no longer possible because there were +many deep and far-reaching changes to the language internals. + +If you have dynamically loaded extensions that you built under perl +5.003 or 5.004 and the so-called 'bincompat3' mode (the default mode) +and that you wish to continue to use with perl 5.005, you may need to +reinstall the extensions. If you wish to continue to support both 5.004 +and 5.005 on your system, you will have to move the 5.004 extensions +over to the 5.004 architecture-dependent library. See the discussion +below on L<"Coexistence with earlier versions of perl5."> + +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. + =head1 Space Requirements The complete perl5 source tree takes up about 7 MB of disk space. The @@ -149,32 +169,31 @@ For my Solaris system, I usually use If you prefer the GNU-style configure command line interface, you can use the supplied configure command, e.g. - CC=gcc ./configure + CC=gcc ./configure.gnu The configure script emulates a few of the more common configure options. Try - ./configure --help + ./configure.gnu --help for a listing. Cross compiling is not supported. -For systems that do not distinguish the files "Configure" and -"configure", Perl includes a copy of configure named -configure.gnu. +(The file is called configugre.gnu to avoid problems on systems +that would not distinguish the files "Configure" and "configure".) =head2 Extensions By default, Configure will offer to build every extension which appears to be supported. For example, Configure will offer to build GDBM_File only if it is able to find the gdbm library. (See examples below.) -DynaLoader, Fcntl, and IO are always built by default. Configure does -not contain code to test for POSIX compliance, so POSIX is always built -by default as well. If you wish to skip POSIX, you can set the -Configure variable useposix=false either in a hint file or from the -Configure command line. Similarly, the Opcode extension is always built -by default, but you can skip it by setting the Configure variable +B, DynaLoader, Fcntl, IO, and attrs are always built by default. +Configure does not contain code to test for POSIX compliance, so POSIX +is always built by default as well. If you wish to skip POSIX, you can +set the Configure variable useposix=false either in a hint file or from +the Configure command line. Similarly, the Opcode extension is always +built by default, but you can skip it by setting the Configure variable useopcode=false either in a hint file for from the command line. You can learn more about each of these extensions by consulting the @@ -188,6 +207,7 @@ version. (Configure will suggest this as the default.) In summary, here are the Configure command-line variables you can set to turn off each extension: + B (Always included by default) DB_File i_db DynaLoader (Must always be included as a static extension) Fcntl (Always included by default) @@ -199,6 +219,8 @@ to turn off each extension: SDBM_File (Always included by default) Opcode useopcode Socket d_socket + Threads usethreads + attrs (Always included by default) Thus to skip the NDBM_File extension, you can use @@ -210,10 +232,9 @@ library. Of course, you may always run Configure interactively and select only the extensions you want. -Note: The DB_File module will only work with version 1.x of -Berkeley DB. Once Berkeley DB version 2 is released, DB_File will be -upgraded to work with it. Configure will automatically detect this -for you and refuse to try to build DB_File with version 2. +Note: The DB_File module will only work with version 1.x of Berkeley +DB or newer releases of version 2. Configure will automatically detect +this for you and refuse to try to build DB_File with version 2. Finally, if you have dynamic loading (most modern Unix systems do) remember that these extensions do not increase the size of your perl @@ -363,12 +384,12 @@ above. The directories site_perl and site_perl/archname are empty, but are intended to be used for installing local or site-wide extensions. Perl -will automatically look in these directories. +will automatically look in these directories. In order to support using things like #!/usr/local/bin/perl5.004 after a later version is released, architecture-dependent libraries are stored in a version-specific directory, such as -/usr/local/lib/perl5/archname/5.004/. +/usr/local/lib/perl5/archname/5.004/. Again, these are just the defaults, and can be changed as you run Configure. @@ -410,6 +431,11 @@ Then, you can Configure and install in the usual way: make test make install +Beware, though, that if you go to try to install new add-on +extensions, they too will get installed in under '/tmp/perl5' if you +follow this example. The next section shows one way of dealing with +that problem. + =head2 Creating an installable tar archive If you need to install perl on many identical systems, it is @@ -431,6 +457,15 @@ installed on multiple systems. Here's one way to do that: cd /usr/local # Or wherever you specified as $prefix tar xvf perl5-archive.tar +=head2 Site-wide "Policy" settings + +After Configure runs, it stores a number of common site-wide "policy" +answers (such as installation directories and the local perl contact +person) in the Policy.sh file. If you want to build perl on another +system using the same policy defaults, simply copy the Policy.sh file +to the new system and Configure will use it along with the appropriate +hint file for your system. + =head2 Configure-time Options There are several different ways to Configure and build perl for your @@ -438,30 +473,17 @@ system. For most users, the defaults are sensible and will work. Some users, however, may wish to further customize perl. Here are some of the main things you can change. -=head2 Binary Compatibility With Earlier Versions of Perl 5 +=head2 Threads -For Perl 5.004 it was possible to be binary compatible with 5.003. -Starting from Perl 5.005 this is no more possible because there were -many deep and far-reaching changes to the language internals. +On some platforms, perl5.005 can be compiled to use threads. To +enable this, read the file README.threads, and then try -If you have dynamically loaded extensions that you built under perl -5.003 or 5.004 and the so-called 'bincompat3' mode (the default mode) -and that you wish to continue to use with perl 5.005, you may need to -reinstall the extensions. - -Background: starting with Perl 5.003, all functions in the Perl C -source code have been protected by default by the prefix Perl_ (or -perl_) so that you may link with third-party libraries without fear of -namespace collisions. This change broke compatibility with version -5.002, so installing 5.003 or 5.004 over 5.002 or earlier will force -you to re-build and install all of your dynamically loadable -extensions. (The standard extensions supplied with Perl are handled -automatically). You can turn off this namespace protection by adding --DNO_EMBED to your ccflags variable in config.sh. + sh Configure -Dusethreads -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. +Currently, you need to specify -Dusethreads on the Configure command +line so that the hint files can make appropriate adjustments. + +The default is to compile without thread support. =head2 Selecting File IO mechanisms @@ -633,7 +655,7 @@ the malloc function on your system. The perl source is shipped with a version of malloc that is very fast but somewhat wasteful of space. On the other hand, your system's -malloc() function is probably a bit slower but also a bit more frugal. +malloc() function may be a bit slower but also a bit more frugal. For many uses, speed is probably the most important consideration, so the default behavior (for most systems) is to use the malloc supplied @@ -1270,37 +1292,63 @@ program even if the Perl source is no longer available. =head1 Coexistence with earlier versions of perl5 -You can safely install the current version of perl5 and still run scripts -under the old binaries for versions 5.003 and later ONLY. Instead of -starting your script with #!/usr/local/bin/perl, just start it with -#!/usr/local/bin/perl5.003 (or whatever version you want to run.) -If you want to retain a version of Perl 5 prior to 5.003, you'll -need to install the current version in a separate directory tree, -since some of the architecture-independent library files have changed -in incompatible ways. - -The old architecture-dependent files are stored in a version-specific -directory (such as /usr/local/lib/perl5/sun4-sunos/5.003) so that they -will still be accessible even after a later version is installed. -(Note: Perl 5.000 and 5.001 did not put their architecture-dependent -libraries in a version-specific directory. They are simply in -/usr/local/lib/perl5/$archname. If you will not be using 5.000 or -5.001, you may safely remove those files.) - -In general, the standard library files in /usr/local/lib/perl5 should -be usable by all versions of perl5. However, the diagnostics.pm module -uses the /usr/local/lib/perl5/pod/perldiag.pod documentation file, so -the C pragma and the splain script will only identify -and explain any warnings or errors that the most recently-installed -version of perl can generate. - -Most extensions will probably not need to be recompiled to use with a newer -version of perl. If you do run into problems, and you want to continue -to use the old version of perl along with your extension, simply move +WARNING: The upgrade from 5.004_0x to 5.005 is going to be a bit +tricky. See L<"Upgrading from 5.004 to 5.005"> below. + +In general, you can usually safely upgrade from one version of Perl (e.g. +5.004_04) to another similar version (e.g. 5.004_05) without re-compiling +all of your add-on extensions. You can also safely leave the old version +around in case the new version causes you problems for some reason. +For example, if you want to be sure that your script continues to run +with 5.004_04, simplly replace the '#!/usr/local/bin/perl' line at the +top of the script with the particular version you want to run, e.g. +#!/usr/local/bin/perl5.00404. + +(If you are upgrading from 5.002 or earlier, beware that some of the +standard library files have changed in incompatible ways, so you are +probably better off starting with a fresh installation.) + +The standard library files in /usr/local/lib/perl5 should be usable by +all versions of perl5 after 5.002. An exception is the diagnostics.pm +module. Since that module uses the /usr/local/lib/perl5/pod/perldiag.pod +documentation file, the C pragma and the splain script +will only identify and explain any warnings or errors that the most +recently-installed version of perl can generate. Usually, this is not +a problem. + +Most extensions will probably not need to be recompiled to use +with a newer version of perl. Here is how it is supposed to work. +(These examples assume you accept all the Configure defaults.) + +The directories searched by version 5.004_05 will be + + /usr/local/lib/perl5/archname/5.00405 + /usr/local/lib/perl5/ + /usr/local/lib/perl5/site_perl/archname + /usr/local/lib/perl5/site_perl + +while the directories searched by version 5.004_04 are + + /usr/local/lib/perl5/archname/5.00404 + /usr/local/lib/perl5/ + /usr/local/lib/perl5/site_perl/archname + /usr/local/lib/perl5/site_perl + +When you install an add-on extension, it gets installed into +/usr/local/lib/perl5/site_perl/archname (if it is architecture-specific.) +This directory is deliberately NOT version-specific so that both 5.004_04 +and 5.004_05 can use the extension. + +However, if you do run into problems, and you want to continue to +use the old version of perl along with your extension, simply move those extension files to the appropriate version directory, such as -/usr/local/lib/perl/archname/5.003. Then Perl 5.003 will find your -files in the 5.003 directory, and newer versions of perl will find your -newer extension in the site_perl directory. +/usr/local/lib/perl5/archname/5.00404. Then use your newer version of +perl to rebuild and re-install the extension into site_perl. This way, +Perl 5.004_04 will find your files in the 5.00404 directory, and +newer versions of perl will find your newer extension in the site_perl +directory. + +=head2 Maintaining completely separate versions Many users prefer to keep all versions of perl in completely separate directories. One convenient way to do this is by @@ -1312,11 +1360,36 @@ and adding /opt/perl5.004/bin to the shell PATH variable. Such users may also wish to add a symbolic link /usr/local/bin/perl so that scripts can still start with #!/usr/local/bin/perl. +Others might share a common directory for maintenance sub-versions +(e.g. 5.004 for all 5.004_0x versions), but change directory with +each major version. + If you are installing a development subversion, you probably ought to seriously consider using a separate directory, since development subversions may not have all the compatibility wrinkles ironed out yet. +=head2 Upgrading from 5.004 to 5.005 + +Extensions compiled with versions of perl prior to 5.004_50 will need +to be recompiled to be used with 5.004_50 and later. + +If you wish to continue using those extensions under 5.004_04, for +example, then you need to move those extensions from their current +direcotries, which are something like + + /usr/local/lib/perl5/site_perl/ + /usr/local/lib/perl5/site_perl/archname + +to the version-specific directory such as + + /usr/local/lib/perl5/archname/5.00404 + +as described above. + +Once you have moved the 5.00404 versions of the extensions out of the +way, you may recompile and reinstall with 5.005. + =head1 Coexistence with perl4 You can safely install perl5 even if you want to keep perl4 around. @@ -1436,4 +1509,4 @@ above. =head1 LAST MODIFIED -$Id: INSTALL,v 1.28 1997/10/10 16:50:59 doughera Released $ +$Id: INSTALL,v 1.31 1998/03/03 18:08:52 doughera Released $ diff --git a/Policy_sh.SH b/Policy_sh.SH index 8315854..1f84d7a 100644 --- a/Policy_sh.SH +++ b/Policy_sh.SH @@ -7,7 +7,9 @@ $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. +# 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. # # The idea here is to distill in one place the common site-wide # "policy" answers (such as installation directories) that are @@ -38,8 +40,6 @@ perladmin='$perladmin' # 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. -# A full Glossary of all these config.sh variables is in the -# Porting/Glossary file. # Installation Prefix. prefix='$prefix' @@ -53,12 +53,6 @@ installscript='$installscript' privlib='$privlib' installprivlib='$installprivlib' -archlib='$archlib' -installarchlib='$installarchlib' - -sitearch='$sitearch' -installsitearch='$installsitearch' - sitelib='$sitelib' installsitelib='$installsitelib' @@ -70,8 +64,56 @@ man3dir='$man3dir' man3ext='$man3ext' installman3dir='$installman3dir' -# You may add additional items here, for example, to set the pager -# to your local favorite value, uncomment -# #pager='$pager' +# 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. + +!GROK!THIS! + +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 + +$spitshell <>Policy.sh + +# 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' +# +# A full Glossary of all the config.sh variables is in the file +# Porting/Glossary. !GROK!THIS! diff --git a/Porting/Glossary b/Porting/Glossary index 88c12cd..fe7e630 100644 --- a/Porting/Glossary +++ b/Porting/Glossary @@ -380,7 +380,7 @@ d_gethbyaddr (d_gethbyad.U): d_gethent (d_gethent.U): This variable conditionally defines HAS_GETHOSTENT if gethostent() is - available to dup file descriptors. + available to look up host names in some data base or another. d_gethname (d_gethname.U): This variable conditionally defines the HAS_GETHOSTNAME symbol, which @@ -397,6 +397,23 @@ d_getnbyaddr (d_getnbyad.U): indicates to the C program that the getnetbyaddr() routine is available to look up networks by their IP addresses. +d_getnbyname (d_getnbynm.U): + This variable conditionally defines the HAS_GETNETBYNAME symbol, which + indicates to the C program that the getnetbyname() routine is available + to look up networks by their names. + +d_getpbyname (d_getprotby.U): + This variable conditionally defines the HAS_GETPROTOBYNAME + symbol, which indicates to the C program that the + getprotobyname() routine is available to look up protocols + by their name. + +d_getpbynumber (d_getprotby.U): + This variable conditionally defines the HAS_GETPROTOBYNUMBER + symbol, which indicates to the C program that the + getprotobynumber() routine is available to look up protocols + by their number. + d_getpgid (d_getpgid.U): This variable conditionally defines the HAS_GETPGID symbol, which indicates to the C program that the getpgid(pid) function @@ -420,6 +437,18 @@ d_getprior (d_getprior.U): This variable conditionally defines HAS_GETPRIORITY if getpriority() is available to get a process's priority. +d_getsbyname (d_getsrvby.U): + This variable conditionally defines the HAS_GETSERVBYNAME + symbol, which indicates to the C program that the + getservbyname() routine is available to look up services + by their name. + +d_getsbyport (d_getsrvby.U): + This variable conditionally defines the HAS_GETSERVBYPORT + symbol, which indicates to the C program that the + getservbyport() routine is available to look up services + by their port. + d_gettimeod (d_ftime.U): This variable conditionally defines the HAS_GETTIMEOFDAY symbol, which indicates that the gettimeofday() system call exists (to obtain a @@ -543,6 +572,12 @@ d_nice (d_nice.U): This variable conditionally defines the HAS_NICE symbol, which indicates to the C program that the nice() routine is available. +d_oldpthreads (usethreads.U): + This variable conditionally defines the OLD_PTHREADS_API symbol, + and indicates that Perl should be built to use the old + draft POSIX threads API. This is only potneially meaningful if + usethreads is set. + d_oldsock (d_socket.U): This variable conditionally defines the OLDSOCKET symbol, which indicates that the BSD socket interface is based on 4.1c and not 4.2. @@ -697,6 +732,10 @@ d_setgrps (d_setgrps.U): indicates to the C program that the setgroups() routine is available to set the list of process groups. +d_sethent (d_sethent.U): + This variable conditionally defines HAS_SETHOSTENT if sethostent() is + available. + d_setlinebuf (d_setlnbuf.U): This variable conditionally defines the HAS_SETLINEBUF symbol, which indicates to the C program that the setlinebuf() routine is available @@ -1014,6 +1053,10 @@ dlsrc (dlsrc.U): This variable contains the name of the dynamic loading file that will be used with the package. +doublesize (doublesize.U): + This variable contains the value of the DOUBLESIZE symbol, which + indicates to the C program how many bytes there are in a double. + dynamic_ext (Extensions.U): This variable holds a list of extension files we want to link dynamically into the package. It is used by Makefile. @@ -1696,6 +1739,10 @@ prototype (prototype.U): This variable holds the eventual value of CAN_PROTOTYPE, which indicates the C compiler can handle funciton prototypes. +ptrsize (ptrsize.U): + This variable contains the value of the PTRSIZE symbol, which + indicates to the C program how many bytes there are in a pointer. + randbits (randbits.U): This variable contains the eventual value of the RANDBITS symbol, which indicates to the C program how many bits of random number diff --git a/Porting/config.sh b/Porting/config.sh index 59663d9..4fb150e 100644 --- a/Porting/config.sh +++ b/Porting/config.sh @@ -8,7 +8,7 @@ # Package name : perl5 # Source directory : . -# Configuration time: Tue Feb 24 12:39:16 EST 1998 +# Configuration time: Tue Mar 3 11:39:44 EST 1998 # Configured by : doughera # Target system : linux fractal 2.0.33 #1 tue feb 3 10:11:46 est 1998 i686 unknown @@ -30,15 +30,15 @@ afs='false' alignbytes='4' aphostname='' ar='ar' -archlib='/opt/perl/lib/i686-linux-thread/5.00460' -archlibexp='/opt/perl/lib/i686-linux-thread/5.00460' +archlib='/opt/perl/lib/i686-linux-thread/5.00461' +archlibexp='/opt/perl/lib/i686-linux-thread/5.00461' archname='i686-linux-thread' archobjs='' awk='awk' baserev='5.0' bash='' bin='/opt/perl/bin' -bincompat3='n' +bincompat3='' binexp='/opt/perl/bin' bison='' byacc='byacc' @@ -52,7 +52,7 @@ ccdlflags='-rdynamic' ccflags='-D_REENTRANT -Dbool=char -DHAS_BOOL -I/usr/local/include' cf_by='doughera' cf_email='yourname@yourhost.yourplace.com' -cf_time='Tue Feb 24 12:39:16 EST 1998' +cf_time='Tue Mar 3 11:39:44 EST 1998' chgrp='' chmod='' chown='' @@ -124,11 +124,16 @@ d_gethent='define' d_gethname='undef' d_getlogin='define' d_getnbyaddr='define' +d_getnbyname='define' +d_getpbyname='define' +d_getpbynumber='define' d_getpgid='define' d_getpgrp2='undef' d_getpgrp='define' d_getppid='define' d_getprior='define' +d_getsbyname='define' +d_getsbyport='define' d_gettimeod='define' d_gnulibc='define' d_htonl='define' @@ -157,6 +162,7 @@ d_msgrcv='define' d_msgsnd='define' d_mymalloc='undef' d_nice='define' +d_oldpthreads='undef' d_oldsock='undef' d_open3='define' d_pathconf='define' @@ -191,6 +197,7 @@ d_semop='define' d_setegid='define' d_seteuid='define' d_setgrps='define' +d_sethent='define' d_setlinebuf='define' d_setlocale='define' d_setpgid='define' @@ -263,6 +270,7 @@ defvoidused='15' direntrytype='struct dirent' dlext='so' dlsrc='dl_dlopen.xs' +doublesize='8' dynamic_ext='B DB_File Fcntl GDBM_File IO NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Thread attrs' eagain='EAGAIN' echo='echo' @@ -347,7 +355,7 @@ i_varhdr='stdarg.h' i_vfork='undef' incpath='' inews='' -installarchlib='/opt/perl/lib/i686-linux-thread/5.00460' +installarchlib='/opt/perl/lib/i686-linux-thread/5.00461' installbin='/opt/perl/bin' installman1dir='/opt/perl/man/man1' installman3dir='/opt/perl/man/man3' @@ -368,7 +376,7 @@ libc='' libperl='libperl.a' libpth='/usr/local/lib /lib /usr/lib' libs='-lnsl -lndbm -lgdbm -ldbm -ldb -ldl -lm -lpthread -lc -lposix -lcrypt' -libswanted='sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m pthread c cposix posix ndir dir crypt ucb BSD PW x' +libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m pthread c cposix posix ndir dir crypt ucb BSD PW x' line='line' lint='' lkflags='' @@ -411,6 +419,7 @@ netdb_hlen_type='int' netdb_host_type='const char *' netdb_name_type='const char *' netdb_net_type='unsigned long' +nm='nm' nm_opt='' nm_so_opt='--dynamic' nroff='nroff' @@ -439,6 +448,7 @@ prefixexp='/opt/perl' privlib='/opt/perl/lib' privlibexp='/opt/perl/lib' prototype='define' +ptrsize='4' randbits='31' ranlib=':' rd_nodata='-1' @@ -489,11 +499,12 @@ stdio_filbuf='' stdio_ptr='((fp)->_IO_read_ptr)' strings='/usr/include/string.h' submit='' -subversion='60' +subversion='61' sysman='/usr/man/man1' tail='' tar='' tbl='' +tee='tee' test='test' timeincl='/usr/include/sys/time.h ' timetype='time_t' @@ -521,5 +532,5 @@ xlibpth='/usr/lib/386 /lib/386' zcat='' zip='zip' PATCHLEVEL=4 -SUBVERSION=60 +SUBVERSION=61 CONFIG=true diff --git a/Porting/config_H b/Porting/config_H index ec3fbdb..8079a38 100644 --- a/Porting/config_H +++ b/Porting/config_H @@ -17,7 +17,7 @@ /* * Package name : perl5 * Source directory : . - * Configuration time: Tue Feb 24 12:39:16 EST 1998 + * Configuration time: Tue Mar 3 11:39:44 EST 1998 * Configured by : doughera * Target system : linux fractal 2.0.33 #1 tue feb 3 10:11:46 est 1998 i686 unknown */ @@ -243,12 +243,6 @@ */ #define HAS_GETGROUPS /**/ -/* HAS_GETHOSTENT: - * This symbol, if defined, indicates that the gethostent routine is - * available to lookup host names in some data base or other. - */ -#define HAS_GETHOSTENT /**/ - /* HAS_UNAME: * This symbol, if defined, indicates that the C program may use the * uname() routine to derive the host name. See also HAS_GETHOSTNAME @@ -1471,6 +1465,12 @@ #define HAS_VPRINTF /**/ /*#define USE_CHAR_VSPRINTF / **/ +/* DOUBLESIZE: + * This symbol contains the size of a double, so that the C preprocessor + * can make decisions based on it. + */ +#define DOUBLESIZE 8 /**/ + /* I_TIME: * This symbol, if defined, indicates to the C program that it should * include . @@ -1530,6 +1530,14 @@ #define RD_NODATA -1 #define EOF_NONBLOCK +/* PTRSIZE: + * This symbol contains the size of a pointer, so that the C preprocessor + * can make decisions based on it. It will be sizeof(void *) if + * the compiler supports (void *); otherwise it will be + * sizeof(char *). + */ +#define PTRSIZE 4 /**/ + /* RANDBITS: * This symbol contains the number of bits of random number the rand() * function produces. Usual values are 15, 16, and 31. @@ -1566,8 +1574,8 @@ * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define ARCHLIB "/opt/perl/lib/i686-linux-thread/5.00460" /**/ -#define ARCHLIB_EXP "/opt/perl/lib/i686-linux-thread/5.00460" /**/ +#define ARCHLIB "/opt/perl/lib/i686-linux-thread/5.00461" /**/ +#define ARCHLIB_EXP "/opt/perl/lib/i686-linux-thread/5.00461" /**/ /* CAT2: * This macro catenates 2 tokens together. @@ -1595,6 +1603,58 @@ */ #define CSH "/bin/csh" /**/ +/* HAS_GETHOSTBYADDR: + * This symbol, if defined, indicates that the gethostbyaddr() routine is + * available to look up hosts by their IP addresses. + */ +#define HAS_GETHOSTBYADDR /**/ + +/* HAS_GETHOSTBYNAME: + * This symbol, if defined, indicates that the gethostbyname() routine is + * available to look up host names in some data base or other. + */ +#define HAS_GETHOSTBYNAME /**/ + +/* HAS_GETHOSTENT: + * This symbol, if defined, indicates that the gethostent() routine is + * available to look up host names in some data base or another. + */ +#define HAS_GETHOSTENT /**/ + +/* HAS_GETNETBYADDR: + * This symbol, if defined, indicates that the getnetbyaddr() routine is + * available to look up networks by their IP addresses. + */ +#define HAS_GETNETBYADDR /**/ + +/* HAS_GETNETBYNAME: + * This symbol, if defined, indicates that the getnetbyname() routine is + * available to look up networks by their names. + */ +#define HAS_GETNETBYNAME /**/ + +/* HAS_GETPROTOBYNAME: + * This symbol, if defined, indicates that the getprotobyname() + * routine is available to look up protocols by their name. + */ +/* HAS_GETPROTOBYNUMBER: + * This symbol, if defined, indicates that the getprotobynumber() + * routine is available to look up protocols by their number. + */ +#define HAS_GETPROTOBYNAME /**/ +#define HAS_GETPROTOBYNUMBER /**/ + +/* HAS_GETSERVBYNAME: + * This symbol, if defined, indicates that the getservbyname() + * routine is available to look up services by their name. + */ +/* HAS_GETSERVBYPORT: + * This symbol, if defined, indicates that the getservbyport() + * routine is available to look up services by their port. + */ +#define HAS_GETSERVBYNAME /**/ +#define HAS_GETSERVBYPORT /**/ + /* HAS_SETGROUPS: * This symbol, if defined, indicates that the setgroups() routine is * available to set the list of process groups. If unavailable, multiple @@ -1602,6 +1662,12 @@ */ #define HAS_SETGROUPS /**/ +/* HAS_SETHOSTENT: + * This symbol, if defined, indicates that the sethostent() routine is + * available. + */ +#define HAS_SETHOSTENT /**/ + /* Signal_t: * This symbol's value is either "void" or "int", corresponding to the * appropriate return type of a signal handler. Thus, you can declare @@ -1806,6 +1872,11 @@ * This symbol, if defined, indicates that Perl should * be built to use threads. */ +/* OLD_PTHREADS_API: + * This symbol, if defined, indicates that Perl should + * be built to use the old draft POSIX threads API. + */ #define USE_THREADS /**/ +/*#define OLD_PTHREADS_API / **/ #endif diff --git a/Porting/pumpkin.pod b/Porting/pumpkin.pod index 885c813..28d428b 100644 --- a/Porting/pumpkin.pod +++ b/Porting/pumpkin.pod @@ -357,21 +357,41 @@ permissions for system files; something like that might be appropriate. =head2 Run Configure This will build a config.sh and config.h. You can skip this if you haven't -changed Configure or config_h.SH at all. +changed Configure or config_h.SH at all. I use the following command -=head2 Update Porting/config_H + sh Configure -Dprefix=/opt/perl -Doptimize=-O -Dusethreads \ + -Dcf_by='yourname' \ + -Dcf_email='yourname@yourhost.yourplace.com' \ + -Dperladmin='yourname@yourhost.yourplace.com' \ + -Dmydomain='.yourplace.com' \ + -Dmyhostname='yourhost' \ + -des -[This section needs revision. We're currently working on easing -the task of keeping the vms, win32, and plan9 config.sh info -up-to-date.] +=head2 Update Porting/config.sh and Porting/config_H -The Porting/config_H file is provided to help those folks who can't -run Configure. It is important to keep it up-to-date. If you have -changed config_h.SH, those changes must be reflected in config_H as well. -(The name config_H was chosen to distinguish the file from config.h even -on case-insensitive file systems.) Simply edit the existing config_H -file; keep the first few explanatory lines and then copy your new -config.h below. +[XXX +This section needs revision. We're currently working on easing +the task of keeping the vms, win32, and plan9 config.sh info +up-to-date. The plan is to use keep up-to-date 'canned' config.sh +files in the appropriate subdirectories and then generate 'canned' +config.h files for vms, win32, etc. from the generic config.sh file. +This is to ease maintenance. When Configure gets updated, the parts +sometimes get scrambled around, and the changes in config_H can +sometimes be very hard to follow. config.sh, on the other hand, can +safely be sorted, so it's easy to track (typically very small) changes +to config.sh and then propoagate them to a canned 'config.h' by any +number of means, including a perl script in win32/ or carrying +config.sh and config_h.SH to a Unix system and running sh +config_h.SH.) +XXX] + +The Porting/config.sh and Porting/config_H files are provided to +help those folks who can't run Configure. It is important to keep +them up-to-date. If you have changed config_h.SH, those changes must +be reflected in config_H as well. (The name config_H was chosen to +distinguish the file from config.h even on case-insensitive file systems.) +Simply edit the existing config_H file; keep the first few explanatory +lines and then copy your new config.h below. It may also be necessary to update vms/config.vms and plan9/config.plan9, though you should be quite careful in doing so if @@ -1184,4 +1204,4 @@ All opinions expressed herein are those of the authorZ<>(s). =head1 LAST MODIFIED -$Id: pumpkin.pod,v 1.13 1997/08/28 18:26:40 doughera Released $ +$Id: pumpkin.pod,v 1.14 1998/03/03 17:14:47 doughera Released $ diff --git a/config_h.SH b/config_h.SH index f74da62..138e08a 100644 --- a/config_h.SH +++ b/config_h.SH @@ -257,12 +257,6 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- */ #$d_getgrps HAS_GETGROUPS /**/ -/* HAS_GETHOSTENT: - * This symbol, if defined, indicates that the gethostent routine is - * available to lookup host names in some data base or other. - */ -#$d_gethent HAS_GETHOSTENT /**/ - /* HAS_UNAME: * This symbol, if defined, indicates that the C program may use the * uname() routine to derive the host name. See also HAS_GETHOSTNAME @@ -1485,6 +1479,12 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- #$d_vprintf HAS_VPRINTF /**/ #$d_charvspr USE_CHAR_VSPRINTF /**/ +/* DOUBLESIZE: + * This symbol contains the size of a double, so that the C preprocessor + * can make decisions based on it. + */ +#define DOUBLESIZE $doublesize /**/ + /* I_TIME: * This symbol, if defined, indicates to the C program that it should * include . @@ -1544,6 +1544,14 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- #define RD_NODATA $rd_nodata #$d_eofnblk EOF_NONBLOCK +/* PTRSIZE: + * This symbol contains the size of a pointer, so that the C preprocessor + * can make decisions based on it. It will be sizeof(void *) if + * the compiler supports (void *); otherwise it will be + * sizeof(char *). + */ +#define PTRSIZE $ptrsize /**/ + /* RANDBITS: * This symbol contains the number of bits of random number the rand() * function produces. Usual values are 15, 16, and 31. @@ -1609,6 +1617,58 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- */ #$d_csh CSH "$full_csh" /**/ +/* HAS_GETHOSTBYADDR: + * This symbol, if defined, indicates that the gethostbyaddr() routine is + * available to look up hosts by their IP addresses. + */ +#$d_gethbyaddr HAS_GETHOSTBYADDR /**/ + +/* HAS_GETHOSTBYNAME: + * This symbol, if defined, indicates that the gethostbyname() routine is + * available to look up host names in some data base or other. + */ +#$d_gethbyname HAS_GETHOSTBYNAME /**/ + +/* HAS_GETHOSTENT: + * This symbol, if defined, indicates that the gethostent() routine is + * available to look up host names in some data base or another. + */ +#$d_gethent HAS_GETHOSTENT /**/ + +/* HAS_GETNETBYADDR: + * This symbol, if defined, indicates that the getnetbyaddr() routine is + * available to look up networks by their IP addresses. + */ +#$d_getnbyaddr HAS_GETNETBYADDR /**/ + +/* HAS_GETNETBYNAME: + * This symbol, if defined, indicates that the getnetbyname() routine is + * available to look up networks by their names. + */ +#$d_getnbyname HAS_GETNETBYNAME /**/ + +/* HAS_GETPROTOBYNAME: + * This symbol, if defined, indicates that the getprotobyname() + * routine is available to look up protocols by their name. + */ +/* HAS_GETPROTOBYNUMBER: + * This symbol, if defined, indicates that the getprotobynumber() + * routine is available to look up protocols by their number. + */ +#$d_getpbyname HAS_GETPROTOBYNAME /**/ +#$d_getpbynumber HAS_GETPROTOBYNUMBER /**/ + +/* HAS_GETSERVBYNAME: + * This symbol, if defined, indicates that the getservbyname() + * routine is available to look up services by their name. + */ +/* HAS_GETSERVBYPORT: + * This symbol, if defined, indicates that the getservbyport() + * routine is available to look up services by their port. + */ +#$d_getsbyname HAS_GETSERVBYNAME /**/ +#$d_getsbyport HAS_GETSERVBYPORT /**/ + /* HAS_SETGROUPS: * This symbol, if defined, indicates that the setgroups() routine is * available to set the list of process groups. If unavailable, multiple @@ -1616,6 +1676,12 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- */ #$d_setgrps HAS_SETGROUPS /**/ +/* HAS_SETHOSTENT: + * This symbol, if defined, indicates that the sethostent() routine is + * available. + */ +#$d_sethent HAS_SETHOSTENT /**/ + /* Signal_t: * This symbol's value is either "void" or "int", corresponding to the * appropriate return type of a signal handler. Thus, you can declare @@ -1820,7 +1886,12 @@ sed <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- * This symbol, if defined, indicates that Perl should * be built to use threads. */ +/* OLD_PTHREADS_API: + * This symbol, if defined, indicates that Perl should + * be built to use the old draft POSIX threads API. + */ #$usethreads USE_THREADS /**/ +#$d_oldpthreads OLD_PTHREADS_API /**/ #endif !GROK!THIS! diff --git a/handy.h b/handy.h index 51824f3..3daf767 100644 --- a/handy.h +++ b/handy.h @@ -96,7 +96,15 @@ # endif # endif #endif - For the moment, these are mentioned here so metaconfig will + + except that still won't work if a system has no integral type + with a size that is 32 bytes. + + Further, we need to know about PTRSIZE == sizeof(void *) and + DOUBLESIZE == sizeof(double) if we really want to try to handle + 32/64-bit combinations. + + For the moment, these are only mentioned here so metaconfig will construct Configure to figure out the various sizes. */ diff --git a/hints/README.hints b/hints/README.hints index 2c27068..e36bd6d 100644 --- a/hints/README.hints +++ b/hints/README.hints @@ -1,17 +1,24 @@ +=head1 NAME + +README.hints + +=head1 DESCRIPTION + These files are used by Configure to set things which Configure either can't or doesn't guess properly. Most of these hint files have been tested with at least some version of perl5, but some are still left -over from perl4. I would appreciate hearing about any problems -or suggested changes. +over from perl4. + +Please send any problems or suggested changes to perlbug@perl.com. Hint file naming convention: Each hint file name should have only -one '.'. (This is for portability to non-unix filesystems.) Names +one '.'. (This is for portability to non-unix file systems.) Names should also fit in <= 14 characters, for portability to older SVR3 systems. File names are of the form $osname_$osvers.sh, with all '.' -changed to '_', and all characters such as '/' that don't belong in +changed to '_', and all characters (such as '/') that don't belong in Unix filenames omitted. -For example, consider SunOS 4.1.3. Configure determines $osname=sunos +For example, consider Sun OS 4.1.3. Configure determines $osname=sunos (all names are converted to lower case) and $osvers=4.1.3. Configure will search for an appropriate hint file in the following order: @@ -22,18 +29,185 @@ will search for an appropriate hint file in the following order: If you need to create a hint file, please try to use as general a name as possible and include minor version differences inside case or test -statements. Be sure also to include a default choice. (See -aix.sh for one example.) That way, if you write a hint file for -foonix 3.2, it might still work without any changes when foonix 3.3 is -released. +statements. For example, for IRIX 6.X, we have the following hints +files: + + irix_6_0.sh + irix_6_1.sh + irix_6.sh + +That is, 6.0 and 6.1 have their own special hints, but 6.2, 6.3, and +up are all handled by the same irix_6.sh. That way, we don't have to +make a new hint file every time the IRIX O/S is upgraded. + +If you need to test for specific minor version differences in your +hints file, be sure to include a default choice. (See aix.sh for one +example.) That way, if you write a hint file for foonix 3.2, it might +still work without any changes when foonix 3.3 is released. Please also comment carefully on why the different hints are needed. That way, a future version of Configure may be able to automatically -detect what is needed. A glossary of config.sh variables is in the -file Porting/Glossary. +detect what is needed. + +A glossary of config.sh variables is in the file Porting/Glossary. + +=head1 Hint file tricks + +=head2 Printing critical messages + +[This is still experimental] + +If you have a *REALLY* important message that the user ought to see at +the end of the Configure run, you can store it in the file +'config.msg'. At the end of the Configure run, Configure will display +the contents of this file. Currently, the only place this is used is +in Configure itself to warn about the need to set LD_LIBRARY_PATH if +you are building a shared libperl.so. + +To use this feature, just do something like the following + + $cat <&4 + + This is a really important message. Be sure to read it + before you type 'make'. + EOM + +This message will appear on the screen as the hint file is being +processed and again at the end of Configure. + +Please use this sparingly. + +=head2 Propagating variables to config.sh + +Sometimes, you want an extra variable to appear in config.sh. For +example, if your system can't compile toke.c with the optimizer on, +you can put + + toke_cflags='optimize=""' + +at the beginning of a line in your hints file. Configure will then +extract that variable and place it in your config.sh file. Later, +while compiling toke.c, the cflags shell script will eval $toke_cflags +and hence compile toke.c without optimization. + +Note that for this to work, the variable you want to propagate must +appear in the first column of the hint file. It is extracted by +Configure with a simple sed script, so beware that surrounding case +statements aren't any help. + +By contrast, if you don't want Configure to propagate your temporary +variable, simply indent it by a leading tab in your hint file. + +For example, prior to 5.002, a bug in scope.c led to perl crashing +when compiled with -O in AIX 4.1.1. The following "obvious" +workaround in hints/aix.sh wouldn't work as expected: + + case "$osvers" in + 4.1.1) + scope_cflags='optimize=""' + ;; + esac + +because Configure doesn't parse the surrounding 'case' statement, it +just blindly propagates any variable that starts in the first column. +For this particular case, that's probably harmless anyway. + +Three possible fixes are: + +=over + +=item 1 + +Create an aix_4_1_1.sh hint file that contains the scope_cflags +line and then sources the regular aix hints file for the rest of +the information. + +=item 2 + +Do the following trick: + + scope_cflags='case "$osvers" in 4.1*) optimize=" ";; esac' + +Now when $scope_cflags is eval'd by the cflags shell script, the +case statement is executed. Of course writing scripts to be eval'd is +tricky, especially if there is complex quoting. Or, + +=item 3 + +Write directly to Configure's temporary file UU/config.sh. +You can do this with + + case "$osvers" in + 4.1.1) + echo "scope_cflags='optimize=\"\"'" >> UU/config.sh + scope_cflags='optimize=""' + ;; + esac + +Note you have to both write the definition to the temporary +UU/config.sh file and set the variable to the appropriate value. + +This is sneaky, but it works. Still, if you need anything this +complex, perhaps you should create the separate hint file for +aix 4.1.1. + +=back + +=head2 Call-backs + +=over 4 + +=item Warning + +All of the following is experimental and subject to change. But it +probably won't change much. :-) + +=item Compiler-related flags + +The settings of some things, such as optimization flags, may depend on +the particular compiler used. For example, for ISC we have the +following: + + case "$cc" in + *gcc*) ccflags="$ccflags -posix" + ldflags="$ldflags -posix" + ;; + *) ccflags="$ccflags -Xp -D_POSIX_SOURCE" + ldflags="$ldflags -Xp" + ;; + esac + +However, the hints file is processed before the user is asked which +compiler should be used. Thus in order for these hints to be useful, +the user must specify sh Configure -Dcc=gcc on the command line, as +advised by the INSTALL file. + +For versions of perl later than 5.004_61, this problem can +be circumvented by the use of "call-back units". That is, the hints +file can tuck this information away into a file UU/cc.cbu. Then, +after Configure prompts the user for the C compiler, it will load in +and run the UU/cc.cbu "call-back" unit. See hints/solaris_2.sh for an +example. + +=item Threading-related flags + +Similarly, after Configure prompts the user about whether or not to +compile Perl with threads, it will look for a "call-back" unit +usethreads.cbu. See hints/linux.sh for an example. + +=item Future status + +I hope this "call-back" scheme is simple enough to use but powerful +enough to deal with most situations. Still, there are certainly cases +where it's not enough. For example, for aix we actually change +compilers if we are using threads. + +I'd appreciate feedback on whether this is sufficiently general to be +helpful, or whether we ought to simply continue to require folks to +say things like "sh Configure -Dcc=gcc -Dusethreads" on the command line. + +=back Have the appropriate amount of fun :-) Andy Dougherty doughera@lafcol.lafayette.edu - Dept. of Physics - Lafayette College, Easton PA 18042 diff --git a/hints/aix.sh b/hints/aix.sh index 076eed5..bc26590 100644 --- a/hints/aix.sh +++ b/hints/aix.sh @@ -48,12 +48,6 @@ esac d_setregid='undef' d_setreuid='undef' -# The optimizer in 4.1.1 apparently generates bad code for scope.c. -# Configure doesn't offer an easy way to propagate extra variables -# only for certain cases, so the following contortion is required: -# This is probably not needed in 5.002 and later. -# scope_cflags='case "$osvers" in 4.1*) optimize=" ";; esac' - # Changes for dynamic linking by Wayne Scott # # Tell perl which symbols to export for dynamic linking. diff --git a/hints/linux.sh b/hints/linux.sh index 1ddbca1..7347945 100644 --- a/hints/linux.sh +++ b/hints/linux.sh @@ -30,7 +30,8 @@ esac ccflags="-Dbool=char -DHAS_BOOL $ccflags" # BSD compatability library no longer needed -set `echo X "$libswanted "| sed -e 's/ bsd / /'` +# 'kaffe' has a /usr/lib/libnet.so which is not at all relevent for perl. +set `echo X "$libswanted "| sed -e 's/ bsd / /' -e 's/ net / /'` shift libswanted="$*" @@ -194,7 +195,12 @@ fi # it should be: # ccdlflags='-Wl,-E' -if [ "X$usethreads" != "X" ]; then +# XXX EXPERIMENTAL A.D. 2/27/1998 +# XXX This script UU/usethreads.cbu will get 'called-back' by Configure +# XXX after it has prompted the user for whether to use threads. +cat > UU/usethreads.cbu <<'EOSH' +case "$usethreads" in +$define|true|[yY]*) ccflags="-D_REENTRANT $ccflags" # -lpthread needs to come before -lc but after other libraries such # as -lgdbm and such like. We assume here that -lc is present in @@ -203,4 +209,7 @@ if [ "X$usethreads" != "X" ]; then set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` shift libswanted="$*" -fi + ;; +esac +EOSH +# XXX EXPERIMENTAL --end of call-back diff --git a/hints/solaris_2.sh b/hints/solaris_2.sh index 55d0416..7f7a856 100644 --- a/hints/solaris_2.sh +++ b/hints/solaris_2.sh @@ -116,6 +116,10 @@ END fi rm -f make.vers +# XXX EXPERIMENTAL A.D. 2/27/1998 +# XXX This script UU/cc.cbu will get 'called-back' by Configure after it +# XXX has prompted the user for the C compiler to use. +cat > UU/cc.cbu <<'EOSH' # If the C compiler is gcc: # - check the fixed-includes # - check as(1) and ld(1), they should not be GNU @@ -223,6 +227,9 @@ fi # as --version or ld --version might dump core. rm -f core +# XXX +EOSH + if [ "X$usethreads" != "X" ]; then ccflags="-D_REENTRANT $ccflags" # -lpthread needs to come before -lc but after other libraries such diff --git a/hints/unicos.sh b/hints/unicos.sh index b864019..1d82855 100644 --- a/hints/unicos.sh +++ b/hints/unicos.sh @@ -4,4 +4,7 @@ esac optimize="-O1" d_setregid='undef' d_setreuid='undef' +case "$usemymalloc" in +'') usemymalloc='n' ;; +esac diff --git a/makedepend.SH b/makedepend.SH index dceca0b..3c7ffe4 100755 --- a/makedepend.SH +++ b/makedepend.SH @@ -115,7 +115,7 @@ for file in `$cat .clist`; do -e 's|\\$||' \ -e p \ -e '}' ) >UU/$file.c - $cppstdin $finc -I/usr/local/include -I. $cppflags $cppminus /d' \ -e '/^#.*"-"/d' \ diff --git a/myconfig b/myconfig index 86da2ed..858c87c 100755 --- a/myconfig +++ b/myconfig @@ -24,7 +24,7 @@ Summary of my $package ($baserev patchlevel $PATCHLEVEL subversion $SUBVERSION) osname=$osname, osvers=$osvers, archname=$archname uname='$myuname' hint=$hint, useposix=$useposix, d_sigaction=$d_sigaction - bincompat3=$bincompat3 useperlio=$useperlio d_sfio=$d_sfio + usethreads=$usethreads useperlio=$useperlio d_sfio=$d_sfio Compiler: cc='$cc', optimize='$optimize', gccversion=$gccversion cppflags='$cppflags' diff --git a/pp_sys.c b/pp_sys.c index c273c8c..8058fb2 100644 --- a/pp_sys.c +++ b/pp_sys.c @@ -3584,7 +3584,7 @@ PP(pp_semop) PP(pp_ghbyname) { -#ifdef HAS_SOCKET +#ifdef HAS_GETHOSTBYNAME return pp_ghostent(ARGS); #else DIE(no_sock_func, "gethostbyname"); @@ -3593,7 +3593,7 @@ PP(pp_ghbyname) PP(pp_ghbyaddr) { -#ifdef HAS_SOCKET +#ifdef HAS_GETHOSTBYADDR return pp_ghostent(ARGS); #else DIE(no_sock_func, "gethostbyaddr"); @@ -3603,7 +3603,7 @@ PP(pp_ghbyaddr) PP(pp_ghostent) { djSP; -#ifdef HAS_SOCKET +#if defined(HAS_GETHOSTBYNAME) || defined(HAS_GETHOSTBYADDR) || defined(HAS_GETHOSTENT) I32 which = op->op_type; register char **elem; register SV *sv; @@ -3687,7 +3687,7 @@ PP(pp_ghostent) PP(pp_gnbyname) { -#ifdef HAS_SOCKET +#ifdef HAS_GETNETBYNAME return pp_gnetent(ARGS); #else DIE(no_sock_func, "getnetbyname"); @@ -3696,7 +3696,7 @@ PP(pp_gnbyname) PP(pp_gnbyaddr) { -#ifdef HAS_SOCKET +#ifdef HAS_GETNETBYADDR return pp_gnetent(ARGS); #else DIE(no_sock_func, "getnetbyaddr"); @@ -3706,7 +3706,7 @@ PP(pp_gnbyaddr) PP(pp_gnetent) { djSP; -#ifdef HAS_SOCKET +#if defined(HAS_GETNETBYNAME) || defined(HAS_GETNETBYADDR) || defined(HAS_GETNETENT) I32 which = op->op_type; register char **elem; register SV *sv; @@ -3762,7 +3762,7 @@ PP(pp_gnetent) PP(pp_gpbyname) { -#ifdef HAS_SOCKET +#ifdef HAS_GETPROTOBYNAME return pp_gprotoent(ARGS); #else DIE(no_sock_func, "getprotobyname"); @@ -3771,7 +3771,7 @@ PP(pp_gpbyname) PP(pp_gpbynumber) { -#ifdef HAS_SOCKET +#ifdef HAS_GETPROTOBYNUMBER return pp_gprotoent(ARGS); #else DIE(no_sock_func, "getprotobynumber"); @@ -3781,7 +3781,7 @@ PP(pp_gpbynumber) PP(pp_gprotoent) { djSP; -#ifdef HAS_SOCKET +#if defined(HAS_GETPROTOBYNAME) || defined(HAS_GETPROTOBYNUMBER) || defined(HAS_GETPROTOENT) I32 which = op->op_type; register char **elem; register SV *sv; @@ -3834,7 +3834,7 @@ PP(pp_gprotoent) PP(pp_gsbyname) { -#ifdef HAS_SOCKET +#ifdef HAS_GETSERVICEBYNAME return pp_gservent(ARGS); #else DIE(no_sock_func, "getservbyname"); @@ -3843,7 +3843,7 @@ PP(pp_gsbyname) PP(pp_gsbyport) { -#ifdef HAS_SOCKET +#ifdef HAS_GETSERVICEBYPORT return pp_gservent(ARGS); #else DIE(no_sock_func, "getservbyport"); @@ -3853,7 +3853,7 @@ PP(pp_gsbyport) PP(pp_gservent) { djSP; -#ifdef HAS_SOCKET +#if defined(HAS_GETSERVBYNAME) || defined(HAS_GETSERVBYPORT) || defined(HAS_GETSERVENT) I32 which = op->op_type; register char **elem; register SV *sv; @@ -3932,7 +3932,7 @@ PP(pp_gservent) PP(pp_shostent) { djSP; -#ifdef HAS_SOCKET +#ifdef HAS_SETHOSTENT sethostent(TOPi); RETSETYES; #else @@ -3943,7 +3943,7 @@ PP(pp_shostent) PP(pp_snetent) { djSP; -#ifdef HAS_SOCKET +#ifdef HAS_SETNETENT setnetent(TOPi); RETSETYES; #else @@ -3954,7 +3954,7 @@ PP(pp_snetent) PP(pp_sprotoent) { djSP; -#ifdef HAS_SOCKET +#ifdef HAS_SETPROTOENT setprotoent(TOPi); RETSETYES; #else @@ -3965,7 +3965,7 @@ PP(pp_sprotoent) PP(pp_sservent) { djSP; -#ifdef HAS_SOCKET +#ifdef HAS_SETSERVENT setservent(TOPi); RETSETYES; #else @@ -3976,7 +3976,7 @@ PP(pp_sservent) PP(pp_ehostent) { djSP; -#ifdef HAS_SOCKET +#ifdef HAS_ENDHOSTENT endhostent(); EXTEND(sp,1); RETPUSHYES; @@ -3988,7 +3988,7 @@ PP(pp_ehostent) PP(pp_enetent) { djSP; -#ifdef HAS_SOCKET +#ifdef HAS_ENDNETENT endnetent(); EXTEND(sp,1); RETPUSHYES; @@ -4000,7 +4000,7 @@ PP(pp_enetent) PP(pp_eprotoent) { djSP; -#ifdef HAS_SOCKET +#ifdef HAS_ENDPROTOENT endprotoent(); EXTEND(sp,1); RETPUSHYES; @@ -4012,7 +4012,7 @@ PP(pp_eprotoent) PP(pp_eservent) { djSP; -#ifdef HAS_SOCKET +#ifdef HAS_ENDSERVENT endservent(); EXTEND(sp,1); RETPUSHYES;