1 ?RCS: $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
3 ?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
5 ?RCS: You may redistribute only under the terms of the Artistic License,
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 License; a copy of which may be found at the root
9 ?RCS: of the source tree for dist 4.0.
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
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
20 ?RCS: Revision 3.0.1.7 1995/03/21 08:46:15 ram
21 ?RCS: patch52: definition of paths wrongly added spurious ':' chars
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
26 ?RCS: Revision 3.0.1.5 1994/08/29 16:03:44 ram
27 ?RCS: patch32: now sets PATH only using existing directories
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
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
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
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
42 ?RCS: Revision 3.0 1993/08/18 12:04:58 ram
43 ?RCS: Baseline for dist 3.0 netwide release.
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.
50 ?MAKE: -pick wipe $@ %<
51 ?V:PATH p_ _exe me newsh
52 ?T:argv p paths OS2_SHELL DJGPP
53 ?T:inksh needksh avoidksh newsh changesh reason
55 ?LINT:extern ENV CDPATH SHELL MACHTYPE _exe is_os2
56 ?LINT:change ENV CDPATH is_os2
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.
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.)
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).
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.
76 ?X: WE ASK YOU NOT TO REMOVE OR ALTER THE FOLLOWING PARAGRAPH, PLEASE:
78 # Note: this Configure script was generated automatically by the tool
79 # called "metaconfig". Rather than working with this copy of Configure,
80 # you may wish to get metaconfig. Perl uses a modified version of this
81 # tool, available in the "dist" folder in the checkout of the git repo
82 # $ git clone https://github.com/perl5-metaconfig/metaconfig metaconfig
83 # The original dist package (including metaconfig) is available on github:
84 # $ git clone https://github.com/rmanfredi/dist.git dist-git
86 ?X: OK, I'll not alter, but I'll add to it then ...
87 # Though this script was generated by metaconfig from metaunits, it is
88 # OK to send patches against Configure itself. It's up to the Configure
89 # pumpkin to backport the patch to the metaunits if it is accepted.
90 # For more information on patching Configure, see pod/perlhack.pod
92 # The metaunits are also available from the public github repository:
93 # https://github.com/perl5-metaconfig/metaconfig/tree/master/U
95 # See Porting/pumpkin.pod for more information on metaconfig.
98 ?X: If you develop you own version of metaconfig based on this work,
99 ?X: you have to add some comments telling that the script was generated
100 ?X: by your version, not mine: It credits your work.
103 # Generated using [metaconfig <VERSION> PL<PATCHLEVEL>]
104 # (with additional metaconfig patches by <MAINTLOC>)
109 SCO csh still thinks true is false. Write to SCO today and tell them that next
110 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
112 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
113 we'd have to do is go in and swap the && and || tokens, wherever they are.)
115 [End of diatribe. We now return you to your regularly scheduled programming...]
119 OOPS! You naughty creature! You didn't run Configure with sh!
120 I will attempt to remedy the situation by running sh for you...
123 true || cat c1$$ c2$$
124 true || exec sh $0 $argv:q
126 (exit $?0) || cat c2$$
127 (exit $?0) || exec sh $0 $argv:q
130 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
133 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
134 *** Configure that well. (Plan 9 is close to UNIX but not close enough.)
135 *** Please read the README.plan9 for further instructions.
136 *** Cannot continue, aborting.
142 if test -f /sys/utilities/MultiView ; then
143 # AmigaOS, test -c for /dev/null is not useful
145 elif test ! -c /dev/null ; then
148 *** I'm sorry, but /dev/null appears to be a file rather than a device.
149 *** Please consult your operating sytem's notes for making a device
151 *** Cannot continue, aborting.
157 : compute my invocation name
161 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
167 ?X: To be able to run under OS/2, we must detect that early enough to use
168 ?X: the proper path separator, stored in $p_. It is : on UNIX and ; on
169 ?X: DOS-ish systems such as OS/2.
171 : Proper separator for the PATH environment variable
173 : On OS/2 this directory should exist if this is not floppy only system ":-]"
174 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' 2>&1 ) 2>&1 >/dev/null ; then
175 if test -n "$OS2_SHELL"; then
177 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
178 ?X: That's a bug in ksh5.22
179 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
181 elif test -n "$DJGPP"; then
182 case "X${MACHTYPE:-nonesuchmach}" in
190 ?X: There are two schools of thoughts here. Some people correctly argue that
191 ?X: the user has a better chance than we do of setting a reasonable PATH and
192 ?X: others argue that Configure is the best place there is to set up a suitable
193 ?X: PATH. Well, here we try to compromise by keeping the user's PATH and
194 ?X: appending some directories which are known to work on some machine or the
195 ?X: other. The rationale behind this being that a novice user might not have a
196 ?X: proper environment variable set, and some directories like /etc (where
197 ?X: chown is located on some BSD systems) may be missing--RAM.
199 ?X: SVR4 adds an /opt directory for optional packages. Some sites use
200 ?X: various permutations on /opt as opposed to /usr or /usr/local.-- ADO
202 ?X: We only add directories that are not already in the PATH of the
203 ?X: user and the directories must exist also.
205 ?X: 20040627, Merijn, HP-UX's ANSI compiler is in /opt/ansic/bin if present
206 ?X: and should be before /usr/ccs/bin, where the braindead bundled compiler
207 ?X: can be found. The /usr/ccs/bin compiler cannot be used to build perl.
209 : Proper PATH setting
210 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
211 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
212 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
213 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
214 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
215 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
216 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
217 paths="$paths /sbin /usr/sbin /usr/libexec"
218 paths="$paths /system/gnu_library/bin"
222 case "$p_$PATH$p_" in
224 *) test -d $p && PATH=$PATH$p_$p ;;
231 : shall we be using ksh?
237 ?X: Use (alias -x) and not (alias) since zsh and bash recognize the alias
238 ?X: builtin but not the -x option which is typically ksh...
239 ?X: We need to set up PATH before calling the "alias" built-in since some
240 ?X: systems like HP-UX have a binary called /bin/alias.
241 if (PATH=.; alias -x) >/dev/null 2>&1; then
244 ?X: On HP-UX, large Configure scripts may exercise a bug in /bin/sh, use ksh
245 if test -f /hp-ux -a -f /bin/ksh; then
246 needksh='to avoid sh bug in "here document" expansion'
248 ?X: On AIX4, /bin/sh is really ksh and it causes problems, use sh
249 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
250 if test X`/usr/bin/uname -v` = X4; then
251 avoidksh="to avoid AIX 4's /bin/sh"
255 ?X: On Digital UNIX, /bin/sh may start up buggy /bin/ksh, use sh
256 if test -f /osf_boot -a -f /usr/sbin/setld; then
257 if test X`/usr/bin/uname -s` = XOSF1; then
258 avoidksh="to avoid Digital UNIX' ksh"
260 ?X: if BIN_SH is set to 'xpg4', sh will start up ksh
264 ?X: If we are not in ksh and need it, then feed us back to it
265 case "$inksh/$needksh" in
267 ?X: Clear ENV to avoid any ~/.kshrc that could alias cd or whatever...
268 ?X: Don't use "unset ENV", that is not portable enough
274 ?X: If we are in ksh and must avoid it, then feed us back to a new shell
275 case "$inksh/$avoidksh" in
281 ?X: Warn them if they use ksh on other systems, which are those where
282 ?X: we don't need ksh nor want to avoid it explicitly, yet are using it.
283 case "$inksh/$needksh-$avoidksh-" in
286 (I see you are using the Korn shell. Some ksh's blow up on $me,
287 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
294 echo "(Feeding myself to $newsh $reason.)"
295 ?X: Make sure they didn't say sh <Configure by checking whether $0 ends
296 ?X: with Configure or not. If they did say sh <../../Configure, then too
297 ?X: bad for them anyway, since we lost that path indication...
298 ?X: Otherwise, execing $0 ensures we keep the full remote source dir
299 ?X: indication for src.U.
301 Configure|*/Configure) exec $newsh $0 "$@";;
302 *) exec $newsh Configure "$@";;
307 ?X: having $newsh persist as ksh here is bad news if ksh doesn't really
308 ?X: exist. this causes us to toss away a perfectly good working test in
309 ?X: bash in favor of more exotic external options. see bug 42665.
310 test -x "${newsh}" || unset newsh
312 ?X: Unset CDPATH to avoid surprises when using cd under some shells
313 ?X: Can't unset it because that's not portable to very old shells.
314 ?X: Can't set it to '' because then bash 2.02 won't do "cd UU" --AD 6/98.
315 ?X: Don't want to set it to '.' because then ksh prints out the
316 ?X: name of the directory every time you cd to it. --AD 6/98
317 ?X: In order to inflict the least harm, change it only if it's set.
318 : if needed, set CDPATH to a harmless value that is not chatty
319 : avoid bash 2.02 problems with empty CDPATH.
323 *bash*) CDPATH='.' ;;
329 : Configure runs within the UU subdirectory
330 test -d UU || mkdir UU
331 ?X: Use ./* to avoid any confirmation prompts from enhanced shells -- WED