diff options
Diffstat (limited to 'slib.sh')
-rwxr-xr-x | slib.sh | 77 |
1 files changed, 44 insertions, 33 deletions
@@ -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 |