/usr/bin/slib is in slib 3b1-5.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | #!/bin/bash
##"slib" script; Find a Scheme implementation and initialize SLIB in it.
#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
#granted, subject to the following restrictions and understandings.
#
#1. Any copy made of this software must include this copyright notice
#in full.
#
#2. I have made no warranty or representation that the operation of
#this software will be error-free, and I am under no obligation to
#provide any services, by way of maintenance, update, or otherwise.
#
#3. In conjunction with products arising from the use of this
#material, there shall be no use of my name in any advertising,
#promotional, or sales literature without prior written consent in
#each case.
usage="Usage: slib [--version | -v]
Display version information and exit successfully.
Usage: slib SCHEME
Initialize SLIB in Scheme implementation SCHEME.
Usage: slib
Initialize SLIB session using executable (MIT) 'scheme', 'scm',
'gsi', 'mzscheme', 'guile', 'slib48', 'larceny', 'scmlit', 'elk',
'sisc', or 'kawa'."
case "$1" in
-v | --ver*) echo slib "$VERSION"; exit 0;;
"") if type scheme>/dev/null 2>&1; then
command=scheme
fi;;
-*) echo "$usage"; exit 1;;
*) command="$1"
shift
esac
# If more arguments are supplied, then err out.
if [ ! -z "$1" ]; then
echo "$usage"; exit 1
fi
if [ -z "$command" ]; then
if type scm>/dev/null 2>&1; then
command=scm; implementation=scm
elif type gsi>/dev/null 2>&1; then
command=gsi; implementation=gam
elif type mzscheme>/dev/null 2>&1; then
command=mzscheme; implementation=plt
elif type guile>/dev/null 2>&1; then
command=guile; implementation=gui
elif type slib48>/dev/null 2>&1; then
command=slib48; implementation=s48
elif type larceny>/dev/null 2>&1; then
command=larceny; implementation=lar
elif type scmlit>/dev/null 2>&1; then
command=scmlit; implementation=scm
elif type elk>/dev/null 2>&1; then
command=elk; implementation=elk
elif type sisc>/dev/null 2>&1; then
command=sisc; implementation=ssc
elif type kawa>/dev/null 2>&1; then
command=kawa; implementation=kwa
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 'larceny' >/dev/null 2>&1; then implementation=lar
elif echo ${SPEW} | grep 'Guile' >/dev/null 2>&1; then implementation=gui
elif echo ${SPEW} | grep 'SCM' >/dev/null 2>&1; then implementation=scm
elif echo ${SPEW} | grep 'SISC' >/dev/null 2>&1; then implementation=ssc
elif echo ${SPEW} | grep 'Kawa' >/dev/null 2>&1; then implementation=kwa
else implementation=
fi
else
echo "Program '$command' not found."
exit 1
fi
case $implementation in
scm);;
s48);;
*) if [ -z "${SCHEME_LIBRARY_PATH}" ]; then
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
SCHEME_LIBRARY_PATH=/usr/local/lib/slib/
elif [ -d /usr/share/slib/ ]; then
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
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 - "$@";;
ssc) exec $command -e "(load \"${SCHEME_LIBRARY_PATH}sisc.init\")" -- "$@";;
kwa) exec $command -f ${SCHEME_LIBRARY_PATH}kawa.init -- "$@";;
plt) exec $command -f ${SCHEME_LIBRARY_PATH}mzscheme.init "$@";;
gui) exec $command -l ${SCHEME_LIBRARY_PATH}guile.init "$@";;
lar) exec $command -- -e "(require 'srfi-96)" "$@";;
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
|