From 306533561d37efde2d55c0febf4df1f733964614 Mon Sep 17 00:00:00 2001 From: retropikzel Date: Sat, 19 Jul 2025 12:28:19 +0300 Subject: [PATCH] Bring things to new compile-r7rs --- Jenkinsfile | 4 ++-- Makefile | 4 ++-- dockerfiles/Dockerfile.test | 37 ++++++++++++++++++++----------------- 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index a293c4e..b9b27be 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -20,14 +20,14 @@ pipeline { stage("${implementation} install") { catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { sh "docker build --build-arg SCHEME=${implementation} --tag=r7rs-pffi-test-${implementation} -f dockerfiles/Dockerfile.snow-chibi-install-test ." - sh "docker run -v ${WORKSPACE}:/workdir -w /workdir -t r7rs-pffi-test-${implementation} sh -c \"make clean package install-jenkins SCHEME=${implementation} && cp tests/hello.scm /tmp/ && cd /tmp && SCHEME=${implementation} compile-r7rs -o hello hello.scm && ./hello\"" + sh "docker run -v ${WORKSPACE}:/workdir -w /workdir -t r7rs-pffi-test-${implementation} sh -c \"timeout 600 make clean package install-jenkins SCHEME=${implementation} && cp tests/hello.scm /tmp/ && cd /tmp && SCHEME=${implementation} compile-r7rs -o hello hello.scm && ./hello\"" } } tests.each { test -> stage("${implementation} ${test}") { catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { sh "docker build --build-arg SCHEME=${implementation} --tag=r7rs-pffi-test-${implementation} -f dockerfiles/Dockerfile.test ." - sh "docker run -v ${WORKSPACE}:/workdir -w /workdir -t r7rs-pffi-test-${implementation} sh -c \"make SCHEME=${implementation} TEST=${test} clean test\"" + sh "docker run -v ${WORKSPACE}:/workdir -w /workdir -t r7rs-pffi-test-${implementation} sh -c \"timeout 600 make SCHEME=${implementation} TEST=${test} clean test\"" } } } diff --git a/Makefile b/Makefile index 849d60d..83e482c 100644 --- a/Makefile +++ b/Makefile @@ -77,8 +77,8 @@ test-compile-r7rs-wine: wine ./${TEST}.bat test-docker: - docker build --build-arg SCHEME=${SCHEME} --tag=r7rs-pffi-test-${SCHEME} -f dockerfiles/Dockerfile.test . - docker run -it -v "${PWD}:/workdir" -w /workdir -t r7rs-pffi-test-${SCHEME} sh -c "make SCHEME=${SCHEME} TEST=${TEST} test" + docker build --build-arg SCHEME=${SCHEME} --tag=foreign-c-test-${SCHEME} -f dockerfiles/Dockerfile.test . + docker run -it -v "${PWD}:/workdir" -w /workdir -t foreign-c-test-${SCHEME} sh -c "make SCHEME=${SCHEME} TEST=${TEST} test" tmp/test/libtest.o: tests/c-src/libtest.c mkdir -p tmp/test diff --git a/dockerfiles/Dockerfile.test b/dockerfiles/Dockerfile.test index 77b7e9a..337d70d 100644 --- a/dockerfiles/Dockerfile.test +++ b/dockerfiles/Dockerfile.test @@ -1,25 +1,28 @@ ARG SCHEME=chibi -FROM debian:bookworm AS build -RUN apt-get update && apt-get install -y git make chicken-bin build-essential -RUN chicken-install r7rs -RUN git clone https://github.com/Retropikzel/compile-r7rs.git --depth=1 -RUN ls -RUN cd compile-r7rs && make && make install +FROM schemers/chibi:head AS build +RUN apt-get update && apt-get install -y \ + ca-certificates \ + git \ + make \ + build-essential +RUN git clone https://github.com/ashinn/chibi-scheme.git --depth=1 +RUN cd chibi-scheme && make -j 32 +RUN git clone https://gitea.scheme.org/Retropikzel/compile-r7rs.git --depth=1 +RUN cd compile-r7rs --branch=retropikzel-dependency-fixes && make ARG SCHEME=chibi FROM schemers/${SCHEME}:head RUN apt-get update && apt-get install -y \ - build-essential \ - git \ - make \ - libffi8 \ - libgc1 \ - libssl3 \ - libuv1 \ - build-essential \ - libffi-dev \ - libmbedtls-dev -COPY --from=build /usr/local/bin/compile-r7rs /usr/local/bin/compile-r7rs + build-essential \ + git \ + ca-certificates \ + make \ + libffi-dev +RUN mkdir ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm +COPY --from=build /chibi-scheme /chibi-scheme +RUN cd /chibi-scheme && make -j 8 install +COPY --from=build /compile-r7rs /compile-r7rs +RUN cd /compile-r7rs && make install ARG SCHEME=chibi ENV COMPILE_R7RS=${SCHEME} RUN mkdir -p ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm