Compare commits
2 Commits
c29e90f8c0
...
afb9603b9e
| Author | SHA1 | Date |
|---|---|---|
|
|
afb9603b9e | |
|
|
fe3b2ed457 |
65
scheme-venv
65
scheme-venv
|
|
@ -61,9 +61,9 @@ venvname=$(basename "${venvpath}")
|
||||||
downloadpath="${venvpath}/downloads"
|
downloadpath="${venvpath}/downloads"
|
||||||
toolinstallprefix="${venvpath}/tools"
|
toolinstallprefix="${venvpath}/tools"
|
||||||
docker_tag="${venvname}-${implementation}-${rnrs}"
|
docker_tag="${venvname}-${implementation}-${rnrs}"
|
||||||
scheme_compile_cmd=""
|
|
||||||
scheme_cmd=""
|
scheme_cmd=""
|
||||||
scheme_script_cmd=""
|
scheme_compile_cmd=""
|
||||||
|
scheme_repl_cmd=""
|
||||||
scheme_type="interpreter"
|
scheme_type="interpreter"
|
||||||
|
|
||||||
echo "scheme-venv version 1.0.0, scheme: ${implementation}, rnrs: ${rnrs}"
|
echo "scheme-venv version 1.0.0, scheme: ${implementation}, rnrs: ${rnrs}"
|
||||||
|
|
@ -155,135 +155,164 @@ if [ "${rnrs}" = "r6rs" ]; then
|
||||||
case "${implementation}" in
|
case "${implementation}" in
|
||||||
"capyscheme")
|
"capyscheme")
|
||||||
scheme_cmd="capy --r6rs -L \"${venvpath}/lib\" --script \"\${IF}\""
|
scheme_cmd="capy --r6rs -L \"${venvpath}/lib\" --script \"\${IF}\""
|
||||||
|
scheme_repl_cmd="capy --r6rs -L \"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"chezscheme")
|
"chezscheme")
|
||||||
if command -v chezscheme >/dev/null 2>&1
|
if command -v chezscheme >/dev/null 2>&1
|
||||||
then
|
then
|
||||||
scheme_cmd="chezscheme --libdirs ${venvpath}/lib/.akku/lib --program \"\${IF}\""
|
scheme_cmd="chezscheme --libdirs ${venvpath}/lib/.akku/lib --program \"\${IF}\""
|
||||||
|
scheme_repl_cmd="chezscheme --libdirs ${venvpath}/lib/.akku/lib"
|
||||||
else
|
else
|
||||||
scheme_cmd="scheme --libdirs \"${venvpath}/lib/.akku/lib\" --program \"\${IF}\""
|
scheme_cmd="scheme --libdirs ${venvpath}/lib/.akku/lib --program \"\${IF}\""
|
||||||
|
scheme_repl_cmd="scheme --libdirs ${venvpath}/lib/.akku/lib"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
"guile")
|
"guile")
|
||||||
scheme_cmd="guile --r6rs -x .sls -L \"${venvpath}/lib/.akku/lib\" -s \"\${IF}\""
|
scheme_cmd="guile --r6rs -x .sls -L \"${venvpath}/lib/.akku/lib\" -s \"\${IF}\""
|
||||||
|
scheme_repl_cmd="guile --r6rs -x .sls -L \"${venvpath}/lib/.akku/lib\""
|
||||||
;;
|
;;
|
||||||
"ikarus")
|
"ikarus")
|
||||||
scheme_cmd="IKARUS_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" ikarus --r6rs-script \"\${IF}\""
|
scheme_cmd="IKARUS_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" ikarus --r6rs-script \"\${IF}\""
|
||||||
|
scheme_repl_cmd="IKARUS_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" ikarus"
|
||||||
;;
|
;;
|
||||||
"ironscheme")
|
"ironscheme")
|
||||||
scheme_cmd="ironscheme -I \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
scheme_cmd="ironscheme -I \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="ironscheme -I \"${venvpath}/lib/.akku/lib\""
|
||||||
;;
|
;;
|
||||||
"larceny")
|
"larceny")
|
||||||
scheme_cmd="larceny -nobanner -quiet -utf8 -r6 -I \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
scheme_cmd="larceny -nobanner -quiet -utf8 -r6 -I \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="larceny -nobanner -quiet -utf8 -r6 -I \"${venvpath}/lib/.akku/lib\""
|
||||||
;;
|
;;
|
||||||
"loko")
|
"loko")
|
||||||
scheme_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" loko --program \"\${IF}\""
|
scheme_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" loko --program \"\${IF}\""
|
||||||
|
scheme_repl_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" loko"
|
||||||
scheme_compile_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" loko -o \"\${OF}\" --compile \"\${IF}\""
|
scheme_compile_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" loko -o \"\${OF}\" --compile \"\${IF}\""
|
||||||
;;
|
;;
|
||||||
"mosh")
|
"mosh")
|
||||||
scheme_cmd="mosh --loadpath=\"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
scheme_cmd="mosh --loadpath=\"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="mosh --loadpath=\"${venvpath}/lib/.akku/lib\""
|
||||||
;;
|
;;
|
||||||
"racket")
|
"racket")
|
||||||
scheme_cmd="racket -I scheme/init -l r6rs/run.rkt -S \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
scheme_cmd="racket -I scheme/init -l r6rs/run.rkt -S \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="racket -I scheme/init -l r6rs/run.rkt -S \"${venvpath}/lib/.akku/lib\""
|
||||||
;;
|
;;
|
||||||
"sagittarius")
|
"sagittarius")
|
||||||
scheme_cmd="sash -r6 -L \"${venvpath}/lib\" \"\${IF}\""
|
scheme_cmd="sash -r6 -L \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="sash -r6 -L \"${venvpath}/lib/.akku/lib\""
|
||||||
;;
|
;;
|
||||||
"ypsilon")
|
"ypsilon")
|
||||||
scheme_cmd="ypsilon --r6rs --sitelib \"${venvpath}/lib\" --top-level-program \"\${IF}\""
|
scheme_cmd="ypsilon --r6rs --sitelib \"${venvpath}/lib/.akku/lib\" --top-level-program \"\${IF}\""
|
||||||
|
scheme_repl_cmd="ypsilon --r6rs --sitelib \"${venvpath}/lib/.akku/lib\""
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
>&2 echo "Unsupported implementation RnRS combination: ${implementation} ${rnrs}"
|
>&2 echo "Unsupported implementation RnRS combination: ${implementation} ${rnrs}"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
echo "${scheme_script_cmd}" > "${venvpath}/bin/scheme-r6rs"
|
|
||||||
else
|
else
|
||||||
## R7RS
|
## R7RS
|
||||||
case "${implementation}" in
|
case "${implementation}" in
|
||||||
"capyscheme")
|
"capyscheme")
|
||||||
scheme_cmd="capy --r7rs -L \"${venvpath}/lib\" --script \"\${IF}\""
|
scheme_cmd="capy --r7rs -L \"${venvpath}/lib\" --script \"\${IF}\""
|
||||||
|
scheme_repl_cmd="capy --r7rs -L \"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"chibi")
|
"chibi")
|
||||||
scheme_cmd="chibi-scheme -I \"${venvpath}/lib\" \"\${IF}\""
|
scheme_cmd="chibi-scheme -I \"${venvpath}/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="chibi-scheme -I \"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"chicken")
|
"chicken")
|
||||||
chicken_version=$(csi -version | grep "Version" | awk '{split($0,a," "); split(a[2],b,"."); print(b[1])}')
|
chicken_version=$(csi -version | grep "Version" | awk '{split($0,a," "); split(a[2],b,"."); print(b[1])}')
|
||||||
if [ "${chicken_version}" = "5" ]; then
|
if [ "${chicken_version}" = "5" ]; then
|
||||||
#scheme_cmd="LD_LIBRARY_PATH=\"${venvpath}/lib\" csi -R r7rs -I \"${venvpath}/lib\" -script \"\${IF}\""
|
#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_cmd="echo \"Chicken script not supported\" && exit 1"
|
||||||
|
scheme_repl_cmd="echo \"Chicken repl not supported\" && exit 1"
|
||||||
scheme_compile_cmd="csc -static -X r7rs -R r7rs -o \"\${OF}\" \"\${IF}\""
|
scheme_compile_cmd="csc -static -X r7rs -R r7rs -o \"\${OF}\" \"\${IF}\""
|
||||||
else
|
else
|
||||||
#scheme_cmd="LD_LIBRARY_PATH=\"${venvpath}/lib\" csi -I \"${venvpath}/lib\" -script \"\${IF}\""
|
#scheme_cmd="LD_LIBRARY_PATH=\"${venvpath}/lib\" csi -I \"${venvpath}/lib\" -script \"\${IF}\""
|
||||||
scheme_cmd="echo \"Chicken script not supported\" && exit 1"
|
scheme_cmd="echo \"Chicken script not supported\" && exit 1"
|
||||||
|
scheme_repl_cmd="echo \"Chicken repl not supported\" && exit 1"
|
||||||
scheme_compile_cmd="csc -static -o \"\${OF}\" \"\${IF}\""
|
scheme_compile_cmd="csc -static -o \"\${OF}\" \"\${IF}\""
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
"cyclone")
|
"cyclone")
|
||||||
scheme_cmd="CYCLONE_LIBRARY_PATH=\"${venvpath}/lib\" icyc -I \"${venvpath}/lib\" \"\${IF}\""
|
scheme_cmd="CYCLONE_LIBRARY_PATH=\"${venvpath}/lib\" icyc -I \"${venvpath}/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="CYCLONE_LIBRARY_PATH=\"${venvpath}/lib\" icyc -I \"${venvpath}/lib\""
|
||||||
scheme_compile_cmd="CYCLONE_LIBRARY_PATH=\"${venvpath}/lib\" cyclone -I \"${venvpath}/lib\" \"\${IF}\""
|
scheme_compile_cmd="CYCLONE_LIBRARY_PATH=\"${venvpath}/lib\" cyclone -I \"${venvpath}/lib\" \"\${IF}\""
|
||||||
;;
|
;;
|
||||||
"foment")
|
"foment")
|
||||||
scheme_cmd="foment -I \"${venvpath}/lib\" \"\${IF}\""
|
scheme_cmd="foment -I \"${venvpath}/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="foment -I \"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"gambit")
|
"gambit")
|
||||||
scheme_cmd="gsi \"${venvpath}/lib/\" \"\${IF}\""
|
scheme_cmd="gsi \"${venvpath}/lib/\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="gsi \"${venvpath}/lib/\""
|
||||||
#scheme_compile_cmd="gsc -o \"\${OF}\" -exe -nopreload \"${venvpath}/lib/\" \"\${IF}\""
|
#scheme_compile_cmd="gsc -o \"\${OF}\" -exe -nopreload \"${venvpath}/lib/\" \"\${IF}\""
|
||||||
scheme_compile_cmd="echo \"Gambit compiler not supported\" && exit 1"
|
scheme_compile_cmd="echo \"Gambit compiler not supported\" && exit 1"
|
||||||
;;
|
;;
|
||||||
"gauche")
|
"gauche")
|
||||||
scheme_cmd="gosh -r7 -I \"${venvpath}/lib\" \"\${IF}\""
|
scheme_cmd="gosh -r7 -I \"${venvpath}/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="gosh -r7 -I \"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"guile")
|
"guile")
|
||||||
#scheme_cmd="guile --r7rs -x .sld -C \"${venvpath}/lib\" -L \"${venvpath}/lib\" -s \"\${IF}\""
|
scheme_cmd="guile --r7rs -x .sld -C \"${venvpath}/lib\" -L \"${venvpath}/lib\" -s \"\${IF}\""
|
||||||
scheme_cmd="echo \"Guile script not supported\" && exit 1"
|
scheme_repl_cmd="guile --r7rs -x .sld -C \"${venvpath}/lib\" -L \"${venvpath}/lib\""
|
||||||
scheme_compile_cmd="echo \"Guile compiler not supported\" && exit 1"
|
scheme_compile_cmd="echo \"Guile compiler not supported\" && exit 1"
|
||||||
;;
|
;;
|
||||||
"kawa")
|
"kawa")
|
||||||
scheme_cmd="kawa --r7rs --full-tailcalls -Dkawa.import.path=\"${venvpath}/lib/*.sld\" \"\${IF}\""
|
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 -J--enable-preview --r7rs --full-tailcalls -Dkawa.import.path=\"${venvpath}/lib/*.sld\" \"\${IF}\""
|
||||||
|
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 -J--enable-preview --r7rs --full-tailcalls -Dkawa.import.path=\"${venvpath}/lib/*.sld\""
|
||||||
;;
|
;;
|
||||||
"larceny")
|
"larceny")
|
||||||
scheme_cmd="larceny -nobanner -quiet -utf8 -r7 -I \"${venvpath}/lib\" \"\${IF}\""
|
scheme_cmd="larceny -nobanner -quiet -utf8 -r7 -I \"${venvpath}/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="larceny -nobanner -quiet -utf8 -r7 -I \"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"loko")
|
"loko")
|
||||||
scheme_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib\" loko -std=r7rs --program \"\${IF}\""
|
scheme_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib\" loko -std=r7rs --program \"\${IF}\""
|
||||||
|
scheme_repl_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib\" loko -std=r7rs"
|
||||||
scheme_compile_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib\" loko -std=r7rs -o \"\${OF}\" --compile \"\${IF}\""
|
scheme_compile_cmd="LOKO_LIBRARY_PATH=\"${venvpath}/lib\" loko -std=r7rs -o \"\${OF}\" --compile \"\${IF}\""
|
||||||
;;
|
;;
|
||||||
"meevax")
|
"meevax")
|
||||||
scheme_cmd="meevax -I \"${venvpath}/lib\" \"\${IF}\""
|
scheme_cmd="meevax -I \"${venvpath}/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="meevax -I \"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"mit-scheme")
|
"mit-scheme")
|
||||||
scheme_cmd="mit-scheme --prepend-library=\"${venvpath}/lib/\" --batch-mode --load \"\${IF}\" --eval \"(exit 0)\" --args"
|
scheme_cmd="mit-scheme --prepend-library=\"${venvpath}/lib/\" --batch-mode --load \"\${IF}\" --eval \"(exit 0)\" --args"
|
||||||
#scheme_cmd="echo \"MIT-scheme script not supported\" && exit 1"
|
scheme_repl_cmd="mit-scheme --prepend-library=\"${venvpath}/lib/\""
|
||||||
scheme_compile_cmd="echo \"MIT-scheme compile not supported\" && exit 1"
|
scheme_compile_cmd="echo \"MIT-scheme compile not supported\" && exit 1"
|
||||||
;;
|
;;
|
||||||
"mosh")
|
"mosh")
|
||||||
scheme_cmd="mosh --loadpath=\"${venvpath}/lib\" \"\${IF}\""
|
scheme_cmd="mosh --loadpath=\"${venvpath}/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="mosh --loadpath=\"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"racket")
|
"racket")
|
||||||
scheme_cmd="racket -I r7rs -S \"${venvpath}/lib\" --script \"\${IF}\""
|
scheme_cmd="racket -I r7rs -S \"${venvpath}/lib\" --script \"\${IF}\""
|
||||||
|
scheme_repl_cmd="racket -I r7rs -S \"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"sagittarius")
|
"sagittarius")
|
||||||
scheme_cmd="sash -r7 -L \"${venvpath}/lib\" \"\${IF}\""
|
scheme_cmd="sash -r7 -L \"${venvpath}/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="sash -r7 -L \"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"skint")
|
"skint")
|
||||||
scheme_cmd="skint -I \"${venvpath}/lib\" \"\${IF}\""
|
scheme_cmd="skint -I \"${venvpath}/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="skint -I \"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"stklos")
|
"stklos")
|
||||||
scheme_cmd="stklos -I \"${venvpath}/lib\" \"\${IF}\""
|
scheme_cmd="stklos -I \"${venvpath}/lib\" \"\${IF}\""
|
||||||
|
scheme_repl_cmd="stklos -I \"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"tr7")
|
"tr7")
|
||||||
scheme_cmd="TR7_LIB_PATH=\"${venvpath}/lib:\${TR7_LIB_PATH}\" tr7i -1 \"\${IF}\""
|
scheme_cmd="TR7_LIB_PATH=\"${venvpath}/lib:\${TR7_LIB_PATH}\" tr7i -1 \"\${IF}\""
|
||||||
|
scheme_repl_cmd="TR7_LIB_PATH=\"${venvpath}/lib:\${TR7_LIB_PATH}\" tr7i -1"
|
||||||
;;
|
;;
|
||||||
"ypsilon")
|
"ypsilon")
|
||||||
scheme_cmd="ypsilon --r7rs --sitelib \"${venvpath}/lib\" --top-level-program \"\${IF}\""
|
scheme_cmd="ypsilon --r7rs --sitelib \"${venvpath}/lib\" --top-level-program \"\${IF}\""
|
||||||
|
scheme_repl_cmd="ypsilon --r7rs --sitelib \"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
>&2 echo "Unsupported implementation RnRS combination: ${implementation} ${rnrs}"
|
>&2 echo "Unsupported implementation RnRS combination: ${implementation} ${rnrs}"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
echo "${scheme_script_cmd}" > "${venvpath}/bin/scheme-r7rs"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## bin/scheme-script
|
## bin/scheme-script
|
||||||
|
|
@ -297,6 +326,13 @@ fi
|
||||||
} > "${venvpath}/bin/scheme-script"
|
} > "${venvpath}/bin/scheme-script"
|
||||||
chmod +x "${venvpath}/bin/scheme-script"
|
chmod +x "${venvpath}/bin/scheme-script"
|
||||||
|
|
||||||
|
## bin/scheme-repl
|
||||||
|
{
|
||||||
|
echo "#!/bin/sh"
|
||||||
|
echo "${scheme_repl_cmd} \"\$@\""
|
||||||
|
} > "${venvpath}/bin/scheme-repl"
|
||||||
|
chmod +x "${venvpath}/bin/scheme-repl"
|
||||||
|
|
||||||
## bin/scheme-compile
|
## bin/scheme-compile
|
||||||
if [ "${scheme_type}" = "interpreter" ]; then
|
if [ "${scheme_type}" = "interpreter" ]; then
|
||||||
{
|
{
|
||||||
|
|
@ -322,11 +358,6 @@ fi
|
||||||
|
|
||||||
|
|
||||||
## bin/snow-chibi
|
## bin/snow-chibi
|
||||||
impls=${implementation}
|
|
||||||
if [ "${rnrs}" = "r6rs" ]; then
|
|
||||||
impls=generic
|
|
||||||
fi
|
|
||||||
|
|
||||||
{
|
{
|
||||||
cat << EOF
|
cat << EOF
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
@ -334,7 +365,7 @@ if [ "\${1}" = "install" ]; then
|
||||||
shift
|
shift
|
||||||
snow-chibi \
|
snow-chibi \
|
||||||
install \
|
install \
|
||||||
--impls=${impls} \
|
--impls=${implementation} \
|
||||||
--install-source-dir=${venvpath}/lib \
|
--install-source-dir=${venvpath}/lib \
|
||||||
--install-library-dir=${venvpath}/lib \
|
--install-library-dir=${venvpath}/lib \
|
||||||
--install-data-dir=${venvpath}/lib \
|
--install-data-dir=${venvpath}/lib \
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue