From c55ac3c3f613b5535023f2895877fa8e8e1e0de9 Mon Sep 17 00:00:00 2001 From: retropikzel Date: Fri, 28 Nov 2025 12:21:02 +0200 Subject: [PATCH] Improving testing --- Dockerfile | 7 +++++-- Makefile | 42 +++++++++++++++--------------------------- 2 files changed, 20 insertions(+), 29 deletions(-) diff --git a/Dockerfile b/Dockerfile index 544ae0f..58f1400 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,7 @@ RUN wget https://gitlab.com/-/project/6808260/uploads/094ce726ce3c6cf8c14560f1e3 && mv akku-1.1.0.amd64-linux akku RUN git clone https://github.com/ashinn/chibi-scheme.git --depth=1 RUN git clone https://codeberg.org/retropikzel/compile-scheme.git --depth=1 +RUN git clone https://codeberg.org/foreign-c/foreign-c.git --depth=1 WORKDIR /build/chibi-scheme RUN make RUN make install @@ -19,7 +20,7 @@ RUN make build-gauche ARG SCHEME=chibi ARG IMAGE=${SCHEME}:head FROM schemers/${IMAGE} -RUN apt-get update && apt-get install -y make libffi-dev libcurl4 gauche +RUN apt-get update && apt-get install -y make gcc libffi-dev libcurl4 gauche RUN mkdir ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm COPY --from=build /build /build ARG SCHEME=chibi @@ -33,10 +34,12 @@ WORKDIR /build/akku RUN bash install.sh ENV PATH=/root/.local/bin:${PATH} RUN akku update -WORKDIR / +WORKDIR /build/foreign-c RUN timeout 60 snow-chibi install --impls=${SCHEME} --always-yes "(srfi 64)" RUN timeout 60 snow-chibi install --impls=${SCHEME} --always-yes "(foreign c)" +RUN make SCHEME=${SCHEME} build install WORKDIR /workdir +RUN cp -r /build/foreign-c/foreign . COPY Makefile . COPY retropikzel retropikzel/ diff --git a/Makefile b/Makefile index 4d887dd..ca64f67 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.SILENT: build install test test-docker clean ${TMPDIR} +.SILENT: build install test test-docker clean SCHEME=chibi LIBRARY=system AUTHOR=Retropikzel @@ -9,8 +9,7 @@ DESCRIPTION=$(shell head -n1 retropikzel/${LIBRARY}/README.md) README=retropikzel/${LIBRARY}/README.html TESTFILE=retropikzel/${LIBRARY}/test.scm -PKG=foreign-c-${LIBRARY}-${VERSION}.tgz -TMPDIR=.tmp/${LIBRARY}/${SCHEME} +PKG=retropikzel-${LIBRARY}-${VERSION}.tgz DOCKERIMG=${SCHEME}:head ifeq "${SCHEME}" "chicken" @@ -29,37 +28,26 @@ install: uninstall: -snow-chibi remove --impls=${SCHEME} ${PKG} -.akku: - akku install chez-srfi akku-r7rs - -tmpdir: .akku - mkdir -p ${TMPDIR} - cp ${TESTFILE} ${TMPDIR}/ - mkdir -p ${TMPDIR}/retropikzel - cp -r retropikzel/${LIBRARY} ${TMPDIR}/retropikzel/ - cp -r retropikzel/${LIBRARY}.s* ${TMPDIR}/retropikzel/ - -test-r7rs: tmpdir - cd ${TMPDIR} && echo "(import (scheme base) (scheme write) (scheme file) (scheme process-context) (retropikzel ${LIBRARY}) (srfi 64))" > test-r7rs.scm - cd ${TMPDIR} && cat retropikzel/${LIBRARY}/test.scm >> test-r7rs.scm - cd ${TMPDIR} && COMPILE_R7RS=${SCHEME} compile-scheme -I . -o test-r7rs test-r7rs.scm - cd ${TMPDIR} && printf "\n" | ./test-r7rs +test-r7rs: + echo "(import (scheme base) (scheme write) (scheme file) (scheme process-context) (retropikzel ${LIBRARY}) (srfi 64))" > test-r7rs.scm + cat retropikzel/${LIBRARY}/test.scm >> test-r7rs.scm + COMPILE_R7RS=${SCHEME} compile-scheme -I . -o test-r7rs test-r7rs.scm + printf "\n" | ./test-r7rs test-r7rs-docker: docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-library-test-${SCHEME} . - docker run -t foreign-c-library-test-${SCHEME} sh -c "make SCHEME=${SCHEME} test-r7rs" + docker run -t foreign-c-library-test-${SCHEME} sh -c "make SCHEME=${SCHEME} LIBRARY=${LIBRARY} build install test-r7rs" -test-r6rs: tmpdir - cd ${TMPDIR} && echo "(import (rnrs) (retropikzel ${LIBRARY}) (srfi :64))" > test-r6rs.sps - cd ${TMPDIR} && cat retropikzel/${LIBRARY}/test.scm >> test-r6rs.sps - cd ${TMPDIR} && akku install - cp -r .akku/* ${TMPDIR}/.akku/ - cd ${TMPDIR} && COMPILE_R7RS=${SCHEME} compile-scheme -I .akku/lib -o test-r6rs test-r6rs.sps - cd ${TMPDIR} && ./test-r6rs +test-r6rs: + echo "(import (rnrs) (retropikzel ${LIBRARY}) (srfi :64))" > test-r6rs.sps + cat retropikzel/${LIBRARY}/test.scm >> test-r6rs.sps + akku install chez-srfi akku-r7rs + COMPILE_R7RS=${SCHEME} compile-scheme -I .akku/lib -o test-r6rs test-r6rs.sps + ./test-r6rs test-r6rs-docker: docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-library-test-${SCHEME} . - docker run -t foreign-c-library-test-${SCHEME} sh -c "make SCHEME=${SCHEME} test-r6rs" + docker run -t foreign-c-library-test-${SCHEME} sh -c "make SCHEME=${SCHEME} LIBRARY=${LIBRARY} test-r6rs" clean: git clean -X -f