| 1 | ?RCS: $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $ |
| 2 | ?RCS: |
| 3 | ?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi |
| 4 | ?RCS: |
| 5 | ?RCS: You may redistribute only under the terms of the Artistic Licence, |
| 6 | ?RCS: as specified in the README file that comes with the distribution. |
| 7 | ?RCS: You may reuse parts of this distribution only within the terms of |
| 8 | ?RCS: that same Artistic Licence; a copy of which may be found at the root |
| 9 | ?RCS: of the source tree for dist 4.0. |
| 10 | ?RCS: |
| 11 | ?RCS: $Log: Head.U,v $ |
| 12 | ?RCS: Revision 3.0.1.9 1997/02/28 15:02:09 ram |
| 13 | ?RCS: patch61: make sure we unset CDPATH for shells that support this |
| 14 | ?RCS: patch61: improved Korn shell detection and handling |
| 15 | ?RCS: |
| 16 | ?RCS: Revision 3.0.1.8 1995/07/25 13:40:02 ram |
| 17 | ?RCS: patch56: added SVR4-ish /opt directories to path list (ADO) |
| 18 | ?RCS: patch56: OS/2 platforms are using another path separator |
| 19 | ?RCS: |
| 20 | ?RCS: Revision 3.0.1.7 1995/03/21 08:46:15 ram |
| 21 | ?RCS: patch52: definition of paths wrongly added spurious ':' chars |
| 22 | ?RCS: |
| 23 | ?RCS: Revision 3.0.1.6 1994/10/29 15:54:19 ram |
| 24 | ?RCS: patch36: make sure ENV is unset before calling /bin/ksh |
| 25 | ?RCS: |
| 26 | ?RCS: Revision 3.0.1.5 1994/08/29 16:03:44 ram |
| 27 | ?RCS: patch32: now sets PATH only using existing directories |
| 28 | ?RCS: |
| 29 | ?RCS: Revision 3.0.1.4 1994/06/20 06:54:28 ram |
| 30 | ?RCS: patch30: now computes its invocation name into 'me' |
| 31 | ?RCS: patch30: symbol me is made visible to all units read-only |
| 32 | ?RCS: |
| 33 | ?RCS: Revision 3.0.1.3 1993/12/15 08:15:07 ram |
| 34 | ?RCS: patch15: added /sbin:/usr/sbin:/usr/libexec in PATH for BSD/386 |
| 35 | ?RCS: |
| 36 | ?RCS: Revision 3.0.1.2 1993/11/10 17:32:35 ram |
| 37 | ?RCS: patch14: ensure PATH is reset to '.' before testing for alias |
| 38 | ?RCS: |
| 39 | ?RCS: Revision 3.0.1.1 1993/08/27 14:38:07 ram |
| 40 | ?RCS: patch7: not all 'test' programs support the -x option |
| 41 | ?RCS: |
| 42 | ?RCS: Revision 3.0 1993/08/18 12:04:58 ram |
| 43 | ?RCS: Baseline for dist 3.0 netwide release. |
| 44 | ?RCS: |
| 45 | ?X: |
| 46 | ?X: This is the very first unit in the Configure script. It is mostly just |
| 47 | ?X: things to keep people from getting into a tizzy right off the bat. |
| 48 | ?X: |
| 49 | ?MAKE:Head: |
| 50 | ?MAKE: -pick wipe $@ %< |
| 51 | ?V:PATH p_ _exe me newsh |
| 52 | ?T:argv Id p paths OS2_SHELL DJGPP |
| 53 | ?T:inksh needksh avoidksh newsh changesh reason |
| 54 | ?F:!* |
| 55 | ?LINT:extern ENV CDPATH SHELL MACHTYPE _exe is_os2 |
| 56 | ?LINT:change ENV CDPATH is_os2 |
| 57 | ?LINT:nocomment |
| 58 | #! /bin/sh |
| 59 | # |
| 60 | # If these # comments don't work, trim them. Don't worry about any other |
| 61 | # shell scripts, Configure will trim # comments from them for you. |
| 62 | # |
| 63 | # (If you are trying to port this package to a machine without sh, |
| 64 | # I would suggest you have a look at the prototypical config_h.SH file |
| 65 | # and edit it to reflect your system. Some packages may include samples |
| 66 | # of config.h for certain machines, so you might look for one of those.) |
| 67 | # |
| 68 | ?X: |
| 69 | ?X: NOTE THAT A CONFIGURE SCRIPT IS IN THE PUBLIC DOMAIN (whether or not |
| 70 | ?X: the software which uses it is in the public domain). |
| 71 | ?X: |
| 72 | # Yes, you may rip this off to use in other distribution packages. This |
| 73 | # script belongs to the public domain and cannot be copyrighted. |
| 74 | # |
| 75 | ?X: |
| 76 | ?X: WE ASK YOU NOT TO REMOVE OR ALTER THE FOLLOWING PARAGRAPH, PLEASE: |
| 77 | ?X: |
| 78 | # Note: this Configure script was generated automatically. Rather than |
| 79 | # working with this copy of Configure, you may wish to get metaconfig. |
| 80 | # The dist package (which contains metaconfig) is available via SVN: |
| 81 | # svn co https://svn.sourceforge.net/svnroot/dist/trunk/dist |
| 82 | # |
| 83 | ?X: OK, I'll not alter, but I'll add to it then ... |
| 84 | # Though this script was generated by metaconfig from metaunits, it is |
| 85 | # OK to send patches against Configure itself. It's up to the Configure |
| 86 | # pumpkin to backport the patch to the metaunits if it is accepted. |
| 87 | # For more information on patching Configure, see pod/perlhack.pod |
| 88 | # |
| 89 | # The metaunits are also available from the public git repository: |
| 90 | # http://perl5.git.perl.org/metaconfig.git/ or |
| 91 | # $ git clone git://perl5.git.perl.org/metaconfig.git metaconfig |
| 92 | # |
| 93 | # See Porting/pumpkin.pod for more information on metaconfig. |
| 94 | # |
| 95 | ?X: |
| 96 | ?X: NOTA BENE: |
| 97 | ?X: If you develop you own version of metaconfig based on this work, |
| 98 | ?X: you have to add some comments telling that the script was generated |
| 99 | ?X: by your version, not mine: It credits your work. |
| 100 | ?X: |
| 101 | |
| 102 | # Generated on <DATE> [metaconfig <VERSION> PL<PATCHLEVEL>] |
| 103 | # (with additional metaconfig patches by <MAINTLOC>) |
| 104 | |
| 105 | cat >c1$$ <<EOF |
| 106 | ARGGGHHHH!!!!! |
| 107 | |
| 108 | SCO csh still thinks true is false. Write to SCO today and tell them that next |
| 109 | year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-) |
| 110 | |
| 111 | (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All |
| 112 | we'd have to do is go in and swap the && and || tokens, wherever they are.) |
| 113 | |
| 114 | [End of diatribe. We now return you to your regularly scheduled programming...] |
| 115 | EOF |
| 116 | cat >c2$$ <<EOF |
| 117 | |
| 118 | OOPS! You naughty creature! You didn't run Configure with sh! |
| 119 | I will attempt to remedy the situation by running sh for you... |
| 120 | EOF |
| 121 | |
| 122 | true || cat c1$$ c2$$ |
| 123 | true || exec sh $0 $argv:q |
| 124 | |
| 125 | (exit $?0) || cat c2$$ |
| 126 | (exit $?0) || exec sh $0 $argv:q |
| 127 | rm -f c1$$ c2$$ |
| 128 | |
| 129 | if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then |
| 130 | cat <<EOF |
| 131 | *** |
| 132 | *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do |
| 133 | *** Configure that well. (Plan 9 is close to UNIX but not close enough.) |
| 134 | *** Please read the README.plan9 for further instructions. |
| 135 | *** Cannot continue, aborting. |
| 136 | *** |
| 137 | EOF |
| 138 | exit 1 |
| 139 | fi |
| 140 | |
| 141 | if test ! -c /dev/null ; then |
| 142 | cat <<EOF |
| 143 | *** |
| 144 | *** I'm sorry, but /dev/null appears to be a file rather than a device. |
| 145 | *** Please consult your operating sytem's notes for making a device |
| 146 | *** in /dev. |
| 147 | *** Cannot continue, aborting. |
| 148 | *** |
| 149 | EOF |
| 150 | exit 1 |
| 151 | fi |
| 152 | |
| 153 | : compute my invocation name |
| 154 | me=$0 |
| 155 | case "$0" in |
| 156 | */*) |
| 157 | me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null` |
| 158 | test "$me" || me=$0 |
| 159 | ;; |
| 160 | esac |
| 161 | |
| 162 | ?X: |
| 163 | ?X: To be able to run under OS/2, we must detect that early enough to use |
| 164 | ?X: the proper path separator, stored in $p_. It is : on UNIX and ; on |
| 165 | ?X: DOSish systems such as OS/2. |
| 166 | ?X: |
| 167 | : Proper separator for the PATH environment variable |
| 168 | p_=: |
| 169 | : On OS/2 this directory should exist if this is not floppy only system ":-]" |
| 170 | if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then |
| 171 | if test -n "$OS2_SHELL"; then |
| 172 | p_=\; |
| 173 | PATH=`cmd /c "echo %PATH%" | tr '\\\\' / ` |
| 174 | ?X: That's a bug in ksh5.22 |
| 175 | OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'` |
| 176 | is_os2=yes |
| 177 | elif test -n "$DJGPP"; then |
| 178 | case "X${MACHTYPE:-nonesuchmach}" in |
| 179 | *cygwin) ;; |
| 180 | *) p_=\; ;; |
| 181 | esac |
| 182 | fi |
| 183 | fi |
| 184 | |
| 185 | ?X: |
| 186 | ?X: There are two schools of thoughts here. Some people correctly argue that |
| 187 | ?X: the user has a better chance than we do of setting a reasonable PATH and |
| 188 | ?X: others argue that Configure is the best place there is to set up a suitable |
| 189 | ?X: PATH. Well, here we try to compromize by keeping the user's PATH and |
| 190 | ?X: appending some directories which are known to work on some machine or the |
| 191 | ?X: other. The rationale behind this being that a novice user might not have a |
| 192 | ?X: proper environment variable set, and some directories like /etc (where |
| 193 | ?X: chown is located on some BSD systems) may be missing--RAM. |
| 194 | ?X: |
| 195 | ?X: SVR4 adds an /opt directory for optional packages. Some sites use |
| 196 | ?X: various permutations on /opt as opposed to /usr or /usr/local.-- ADO |
| 197 | ?X: |
| 198 | ?X: We only add directories that are not already in the PATH of the |
| 199 | ?X: user and the directories must exist also. |
| 200 | ?X: |
| 201 | ?X: 20040627, Merijn, HP-UX's ANSI compiler is in /opt/ansic/bin if present |
| 202 | ?X: and should be before /usr/ccs/bin, where the braindead bundled compiler |
| 203 | ?X: can be found. The /usr/ccs/bin compiler cannot be used to build perl. |
| 204 | ?X: |
| 205 | : Proper PATH setting |
| 206 | paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin' |
| 207 | paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin" |
| 208 | paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin" |
| 209 | paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin" |
| 210 | paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb" |
| 211 | paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin" |
| 212 | paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib" |
| 213 | paths="$paths /sbin /usr/sbin /usr/libexec" |
| 214 | paths="$paths /system/gnu_library/bin" |
| 215 | |
| 216 | for p in $paths |
| 217 | do |
| 218 | case "$p_$PATH$p_" in |
| 219 | *$p_$p$p_*) ;; |
| 220 | *) test -d $p && PATH=$PATH$p_$p ;; |
| 221 | esac |
| 222 | done |
| 223 | |
| 224 | PATH=.$p_$PATH |
| 225 | export PATH |
| 226 | |
| 227 | : shall we be using ksh? |
| 228 | inksh='' |
| 229 | needksh='' |
| 230 | avoidksh='' |
| 231 | newsh=/bin/ksh |
| 232 | changesh='' |
| 233 | ?X: Use (alias -x) and not (alias) since zsh and bash recognize the alias |
| 234 | ?X: builtin but not the -x option which is typically ksh... |
| 235 | ?X: We need to set up PATH before calling the "alias" built-in since some |
| 236 | ?X: systems like HP-UX have a binary called /bin/alias. |
| 237 | if (PATH=.; alias -x) >/dev/null 2>&1; then |
| 238 | inksh=true |
| 239 | fi |
| 240 | ?X: On HP-UX, large Configure scripts may exercise a bug in /bin/sh, use ksh |
| 241 | if test -f /hp-ux -a -f /bin/ksh; then |
| 242 | needksh='to avoid sh bug in "here document" expansion' |
| 243 | fi |
| 244 | ?X: On AIX4, /bin/sh is really ksh and it causes problems, use sh |
| 245 | if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then |
| 246 | if test X`/usr/bin/uname -v` = X4; then |
| 247 | avoidksh="to avoid AIX 4's /bin/sh" |
| 248 | newsh=/usr/bin/bsh |
| 249 | fi |
| 250 | fi |
| 251 | ?X: On Digital UNIX, /bin/sh may start up buggy /bin/ksh, use sh |
| 252 | if test -f /osf_boot -a -f /usr/sbin/setld; then |
| 253 | if test X`/usr/bin/uname -s` = XOSF1; then |
| 254 | avoidksh="to avoid Digital UNIX' ksh" |
| 255 | newsh=/bin/sh |
| 256 | ?X: if BIN_SH is set to 'xpg4', sh will start up ksh |
| 257 | unset BIN_SH |
| 258 | fi |
| 259 | fi |
| 260 | ?X: If we are not in ksh and need it, then feed us back to it |
| 261 | case "$inksh/$needksh" in |
| 262 | /[a-z]*) |
| 263 | ?X: Clear ENV to avoid any ~/.kshrc that could alias cd or whatever... |
| 264 | ?X: Don't use "unset ENV", that is not portable enough |
| 265 | ENV='' |
| 266 | changesh=true |
| 267 | reason="$needksh" |
| 268 | ;; |
| 269 | esac |
| 270 | ?X: If we are in ksh and must avoid it, then feed us back to a new shell |
| 271 | case "$inksh/$avoidksh" in |
| 272 | true/[a-z]*) |
| 273 | changesh=true |
| 274 | reason="$avoidksh" |
| 275 | ;; |
| 276 | esac |
| 277 | ?X: Warn them if they use ksh on other systems, which are those where |
| 278 | ?X: we don't need ksh nor want to avoid it explicitly, yet are using it. |
| 279 | case "$inksh/$needksh-$avoidksh-" in |
| 280 | true/--) |
| 281 | cat <<EOM |
| 282 | (I see you are using the Korn shell. Some ksh's blow up on $me, |
| 283 | mainly on older exotic systems. If yours does, try the Bourne shell instead.) |
| 284 | EOM |
| 285 | ;; |
| 286 | esac |
| 287 | case "$changesh" in |
| 288 | true) |
| 289 | export newsh |
| 290 | echo "(Feeding myself to $newsh $reason.)" |
| 291 | ?X: Make sure they didn't say sh <Configure by checking whether $0 ends |
| 292 | ?X: with Configure or not. If they did say sh <../../Configure, then too |
| 293 | ?X: bad for them anyway, since we lost that path indication... |
| 294 | ?X: Otherwise, execing $0 ensures we keep the full remote source dir |
| 295 | ?X: indication for src.U. |
| 296 | case "$0" in |
| 297 | Configure|*/Configure) exec $newsh $0 "$@";; |
| 298 | *) exec $newsh Configure "$@";; |
| 299 | esac |
| 300 | ;; |
| 301 | esac |
| 302 | ?X: 2004.06.09 rac |
| 303 | ?X: having $newsh persist as ksh here is bad news if ksh doesn't really |
| 304 | ?X: exist. this causes us to toss away a perfectly good working test in |
| 305 | ?X: bash in favour of more exotic external options. see bug 42665. |
| 306 | test -x "${newsh}" || unset newsh |
| 307 | |
| 308 | ?X: Unset CDPATH to avoid surprises when using cd under some shells |
| 309 | ?X: Can't unset it because that's not portable to very old shells. |
| 310 | ?X: Can't set it to '' because then bash 2.02 won't do "cd UU" --AD 6/98. |
| 311 | ?X: Don't want to set it to '.' because then ksh prints out the |
| 312 | ?X: name of the directory every time you cd to it. --AD 6/98 |
| 313 | ?X: In order to inflict the least harm, change it only if it's set. |
| 314 | : if needed, set CDPATH to a harmless value that is not chatty |
| 315 | : avoid bash 2.02 problems with empty CDPATH. |
| 316 | case "$CDPATH" in |
| 317 | '') ;; |
| 318 | *) case "$SHELL" in |
| 319 | *bash*) CDPATH='.' ;; |
| 320 | *) CDPATH='' ;; |
| 321 | esac |
| 322 | ;; |
| 323 | esac |
| 324 | |
| 325 | : Configure runs within the UU subdirectory |
| 326 | test -d UU || mkdir UU |
| 327 | ?X: Use ./* to avoid any confirmation prompts from enhanced shells -- WED |
| 328 | cd UU && rm -f ./* |
| 329 | |