This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
RE: [perl #26136] localtime(3) calls tzset(3), but localtime_r(3) may not.
[metaconfig.git] / U / modified / Head.U
1 ?RCS: $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
2 ?RCS:
3 ?RCS: Copyright (c) 1991-1993, 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 3.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_ me
52 ?T:argv Id p paths OS2_SHELL DJGPP
53 ?T:inksh needksh avoidksh newsh changesh reason
54 ?LINT:extern ENV CDPATH SHELL MACHTYPE _exe is_os2
55 ?LINT:change ENV CDPATH _exe is_os2
56 #! /bin/sh
57 #
58 # If these # comments don't work, trim them. Don't worry about any other
59 # shell scripts, Configure will trim # comments from them for you.
60 #
61 # (If you are trying to port this package to a machine without sh,
62 # I would suggest you have a look at the prototypical config_h.SH file
63 # and edit it to reflect your system. Some packages may include samples
64 # of config.h for certain machines, so you might look for one of those.)
65 #
66 ?X:
67 ?X: NOTE THAT A CONFIGURE SCRIPT IS IN THE PUBLIC DOMAIN (whether or not
68 ?X: the software which uses it is in the public domain).
69 ?X:
70 # Yes, you may rip this off to use in other distribution packages. This
71 # script belongs to the public domain and cannot be copyrighted.
72 #
73 ?X:
74 ?X: WE ASK YOU NOT TO REMOVE OR ALTER THE FOLLOWING PARAGRAPH, PLEASE:
75 ?X:
76 # (Note: this Configure script was generated automatically. Rather than
77 # working with this copy of Configure, you may wish to get metaconfig.
78 # The dist-3.0 package (which contains metaconfig) was posted in
79 # comp.sources.misc and is available on CPAN under authors/id/RAM so
80 # you may fetch it yourself from your nearest archive site.)
81 #
82 ?X: OK, I'll not alter, but I'll add to it then ...
83 #
84 # Though this script was generated by metaconfig, it is OK to send
85 # patches against it. It's up to the Configure pumpkin to backport
86 # the patch to the metaunits if it is accepted.
87 # See Porting/pumpkin.pod for more information on metaconfig.
88 #
89 ?X:
90 ?X: NOTA BENE:
91 ?X: If you develop you own version of metaconfig based on this work,
92 ?X: you have to add some comments telling that the script was generated
93 ?X: by your version, not mine: It credits your work.
94 ?X:
95
96 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
97 #
98 # Generated on <DATE> [metaconfig <VERSION> PL<PATCHLEVEL>]
99 # (with additional metaconfig patches by <MAINTLOC>)
100
101 cat >c1$$ <<EOF
102 ARGGGHHHH!!!!!
103
104 SCO csh still thinks true is false.  Write to SCO today and tell them that next
105 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
106
107 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
108 we'd have to do is go in and swap the && and || tokens, wherever they are.)
109
110 [End of diatribe. We now return you to your regularly scheduled programming...]
111 EOF
112 cat >c2$$ <<EOF
113
114 OOPS!  You naughty creature!  You didn't run Configure with sh!
115 I will attempt to remedy the situation by running sh for you...
116 EOF
117
118 true || cat c1$$ c2$$
119 true || exec sh $0 $argv:q
120
121 (exit $?0) || cat c2$$
122 (exit $?0) || exec sh $0 $argv:q
123 rm -f c1$$ c2$$
124
125 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
126         cat >&4 <<EOF
127 ***
128 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
129 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
130 *** Please read the README.plan9 for further instructions.
131 *** Cannot continue, aborting.
132 ***
133 EOF
134         exit 1
135 fi
136
137 : compute my invocation name
138 me=$0
139 case "$0" in
140 */*)
141         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
142         test "$me" || me=$0
143         ;;
144 esac
145
146 ?X:
147 ?X: To be able to run under OS/2, we must detect that early enough to use
148 ?X: the proper path separator, stored in $p_. It is : on UNIX and ; on
149 ?X: DOSish systems such as OS/2.
150 ?X:
151 : Proper separator for the PATH environment variable
152 p_=:
153 : On OS/2 this directory should exist if this is not floppy only system :-]
154 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
155     if test -n "$OS2_SHELL"; then
156                 p_=\;
157                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
158 ?X: That's a bug in ksh5.22
159                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
160                 is_os2=yes
161         elif test -n "$DJGPP"; then
162                 case "X${MACHTYPE:-nonesuchmach}" in
163                 *cygwin) ;;
164                 *) p_=\; ;;
165                 esac
166         fi
167 fi
168
169 ?X:
170 ?X: There are two schools of thoughts here. Some people correctly argue that
171 ?X: the user has a better chance than we do of setting a reasonable PATH and
172 ?X: others argue that Configure is the best place there is to set up a suitable
173 ?X: PATH. Well, here we try to compromize by keeping the user's PATH and
174 ?X: appending some directories which are known to work on some machine or the
175 ?X: other. The rationale behind this being that a novice user might not have a
176 ?X: proper environment variable set, and some directories like /etc (where
177 ?X: chown is located on some BSD systems) may be missing--RAM.
178 ?X:
179 ?X: SVR4 adds an /opt directory for optional packages.  Some sites use
180 ?X: various permutations on /opt as opposed to /usr or /usr/local.-- ADO
181 ?X:
182 ?X: We only add directories that are not already in the PATH of the
183 ?X: user and the directories must exist also.
184 ?X:
185 ?X: 20040627, Merijn, HP-UX's ANSI compiler is in /opt/ansic/bin if present
186 ?X:  and should be before /usr/ccs/bin, where the braindead bundled compiler
187 ?X:  can be found. The .usr/ccs/bin compiler cannot be used to build perl.
188 ?X:
189 : Proper PATH setting
190 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
191 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
192 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
193 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
194 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
195 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
196 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
197 paths="$paths /sbin /usr/sbin /usr/libexec"
198 paths="$paths /system/gnu_library/bin"
199
200 for p in $paths
201 do
202         case "$p_$PATH$p_" in
203         *$p_$p$p_*) ;;
204         *) test -d $p && PATH=$PATH$p_$p ;;
205         esac
206 done
207
208 PATH=.$p_$PATH
209 export PATH
210
211 : shall we be using ksh?
212 inksh=''
213 needksh=''
214 avoidksh=''
215 newsh=/bin/ksh
216 changesh=''
217 ?X: Use (alias -x) and not (alias) since zsh and bash recognize the alias
218 ?X: builtin but not the -x option which is typically ksh...
219 ?X: We need to set up PATH before calling the "alias" built-in since some
220 ?X: systems like HP-UX have a binary called /bin/alias.
221 if (PATH=.; alias -x) >/dev/null 2>&1; then
222                 inksh=true
223 fi
224 ?X: On HP-UX, large Configure scripts may exercise a bug in /bin/sh, use ksh
225 if test -f /hp-ux -a -f /bin/ksh; then
226         needksh='to avoid sh bug in "here document" expansion'
227 fi
228 ?X: On AIX4, /bin/sh is really ksh and it causes problems, use sh
229 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
230         if test X`/usr/bin/uname -v` = X4; then
231                 avoidksh="to avoid AIX 4's /bin/sh"
232                 newsh=/usr/bin/bsh
233         fi
234 fi
235 ?X: On Digital UNIX, /bin/sh may start up buggy /bin/ksh, use sh
236 if test -f /osf_boot -a -f /usr/sbin/setld; then
237         if test X`/usr/bin/uname -s` = XOSF1; then
238                 avoidksh="to avoid Digital UNIX' ksh"
239                 newsh=/bin/sh
240                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
241         fi
242 fi
243 ?X: If we are not in ksh and need it, then feed us back to it
244 case "$inksh/$needksh" in
245 /[a-z]*)
246 ?X: Unset ENV to avoid any ~/.kshrc that could alias cd or whatever...
247                 ENV=''
248                 changesh=true
249                 reason="$needksh"
250         ;;
251 esac
252 ?X: If we are in ksh and must avoid it, then feed us back to a new shell
253 case "$inksh/$avoidksh" in
254 true/[a-z]*)
255         changesh=true
256         reason="$avoidksh"
257         ;;
258 esac
259 ?X: Warn them if they use ksh on other systems, which are those where
260 ?X: we don't need ksh nor want to avoid it explicitely, yet are using it.
261 case "$inksh/$needksh-$avoidksh-" in
262 true/--)
263                 cat <<EOM
264 (I see you are using the Korn shell.  Some ksh's blow up on $me,
265 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
266 EOM
267         ;;
268 esac
269 case "$changesh" in
270 true)
271         export newsh
272         echo "(Feeding myself to $newsh $reason.)"
273 ?X: Make sure they didn't say sh <Configure by checking whether $0 ends
274 ?X: with Configure or not. If they did say sh <../../Configure, then too
275 ?X: bad for them anyway, since we lost that path indication...
276 ?X: Otherwise, execing $0 ensures we keep the full remote source dir
277 ?X: indication for src.U.
278         case "$0" in
279         Configure|*/Configure) exec $newsh $0 "$@";;
280         *) exec $newsh Configure "$@";;
281         esac
282         ;;
283 esac
284
285 ?X: Unset CDPATH to avoid surprises when using cd under some shells
286 ?X: Can't unset it because that's not portable to very old shells.
287 ?X: Can't set it to '' because then bash 2.02 won't do "cd UU"  --AD  6/98.
288 ?X: Don't want to set it to '.' because then ksh prints out the
289 ?X: name of the directory every time you cd to it. --AD 6/98
290 ?X: In order to inflict the least harm, change it only if it's set.
291 : if needed set CDPATH to a harmless value that is not chatty
292 : avoid bash 2.02 problems with empty CDPATH.
293 case "$CDPATH" in
294 '')     ;;
295 *)      case "$SHELL" in
296         *bash*) CDPATH='.' ;;
297         *)              CDPATH='' ;;
298         esac
299         ;;
300 esac
301 : Configure runs within the UU subdirectory
302 test -d UU || mkdir UU
303 ?X: Use ./* to avoid any confirmation prompts from enhanced shells -- WED
304 cd UU && rm -f ./*
305