This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
First assume that crypt() can live happy normal life in
[metaconfig.git] / U / modified / Loc.U
CommitLineData
959f3c4c
JH
1?RCS: $Id: Loc.U,v 3.0.1.10 1997/02/28 15:04:16 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: Loc.U,v $
12?RCS: Revision 3.0.1.10 1997/02/28 15:04:16 ram
13?RCS: patch61: allow users to specify paths on the command line
14?RCS: patch61: will now substitute cp for ln if not supported
15?RCS:
16?RCS: Revision 3.0.1.9 1995/09/25 09:11:24 ram
17?RCS: patch59: commented the purpose of the #un-def directive
18?RCS: patch59: abort Configure run when mandatory command is missing
19?RCS:
20?RCS: Revision 3.0.1.8 1995/07/25 13:40:40 ram
21?RCS: patch56: now knows about OS/2 platforms
22?RCS:
23?RCS: Revision 3.0.1.7 1995/01/11 15:13:37 ram
24?RCS: patch45: protected "sh -c" within backquotes for Linux and SGI
25?RCS: patch45: added path lookup for the 'comm' program
26?RCS:
27?RCS: Revision 3.0.1.6 1994/10/29 15:56:14 ram
28?RCS: patch36: added ?F: line for metalint file checking
29?RCS: patch36: be careful and guard against wildcard searching (ADO)
30?RCS:
31?RCS: Revision 3.0.1.5 1994/06/20 06:54:55 ram
32?RCS: patch30: now locates find
33?RCS:
34?RCS: Revision 3.0.1.4 1994/05/13 15:18:15 ram
35?RCS: patch27: added byacc to the trylist (ADO)
36?RCS: patch27: lint lines reformatted (ADO)
37?RCS:
38?RCS: Revision 3.0.1.3 1994/01/24 14:01:44 ram
39?RCS: patch16: added metalint hint on changed PATH variable
40?RCS:
41?RCS: Revision 3.0.1.2 1993/12/15 08:16:52 ram
42?RCS: patch15: now set _test variable when test is built-in
43?RCS: patch15: fixed rare cases where echo is not needed
44?RCS:
45?RCS: Revision 3.0.1.1 1993/09/13 15:47:13 ram
46?RCS: patch10: test program not always in /bin/test (WAD)
47?RCS:
48?RCS: Revision 3.0 1993/08/18 12:05:05 ram
49?RCS: Baseline for dist 3.0 netwide release.
50?RCS:
51?X:
52?X: This unit produces a shell script "loc" which can be used to find out
53?X: where in a list of directories something is. It then uses loc to
54?X: determine the location of commonly used programs. It leaves loc sitting
55?X: around for other Configure units to use, but arranges for its demise
56?X: at the end of Configure.
57?X:
58?X: To add a new program to find, add it both to the ?MAKE: line and to either
59?X: the loclist or trylist variable.
60?X:
61?X: I put startsh at the end of the dependency list, in order to avoid the
62?X: loading of the spitshell unit before the instructions.
63?X:
64?MAKE:Loc Mcc awk ar bash bison byacc cat chgrp chmod chown \
65 comm compress cp cpio cpp csh date echo egrep emacs expr find flex \
1ef69357 66 gmake gzip grep inews ksh less line lint ln lp lpr ls mail mailx \
959f3c4c
JH
67 make mkdir more mv nm nroff perl pg pmake pr rm rmail sed sendmail \
68 shar sleep smail sort submit tail tar tbl tee test touch tr troff \
69 uname uniq uuname vi zcat zip: eunicefix n c Instruct Myread \
df0bcc5d 70 startsh
959f3c4c
JH
71?MAKE: -pick weed $@ %<
72?LINT:describe Loc Mcc awk ar bash bison byacc cat chgrp chmod chown \
73 comm compress cp cpio cpp csh date echo egrep emacs expr find flex \
1ef69357 74 gmake gzip grep inews ksh less line lint ln lp lpr ls mail mailx \
959f3c4c
JH
75 make mkdir more mv nm nroff perl pg pmake pr rm rmail sed sendmail \
76 shar sleep smail sort submit tail tar tbl tee test touch tr troff \
77 uname uniq uuname vi zcat zip
c98a3161 78?LINT:extern _exe
959f3c4c 79?V::pth loclist trylist
12e20a24 80?F:./loc test_h
959f3c4c
JH
81?T:thisthing thing xxx dir file say _test DJGPP
82?LINT:change PATH
83: find out where common programs are
84echo " "
85echo "Locating common programs..." >&4
86cat <<EOSC >loc
87$startsh
88case \$# in
890) exit 1;;
90esac
91thing=\$1
92shift
93dflt=\$1
94shift
95for dir in \$*; do
96 case "\$thing" in
97 .)
98 if test -d \$dir/\$thing; then
99 echo \$dir
100 exit 0
101 fi
102 ;;
103 *)
104?X: Be careful in case thing includes wildcards that might expand to multiple
105?X: files. Choose the last one. This happens when searching for shared
106?X: libraries with version numbers. How to choose which one we want is
107?X: probably an insoluble problem, in general.
108?X: Some folks leave things like libc.so.orig around w/o read
109?X: permission. A -r test would handle that, but since ./loc is
110?X: also used to find executables (which are installed w/o read
111?X: permission on SCO ODT 3.0, we can't include the -r test.
c98a3161
JH
112?X: If you need to use _exe (different from .exe)
113?X: you need to set it on comand line: -D_exe=...
959f3c4c
JH
114 for thisthing in \$dir/\$thing; do
115 : just loop through to pick last item
116 done
117 if test -f \$thisthing; then
118 echo \$thisthing
119 exit 0
c98a3161
JH
120 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
121 echo \$thisthing
122 exit 0
959f3c4c
JH
123 elif test -f \$dir/\$thing.exe; then
124 if test -n "$DJGPP"; then
125 echo \$dir/\$thing.exe
126 else
127 : on Eunice apparently
128 echo \$dir/\$thing
129 fi
130 exit 0
131 fi
132 ;;
133 esac
134done
135echo \$dflt
136exit 1
137EOSC
138chmod +x loc
139$eunicefix loc
140loclist="
141?awk:awk
142?cat:cat
143?chgrp:chgrp
144?chmod:chmod
145?chown:chown
146?comm:comm
147?cp:cp
148?echo:echo
149?expr:expr
150?find:find
151?grep:grep
152?ls:ls
959f3c4c
JH
153?mkdir:mkdir
154?mv:mv
155?rm:rm
156?sed:sed
157?sleep:sleep
158?sort:sort
159?tail:tail
160?touch:touch
161?tr:tr
162?uniq:uniq
163"
164trylist="
165?Mcc:Mcc
166?ar:ar
167?bash:bash
168?bison:bison
169?byacc:byacc
170?compress:compress
171?cpio:cpio
172?cpp:cpp
173?csh:csh
174?date:date
175?egrep:egrep
176?emacs:emacs
177?flex:flex
1ef69357 178?gmake:gmake
959f3c4c
JH
179?gzip:gzip
180?inews:inews
181?ksh:ksh
182?less:less
183?line:line
184?lint:lint
185?ln:ln
186?lp:lp
187?lpr:lpr
188?mail:mail
1ef69357 189?make:make
959f3c4c
JH
190?mailx:mailx
191?more:more
192?nm:nm
193?nroff:nroff
194?perl:perl
195?pg:pg
196?pmake:pmake
197?pr:pr
198?rmail:rmail
199?sendmail:sendmail
200?shar:shar
201?smail:smail
202?submit:submit
203?tar:tar
204?tbl:tbl
205?tee:tee
206?test:test
207?troff:troff
208?uname:uname
209?uuname:uuname
210?vi:vi
211?zcat:zcat
212?zip:zip
213"
214?LINT:set Loc Mcc awk ar bash bison byacc cat chgrp chmod chown \
215 comm compress cp cpio cpp csh date echo egrep emacs expr find flex \
1ef69357 216 gmake gzip grep inews ksh less line lint ln lp lpr ls mail mailx \
959f3c4c
JH
217 make mkdir more mv nm nroff perl pg pmake pr rm rmail sed sendmail \
218 shar sleep smail sort submit tail tar tbl tee test touch tr troff \
219 uname uniq uuname vi zcat zip
220pth=`echo $PATH | sed -e "s/$p_/ /g"`
221pth="$pth /lib /usr/lib"
222for file in $loclist; do
223?X:
224?X: Allow them to -Dmake=pmake on the command line for instance...
225?X: If the file is not fully qualified, as in -Dmake=pmake, then we
226?X: look the for the specified command (pmake here). If they say
227?X: -Dmake=/sbin/make for instance, then we make sure the file
228?X: exists, or we die...
229?X:
230 eval xxx=\$$file
231 case "$xxx" in
232 /*|?:[\\/]*)
233 if test -f "$xxx"; then
234 : ok
235 else
236 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
237 xxx=`./loc $file $file $pth`
238 fi
239 ;;
240 '') xxx=`./loc $file $file $pth`;;
241 *) xxx=`./loc $xxx $xxx $pth`;;
242 esac
c98a3161 243 eval $file=$xxx$_exe
959f3c4c
JH
244 eval _$file=$xxx
245 case "$xxx" in
246 /*)
247 echo $file is in $xxx.
248 ;;
249?X: Under OS/2, we have PC-like paths
250 ?:[\\/]*)
251 echo $file is in $xxx.
252 ;;
253 *)
254 echo "I don't know where '$file' is, and my life depends on it." >&4
255 echo "Go find a public domain implementation or fix your PATH setting!" >&4
256 exit 1
257 ;;
258 esac
259done
260echo " "
261echo "Don't worry if any of the following aren't found..."
262say=offhand
263for file in $trylist; do
264?X: Allow them to -Dmake=pmake on the command line for instance (see above)
265 eval xxx=\$$file
266 case "$xxx" in
267 /*|?:[\\/]*)
268 if test -f "$xxx"; then
269 : ok
270 else
271 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
272 xxx=`./loc $file $file $pth`
273 fi
274 ;;
275 '') xxx=`./loc $file $file $pth`;;
276 *) xxx=`./loc $xxx $xxx $pth`;;
277 esac
278 eval $file=$xxx
279 eval _$file=$xxx
280 case "$xxx" in
281 /*)
282 echo $file is in $xxx.
283 ;;
284?X: Under OS/2, we have PC-like paths
285 ?:[\\/]*)
286 echo $file is in $xxx.
287 ;;
288 *)
289 echo "I don't see $file out there, $say."
290 say=either
291 ;;
292 esac
293done
294case "$egrep" in
c98a3161 295*egrep*)
959f3c4c
JH
296 echo "Substituting grep for egrep."
297 egrep=$grep
298 ;;
299esac
300@if ln
301case "$ln" in
c98a3161 302*ln*)
959f3c4c
JH
303 echo "Substituting cp for ln."
304 ln=$cp
305 ;;
306esac
39eb4e6d 307case "$make$gmake" in
c98a3161
JH
308*make*)
309 ;;
310*)
311 echo "I can't find make or gmake, and my life depends on it." >&4
312 echo "Go find a public domain implementation or fix your PATH setting!" >&4
313 exit 1
314 ;;
315esac
959f3c4c
JH
316@end
317case "$test" in
318test)
319 echo "Hopefully test is built into your sh."
320 ;;
321*)
df0bcc5d 322 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
959f3c4c
JH
323 echo "Using the test built into your sh."
324?X:
325?X: We need to set both test and _test, since Oldconfig.U will use the _test
326?X: value to systematically restore computed paths, which may be wrong if
327?X: we choose to load an old config.sh generated on another platform.
328?X:
329 test=test
330 _test=test
331 fi
332 ;;
333esac
334?LINT:change n c
335case "$echo" in
336echo)
337 echo "Hopefully echo is built into your sh."
338 ;;
339?X: For those rare cases where we don't need $echo...
340'') ;;
341*)
342 echo " "
343echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
344 $echo $n "hi there$c" >foo1
345 echo $n "hi there$c" >foo2
346 if cmp foo1 foo2 >/dev/null 2>&1; then
347 echo "They are compatible. In fact, they may be identical."
348 else
349 case "$n" in
350 '-n') n='' c='\c';;
351 *) n='-n' c='';;
352 esac
353 cat <<FOO
354They are not compatible! You are probably running ksh on a non-USG system.
355I'll have to use $echo instead of the builtin, since Bourne shell doesn't
356have echo built in and we may have to run some Bourne shell scripts. That
357means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
358
359FOO
360 $echo $n "The star should be here-->$c"
361 $echo "*"
362 fi
363 $rm -f foo1 foo2
364 ;;
365esac
366