Do not require RNRS on initialization anymore
This commit is contained in:
parent
9d65b67266
commit
a1d5f47235
19
README.md
19
README.md
|
|
@ -8,15 +8,16 @@ Tool to create Scheme virtual environments
|
|||
|
||||
## Usage
|
||||
|
||||
scheme-venv chibi r7rs venv
|
||||
scheme-venv chibi venv
|
||||
|
||||
Note that scheme-venv does not install snow-chibi, akku or any Scheme
|
||||
implementations. You have to install them yourself into your system.
|
||||
|
||||
### bin/activate
|
||||
First argument is Scheme implementation you want to use, second is path to
|
||||
directory. The directory must not exist.
|
||||
|
||||
First argument is Scheme, second is RnRS and third is path to directory. The
|
||||
directory must not exist.
|
||||
|
||||
### bin/activate
|
||||
|
||||
After the virtual environment is created you can activate is with:
|
||||
|
||||
|
|
@ -34,16 +35,20 @@ Install R7RS package from [snow-fort.org](https://snow-fort.org).
|
|||
|
||||
Install R6RS package from [akkuscm.org](https://akkuscm.org).
|
||||
|
||||
If you want to use R7RS libraries on R6RS you can first install them with
|
||||
snow-chibi and then run "akku install".
|
||||
|
||||
### bin/scheme-script
|
||||
|
||||
Run Scheme script.
|
||||
Run Scheme script. The RnRS is deducted from fiel suffix, .sps or .scm.
|
||||
|
||||
### bin/scheme-compile
|
||||
|
||||
Compile Scheme code to executable.
|
||||
Compile Scheme code to executable. The RnRS is deducted from fiel suffix,
|
||||
.sps or .scm.
|
||||
|
||||
|
||||
## Supported impelmentations and notes
|
||||
## Supported implementations and notes
|
||||
|
||||
### R6RS
|
||||
|
||||
|
|
|
|||
249
scheme-venv
249
scheme-venv
|
|
@ -1,13 +1,12 @@
|
|||
#!/bin/sh
|
||||
# vi: ft=bash
|
||||
|
||||
VERSION=1.0.2
|
||||
VERSION=1.1.0
|
||||
|
||||
set -eu
|
||||
|
||||
stringContain() { case $2 in *$1* ) return 0;; *) return 1;; esac ;}
|
||||
|
||||
supported_rnrs="r6rs r7rs"
|
||||
supported_implementations="capyscheme chezscheme chibi chicken cyclone foment \
|
||||
gambit gauche guile ikarus ironscheme kawa larceny loko meevax mosh \
|
||||
mit-scheme racket sagittarius skint stklos tr7 ypsilon"
|
||||
|
|
@ -28,30 +27,16 @@ else
|
|||
fi
|
||||
|
||||
if [ "${2}" = "" ]; then
|
||||
echo "Give the RnRS as the second argument"
|
||||
echo "${supported_rnrs}"
|
||||
echo "Give path for new virtual environment as second argument"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if stringContain "${2}" "${supported_rnrs}"; then
|
||||
sleep 0
|
||||
else
|
||||
echo "Unsupported RnRS: ${2}"
|
||||
echo "${supported_rnrs}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${3}" = "" ]; then
|
||||
echo "Give path for new virtual environment as third argument"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -d "${3}" ]; then
|
||||
if [ -f "${3}" ]; then
|
||||
if [ -d "${2}" ]; then
|
||||
if [ -f "${2}" ]; then
|
||||
echo "Can not create venv, path exists"
|
||||
exit 1
|
||||
fi
|
||||
if [ -d "${3}" ]; then
|
||||
if [ -d "${2}" ]; then
|
||||
echo "Can not create venv, path exists"
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -59,19 +44,20 @@ fi
|
|||
|
||||
## Build variables
|
||||
implementation="${1}"
|
||||
rnrs="${2}"
|
||||
venvpath=$(realpath "${3}")
|
||||
venvpath=$(realpath "${2}")
|
||||
venvname=$(basename "${venvpath}")
|
||||
downloadpath="${venvpath}/downloads"
|
||||
toolinstallprefix="${venvpath}/tools"
|
||||
docker_tag="${venvname}-${implementation}-${rnrs}"
|
||||
scheme_cmd=""
|
||||
scheme_compile_cmd=""
|
||||
docker_tag="${venvname}-${implementation}"
|
||||
scheme_r6rs_cmd="echo \"Implementation does not support r6rs\"; exit 1"
|
||||
scheme_r6rs_compile_cmd="echo \"Implementation does not support r6rs\"; exit 1"
|
||||
scheme_r7rs_cmd="echo \"Implementation does not support r7rs\"; exit 1"
|
||||
scheme_r7rs_compile_cmd="echo \"Implementation does not support r7rs\"; exit 1"
|
||||
scheme_repl_cmd=""
|
||||
scheme_version_cmd="echo 0.0.0"
|
||||
scheme_type="interpreter"
|
||||
|
||||
echo "scheme-venv version 1.0.0, scheme: ${implementation}, rnrs: ${rnrs}"
|
||||
echo "scheme-venv version 1.0.0, scheme: ${implementation}"
|
||||
|
||||
## Create venv directories
|
||||
mkdir -p "${venvpath}"
|
||||
|
|
@ -121,92 +107,34 @@ export PS1="(\${venvname}) \${PS1:-}"
|
|||
export SCHEME_VENV_OLD_PATH="\${PATH}"
|
||||
export PATH="${venvpath}/bin:\${PATH}"
|
||||
hash -r 2> /dev/null
|
||||
echo "${implementation} ${rnrs}"
|
||||
echo "if [ "${rnrs}" = "r6rs" ]; then . ${venvpath}/lib/.akku/bin/activate; fi"
|
||||
echo "${implementation}"
|
||||
. ${venvpath}/lib/.akku/bin/activate
|
||||
EOF
|
||||
} > "${venvpath}/bin/activate"
|
||||
|
||||
## Set scheme commands
|
||||
|
||||
if [ "${rnrs}" = "r6rs" ]; then
|
||||
## R6RS
|
||||
case "${implementation}" in
|
||||
case "${implementation}" in
|
||||
"capyscheme")
|
||||
scheme_cmd="capy --r6rs -L \"${venvpath}/lib\" VENV_CAPYSCHEME_ARGS --script \"\${IF}\""
|
||||
scheme_r6rs_cmd="capy --r6rs -L \"${venvpath}/lib\" VENV_CAPYSCHEME_ARGS --script \"\${IF}\""
|
||||
scheme_r7rs_cmd="capy --r7rs -L \"${venvpath}/lib\" --script \"\${IF}\""
|
||||
scheme_version_cmd="capy --help | head -n 1 | awk '{print(\$2);}'"
|
||||
scheme_repl_cmd="capy --r6rs -L \"${venvpath}/lib\""
|
||||
;;
|
||||
"chezscheme")
|
||||
if command -v chezscheme >/dev/null 2>&1
|
||||
then
|
||||
scheme_cmd="chezscheme --libdirs ${venvpath}/lib/.akku/lib --program \"\${IF}\""
|
||||
scheme_r6rs_cmd="chezscheme --libdirs ${venvpath}/lib/.akku/lib --program \"\${IF}\""
|
||||
scheme_version_cmd="chezscheme --version"
|
||||
scheme_repl_cmd="chezscheme --libdirs ${venvpath}/lib/.akku/lib"
|
||||
else
|
||||
scheme_cmd="scheme --libdirs ${venvpath}/lib/.akku/lib --program \"\${IF}\""
|
||||
scheme_r6rs_cmd="scheme --libdirs ${venvpath}/lib/.akku/lib --program \"\${IF}\""
|
||||
scheme_version_cmd="scheme --version"
|
||||
scheme_repl_cmd="scheme --libdirs ${venvpath}/lib/.akku/lib"
|
||||
fi
|
||||
;;
|
||||
"guile")
|
||||
scheme_cmd="guile --r6rs -x .sls -L \"${venvpath}/lib/.akku/lib\" -s \"\${IF}\""
|
||||
scheme_version_cmd="guile --version | head -n 1 | awk '{print(\$4);}'"
|
||||
scheme_repl_cmd="guile --r6rs -x .sls -L \"${venvpath}/lib/.akku/lib\""
|
||||
;;
|
||||
"ikarus")
|
||||
scheme_cmd="IKARUS_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" ikarus --r6rs-script \"\${IF}\""
|
||||
scheme_version_cmd="ikarus -v 2>&1 | head -n 1 | awk '{print(\$4);}' | sed 's/,//'"
|
||||
scheme_repl_cmd="IKARUS_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" ikarus"
|
||||
;;
|
||||
"ironscheme")
|
||||
scheme_cmd="ironscheme -I \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||
scheme_repl_cmd="ironscheme -I \"${venvpath}/lib/.akku/lib\""
|
||||
;;
|
||||
"larceny")
|
||||
scheme_cmd="larceny -nobanner -quiet -utf8 -r6 -I \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||
scheme_version_cmd="larceny --version | awk '{print(\$2);}'"
|
||||
scheme_repl_cmd="larceny -nobanner -quiet -utf8 -r6 -I \"${venvpath}/lib/.akku/lib\""
|
||||
;;
|
||||
"loko")
|
||||
scheme_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" loko \${VENV_LOKO_ARGS:-} --program \"\${IF}\""
|
||||
scheme_repl_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" loko \${VENV_LOKO_ARGS:-}"
|
||||
scheme_compile_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" loko \${VENV_LOKO_ARGS:-} --compile \"\${IF}\""
|
||||
;;
|
||||
"mosh")
|
||||
scheme_cmd="mosh --loadpath=\"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||
scheme_version_cmd="mosh -v | head -n 1 | awk '{print(\$8);}'"
|
||||
scheme_repl_cmd="mosh --loadpath=\"${venvpath}/lib/.akku/lib\""
|
||||
;;
|
||||
"racket")
|
||||
scheme_cmd="PLTCOLLECTS=\"${venvpath}/lib/.akku/lib\" racket -I scheme/init -l r6rs/run.rkt -S \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||
scheme_version_cmd="racket --version | awk '{print(\$4);}'"
|
||||
scheme_repl_cmd="PLTCOLLECTS=\"${venvpath}/lib/.akku/lib\" racket -I scheme/init -l r6rs/run.rkt -S \"${venvpath}/lib/.akku/lib\""
|
||||
;;
|
||||
"sagittarius")
|
||||
scheme_cmd="sash -r6 -L \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||
scheme_version_cmd="sash -v | awk '{print(\$5);}'"
|
||||
scheme_repl_cmd="sash -r6 -L \"${venvpath}/lib/.akku/lib\""
|
||||
;;
|
||||
"ypsilon")
|
||||
scheme_cmd="ypsilon --r6rs --sitelib \"${venvpath}/lib/.akku/lib\" --top-level-program \"\${IF}\""
|
||||
scheme_version_cmd="ypsilon --version | awk '{print(\$1);}' | sed 's/ypsilon-//'"
|
||||
scheme_repl_cmd="ypsilon --r6rs --sitelib \"${venvpath}/lib/.akku/lib\""
|
||||
;;
|
||||
*)
|
||||
>&2 echo "Unsupported implementation RnRS combination: ${implementation} ${rnrs}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
else
|
||||
## R7RS
|
||||
case "${implementation}" in
|
||||
"capyscheme")
|
||||
scheme_cmd="capy --r7rs -L \"${venvpath}/lib\" --script \"\${IF}\""
|
||||
scheme_version_cmd="capy --help | head -n 1 | awk '{print(\$2);}'"
|
||||
scheme_repl_cmd="capy --r7rs -L \"${venvpath}/lib\""
|
||||
;;
|
||||
"chibi")
|
||||
scheme_cmd="chibi-scheme -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_r7rs_cmd="chibi-scheme -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_version_cmd="chibi-scheme -V | awk '{print(\$2);}'"
|
||||
scheme_repl_cmd="chibi-scheme -I \"${venvpath}/lib\""
|
||||
;;
|
||||
|
|
@ -214,120 +142,157 @@ else
|
|||
chicken_version=$(csi -version | grep "Version" | awk '{split($0,a," "); split(a[2],b,"."); print(b[1])}')
|
||||
if [ "${chicken_version}" = "5" ]; then
|
||||
#scheme_cmd="LD_LIBRARY_PATH=\"${venvpath}/lib\" csi -R r7rs -I \"${venvpath}/lib\" -script \"\${IF}\""
|
||||
scheme_cmd="echo \"Chicken script not supported\" && exit 1"
|
||||
scheme_r7rs_cmd="echo \"Chicken script not supported\" && exit 1"
|
||||
scheme_repl_cmd="echo \"Chicken repl not supported\" && exit 1"
|
||||
scheme_compile_cmd="cd \"${venvpath}/lib\" && csc -static -keyword-style none -X r7rs -R r7rs -I${venvpath}/include -L${venvpath}/lib -o \"\${OF}\" \"\${IF}\""
|
||||
scheme_r7rs_compile_cmd="cd \"${venvpath}/lib\" && csc -static -keyword-style none -X r7rs -R r7rs -I${venvpath}/include -L${venvpath}/lib -o \"\${OF}\" \"\${IF}\""
|
||||
else
|
||||
#scheme_cmd="LD_LIBRARY_PATH=\"${venvpath}/lib\" csi -I \"${venvpath}/lib\" -script \"\${IF}\""
|
||||
scheme_cmd="echo \"Chicken script not supported\" && exit 1"
|
||||
scheme_r7rs_cmd="echo \"Chicken script not supported\" && exit 1"
|
||||
scheme_repl_cmd="echo \"Chicken repl not supported\" && exit 1"
|
||||
scheme_compile_cmd="cd \"${venvpath}/lib\" && csc -static -r7rs-syntax -I${venvpath}/include -L${venvpath}/lib -o \"\${OF}\" \"\${IF}\""
|
||||
scheme_r7rs_compile_cmd="cd \"${venvpath}/lib\" && csc -static -r7rs-syntax -I${venvpath}/include -L${venvpath}/lib -o \"\${OF}\" \"\${IF}\""
|
||||
fi
|
||||
scheme_version_cmd="csc -version | grep Version | awk '{print(\$2);}'"
|
||||
;;
|
||||
"cyclone")
|
||||
scheme_cmd="CYCLONE_LIBRARY_PATH=\"${venvpath}/lib\" icyc -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_r7rs_cmd="CYCLONE_LIBRARY_PATH=\"${venvpath}/lib\" icyc -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_repl_cmd="CYCLONE_LIBRARY_PATH=\"${venvpath}/lib\" icyc -I \"${venvpath}/lib\""
|
||||
scheme_version_cmd="cyclone -v | grep Version | awk '{print(\$4);}'"
|
||||
scheme_compile_cmd="CYCLONE_LIBRARY_PATH=\"${venvpath}/lib\" cyclone -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_r7rs_compile_cmd="CYCLONE_LIBRARY_PATH=\"${venvpath}/lib\" cyclone -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
;;
|
||||
"foment")
|
||||
scheme_cmd="foment -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_r7rs_cmd="foment -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_version_cmd="foment --version | grep version | head -n 1 | awk '{print(\$2);}' | sed 's/[\")]//g'"
|
||||
scheme_repl_cmd="foment -I \"${venvpath}/lib\""
|
||||
;;
|
||||
"gambit")
|
||||
scheme_cmd="gsi -:r7rs \"${venvpath}/lib/\" \"\${IF}\""
|
||||
scheme_r7rs_cmd="gsi -:r7rs \"${venvpath}/lib/\" \"\${IF}\""
|
||||
scheme_repl_cmd="gsi -:r7rs \"${venvpath}/lib/\""
|
||||
scheme_version_cmd="gsc -v | awk '{print(\$1);}' | sed 's/v//'"
|
||||
;;
|
||||
"gauche")
|
||||
scheme_cmd="gosh -r7 -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_version_cdm="gsc -v | awk '{print(\$1);}'"
|
||||
scheme_r7rs_cmd="gosh -r7 -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_version_cmd="gsc -v | awk '{print(\$1);}'"
|
||||
scheme_repl_cmd="gosh -r7 -I \"${venvpath}/lib\""
|
||||
;;
|
||||
"guile")
|
||||
scheme_cmd="guile --r7rs -x .sld -C \"${venvpath}/lib\" -L \"${venvpath}/lib\" -s \"\${IF}\""
|
||||
scheme_repl_cmd="guile --r7rs -x .sld -C \"${venvpath}/lib\" -L \"${venvpath}/lib\""
|
||||
scheme_r6rs_cmd="guile --r6rs -x .sls -L \"${venvpath}/lib/.akku/lib\" -s \"\${IF}\""
|
||||
scheme_version_cmd="guile --version | head -n 1 | awk '{print(\$4);}'"
|
||||
scheme_repl_cmd="guile --r6rs -x .sls -L \"${venvpath}/lib/.akku/lib\""
|
||||
;;
|
||||
"ikarus")
|
||||
scheme_r6rs_cmd="IKARUS_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" ikarus --r6rs-script \"\${IF}\""
|
||||
scheme_version_cmd="ikarus -v 2>&1 | head -n 1 | awk '{print(\$4);}' | sed 's/,//'"
|
||||
scheme_repl_cmd="IKARUS_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" ikarus"
|
||||
;;
|
||||
"ironscheme")
|
||||
scheme_r6rs_cmd="ironscheme -I \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||
scheme_repl_cmd="ironscheme -I \"${venvpath}/lib/.akku/lib\""
|
||||
;;
|
||||
"kawa")
|
||||
kawa_library_path=$(kawa -e "(display (get-environment-variable \"CLASSPATH\"))" | awk -F'kawa.jar' '{print $1}')
|
||||
scheme_cmd="kawa -J--add-exports=java.base/jdk.internal.foreign.abi=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign.layout=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign=ALL-UNNAMED -J--enable-native-access=ALL-UNNAMED -Dkawa.import.path=\"${venvpath}/lib/*.sld:${kawa_library_path}/*.sld\" --r7rs --full-tailcalls -f \"\${IF}\""
|
||||
scheme_r7rs_cmd="kawa -J--add-exports=java.base/jdk.internal.foreign.abi=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign.layout=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign=ALL-UNNAMED -J--enable-native-access=ALL-UNNAMED -Dkawa.import.path=\"${venvpath}/lib/*.sld:${kawa_library_path}/*.sld\" --r7rs --full-tailcalls -f \"\${IF}\""
|
||||
scheme_version_cmd="kawa --version | head -n 1 | awk '{print(\$2);}'"
|
||||
scheme_repl_cmd="kawa -J--add-exports=java.base/jdk.internal.foreign.abi=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign.layout=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign=ALL-UNNAMED -J--enable-native-access=ALL-UNNAMED -Dkawa.import.path=\"${venvpath}/lib/*.sld:${kawa_library_path}/*.sld\" --r7rs --full-tailcalls"
|
||||
;;
|
||||
"larceny")
|
||||
scheme_cmd="larceny -nobanner -quiet -utf8 -r7 -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_version_cmd="larceny --version | awk '{print($2);}'"
|
||||
scheme_repl_cmd="larceny -nobanner -quiet -utf8 -r7 -I \"${venvpath}/lib\""
|
||||
scheme_r6rs_cmd="larceny -nobanner -quiet -utf8 -r6 -I \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||
scheme_r7rs_cmd="larceny -nobanner -quiet -utf8 -r7 -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_version_cmd="larceny --version | awk '{print(\$2);}'"
|
||||
scheme_repl_cmd="larceny -nobanner -quiet -utf8 -r6 -I \"${venvpath}/lib/.akku/lib\""
|
||||
;;
|
||||
"loko")
|
||||
scheme_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib\" loko -std=r7rs \${VENV_LOKO_ARGS} --program \"\${IF}\""
|
||||
scheme_repl_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib\" loko -std=r7rs \${VENV_LOKO_ARGS:-} "
|
||||
scheme_compile_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib\" loko -std=r7rs \${VENV_LOKO_ARGS:-} --compile \"\${IF}\""
|
||||
scheme_r6rs_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" loko \${VENV_LOKO_ARGS:-} --program \"\${IF}\""
|
||||
scheme_r7rs_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib\" loko -std=r7rs \${VENV_LOKO_ARGS} --program \"\${IF}\""
|
||||
scheme_repl_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" loko \${VENV_LOKO_ARGS:-}"
|
||||
scheme_r6rs_compile_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" loko \${VENV_LOKO_ARGS:-} --compile \"\${IF}\""
|
||||
scheme_r7rs_compile_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib\" loko -std=r7rs \${VENV_LOKO_ARGS:-} --compile \"\${IF}\""
|
||||
;;
|
||||
"meevax")
|
||||
scheme_cmd="meevax -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_r7rs_cmd="meevax -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_version_cmd="meevax --version"
|
||||
scheme_repl_cmd="meevax -I \"${venvpath}/lib\""
|
||||
;;
|
||||
"mit-scheme")
|
||||
scheme_cmd="mit-scheme --prepend-library=\"${venvpath}/lib/\" --batch-mode --load \"\${IF}\" --eval \"(exit 0)\" --args"
|
||||
scheme_r7rs_cmd="mit-scheme --prepend-library=\"${venvpath}/lib/\" --batch-mode --load \"\${IF}\" --eval \"(exit 0)\" --args"
|
||||
scheme_repl_cmd="mit-scheme --prepend-library=\"${venvpath}/lib/\""
|
||||
scheme_compile_cmd="echo \"MIT-scheme compile not supported\" && exit 1"
|
||||
;;
|
||||
"mosh")
|
||||
scheme_cmd="mosh --loadpath=\"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_r6rs_cmd="mosh --loadpath=\"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||
scheme_r7rs_cmd="mosh --loadpath=\"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_version_cmd="mosh -v | head -n 1 | awk '{print(\$8);}'"
|
||||
scheme_repl_cmd="mosh --loadpath=\"${venvpath}/lib\""
|
||||
scheme_repl_cmd="mosh --loadpath=\"${venvpath}/lib/.akku/lib\""
|
||||
;;
|
||||
"racket")
|
||||
scheme_cmd="PLTCOLLECTS=\"${venvpath}/lib\" racket -I r7rs -S \"${venvpath}/lib\" --script \"\${IF}\""
|
||||
scheme_r6rs_cmd="PLTCOLLECTS=\"${venvpath}/lib/.akku/lib\" racket -I scheme/init -l r6rs/run.rkt -S \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||
scheme_r7rs_cmd="PLTCOLLECTS=\"${venvpath}/lib\" racket -I r7rs -S \"${venvpath}/lib\" --script \"\${IF}\""
|
||||
scheme_version_cmd="racket --version | awk '{print(\$4);}'"
|
||||
scheme_repl_cmd="PLTCOLLECTS=\"${venvpath}/lib\" racket -I r7rs -S \"${venvpath}/lib\""
|
||||
scheme_repl_cmd="PLTCOLLECTS=\"${venvpath}/lib/.akku/lib\" racket -I scheme/init -l r6rs/run.rkt -S \"${venvpath}/lib/.akku/lib\""
|
||||
;;
|
||||
"sagittarius")
|
||||
scheme_cmd="sash -r7 -L \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_r6rs_cmd="sash -r6 -L \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||
scheme_r7rs_cmd="sash -r7 -L \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_version_cmd="sash -v | awk '{print(\$5);}'"
|
||||
scheme_repl_cmd="sash -r7 -L \"${venvpath}/lib\""
|
||||
scheme_repl_cmd="sash -r6 -L \"${venvpath}/lib/.akku/lib\""
|
||||
;;
|
||||
"skint")
|
||||
scheme_cmd="skint -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_r7rs_cmd="skint -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_version_cmd="skint --version | grep version | awk '{print(\$2);}' | sed 's/[\")]//g'"
|
||||
scheme_repl_cmd="skint -I \"${venvpath}/lib\""
|
||||
;;
|
||||
"stklos")
|
||||
scheme_cmd="stklos -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_r7rs_cmd="stklos -I \"${venvpath}/lib\" \"\${IF}\""
|
||||
scheme_version_cmd="stklos --version | head -n 1 | awk '{print(\$2);}'"
|
||||
scheme_repl_cmd="stklos -I \"${venvpath}/lib\""
|
||||
;;
|
||||
"tr7")
|
||||
scheme_cmd="TR7_LIB_PATH=\"${venvpath}/lib:\${TR7_LIB_PATH}\" tr7i -1 \"\${IF}\""
|
||||
scheme_r7rs_cmd="TR7_LIB_PATH=\"${venvpath}/lib:\${TR7_LIB_PATH}\" tr7i -1 \"\${IF}\""
|
||||
scheme_version_cmd="printf '(exit)\n' | tr7i | head -n 1 | awk '{print(\$5);}'"
|
||||
scheme_repl_cmd="TR7_LIB_PATH=\"${venvpath}/lib:\${TR7_LIB_PATH}\" tr7i -1"
|
||||
;;
|
||||
"ypsilon")
|
||||
scheme_cmd="ypsilon --r7rs --sitelib \"${venvpath}/lib\" --top-level-program \"\${IF}\""
|
||||
scheme_r6rs_cmd="ypsilon --r6rs --sitelib \"${venvpath}/lib/.akku/lib\" --top-level-program \"\${IF}\""
|
||||
scheme_r7rs_cmd="ypsilon --r7rs --sitelib \"${venvpath}/lib\" --top-level-program \"\${IF}\""
|
||||
scheme_version_cmd="ypsilon --version | awk '{print(\$1);}' | sed 's/ypsilon-//'"
|
||||
scheme_repl_cmd="ypsilon --r7rs --sitelib \"${venvpath}/lib\""
|
||||
scheme_repl_cmd="ypsilon --r6rs --sitelib \"${venvpath}/lib/.akku/lib\""
|
||||
;;
|
||||
*)
|
||||
>&2 echo "Unsupported implementation RnRS combination: ${implementation} ${rnrs}"
|
||||
>&2 echo "Unsupported implementation ${implementation}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
esac
|
||||
|
||||
## bin/scheme-script
|
||||
{
|
||||
echo "#!/bin/sh"
|
||||
echo "if [ ! \"\${VENV_DEBUG}\" = \"\" ]; then set -x; fi"
|
||||
echo "if [ \"\${1}\" = \"\" ]; then echo 'scheme-venv (${implementation} ${rnrs}) Give script file as argument' && exit 1; fi"
|
||||
echo "if [ \"\${1}\" = \"--help\" ]; then echo 'scheme-venv (${implementation} ${rnrs}) Give script file as argument' && exit 1; fi"
|
||||
echo "IF=\"\${1}\""
|
||||
echo "shift"
|
||||
echo "${scheme_cmd} \"\$@\""
|
||||
cat << EOF
|
||||
#!/bin/sh
|
||||
if [ ! "\${VENV_DEBUG}" = "" ]; then set -x; fi
|
||||
if [ "\${1}" = "" ]; then echo 'scheme-venv (${implementation}) Give script file as argument' && exit 1; fi
|
||||
if [ "\${1}" = "--help" ]; then echo 'scheme-venv (${implementation}) Give script file as argument' && exit 1; fi
|
||||
IF="\${1}"
|
||||
shift
|
||||
case "\${IF}" in
|
||||
*.sps)
|
||||
${scheme_r6rs_cmd} "\$@"
|
||||
;;
|
||||
*.scm)
|
||||
${scheme_r7rs_cmd} "\$@"
|
||||
;;
|
||||
*)
|
||||
case "\${SCHEME_VENV_RNRS}" in
|
||||
r6rs)
|
||||
${scheme_r6rs_cmd} "\$@"
|
||||
;;
|
||||
r7rs)
|
||||
${scheme_r7rs_cmd} "\$@"
|
||||
;;
|
||||
*)
|
||||
echo "Could not determine RNRS"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
EOF
|
||||
} > "${venvpath}/bin/scheme-script"
|
||||
chmod +x "${venvpath}/bin/scheme-script"
|
||||
|
||||
|
|
@ -345,9 +310,10 @@ if [ "${scheme_type}" = "interpreter" ]; then
|
|||
echo "#!/bin/sh"
|
||||
echo "if [ ! \"\${VENV_DEBUG}\" = \"\" ]; then set -x; fi"
|
||||
echo "IF=\"\$(realpath \"\${1}\")\""
|
||||
echo "if [ \"${rnrs}\" = \"r6rs\" ]; then OF=\"\${IF%.sps}\"; else OF=\"\${IF%.scm}\"; fi"
|
||||
echo "case \"\${IF}\" in *.sps) OF=\"\${IF%.sps}\";; *) OF=\"\${IF%.scm}\";; esac"
|
||||
echo "case \"\${IF}\" in *.sps) RNRS=r6rs;; *) RNRS=r7rs;; esac"
|
||||
# shellcheck disable=SC2028
|
||||
echo "printf \"\n#|\nexec ${venvpath}/bin/scheme-script \\\"\\\${0}\\\" \\\"\\\$@\\\"\n|#\n\" > \"\${OF}\""
|
||||
echo "printf \"\n#|\nSCHEME_VENV_RNRS=\${RNRS} exec ${venvpath}/bin/scheme-script \\\"\\\${0}\\\" \\\"\\\$@\\\"\n|#\n\" > \"\${OF}\""
|
||||
echo "cat \"\${IF}\" >> \"\${OF}\""
|
||||
echo "chmod +x \"\${OF}\""
|
||||
} > "${venvpath}/bin/scheme-compile"
|
||||
|
|
@ -357,9 +323,11 @@ else
|
|||
echo "#!/bin/sh"
|
||||
echo "if [ ! \"\${VENV_DEBUG}\" = \"\" ]; then set -x; fi"
|
||||
echo "IF=\$(realpath \"\${1}\")"
|
||||
echo "if [ \"${rnrs}\" = \"r6rs\" ]; then OF=\"\${IF%.sps}\"; else OF=\"\${IF%.scm}\"; fi"
|
||||
#echo "if [ \"\${IF}\" = \"*.sps\" ]; then OF=\"\${IF%.sps}\"; else OF=\"\${IF%.scm}\"; fi"
|
||||
echo "case \"\${IF}\" in *.sps) OF=\"\${IF%.sps}\";; *) OF=\"\${IF%.scm}\";; esac"
|
||||
#echo "cd ${venvpath}/lib"
|
||||
echo "${scheme_compile_cmd}"
|
||||
echo "case \"\${IF}\" in *.sps) ${scheme_r6rs_compile_cmd};; *) ${scheme_r7rs_compile_cmd};; esac"
|
||||
#echo "${scheme_compile_cmd}"
|
||||
} > "${venvpath}/bin/scheme-compile"
|
||||
chmod +x "${venvpath}/bin/scheme-compile"
|
||||
fi
|
||||
|
|
@ -404,7 +372,6 @@ cat << EOF
|
|||
#!/bin/sh
|
||||
if [ ! "\${VENV_DEBUG}" = "" ]; then set -x; fi
|
||||
echo "Scheme: ${implementation}"
|
||||
echo "RNRS: ${rnrs}"
|
||||
EOF
|
||||
} > "${venvpath}/bin/scheme-venv-info"
|
||||
chmod +x "${venvpath}/bin/scheme-venv-info"
|
||||
|
|
@ -419,4 +386,4 @@ EOF
|
|||
} > "${venvpath}/bin/scheme-version"
|
||||
chmod +x "${venvpath}/bin/scheme-version"
|
||||
|
||||
echo "Initialized scheme-venv ${venvpath}, with ${implementation} and ${rnrs}"
|
||||
echo "Initialized scheme-venv ${venvpath}, with ${implementation}"
|
||||
|
|
|
|||
Loading…
Reference in New Issue