136 lines
3.5 KiB
Text
136 lines
3.5 KiB
Text
|
#!/bin/bash -e
|
||
|
|
||
|
OS=$(uname)
|
||
|
ARCH=$(uname -m)
|
||
|
|
||
|
function retrieve_file {
|
||
|
URL=$1
|
||
|
FN=$2
|
||
|
GET=`which wget`
|
||
|
if test $? -eq 0 ; then
|
||
|
echo wget -O $FN $URL
|
||
|
wget -O $FN $URL
|
||
|
else
|
||
|
GET=`which curl`
|
||
|
if test $? -eq 0 ; then
|
||
|
echo curl -o $FN $URL
|
||
|
curl -o $FN $URL
|
||
|
echo "install requires curl or wget to pull tools"
|
||
|
fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
function install_vicare {
|
||
|
VICARE_BASE="https://bitbucket.org/marcomaggi/vicare-scheme/downloads"
|
||
|
VICARE_VERSION="0.4.1-devel.3"
|
||
|
VICARE_FILE="vicare-scheme-${VICARE_VERSION}.tar.xz"
|
||
|
VICARE_URL="${VICARE_BASE}/${VICARE_FILE}"
|
||
|
|
||
|
case $OS in
|
||
|
Linux) ;;
|
||
|
*) echo "unexpected operating system $OS" ; exit 1 ;;
|
||
|
esac
|
||
|
|
||
|
retrieve_file ${VICARE_URL} ${VICARE_FILE}
|
||
|
|
||
|
xzcat ${VICARE_FILE} | tar xf -
|
||
|
|
||
|
pushd "vicare-scheme-${VICARE_VERSION}"
|
||
|
|
||
|
./configure --enable-posix --with-libffi
|
||
|
make
|
||
|
sudo make install
|
||
|
popd # vicare-scheme-${VICARE_VERSION}
|
||
|
}
|
||
|
|
||
|
function install_ikarus {
|
||
|
case $ARCH in
|
||
|
i386|i686) BITS=32 ;;
|
||
|
x86_64|amd64) BITS=64 ;;
|
||
|
*) echo "unexpected architecture $ARCH" ; exit 1 ;;
|
||
|
esac
|
||
|
|
||
|
case $OS in
|
||
|
Linux) PREFIX="/usr" ;;
|
||
|
Darwin) PREFIX="/usr/local" ;;
|
||
|
*) echo "unexpected operating system $OS" ; exit 1 ;;
|
||
|
esac
|
||
|
|
||
|
bzr branch lp:ikarus
|
||
|
pushd ikarus
|
||
|
./configure --prefix=$PREFIX \
|
||
|
CFLAGS="-m${BITS} `pkg-config --cflags libffi` -I/usr/local/opt/gmp/include" \
|
||
|
LDFLAGS="-m${BITS} `pkg-config --libs libffi` -L/usr/local/opt/gmp/lib"
|
||
|
make
|
||
|
sudo make install
|
||
|
popd # ikarus
|
||
|
}
|
||
|
|
||
|
function install_chez {
|
||
|
BASE_URL="https://github.com/cisco/ChezScheme/releases"
|
||
|
CHEZ_VERSION="9.5.2"
|
||
|
CHEZ_TGZ="csv${CHEZ_VERSION}.tar.gz"
|
||
|
CHEZ_EXE="ChezScheme${CHEZ_VERSION}.exe"
|
||
|
|
||
|
case $ARCH in
|
||
|
i386|i686) ARCH_MT="i3" ;;
|
||
|
x86_64|amd64) ARCH_MT="a6" ;;
|
||
|
*) echo "unexpected architecture $ARCH" ; exit 1 ;;
|
||
|
esac
|
||
|
|
||
|
case $OS in
|
||
|
Linux) OS_MT="le" ;;
|
||
|
Darwin) OS_MT="osx" ;;
|
||
|
Windows*|MSYS_NT*) OS_MT="nt" ;;
|
||
|
*) echo "unexpected operating system $OS" ; exit 1 ;;
|
||
|
esac
|
||
|
|
||
|
MT="${ARCH_MT}${OS_MT}"
|
||
|
|
||
|
case $OS_MT in
|
||
|
le|osx)
|
||
|
retrieve_file "${BASE_URL}/download/v${CHEZ_VERSION}/${CHEZ_TGZ}" ${CHEZ_TGZ}
|
||
|
tar zxf $CHEZ_TGZ
|
||
|
pushd "csv${CHEZ_VERSION}"
|
||
|
./configure -m="${ARCH_MT}${OS_MT}"
|
||
|
make
|
||
|
sudo make install
|
||
|
popd # "csv${CHEZ_VERSION}"
|
||
|
;;
|
||
|
nt)
|
||
|
retrieve_file "${BASE_URL}/download/v${CHEZ_VERSION}/${CHEZ_EXE}" ${CHEZ_EXE}
|
||
|
./${CHEZ_EXE} /install /quiet
|
||
|
export PATH=/c/Program\ Files/Chez\ Scheme\ ${CHEZ_VERSION}/bin/${MT}:$PATH
|
||
|
echo "(scheme-version)" | scheme -q
|
||
|
;;
|
||
|
*) echo "unrecognized OS_MT: ${OS_MT}" ; exit 1 ;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
function install_ironscheme {
|
||
|
DOTNET_FILE="dotnet-install.sh"
|
||
|
DOTNET_URL="https://dot.net/v1/$DOTNET_FILE"
|
||
|
retrieve_file $DOTNET_URL $DOTNET_FILE
|
||
|
chmod +x $DOTNET_FILE
|
||
|
# install .NET
|
||
|
"./$DOTNET_FILE" --channel Current --runtime dotnet
|
||
|
export -p PATH="$HOME/.dotnet:$PATH"
|
||
|
|
||
|
BASE_URL="https://github.com/IronScheme/IronScheme/releases/download"
|
||
|
IRONSCHEME_VERSION=1.0.239
|
||
|
IRONSCHEME_GIT_VERSION=671ea21
|
||
|
IRONSCHEME_URL="${BASE_URL}/${IRONSCHEME_VERSION}/IronScheme-${IRONSCHEME_VERSION}-${IRONSCHEME_GIT_VERSION}.zip"
|
||
|
IRONSCHEME_FILE="IronScheme.zip"
|
||
|
retrieve_file $IRONSCHEME_URL $IRONSCHEME_FILE
|
||
|
unzip $IRONSCHEME_FILE
|
||
|
alias ironscheme="dotnet IronScheme.ConsoleCore.dll"
|
||
|
}
|
||
|
|
||
|
case $SCHEME in
|
||
|
vicare) install_vicare ;;
|
||
|
ikarus) install_ikarus ;;
|
||
|
chez) install_chez ;;
|
||
|
ironscheme) install_ironscheme ;;
|
||
|
*) echo "Please set the SCHEME environment variable to one of: vicare, ikarus, or chez before running" ; exit 1;;
|
||
|
esac
|