Add scheme-version executables

This commit is contained in:
retropikzel 2026-02-12 20:43:12 +02:00
parent 104839f5db
commit 0ac5486b46
1 changed files with 39 additions and 0 deletions

View File

@ -68,6 +68,7 @@ docker_tag="${venvname}-${implementation}-${rnrs}"
scheme_cmd="" scheme_cmd=""
scheme_compile_cmd="" scheme_compile_cmd=""
scheme_repl_cmd="" scheme_repl_cmd=""
scheme_version_cmd="echo 0.0.0"
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}"
@ -133,24 +134,29 @@ if [ "${rnrs}" = "r6rs" ]; then
case "${implementation}" in case "${implementation}" in
"capyscheme") "capyscheme")
scheme_cmd="capy --r6rs -L \"${venvpath}/lib\" VENV_CAPYSCHEME_ARGS --script \"\${IF}\"" scheme_cmd="capy --r6rs -L \"${venvpath}/lib\" VENV_CAPYSCHEME_ARGS --script \"\${IF}\""
scheme_version_cmd="capy --help | head -n 1 | awk '{print(\$2);}'"
scheme_repl_cmd="capy --r6rs -L \"${venvpath}/lib\"" 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_version_cmd="chezscheme --version"
scheme_repl_cmd="chezscheme --libdirs ${venvpath}/lib/.akku/lib" 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_version_cmd="scheme --version"
scheme_repl_cmd="scheme --libdirs ${venvpath}/lib/.akku/lib" 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_version_cmd="guile --version | head -n 1 | awk '{print($4);}'"
scheme_repl_cmd="guile --r6rs -x .sls -L \"${venvpath}/lib/.akku/lib\"" 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_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" scheme_repl_cmd="IKARUS_LIBRARY_PATH=\"${venvpath}/lib/.akku/lib\" ikarus"
;; ;;
"ironscheme") "ironscheme")
@ -159,6 +165,7 @@ if [ "${rnrs}" = "r6rs" ]; then
;; ;;
"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_version_cmd="larceny --version | awk '{print($2);}'"
scheme_repl_cmd="larceny -nobanner -quiet -utf8 -r6 -I \"${venvpath}/lib/.akku/lib\"" scheme_repl_cmd="larceny -nobanner -quiet -utf8 -r6 -I \"${venvpath}/lib/.akku/lib\""
;; ;;
"loko") "loko")
@ -168,18 +175,22 @@ if [ "${rnrs}" = "r6rs" ]; then
;; ;;
"mosh") "mosh")
scheme_cmd="mosh --loadpath=\"${venvpath}/lib/.akku/lib\" \"\${IF}\"" 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\"" scheme_repl_cmd="mosh --loadpath=\"${venvpath}/lib/.akku/lib\""
;; ;;
"racket") "racket")
scheme_cmd="PLTCOLLECTS=\"${venvpath}/lib/.akku/lib\" racket -I scheme/init -l r6rs/run.rkt -S \"${venvpath}/lib/.akku/lib\" \"\${IF}\"" 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\"" scheme_repl_cmd="PLTCOLLECTS=\"${venvpath}/lib/.akku/lib\" racket -I scheme/init -l r6rs/run.rkt -S \"${venvpath}/lib/.akku/lib\""
;; ;;
"sagittarius") "sagittarius")
scheme_cmd="sash -r6 -L \"${venvpath}/lib/.akku/lib\" \"\${IF}\"" 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\"" scheme_repl_cmd="sash -r6 -L \"${venvpath}/lib/.akku/lib\""
;; ;;
"ypsilon") "ypsilon")
scheme_cmd="ypsilon --r6rs --sitelib \"${venvpath}/lib/.akku/lib\" --top-level-program \"\${IF}\"" 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\"" scheme_repl_cmd="ypsilon --r6rs --sitelib \"${venvpath}/lib/.akku/lib\""
;; ;;
*) *)
@ -192,10 +203,12 @@ else
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_version_cmd="capy --help | head -n 1 | awk '{print(\$2);}'"
scheme_repl_cmd="capy --r7rs -L \"${venvpath}/lib\"" 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_version_cmd="chibi-scheme -V | awk '{print(\$2);}'"
scheme_repl_cmd="chibi-scheme -I \"${venvpath}/lib\"" scheme_repl_cmd="chibi-scheme -I \"${venvpath}/lib\""
;; ;;
"chicken") "chicken")
@ -211,37 +224,45 @@ else
scheme_repl_cmd="echo \"Chicken repl 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_compile_cmd="cd \"${venvpath}/lib\" && csc -static -r7rs-syntax -I${venvpath}/include -L${venvpath}/lib -o \"\${OF}\" \"\${IF}\""
fi fi
scheme_version_cmd="csc -version | grep Version | awk '{print(\$2);}'"
;; ;;
"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_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_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_version_cmd="foment --version | grep version | head -n 1 | awk '{print(\$2);}' | sed 's/[\")]//g'"
scheme_repl_cmd="foment -I \"${venvpath}/lib\"" scheme_repl_cmd="foment -I \"${venvpath}/lib\""
;; ;;
"gambit") "gambit")
scheme_cmd="gsi -:r7rs \"${venvpath}/lib/\" \"\${IF}\"" scheme_cmd="gsi -:r7rs \"${venvpath}/lib/\" \"\${IF}\""
scheme_repl_cmd="gsi -:r7rs \"${venvpath}/lib/\"" scheme_repl_cmd="gsi -:r7rs \"${venvpath}/lib/\""
scheme_version_cmd="gsc -v | awk '{print(\$1);}'"
scheme_compile_cmd="gsc -:r7rs -o \"\${OF}\" -exe -nopreload \"${venvpath}/lib/\" \"\${IF}\"" scheme_compile_cmd="gsc -:r7rs -o \"\${OF}\" -exe -nopreload \"${venvpath}/lib/\" \"\${IF}\""
;; ;;
"gauche") "gauche")
scheme_cmd="gosh -r7 -I \"${venvpath}/lib\" \"\${IF}\"" scheme_cmd="gosh -r7 -I \"${venvpath}/lib\" \"\${IF}\""
scheme_version_cdm="gsc -v | awk '{print(\$1);}'"
scheme_repl_cmd="gosh -r7 -I \"${venvpath}/lib\"" 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_repl_cmd="guile --r7rs -x .sld -C \"${venvpath}/lib\" -L \"${venvpath}/lib\"" scheme_repl_cmd="guile --r7rs -x .sld -C \"${venvpath}/lib\" -L \"${venvpath}/lib\""
scheme_version_cmd="guile --version | head -n 1 | awk '{print(\$4);}'"
scheme_compile_cmd="echo \"Guile compiler not supported\" && exit 1" scheme_compile_cmd="echo \"Guile compiler not supported\" && exit 1"
;; ;;
"kawa") "kawa")
kawa_library_path=$(kawa -e "(display (get-environment-variable \"CLASSPATH\"))" | awk -F'kawa.jar' '{print $1}') 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_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" 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") "larceny")
scheme_cmd="larceny -nobanner -quiet -utf8 -r7 -I \"${venvpath}/lib\" \"\${IF}\"" 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_repl_cmd="larceny -nobanner -quiet -utf8 -r7 -I \"${venvpath}/lib\""
;; ;;
"loko") "loko")
@ -251,6 +272,7 @@ else
;; ;;
"meevax") "meevax")
scheme_cmd="meevax -I \"${venvpath}/lib\" \"\${IF}\"" scheme_cmd="meevax -I \"${venvpath}/lib\" \"\${IF}\""
scheme_version_cmd="meevax --version"
scheme_repl_cmd="meevax -I \"${venvpath}/lib\"" scheme_repl_cmd="meevax -I \"${venvpath}/lib\""
;; ;;
"mit-scheme") "mit-scheme")
@ -260,30 +282,37 @@ else
;; ;;
"mosh") "mosh")
scheme_cmd="mosh --loadpath=\"${venvpath}/lib\" \"\${IF}\"" scheme_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\""
;; ;;
"racket") "racket")
scheme_cmd="PLTCOLLECTS=\"${venvpath}/lib\" racket -I r7rs -S \"${venvpath}/lib\" --script \"\${IF}\"" scheme_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\" 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_version_cmd="sash -v | awk '{print(\$5);}'"
scheme_repl_cmd="sash -r7 -L \"${venvpath}/lib\"" 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_version_cmd="skint --version | grep version | awk '{print(\$2);}' | sed 's/[\")]//g'"
scheme_repl_cmd="skint -I \"${venvpath}/lib\"" scheme_repl_cmd="skint -I \"${venvpath}/lib\""
;; ;;
"stklos") "stklos")
scheme_cmd="stklos -I \"${venvpath}/lib\" \"\${IF}\"" scheme_cmd="stklos -I \"${venvpath}/lib\" \"\${IF}\""
scheme_version_cmd="stklos --version | head -n 1 | awk '{print(\$2);}'"
scheme_repl_cmd="stklos -I \"${venvpath}/lib\"" 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_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" 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_version_cmd="ypsilon --version | awk '{print(\$1);}' | sed 's/ypsilon-//'"
scheme_repl_cmd="ypsilon --r7rs --sitelib \"${venvpath}/lib\"" scheme_repl_cmd="ypsilon --r7rs --sitelib \"${venvpath}/lib\""
;; ;;
*) *)
@ -383,4 +412,14 @@ EOF
} > "${venvpath}/bin/scheme-venv-info" } > "${venvpath}/bin/scheme-venv-info"
chmod +x "${venvpath}/bin/scheme-venv-info" chmod +x "${venvpath}/bin/scheme-venv-info"
## /bin/scheme-version
{
cat << EOF
#!/bin/sh
if [ ! "\${VENV_DEBUG}" = "" ]; then set -x; fi
${scheme_version_cmd}
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} and ${rnrs}"