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))