summaryrefslogtreecommitdiffstats
path: root/slib.sh
diff options
context:
space:
mode:
Diffstat (limited to 'slib.sh')
-rwxr-xr-xslib.sh77
1 files changed, 44 insertions, 33 deletions
diff --git a/slib.sh b/slib.sh
index e88a2bc..0186442 100755
--- a/slib.sh
+++ b/slib.sh
@@ -1,6 +1,6 @@
##"slib" script; Find a Scheme implementation and initialize SLIB in it.
-#Copyright (C) 2003 Aubrey Jaffer
+#Copyright (C) 2003, 2004 Aubrey Jaffer
#
#Permission to copy this software, to modify it, to redistribute it,
#to distribute modified versions, and to use it for any purpose is
@@ -47,26 +47,7 @@ if [ ! -z "$1" ]; then
echo "$usage"; exit 1
fi
-if type $command>/dev/null 2>&1; then
- SPEW="`$command --version < /dev/null 2>&1`"
- if echo ${SPEW} | grep -q 'Initialize load-path (colon-list of directories)' \
- ; then implementation=elk
- elif echo ${SPEW} | grep -q 'MIT Scheme' ; then implementation=mit
- elif echo ${SPEW} | grep -q 'UMB Scheme' ; then implementation=umb
- elif echo ${SPEW} | grep -q 'scheme48' ; then implementation=s48
- elif echo ${SPEW} | grep -q 'MzScheme' ; then implementation=plt
- elif echo ${SPEW} | grep -q 'Guile' ; then implementation=gui
- elif echo ${SPEW} | grep -q 'gambc' ; then implementation=gam
- elif echo ${SPEW} | grep -q 'SCM' ; then implementation=scm
- else implementation=
- fi
-elif [ ! -z "$command" ]; then
- echo "Program '$command' not found."
- exit 1
-fi
-
-if [ -z "$command" ];
-then
+if [ -z "$command" ]; then
if type scm>/dev/null 2>&1; then
command=scm; implementation=scm
elif type gsi>/dev/null 2>&1; then
@@ -77,43 +58,73 @@ then
command=guile; implementation=gui
elif type slib48>/dev/null 2>&1; then
command=slib48; implementation=s48
+ elif type scmlit>/dev/null 2>&1; then
+ command=scmlit; implementation=scm
+ elif type elk>/dev/null 2>&1; then
+ command=elk; implementation=elk
else
echo No Scheme implementation found.
exit 1
fi
+# Gambit 4.0 doesn't allow input redirection; foils --version test.
+elif [ "$command" == "gsi" ]; then implementation=gam
+elif type $command>/dev/null 2>&1; then
+ SPEW="`$command --version < /dev/null 2>&1`"
+ if echo ${SPEW} | grep 'Initialize load-path (colon-list of directories)'\
+ >/dev/null 2>&1; then implementation=elk
+ elif echo ${SPEW} | grep 'MIT' >/dev/null 2>&1; then implementation=mit
+ elif echo ${SPEW} | grep 'UMB Scheme'>/dev/null 2>&1; then implementation=umb
+ elif echo ${SPEW} | grep 'scheme48' >/dev/null 2>&1; then implementation=s48
+ elif echo ${SPEW} | grep 'MzScheme' >/dev/null 2>&1; then implementation=plt
+ elif echo ${SPEW} | grep 'Guile' >/dev/null 2>&1; then implementation=gui
+ elif echo ${SPEW} | grep 'SCM' >/dev/null 2>&1; then implementation=scm
+ else implementation=
+ fi
+else
+ echo "Program '$command' not found."
+ exit 1
fi
case $implementation in
scm);;
s48);;
*) if [ -z "${SCHEME_LIBRARY_PATH}" ]; then
- export SCHEME_LIBRARY_PATH=`rpm -ql slib 2>/dev/null \
- | grep require.scm | sed 's%require.scm%%'`
+ if type rpm>/dev/null 2>&1; then
+ SCHEME_LIBRARY_PATH=`rpm -ql slib 2>/dev/null \
+ | grep require.scm | sed 's%require.scm%%'`
+ fi
fi
if [ -z "${SCHEME_LIBRARY_PATH}" ]; then
if [ -d /usr/local/lib/slib/ ]; then
- export SCHEME_LIBRARY_PATH=/usr/local/lib/slib/
+ SCHEME_LIBRARY_PATH=/usr/local/lib/slib/
elif [ -d /usr/share/slib/ ]; then
- export SCHEME_LIBRARY_PATH=/usr/share/slib/
+ SCHEME_LIBRARY_PATH=/usr/share/slib/
fi
+ export SCHEME_LIBRARY_PATH
fi;;
esac
# for gambit
case $implementation in
gam) if [ -z "${LD_LIBRARY_PATH}" ]; then
- export LD_LIBRARY_PATH=/usr/local/lib
+ LD_LIBRARY_PATH=/usr/local/lib
+ export LD_LIBRARY_PATH
fi;;
esac
case $implementation in
- scm) exec $command -ip1 -l ${SCHEME_LIBRARY_PATH}scm.init $*;;
- elk) exec $command -i -l ${SCHEME_LIBRARY_PATH}elk.init;;
- gam) exec $command -:s ${SCHEME_LIBRARY_PATH}gambit.init - $*;;
- plt) exec $command -f ${SCHEME_LIBRARY_PATH}DrScheme.init $*;;
- gui) exec $command -l ${SCHEME_LIBRARY_PATH}guile.init $*;;
- mit) exec $command -load ${SCHEME_LIBRARY_PATH}mitscheme.init $*;;
- s48) exec $command $*;;
+ scm) exec $command -ip1 -l ${SCHEME_LIBRARY_PATH}scm.init "$@";;
+ elk) exec $command -i -l ${SCHEME_LIBRARY_PATH}elk.init "$@";;
+ gam) exec $command -:s ${SCHEME_LIBRARY_PATH}gambit.init - "$@";;
+ plt) exec $command -f ${SCHEME_LIBRARY_PATH}DrScheme.init "$@";;
+ gui) exec $command -l ${SCHEME_LIBRARY_PATH}guile.init "$@";;
+ mit) exec $command -load ${SCHEME_LIBRARY_PATH}mitscheme.init "$@";;
+ s48) if [ -f "${S48_VICINITY}slib.image" ]; then
+ exec scheme48 -h 4000000 -i ${S48_VICINITY}slib.image
+ else
+ echo "scheme48 found; in slib directory do: 'make slib48 && make install48'";
+ fi
+ exit 1;;
umb) echo "umb-scheme vicinities are too wedged to run slib"; exit 1;;
*) exit 1;;
esac