Fix testing

This commit is contained in:
retropikzel 2026-02-12 14:50:32 +02:00
parent 33f37aa77c
commit 9a0f13923e
4 changed files with 80 additions and 57 deletions

1
.gitignore vendored
View File

@ -8,4 +8,5 @@
retropikzel/*/README.html
foreign
venv
tmp

View File

@ -1,45 +1,47 @@
ARG SCHEME=chibi
ARG IMAGE=${SCHEME}:head
FROM debian:trixie AS build
RUN apt-get update && apt-get install -y \
git ca-certificates make gcc libffi-dev libffi-dev wget xz-utils libcurl4
RUN mkdir ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm
ARG IMAGE=chibi:head
FROM docker.io/debian:trixie AS build
RUN apt-get update && apt-get install -y build-essential git ca-certificates curl xz-utils chicken-bin
RUN chicken-install r7rs
WORKDIR /build
RUN wget https://gitlab.com/-/project/6808260/uploads/094ce726ce3c6cf8c14560f1e31aaea0/akku-1.1.0.amd64-linux.tar.xz \
&& tar -xf akku-1.1.0.amd64-linux.tar.xz \
&& mv akku-1.1.0.amd64-linux akku
#RUN git clone https://github.com/ashinn/chibi-scheme.git --depth=2
RUN git clone https://github.com/Retropikzel/chibi-scheme.git --branch=snow-chibi-kawa-fixes --depth=1
RUN git clone https://codeberg.org/retropikzel/compile-scheme.git --depth=2
RUN git clone https://github.com/ashinn/chibi-scheme.git --depth=1
RUN curl -O https://gitlab.com/-/project/6808260/uploads/094ce726ce3c6cf8c14560f1e31aaea0/akku-1.1.0.amd64-linux.tar.xz
RUN tar -xf akku*.tar.xz && mv akku-1.1.0.amd64-linux akku
RUN git clone https://codeberg.org/retropikzel/scheme-venv.git --depth=1
RUN git clone https://codeberg.org/retropikzel/compile-scheme.git --depth=1
WORKDIR /build/chibi-scheme
RUN make
RUN make install
WORKDIR /build/compile-scheme
RUN make build-gauche
RUN mkdir -p /root/.snow && echo "()" > /root/.snow/config.scm
RUN snow-chibi install --impls=chicken --always-yes retropikzel.system
RUN snow-chibi install --impls=chicken --always-yes srfi.170
RUN make build-chicken
ARG SCHEME=chibi
ARG IMAGE=${SCHEME}:head
FROM schemers/${IMAGE}
RUN apt-get update && apt-get install -y \
make gcc libffi-dev libcurl4 gauche lighttpd
RUN mkdir ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm
FROM docker.io/schemers/${IMAGE}
COPY --from=build /build /build
ARG SCHEME=chibi
WORKDIR /build/compile-scheme
RUN make install
RUN apt-get update && apt-get install -y make curl
WORKDIR /build/chibi-scheme
RUN make install
WORKDIR /build/akku
RUN bash install.sh
ENV PATH=/root/.local/bin:${PATH}
RUN akku update
RUN ln -sf /root/.local/bin/akku /usr/local/bin/akku
WORKDIR /build/scheme-venv
RUN make install
WORKDIR /build/compile-scheme
RUN make install
RUN mkdir -p /root/.snow && echo "()" > /root/.snow/config.scm
WORKDIR /workdir
COPY fcgi-lighttpd.conf .
RUN snow-chibi --impls=${SCHEME} --always-yes install "(srfi 60)"
RUN snow-chibi --impls=${SCHEME} --always-yes install "(srfi 64)"
RUN if [ "${SCHEME}" != "gauche" ]; then snow-chibi --impls=${SCHEME} --always-yes install "(srfi 106)"; fi
RUN if [ "${SCHEME}" != "gauche" ]; then snow-chibi --impls=${SCHEME} --always-yes install --install-source-dir=. --install-library-dir=. "(srfi 106)"; fi
RUN snow-chibi --impls=${SCHEME} --always-yes install "(srfi 180)"
ARG SCHEME=chibi
ENV COMPILE_R7RS=${SCHEME}
COPY Makefile .
COPY retropikzel retropikzel/
RUN akku install loko-srfi

6
Jenkinsfile vendored
View File

@ -14,7 +14,7 @@ pipeline {
}
parameters {
string(name: 'LIBRARIES', defaultValue: 'ctrf', description: '')
string(name: 'LIBRARIES', defaultValue: 'ctrf mouth string url-encoding', description: '')
}
stages {
@ -28,7 +28,7 @@ pipeline {
[(SCHEME): {
stage("${SCHEME}") {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
sh "timeout 600 make SCHEME=${SCHEME} DOCKER_QUIET='' test-r6rs-docker"
sh "timeout 600 make SCHEME=${SCHEME} LIBRARY=${LIBRARY} RNRS=r6rs run-test-docker"
}
}
}]
@ -48,7 +48,7 @@ pipeline {
[(SCHEME): {
stage("${SCHEME}") {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
sh "timeout 600 make SCHEME=${SCHEME} DOCKER_QUIET='' test-r7rs-docker"
sh "timeout 600 make SCHEME=${SCHEME} LIBRARY=${LIBRARY} RNRS=r7rs run-test-docker"
}
}
}]

View File

@ -16,7 +16,6 @@ DOCKERIMG=${SCHEME}:head
ifeq "${SCHEME}" "chicken"
DOCKERIMG="chicken:5"
endif
DOCKER_TAG=scheme-library-test-${SCHEME}
all: build
@ -30,32 +29,53 @@ install:
uninstall:
-snow-chibi remove --impls=${SCHEME} ${PKG}
init-venv: build
@rm -rf venv
@scheme-venv ${SCHEME} ${RNRS} venv
@echo "(import (scheme base) (scheme write) (scheme read) (scheme char) (scheme file) (scheme process-context) (retropikzel mouth) (srfi 64) (retropikzel ctrf) (retropikzel ${LIBRARY}))" > venv/test.scm
@echo "(test-runner-current (ctrf-runner))" >> venv/test.scm
@printf "#!r6rs\n(import (rnrs) (srfi :64) (srfi :98) (retropikzel mouth) (retropikzel ${LIBRARY}))" > venv/test.sps
@cat ${TESTFILE} >> venv/test.scm
@cat ${TESTFILE} >> venv/test.sps
@if [ "${RNRS}" = "r7rs" ]; then ./venv/bin/snow-chibi install retropikzel.mouth; fi
@if [ "${RNRS}" = "r7rs" ]; then ./venv/bin/snow-chibi install --always-yes retropikzel.ctrf; fi
@if [ "${RNRS}" = "r6rs" ]; then if [ -d ../foreign-c ]; then cp -r ../foreign-c/foreign venv/lib/; fi; fi
@if [ "${RNRS}" = "r6rs" ]; then if [ -d ../foreign-c-srfis ]; then cp -r ../foreign-c-srfis/srfi venv/lib/; fi; fi
@if [ "${RNRS}" = "r6rs" ]; then cp -r retropikzel venv/lib/; fi
@if [ "${SCHEME}" = "chezscheme" ]; then ./venv/bin/akku install akku-r7rs chez-srfi; fi
@if [ "${SCHEME}" = "ikarus" ]; then ./venv/bin/akku install akku-r7rs chez-srfi; fi
@if [ "${SCHEME}" = "ironscheme" ]; then ./venv/bin/akku install akku-r7rs chez-srfi; fi
@if [ "${SCHEME}" = "racket" ]; then ./venv/bin/akku install akku-r7rs chez-srfi; fi
@if [ "${RNRS}" = "r6rs" ]; then ./venv/bin/akku install; fi
@if [ "${SCHEME}" = "chicken" ]; then ./venv/bin/snow-chibi install --always-yes srfi.64; fi
@if [ "${SCHEME}-${RNRS}" = "mosh-r7rs" ]; then ./venv/bin/snow-chibi install --always-yes srfi.64; fi
@if [ "${RNRS}" = "r7rs" ]; then ./venv/bin/snow-chibi install ${PKG}; fi
run-test: init-venv
run-test-venv: build
rm -rf venv
scheme-venv ${SCHEME} ${RNRS} venv
echo "(import (scheme base) (scheme write) (scheme read) (scheme char) (scheme file) (scheme process-context) (retropikzel mouth) (srfi 64) (retropikzel ctrf) (retropikzel ${LIBRARY}))" > venv/test.scm
echo "(test-runner-current (ctrf-runner))" >> venv/test.scm
printf "#!r6rs\n(import (rnrs) (srfi :64) (srfi :98) (retropikzel mouth) (retropikzel ${LIBRARY}))" > venv/test.sps
cat ${TESTFILE} >> venv/test.scm
cat ${TESTFILE} >> venv/test.sps
if [ "${RNRS}" = "r7rs" ]; then ./venv/bin/snow-chibi install --always-yes srfi.64; fi
if [ "${RNRS}" = "r7rs" ]; then ./venv/bin/snow-chibi install retropikzel.mouth; fi
if [ "${RNRS}" = "r7rs" ]; then printf "1\n1\n" | ./venv/bin/snow-chibi install retropikzel.ctrf; fi
if [ "${RNRS}" = "r6rs" ]; then cp -r retropikzel venv/lib/; fi
if [ "${SCHEME}" = "chezscheme" ]; then ./venv/bin/akku install akku-r7rs chez-srfi; fi
if [ "${SCHEME}" = "ikarus" ]; then ./venv/bin/akku install akku-r7rs chez-srfi; fi
if [ "${SCHEME}" = "ironscheme" ]; then ./venv/bin/akku install akku-r7rs chez-srfi; fi
if [ "${SCHEME}" = "racket" ]; then ./venv/bin/akku install akku-r7rs chez-srfi; fi
if [ "${RNRS}" = "r6rs" ]; then ./venv/bin/akku install; fi
if [ "${SCHEME}-${RNRS}" = "mosh-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/test.sps; fi
if [ "${RNRS}" = "r7rs" ]; then VENV_CSC_ARGS="-L -lcurl" ./venv/bin/scheme-compile venv/test.scm; fi
if [ "${RNRS}" = "r7rs" ]; then CSC_OPTIONS="-L -lcurl" ./venv/bin/scheme-compile venv/test.scm; fi
./venv/test
run-test-system: build
mkdir -p tmp
echo "(import (scheme base) (scheme write) (scheme read) (scheme char) (scheme file) (scheme process-context) (retropikzel mouth) (srfi 64) (retropikzel ctrf) (retropikzel ${LIBRARY}))" > tmp/test.scm
echo "(test-runner-current (ctrf-runner))" >> tmp/test.scm
printf "#!r6rs\n(import (rnrs) (srfi :64) (srfi :98) (retropikzel mouth) (retropikzel ${LIBRARY}))" > tmp/test.sps
cat ${TESTFILE} >> tmp/test.scm
cat ${TESTFILE} >> tmp/test.sps
if [ "${RNRS}" = "r7rs" ]; then snow-chibi install --always-yes srfi.64; fi
if [ "${RNRS}" = "r7rs" ]; then snow-chibi install retropikzel.mouth; fi
if [ "${RNRS}" = "r7rs" ]; then printf "1\n1\n" | snow-chibi install retropikzel.ctrf; fi
if [ "${SCHEME}" = "chezscheme" ]; then akku install akku-r7rs chez-srfi; fi
if [ "${SCHEME}" = "ikarus" ]; then akku install akku-r7rs chez-srfi; fi
if [ "${SCHEME}" = "ironscheme" ]; then akku install akku-r7rs chez-srfi; fi
if [ "${SCHEME}" = "racket" ]; then akku install akku-r7rs chez-srfi; fi
if [ "${RNRS}" = "r6rs" ]; then akku install; 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_SCHEME=${SCHEME} compile-scheme tmp/test.sps; fi
if [ "${RNRS}" = "r7rs" ]; then COMPILE_SCHEME=${SCHEME} CSC_OPTIONS="-L -lcurl" compile-scheme tmp/test.scm; fi
./tmp/test
run-test-docker:
docker build --build-arg IMAGE=${DOCKERIMG} -f Dockerfile.test --tag=scheme-libraries-${SCHEME}-${RNRS} .
docker run scheme-libraries-${SCHEME}-${RNRS} sh -c "make SCHEME=${SCHEME} RNRS=${RNRS} LIBRARY=${LIBRARY} run-test-system ; chmod 755 *.json"
clean:
git clean -X -f