From eb5eabee408f2b1112be8c1d9133922af81ec3f0 Mon Sep 17 00:00:00 2001 From: retropikzel Date: Fri, 8 May 2026 08:20:59 +0300 Subject: [PATCH] Fixes to SRFI-170 --- .gitignore | 1 + Makefile | 101 +++++++++++++++++----------------------------- README.md | 2 +- srfi/170.sld | 2 +- srfi/170/VERSION | 2 +- srfi/170/test.scm | 6 +-- test-headers.scm | 9 +++++ test-headers.sps | 4 ++ 8 files changed, 56 insertions(+), 71 deletions(-) create mode 100644 test-headers.scm create mode 100644 test-headers.sps diff --git a/.gitignore b/.gitignore index 1f45afb..7a80de4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ venv *.log foreign run-test* +.* diff --git a/Makefile b/Makefile index e91b09c..3bc8d07 100644 --- a/Makefile +++ b/Makefile @@ -12,81 +12,52 @@ TMPDIR=.tmp/${SCHEME} PKG=srfi-${SRFI}-${VERSION}.tgz -DOCKERIMG=${SCHEME}:head -ifeq "${SCHEME}" "chicken" -DOCKERIMG="chicken:5" +SFX=scm +ifeq "${RNRS}" "r6rs" +SFX=sps endif -all: build +DOCKER_TAG=head +ifeq "${SCHEME}" "chicken" +DOCKER_TAG=5 +endif -build: srfi/${SRFI}/LICENSE srfi/${SRFI}/VERSION +all: package + +package: srfi/${SRFI}/LICENSE srfi/${SRFI}/VERSION echo "
$$(cat srfi/${SRFI}/README.md)
" > ${README} - snow-chibi package --version=${VERSION} --authors=${AUTHOR} --doc=${README} --description="${DESCRIPTION}" ${SRFI_FILE} + snow-chibi package \ + --version=${VERSION} \ + --authors=${AUTHOR} \ + --doc=${README} \ + --description="${DESCRIPTION}" \ + ${SRFI_FILE} install: - snow-chibi install --impls=${SCHEME} ${SNOW_CHIBI_ARGS} ${PKG} + snow-chibi install --impls=${SCHEME} ${PKG} uninstall: -snow-chibi remove --impls=${SCHEME} ${PKG} testfiles: - printf "#!r6rs\n(import (rnrs) (srfi :64) (foreign c) (srfi :${SRFI}))" > run-test.sps - cat ${TESTFILE} >> run-test.sps - echo "(import (scheme base) (scheme write) (scheme read) (scheme char) (scheme file) (scheme process-context) (srfi 64) (foreign c) (srfi ${SRFI}))" > run-test.scm - cat ${TESTFILE} >> run-test.scm + rm -rf .tmp + mkdir -p .tmp + cp ${PKG} .tmp + cp -r srfi .tmp/ + cat test-headers.${SFX} ${TESTFILE} | sed 's/SRFI/${SRFI}/' > .tmp/test.${SFX} + cat ${TESTFILE} >> run-test.${SFX} + if [ "${RNRS}" = "r6rs" ]; then if [ -d ../foreign-c ]; then cp -r ../foreign-c/foreign .tmp/; fi; fi -run-test-venv: testfiles build - rm -rf venv - scheme-venv ${SCHEME} ${RNRS} venv - mkdir -p venv/lib/srfi - cp run-test.sps venv/ - cp run-test.scm venv/ - if [ "${RNRS}" = "r6rs" ]; then if [ -d ../foreign-c ]; then cp -r ../foreign-c/foreign venv/lib/; fi; fi - if [ "${RNRS}" = "r6rs" ]; then cp -r srfi/${SRFI}.* venv/lib/srfi/; fi - if [ "${RNRS}" = "r6rs" ]; then ./venv/bin/akku install akku-r7rs; fi - if [ "${RNRS}" = "r7rs" ]; then ./venv/bin/snow-chibi install --always-yes srfi.64; fi - if [ "${RNRS}" = "r7rs" ]; then ./venv/bin/snow-chibi install ${PKG}; fi - if [ "${RNRS}" = "r6rs" ]; then ./venv/bin/scheme-compile venv/run-test.sps; fi - if [ "${RNRS}" = "r7rs" ]; then CSC_OPTIONS="-L -lcurl" ./venv/bin/scheme-compile venv/run-test.scm; fi - ./venv/run-test +test: testfiles package + cd .tmp && COMPILE_R7RS=${SCHEME} compile-r7rs -o test-program test.${SFX} + cd .tmp && ./test-program -run-test-system: testfiles build - if [ "${RNRS}" = "r6rs" ]; then if [ -d ../foreign-c ]; then cp -r ../foreign-c/foreign .; fi; fi - if [ "${RNRS}" = "r6rs" ]; then ./venv/bin/akku install akku-r7rs; fi - if [ "${SCHEME}" = "chicken" ]; then snow-chibi install --always-yes srfi.64; fi - if [ "${SCHEME}-${RNRS}" = "mosh-r7rs" ]; then snow-chibi install --always-yes srfi.64; fi - if [ "${RNRS}" = "r7rs" ]; then snow-chibi install ${PKG}; fi - if [ "${RNRS}" = "r6rs" ]; then COMPILE_R7RS=${SCHEME} compile-scheme test.sps; fi - if [ "${RNRS}" = "r7rs" ]; then COMPILE_R7RS=${SCHEME} compile-scheme test.scm; fi - ./test - -run-test-docker: - docker build --build-arg IMAGE=${DOCKERIMG} -f Dockerfile.test --tag=foreign-c-${SCHEME}-${RNRS} . - docker run -v "${PWD}/logs:/workdir/logs" -w /workdir foreign-c-${SCHEME}-${RNRS} sh -c "make SCHEME=${SCHEME} RNRS=${RNRS} TEST=${TEST} run-test-system; mv *.json logs/ || true" - -test-r7rs: tmpdir - @if [ "${SCHEME}" = "chibi" ]; then rm -rf ${TMPDIR}/srfi/98.*; fi - cd ${TMPDIR} && echo "(import (scheme base) (scheme write) (scheme file) (scheme process-context) (foreign c) (srfi ${SRFI}) (srfi 64))" > test-r7rs.scm - cd ${TMPDIR} && cat srfi/${SRFI}/test.scm >> test-r7rs.scm - cd ${TMPDIR} && COMPILE_R7RS=${SCHEME} compile-scheme -I . -o test-r7rs test-r7rs.scm - cd ${TMPDIR} && printf "\n" | timeout 60 ./test-r7rs - -test-r7rs-docker: - docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-srfi-test-${SCHEME} -f Dockerfile.test . - docker run -t foreign-c-srfi-test-${SCHEME} sh -c "make SCHEME=${SCHEME} SRFI=${SRFI} SNOW_CHIBI_ARGS=--always-yes build install test-r7rs" - -test-r6rs: tmpdir - cd ${TMPDIR} && echo "(import (rnrs) (foreign c) (srfi :${SRFI}) (srfi :64))" > test-r6rs.sps - cd ${TMPDIR} && cat srfi/${SRFI}/test.scm >> test-r6rs.sps - cd ${TMPDIR} && akku install chez-srfi akku-r7rs "(foreign c)" - cd ${TMPDIR} && COMPILE_R7RS=${SCHEME} compile-scheme -I .akku/lib -o test-r6rs test-r6rs.sps - cd ${TMPDIR} && timeout 60 ./test-r6rs - -test-r6rs-docker: - docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-srfi-test-${SCHEME} -f Dockerfile.test . - docker run -t foreign-c-srfi-test-${SCHEME} sh -c "make SCHEME=${SCHEME} SRFI=${SRFI} test-r6rs" - -tmpdir: - rm -rf ${TMPDIR} - mkdir -p ${TMPDIR} - cp -r srfi ${TMPDIR}/ +test-docker: testfiles package + cd .tmp && \ + DOCKER_TAG=${DOCKER_TAG} \ + SNOW_PACKAGES="srfi.64 srfi.60 srfi.145 srfi.180 retropikzel.mouth foreign.c ${PKG}" \ + APT_PACKAGES="libcurl4-openssl-dev" \ + COMPILE_R7RS=${SCHEME} \ + TEST_R7RS_DEBUG=1 \ + CSC_OPIONS="-L -lcurl" \ + test-r7rs -o test-program test.${SFX} diff --git a/README.md b/README.md index 20ea4b9..276b247 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -To SRFI library run +To install SRFI library run make SCHEME=chibi SRFI=106 build install diff --git a/srfi/170.sld b/srfi/170.sld index 98b85c9..dd541a0 100644 --- a/srfi/170.sld +++ b/srfi/170.sld @@ -48,7 +48,7 @@ open-directory read-directory close-directory - real-path + ;real-path ;file-space temp-file-prefix create-temp-file diff --git a/srfi/170/VERSION b/srfi/170/VERSION index d917d3e..845639e 100644 --- a/srfi/170/VERSION +++ b/srfi/170/VERSION @@ -1 +1 @@ -0.1.2 +0.1.4 diff --git a/srfi/170/test.scm b/srfi/170/test.scm index fbb39be..5228fe7 100644 --- a/srfi/170/test.scm +++ b/srfi/170/test.scm @@ -1,9 +1,9 @@ (test-begin "srfi-170") -(display (real-path "Makefile")) -(newline) +;(display (real-path "Makefile")) +;(newline) -(exit 0) +;(exit 0) (define tmp-dir "/tmp/foreign-c-srfi-170") (when (file-exists? tmp-dir) (delete-directory tmp-dir)) diff --git a/test-headers.scm b/test-headers.scm new file mode 100644 index 0000000..72fea0c --- /dev/null +++ b/test-headers.scm @@ -0,0 +1,9 @@ +(import (scheme base) + (scheme write) + (scheme read) + (scheme char) + (scheme file) + (scheme process-context) + (srfi 64) + (foreign c) + (srfi SRFI)) diff --git a/test-headers.sps b/test-headers.sps new file mode 100644 index 0000000..788aba2 --- /dev/null +++ b/test-headers.sps @@ -0,0 +1,4 @@ +(import (rnrs) + (srfi :64) + (foreign c) + (srfi SRFI))