summaryrefslogtreecommitdiff
path: root/mcon/U/Loc.U
diff options
context:
space:
mode:
Diffstat (limited to 'mcon/U/Loc.U')
-rw-r--r--mcon/U/Loc.U345
1 files changed, 345 insertions, 0 deletions
diff --git a/mcon/U/Loc.U b/mcon/U/Loc.U
new file mode 100644
index 0000000..e54b817
--- /dev/null
+++ b/mcon/U/Loc.U
@@ -0,0 +1,345 @@
+?RCS: $Id: Loc.U,v 3.0.1.10 1997/02/28 15:04:16 ram Exp $
+?RCS:
+?RCS: Copyright (c) 1991-1993, Raphael Manfredi
+?RCS:
+?RCS: You may redistribute only under the terms of the Artistic Licence,
+?RCS: as specified in the README file that comes with the distribution.
+?RCS: You may reuse parts of this distribution only within the terms of
+?RCS: that same Artistic Licence; a copy of which may be found at the root
+?RCS: of the source tree for dist 3.0.
+?RCS:
+?RCS: $Log: Loc.U,v $
+?RCS: Revision 3.0.1.10 1997/02/28 15:04:16 ram
+?RCS: patch61: allow users to specify paths on the command line
+?RCS: patch61: will now substitute cp for ln if not supported
+?RCS:
+?RCS: Revision 3.0.1.9 1995/09/25 09:11:24 ram
+?RCS: patch59: commented the purpose of the #un-def directive
+?RCS: patch59: abort Configure run when mandatory command is missing
+?RCS:
+?RCS: Revision 3.0.1.8 1995/07/25 13:40:40 ram
+?RCS: patch56: now knows about OS/2 platforms
+?RCS:
+?RCS: Revision 3.0.1.7 1995/01/11 15:13:37 ram
+?RCS: patch45: protected "sh -c" within backquotes for Linux and SGI
+?RCS: patch45: added path lookup for the 'comm' program
+?RCS:
+?RCS: Revision 3.0.1.6 1994/10/29 15:56:14 ram
+?RCS: patch36: added ?F: line for metalint file checking
+?RCS: patch36: be careful and guard against wildcard searching (ADO)
+?RCS:
+?RCS: Revision 3.0.1.5 1994/06/20 06:54:55 ram
+?RCS: patch30: now locates find
+?RCS:
+?RCS: Revision 3.0.1.4 1994/05/13 15:18:15 ram
+?RCS: patch27: added byacc to the trylist (ADO)
+?RCS: patch27: lint lines reformatted (ADO)
+?RCS:
+?RCS: Revision 3.0.1.3 1994/01/24 14:01:44 ram
+?RCS: patch16: added metalint hint on changed PATH variable
+?RCS:
+?RCS: Revision 3.0.1.2 1993/12/15 08:16:52 ram
+?RCS: patch15: now set _test variable when test is built-in
+?RCS: patch15: fixed rare cases where echo is not needed
+?RCS:
+?RCS: Revision 3.0.1.1 1993/09/13 15:47:13 ram
+?RCS: patch10: test program not always in /bin/test (WAD)
+?RCS:
+?RCS: Revision 3.0 1993/08/18 12:05:05 ram
+?RCS: Baseline for dist 3.0 netwide release.
+?RCS:
+?X:
+?X: This unit produces a shell script "loc" which can be used to find out
+?X: where in a list of directories something is. It then uses loc to
+?X: determine the location of commonly used programs. It leaves loc sitting
+?X: around for other Configure units to use, but arranges for its demise
+?X: at the end of Configure.
+?X:
+?X: To add a new program to find, add it both to the ?MAKE: line and to either
+?X: the loclist or trylist variable.
+?X:
+?X: I put startsh at the end of the dependency list, in order to avoid the
+?X: loading of the spitshell unit before the instructions.
+?X:
+?MAKE:Loc Mcc awk ar bash bison byacc cat chgrp chmod chown \
+ comm compress cp cpio cpp csh date echo egrep emacs expr find flex \
+ gcc gzip grep inews ksh less line lint ln lp lpr ls mail mailx \
+ make mkdir more mv nroff perl pg pmake pr rm rmail sed sendmail \
+ shar sleep smail sort submit tail tar tbl test touch tr troff \
+ uname uniq uuname vi zcat zip: eunicefix n c Instruct Myread \
+ startsh
+?MAKE: -pick weed $@ %<
+?LINT:describe Loc Mcc awk ar bash bison byacc cat chgrp chmod chown \
+ comm compress cp cpio cpp csh date echo egrep emacs expr find flex \
+ gcc gzip grep inews ksh less line lint ln lp lpr ls mail mailx \
+ make mkdir more mv nroff perl pg pmake pr rm rmail sed sendmail \
+ shar sleep smail sort submit tail tar tbl test touch tr troff \
+ uname uniq uuname vi zcat zip
+?V::pth loclist trylist
+?F:./loc
+?T:thisthing thing xxx dir file say _test
+?LINT:change PATH
+: find out where common programs are
+echo " "
+echo "Locating common programs..." >&4
+cat <<EOSC >loc
+$startsh
+case \$# in
+0) exit 1;;
+esac
+thing=\$1
+shift
+dflt=\$1
+shift
+for dir in \$*; do
+ case "\$thing" in
+ .)
+ if test -d \$dir/\$thing; then
+ echo \$dir
+ exit 0
+ fi
+ ;;
+ *)
+?X: Be careful in case thing includes wildcards that might expand to multiple
+?X: files. Choose the last one. This happens when searching for shared
+?X: libraries with version numbers. How to choose which one we want is
+?X: probably an insoluble problem, in general.
+?X: Some folks leave things like libc.so.orig around w/o read
+?X: permission. A -r test would handle that, but since ./loc is
+?X: also used to find executables (which are installed w/o read
+?X: permission on SCO ODT 3.0, we can't include the -r test.
+ for thisthing in \$dir/\$thing; do
+ : just loop through to pick last item
+ done
+ if test -f \$thisthing; then
+ echo \$thisthing
+ exit 0
+ elif test -f \$dir/\$thing.exe; then
+ : on Eunice apparently
+ echo \$dir/\$thing
+ exit 0
+ fi
+ ;;
+ esac
+done
+echo \$dflt
+exit 1
+EOSC
+chmod +x loc
+$eunicefix loc
+loclist="
+?awk:awk
+?cat:cat
+?chgrp:chgrp
+?chmod:chmod
+?chown:chown
+?comm:comm
+?cp:cp
+?echo:echo
+?expr:expr
+?find:find
+?grep:grep
+?ls:ls
+?make:make
+?mkdir:mkdir
+?mv:mv
+?rm:rm
+?sed:sed
+?sleep:sleep
+?sort:sort
+?tail:tail
+?touch:touch
+?tr:tr
+?uniq:uniq
+"
+trylist="
+?Mcc:Mcc
+?ar:ar
+?bash:bash
+?bison:bison
+?byacc:byacc
+?compress:compress
+?cpio:cpio
+?cpp:cpp
+?csh:csh
+?date:date
+?egrep:egrep
+?emacs:emacs
+?flex:flex
+?gcc:gcc
+?gzip:gzip
+?inews:inews
+?ksh:ksh
+?less:less
+?line:line
+?lint:lint
+?ln:ln
+?lp:lp
+?lpr:lpr
+?mail:mail
+?mailx:mailx
+?more:more
+?nroff:nroff
+?perl:perl
+?pg:pg
+?pmake:pmake
+?pr:pr
+?rmail:rmail
+?sendmail:sendmail
+?shar:shar
+?smail:smail
+?submit:submit
+?tar:tar
+?tbl:tbl
+?test:test
+?troff:troff
+?uname:uname
+?uuname:uuname
+?vi:vi
+?zcat:zcat
+?zip:zip
+"
+?LINT:set Loc Mcc awk ar bash bison byacc cat chgrp chmod chown \
+ comm compress cp cpio cpp csh date echo egrep emacs expr find flex \
+ gcc gzip grep inews ksh less line lint ln lp lpr ls mail mailx \
+ make mkdir more mv nroff perl pg pmake pr rm rmail sed sendmail \
+ shar sleep smail sort submit tail tar tbl test touch tr troff \
+ uname uniq uuname vi zcat zip
+pth=`echo $PATH | sed -e "s/$p_/ /g"`
+pth="$pth /lib /usr/lib"
+for file in $loclist; do
+?X:
+?X: Allow them to -Dmake=pmake on the command line for instance...
+?X: If the file is not fully qualified, as in -Dmake=pmake, then we
+?X: look the for the specified command (pmake here). If they say
+?X: -Dmake=/sbin/make for instance, then we make sure the file
+?X: exists, or we die...
+?X:
+ eval xxx=\$$file
+ case "$xxx" in
+ /*|?:[\\/]*)
+ if test -f "$xxx"; then
+ : ok
+ else
+ echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
+ xxx=`./loc $file $file $pth`
+ fi
+ ;;
+ '') xxx=`./loc $file $file $pth`;;
+ *) xxx=`./loc $xxx $xxx $pth`;;
+ esac
+ eval $file=$xxx
+ eval _$file=$xxx
+ case "$xxx" in
+ /*)
+ echo $file is in $xxx.
+ ;;
+?X: Under OS/2, we have PC-like paths
+ ?:[\\/]*)
+ echo $file is in $xxx.
+ ;;
+ *)
+ echo "I don't know where '$file' is, and my life depends on it." >&4
+ echo "Go find a public domain implementation or fix your PATH setting!" >&4
+ exit 1
+ ;;
+ esac
+done
+echo " "
+echo "Don't worry if any of the following aren't found..."
+say=offhand
+for file in $trylist; do
+?X: Allow them to -Dmake=pmake on the command line for instance (see above)
+ eval xxx=\$$file
+ case "$xxx" in
+ /*|?:[\\/]*)
+ if test -f "$xxx"; then
+ : ok
+ else
+ echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
+ xxx=`./loc $file $file $pth`
+ fi
+ ;;
+ '') xxx=`./loc $file $file $pth`;;
+ *) xxx=`./loc $xxx $xxx $pth`;;
+ esac
+ eval $file=$xxx
+ eval _$file=$xxx
+ case "$xxx" in
+ /*)
+ echo $file is in $xxx.
+ ;;
+?X: Under OS/2, we have PC-like paths
+ ?:[\\/]*)
+ echo $file is in $xxx.
+ ;;
+ *)
+ echo "I don't see $file out there, $say."
+ say=either
+ ;;
+ esac
+done
+case "$egrep" in
+egrep)
+ echo "Substituting grep for egrep."
+ egrep=$grep
+ ;;
+esac
+@if ln
+case "$ln" in
+ln)
+ echo "Substituting cp for ln."
+ ln=$cp
+ ;;
+esac
+@end
+case "$test" in
+test)
+ echo "Hopefully test is built into your sh."
+ ;;
+*)
+ if `sh -c "PATH= test true" >/dev/null 2>&1`; then
+ echo "Using the test built into your sh."
+?X:
+?X: We need to set both test and _test, since Oldconfig.U will use the _test
+?X: value to systematically restore computed paths, which may be wrong if
+?X: we choose to load an old config.sh generated on another platform.
+?X:
+ test=test
+ _test=test
+ fi
+ ;;
+esac
+?LINT:change n c
+case "$echo" in
+echo)
+ echo "Hopefully echo is built into your sh."
+ ;;
+?X: For those rare cases where we don't need $echo...
+'') ;;
+*)
+ echo " "
+echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
+ $echo $n "hi there$c" >foo1
+ echo $n "hi there$c" >foo2
+ if cmp foo1 foo2 >/dev/null 2>&1; then
+ echo "They are compatible. In fact, they may be identical."
+ else
+ case "$n" in
+ '-n') n='' c='\c';;
+ *) n='-n' c='';;
+ esac
+ cat <<FOO
+They are not compatible! You are probably running ksh on a non-USG system.
+I'll have to use $echo instead of the builtin, since Bourne shell doesn't
+have echo built in and we may have to run some Bourne shell scripts. That
+means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
+
+FOO
+ $echo $n "The star should be here-->$c"
+ $echo "*"
+ fi
+ $rm -f foo1 foo2
+ ;;
+esac
+