From 297d743d73c30d6892a87ea7ce9d0afb4c2ac902 Mon Sep 17 00:00:00 2001 From: retropikzel Date: Tue, 27 Jan 2026 07:58:46 +0200 Subject: [PATCH] TR7 fixes --- .gitignore | 1 + Jenkinsfile | 6 +++++- Makefile | 19 ++++++++----------- scheme-venv | 26 +++++++++++++++++++------- 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index 577adac..edbacbc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ testvenv compile-test +*.link diff --git a/Jenkinsfile b/Jenkinsfile index 85d2f4e..91c6170 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -20,7 +20,7 @@ pipeline { stages { stage('Init') { steps { - sh "apk add make docker" + sh "apk add make docker tree" } } stage('R6RS script') { @@ -30,6 +30,7 @@ pipeline { stage("${SCHEME}") { catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { sh "make SCHEME=${SCHEME} test-r6rs-script-docker | grep 'scheme-venv-script-test-success-Hello' || exit 1" + sh "tree testvenv" } } } @@ -43,6 +44,7 @@ pipeline { stage("${SCHEME}") { catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { sh "make SCHEME=${SCHEME} test-r6rs-compile-docker | grep 'scheme-venv-compile-test-success-Hello' || exit 1" + sh "tree testvenv" } } } @@ -56,6 +58,7 @@ pipeline { stage("${SCHEME}") { catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { sh "make SCHEME=${SCHEME} test-r7rs-script-docker | grep 'scheme-venv-script-test-success-Hello' || exit 1" + sh "tree testvenv" } } } @@ -69,6 +72,7 @@ pipeline { stage("${SCHEME}") { catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { sh "make SCHEME=${SCHEME} test-r7rs-compile-docker | grep 'scheme-venv-compile-test-success-Hello' || exit 1" + sh "tree testvenv" } } } diff --git a/Makefile b/Makefile index db4bac3..13dda73 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ PREFIX=/usr/local SCHEME=chibi +DOCKER_IMG=scheme-venv-test-${SCHEME} all: build @@ -18,14 +19,14 @@ test-r6rs-compile: @rm -rf testvenv/ \ && ./scheme-venv ${SCHEME} r6rs testvenv \ && ./testvenv/bin/akku install chez-srfi \ - && ./testvenv/bin/scheme-compile compile-test.sps srfi.64 \ + && ./testvenv/bin/scheme-compile compile-test.sps \ && ./compile-test test-r7rs-script: @echo "Starting test Scheme: ${SCHEME}, RNRS: R7RS" @rm -rf testvenv/ \ && ./scheme-venv ${SCHEME} r7rs testvenv \ - && ./testvenv/bin/snow-chibi install --always-yes retropikzel.hello srfi.64 \ + && ./testvenv/bin/snow-chibi install --always-yes retropikzel.hello \ && ./testvenv/bin/scheme-script test.scm test-r7rs-compile: @@ -37,23 +38,19 @@ test-r7rs-compile: && ./compile-test build-test-docker-image: - @if [ "${SCHEME}" = "chicken" ]; then \ - docker build --build-arg IMG=${SCHEME}:5 -f Dockerfile.test --tag=scheme-venv-test-${SCHEME} . ; \ - else \ - docker build --build-arg IMG=${SCHEME}:head -f Dockerfile.test --tag=scheme-venv-test-${SCHEME} . ; \ - fi + docker build --build-arg IMG=${SCHEME}:head -f Dockerfile.test --tag=${DOCKER_IMG} . test-r6rs-script-docker: build-test-docker-image - @docker run scheme-venv-test-${SCHEME} bash -c "make SCHEME=${SCHEME} test-r6rs-script" + @docker run ${DOCKER_IMG} bash -c "make SCHEME=${SCHEME} test-r6rs-script" test-r6rs-compile-docker: build-test-docker-image - @docker run scheme-venv-test-${SCHEME} bash -c "make SCHEME=${SCHEME} test-r6rs-compile" + @docker run ${DOCKER_IMG} bash -c "make SCHEME=${SCHEME} test-r6rs-compile" test-r7rs-script-docker: build-test-docker-image - @docker run scheme-venv-test-${SCHEME} bash -c "make SCHEME=${SCHEME} test-r7rs-script" + @docker run ${DOCKER_IMG} bash -c "make SCHEME=${SCHEME} test-r7rs-script" test-r7rs-compile-docker: build-test-docker-image - @docker run scheme-venv-test-${SCHEME} bash -c "make SCHEME=${SCHEME} test-r7rs-compile" + @docker run ${DOCKER_IMG} bash -c "make SCHEME=${SCHEME} test-r7rs-compile" install: @mkdir -p ${PREFIX}/bin diff --git a/scheme-venv b/scheme-venv index 2224e65..ad511bd 100755 --- a/scheme-venv +++ b/scheme-venv @@ -165,7 +165,7 @@ if [ "${rnrs}" = "r6rs" ]; then ## R6RS case "${implementation}" in "capyscheme") - scheme_cmd="capy --r6rs -L \"${venvpath}/lib\" --script=\"\${IF}\"" + scheme_cmd="capy --r6rs -L \"${venvpath}/lib\" --script \"\${IF}\"" ;; "chezscheme") if command -v chezscheme >/dev/null 2>&1 @@ -213,14 +213,22 @@ else ## R7RS case "${implementation}" in "capyscheme") - scheme_cmd="capy --r7rs -L \"${venvpath}/lib\" --script=\"\${IF}\"" + scheme_cmd="capy --r7rs -L \"${venvpath}/lib\" --script \"\${IF}\"" ;; "chibi") scheme_cmd="chibi-scheme -I \"${venvpath}/lib\" \"\${IF}\"" ;; "chicken") - scheme_cmd="echo \"Chicken scripts not yet supported\" && exit 1" - scheme_compile_cmd="csc -static -X r7rs -R r7rs -o \"\${OF}\" \"\${IF}\"" + 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 yet supported\" && exit 1" + scheme_compile_cmd="csc -static -X r7rs -R r7rs -o \"\${OF}\" \"\${IF}\"" + else + #scheme_cmd="LD_LIBRARY_PATH=\"${venvpath}/lib\" csi -I \"${venvpath}/lib\" -script \"\${IF}\"" + scheme_cmd="echo \"Chicken script not yet supported\" && exit 1" + scheme_compile_cmd="csc -static -o \"\${OF}\" \"\${IF}\"" + fi ;; "cyclone") scheme_cmd="CYCLONE_LIBRARY_PATH=\"${venvpath}/lib\" icyc -I \"${venvpath}/lib\" \"\${IF}\"" @@ -238,7 +246,9 @@ else scheme_cmd="gosh -r7 -I \"${venvpath}/lib\" \"\${IF}\"" ;; "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 yet supported\" && exit 1" + scheme_compile_cmd="echo \"Guile compiler not yet supported\" && exit 1" ;; "kawa") scheme_cmd="kawa --r7rs --full-tailcalls -Dkawa.import.path=\"${venvpath}/lib/*.sld\" \"\${IF}\"" @@ -254,7 +264,9 @@ else scheme_cmd="meevax -I \"${venvpath}/lib\" \"\${IF}\"" ;; "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 yet supported\" && exit 1" + scheme_compile_cmd="echo \"MIT-scheme compile not yet supported\" && exit 1" ;; "mosh") scheme_cmd="mosh --loadpath=\"${venvpath}/lib\" \"\${IF}\"" @@ -272,7 +284,7 @@ else scheme_cmd="stklos -I \"${venvpath}/lib\" \"\${IF}\"" ;; "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}\"" ;; "ypsilon") scheme_cmd="ypsilon --r7rs --sitelib \"${venvpath}/lib\" --top-level-program \"\${IF}\""