| 1 | ?RCS: $Id: patchlevel.U,v 3.0.1.1 1997/02/28 16:18:41 ram Exp $ |
| 2 | ?RCS: |
| 3 | ?RCS: Copyright (c) 1991-1993, Raphael Manfredi |
| 4 | ?RCS: |
| 5 | ?RCS: This file is included with or a derivative work of a file included |
| 6 | ?RCS: with the metaconfig program of Raphael Manfredi's "dist" distribution. |
| 7 | ?RCS: In accordance with clause 7 of dist's modified Artistic License: |
| 8 | ?RCS: |
| 9 | ?RCS: You may distribute under the terms of either the GNU General Public |
| 10 | ?RCS: License or the Artistic License, as specified in the README file. |
| 11 | ?RCS: |
| 12 | ?RCS: $Log: patchlevel.U,v $ |
| 13 | ?RCS: Revision 3.0.1.1 1997/02/28 16:18:41 ram |
| 14 | ?RCS: patch61: added support for src.U |
| 15 | ?RCS: |
| 16 | ?RCS: Revision 3.0 1993/08/18 12:09:31 ram |
| 17 | ?RCS: Baseline for dist 3.0 netwide release. |
| 18 | ?RCS: |
| 19 | ?MAKE:patchlevel revision version subversion \ |
| 20 | perl_patchlevel version_patchlevel_string \ |
| 21 | api_revision api_version api_subversion api_versionstring: \ |
| 22 | package test rsrc echo awk osname |
| 23 | ?MAKE: -pick add $@ %< |
| 24 | ?S:revision: |
| 25 | ?S: The value of revision comes from the patchlevel.h file. |
| 26 | ?S: In a version number such as 5.6.1, this is the "5". |
| 27 | ?S: In patchlevel.h, this is referred to as "PERL_REVISION". |
| 28 | ?S:. |
| 29 | ?S:patchlevel: |
| 30 | ?S: The patchlevel level of this package. |
| 31 | ?S: The value of patchlevel comes from the patchlevel.h file. |
| 32 | ?S: In a version number such as 5.6.1, this is the "6". |
| 33 | ?S: In patchlevel.h, this is referred to as "PERL_VERSION". |
| 34 | ?S:. |
| 35 | ?S:subversion: |
| 36 | ?S: The subversion level of this package. |
| 37 | ?S: The value of subversion comes from the patchlevel.h file. |
| 38 | ?S: In a version number such as 5.6.1, this is the "1". |
| 39 | ?S: In patchlevel.h, this is referred to as "PERL_SUBVERSION". |
| 40 | ?S: This is unique to perl. |
| 41 | ?S:. |
| 42 | ?S:version: |
| 43 | ?S: The full version number of this package, such as 5.6.1 (or 5_6_1). |
| 44 | ?S: This combines revision, patchlevel, and subversion to get the |
| 45 | ?S: full version number, including any possible subversions. |
| 46 | ?S: This is suitable for use as a directory name, and hence is |
| 47 | ?S: filesystem dependent. |
| 48 | ?S:. |
| 49 | ?S:api_revision: |
| 50 | ?S: The three variables, api_revision, api_version, and |
| 51 | ?S: api_subversion, specify the version of the oldest perl binary |
| 52 | ?S: compatible with the present perl. In a full version string |
| 53 | ?S: such as '5.6.1', api_revision is the '5'. |
| 54 | ?S: Prior to 5.5.640, the format was a floating point number, |
| 55 | ?S: like 5.00563. |
| 56 | ?S: |
| 57 | ?S: perl.c:incpush() and lib/lib.pm will automatically search in |
| 58 | ?S: $sitelib/.. for older directories back to the limit specified |
| 59 | ?S: by these api_ variables. This is only useful if you have a |
| 60 | ?S: perl library directory tree structured like the default one. |
| 61 | ?S: See INSTALL for how this works. The versioned site_perl |
| 62 | ?S: directory was introduced in 5.005, so that is the lowest |
| 63 | ?S: possible value. The version list appropriate for the current |
| 64 | ?S: system is determined in inc_version_list.U. |
| 65 | ?S: |
| 66 | ?S: XXX To do: Since compatibility can depend on compile time |
| 67 | ?S: options (such as bincompat, longlong, etc.) it should |
| 68 | ?S: (perhaps) be set by Configure, but currently it isn't. |
| 69 | ?S: Currently, we read a hard-wired value from patchlevel.h. |
| 70 | ?S: Perhaps what we ought to do is take the hard-wired value from |
| 71 | ?S: patchlevel.h but then modify it if the current Configure |
| 72 | ?S: options warrant. patchlevel.h then would use an #ifdef guard. |
| 73 | ?S:. |
| 74 | ?S:api_version: |
| 75 | ?S: The three variables, api_revision, api_version, and |
| 76 | ?S: api_subversion, specify the version of the oldest perl binary |
| 77 | ?S: compatible with the present perl. In a full version string |
| 78 | ?S: such as '5.6.1', api_version is the '6'. See api_revision for |
| 79 | ?S: full details. As a special case, 5.5.0 is rendered in the |
| 80 | ?S: old-style as 5.005. (In the 5.005_0x maintenance series, |
| 81 | ?S: this was the only versioned directory in $sitelib.) |
| 82 | ?S:. |
| 83 | ?S:api_subversion: |
| 84 | ?S: The three variables, api_revision, api_version, and |
| 85 | ?S: api_subversion, specify the version of the oldest perl binary |
| 86 | ?S: compatible with the present perl. In a full version string |
| 87 | ?S: such as '5.6.1', api_subversion is the '1'. See api_revision for |
| 88 | ?S: full details. |
| 89 | ?S:. |
| 90 | ?S:api_versionstring: |
| 91 | ?S: This variable combines api_revision, api_version, and |
| 92 | ?S: api_subversion in a format such as 5.6.1 (or 5_6_1) suitable |
| 93 | ?S: for use as a directory name. This is filesystem dependent. |
| 94 | ?S:. |
| 95 | ?S:perl_patchlevel: |
| 96 | ?S: This is the Perl patch level, a numeric change identifier, |
| 97 | ?S: as defined by whichever source code maintenance system |
| 98 | ?S: is used to maintain the patches; currently Perforce. |
| 99 | ?S: It does not correlate with the Perl version numbers or |
| 100 | ?S: the maintenance versus development dichotomy except |
| 101 | ?S: by also being increasing. |
| 102 | ?S:. |
| 103 | ?S:version_patchlevel_string: |
| 104 | ?S: This is a string combining version, subversion and |
| 105 | ?S: perl_patchlevel (if perl_patchlevel is non-zero). |
| 106 | ?S: It is typically something like |
| 107 | ?S: 'version 7 subversion 1' or |
| 108 | ?S: 'version 7 subversion 1 patchlevel 11224' |
| 109 | ?S: It is computed here to avoid duplication of code in myconfig.SH |
| 110 | ?S: and lib/Config.pm. |
| 111 | ?S:. |
| 112 | ?LINT:extern LC_ALL |
| 113 | ?LINT:extern LANGUAGE |
| 114 | : get the patchlevel |
| 115 | echo " " |
| 116 | echo "Getting the current patchlevel..." >&4 |
| 117 | if $test -r $rsrc/patchlevel.h;then |
| 118 | revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h` |
| 119 | patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h` |
| 120 | subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h` |
| 121 | api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h` |
| 122 | api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h` |
| 123 | api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h` |
| 124 | perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'` |
| 125 | else |
| 126 | revision=0 |
| 127 | patchlevel=0 |
| 128 | subversion=0 |
| 129 | api_revision=0 |
| 130 | api_version=0 |
| 131 | api_subversion=0 |
| 132 | perl_patchlevel=0 |
| 133 | $echo "(You do not have patchlevel.h. Eek.)" |
| 134 | fi |
| 135 | : Define a handy string here to avoid duplication in myconfig.SH and configpm. |
| 136 | version_patchlevel_string="version $patchlevel subversion $subversion" |
| 137 | case "$perl_patchlevel" in |
| 138 | 0|'') ;; |
| 139 | *) perl_patchlevel=`echo $perl_patchlevel | sed 's/.* //'` |
| 140 | version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" |
| 141 | ;; |
| 142 | esac |
| 143 | |
| 144 | $echo "(You have $package $version_patchlevel_string.)" |
| 145 | |
| 146 | case "$osname" in |
| 147 | dos|vms) |
| 148 | : XXX Should be a Configure test for double-dots in filenames. |
| 149 | version=`echo $revision $patchlevel $subversion | \ |
| 150 | $awk '{ printf "%d_%d_%d", $1, $2, $3 }'` |
| 151 | api_versionstring=`echo $api_revision $api_version $api_subversion | \ |
| 152 | $awk '{ printf "%d_%d_%d", $1, $2, $3 }'` |
| 153 | ;; |
| 154 | *) |
| 155 | version=`echo $revision $patchlevel $subversion | \ |
| 156 | $awk '{ printf "%d.%d.%d", $1, $2, $3 }'` |
| 157 | api_versionstring=`echo $api_revision $api_version $api_subversion | \ |
| 158 | $awk '{ printf "%d.%d.%d", $1, $2, $3 }'` |
| 159 | ;; |
| 160 | esac |
| 161 | : Special case the 5.005_xx maintenance series, which used 5.005 |
| 162 | : without any subversion label as a subdirectory in $sitelib |
| 163 | if test "${api_revision}${api_version}${api_subversion}" = "550"; then |
| 164 | api_versionstring='5.005' |
| 165 | fi |
| 166 | |