Speed up tests

This commit is contained in:
retropikzel 2025-09-15 16:37:37 +03:00
parent cbe6048d8e
commit 88924af602
4 changed files with 32 additions and 21 deletions

View File

@ -1,22 +1,24 @@
ARG SCHEME=chibi ARG SCHEME=chibi
ARG IMAGE=chibi:head ARG IMAGE=chibi:head
FROM docker.io/debian:trixie-slim AS local-chibi FROM schemers/${IMAGE}
RUN apt-get update && apt-get install -y git ca-certificates make gcc libc-dev FROM debian:trixie AS build
#RUN git clone https://github.com/ashinn/chibi-scheme.git --depth=1 WORKDIR /debs
RUN git clone https://github.com/Retropikzel/chibi-scheme.git --branch gauche-fixes --depth=1 RUN apt-get update && apt-get install \
RUN cd chibi-scheme && make DESTDIR=/opt/chibi -j16 && make DESTDIR=/opt/chibi -j16 install -y \
--no-install-recommends \
--no-install-suggests \
--download-only \
gcc libffi-dev libc-dev cmark make linux-libc-dev
ARG SCHEME=chibi ARG SCHEME=chibi
ARG IMAGE=chibi:head ARG IMAGE=chibi:head
FROM docker.io/schemers/${IMAGE} FROM schemers/${IMAGE}
RUN apt-get update && apt-get install -y make gcc markdown libffi-dev COPY --from=build /var/cache/apt/archives/*.deb /debs/
COPY --from=local-chibi /opt/chibi /opt/chibi RUN dpkg -i /debs/*.deb
COPY --from=docker.io/retropikzel1/compile-r7rs /opt/compile-r7rs /opt/compile-r7rs COPY --from=retropikzel1/compile-r7rs /opt/compile-r7rs /opt/compile-r7rs
ENV PATH=${PATH}:/opt/compile-r7rs/bin:/build/usr/bin
ARG SCHEME=chibi ARG SCHEME=chibi
ENV COMPILE_R7RS=${SCHEME} ENV COMPILE_R7RS=${SCHEME}
ENV GUILE_AUTO_COMPILE=0 ENV GUILE_AUTO_COMPILE=0
RUN mkdir -p ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm RUN mkdir -p ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm
ENV CHIBI_MODULE_PATH=/opt/chibi/usr/local/share/chibi:/opt/chibi/usr/local/lib/chibi
ENV LD_LIBRARY_PATH=/opt/chibi/usr/local/lib:/opt/chibi/usr/local/lib/chibi
ENV PATH=/opt/compile-r7rs/bin:/opt/chibi/usr/local/bin:${PATH}

7
Jenkinsfile vendored
View File

@ -2,7 +2,7 @@ def tests = ['primitives', 'array', 'struct', 'addressof', 'callback']
pipeline { pipeline {
agent { agent {
label 'linux' label 'docker-x86_64'
} }
options { options {
@ -11,6 +11,11 @@ pipeline {
} }
stages { stages {
stage('Cache warmup') {
sh "docker build --build-arg IMAGE=chibi:head --build-arg SCHEME=chibi --tag=foreign-c-test-chibi -f Dockerfile.test ."
}
stage('Tests') { stage('Tests') {
steps { steps {
script { script {

View File

@ -1,12 +1,13 @@
.PHONY: libtest.o tests/libtest.so libtest.a documentation README.html foreign-c.pdf .PHONY: libtest.o tests/libtest.so libtest.a documentation README.html foreign-c.pdf
PDFENGINE=weasyprint PDFENGINE=weasyprint
CC=gcc
VERSION=0.10.6 VERSION=0.10.6
TEST=primitives TEST=primitives
SCHEME=chibi SCHEME=chibi
TMPDIR=tmp/${SCHEME} TMPDIR=tmp/${SCHEME}
SNOW_CHIBI_ARGS="" SNOW_CHIBI_ARGS=""
DOCKERIMG=${SCHEME}:head DOCKERIMG=${SCHEME}:head
CC=gcc
ifeq "${SCHEME}" "chicken" ifeq "${SCHEME}" "chicken"
DOCKERIMG="chicken:5" DOCKERIMG="chicken:5"
endif endif
@ -42,32 +43,34 @@ test: ${TMPDIR}/test/libtest.o ${TMPDIR}/test/libtest.so ${TMPDIR}/test/libtest.
COMPILE_R7RS_CHICKEN="-L -ltest -I. -L." \ COMPILE_R7RS_CHICKEN="-L -ltest -I. -L." \
COMPILE_R7RS=${SCHEME} \ COMPILE_R7RS=${SCHEME} \
compile-r7rs -o ${TEST} ${TEST}.scm compile-r7rs -o ${TEST} ${TEST}.scm
cd ${TMPDIR}/test \ && timeout 60 printf "\n" | LD_LIBRARY_PATH=. ./${TEST} cd ${TMPDIR}/test \ && printf "\n" | LD_LIBRARY_PATH=. ./${TEST}
test-docker: test-docker:
docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-test-${SCHEME} -f Dockerfile.test . docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-test-${SCHEME} -f Dockerfile.test .
docker run -it -v "${PWD}:/workdir" -w /workdir -t foreign-c-test-${SCHEME} sh -c "make SCHEME=${SCHEME} TEST=${TEST} SNOW_CHIBI_ARGS=--always-yes install test" docker run -it -v "${PWD}:/workdir" -w /workdir -t foreign-c-test-${SCHEME} sh -c \
"timeout 120 make SCHEME=${SCHEME} TEST=${TEST} SNOW_CHIBI_ARGS=--always-yes install test"
${TMPDIR}/test/libtest.o: tests/c-src/libtest.c ${TMPDIR}/test/libtest.o: tests/c-src/libtest.c
mkdir -p ${TMPDIR}/test mkdir -p ${TMPDIR}/test
${CC} -o ${TMPDIR}/test/libtest.o -fPIC -c tests/c-src/libtest.c -I./include ${CC} ${CFLAGS} -o ${TMPDIR}/test/libtest.o -fPIC -c tests/c-src/libtest.c -I./include ${LDFLAGS}
${TMPDIR}/test/libtest.so: tests/c-src/libtest.c ${TMPDIR}/test/libtest.so: tests/c-src/libtest.c
mkdir -p ${TMPDIR}/test mkdir -p ${TMPDIR}/test
${CC} -o ${TMPDIR}/test/libtest.so -shared -fPIC tests/c-src/libtest.c -I./include ${CC} ${CFLAGS} -o ${TMPDIR}/test/libtest.so -shared -fPIC tests/c-src/libtest.c -I./include ${LDFLAGS}
${TMPDIR}/test/libtest.a: ${TMPDIR}/test/libtest.o tests/c-src/libtest.c ${TMPDIR}/test/libtest.a: ${TMPDIR}/test/libtest.o tests/c-src/libtest.c
ar rcs ${TMPDIR}/test/libtest.a ${TMPDIR}/test/libtest.o ar rcs ${TMPDIR}/test/libtest.a ${TMPDIR}/test/libtest.o ${LDFLAGS}
${TMPDIR}: ${TMPDIR}:
mkdir -p ${TMPDIR} mkdir -p ${TMPDIR}
README.html: README.md README.html: README.md
markdown README.md > README.html cmark README.md > README.html
chibi: foreign/c/primitives/chibi/foreign-c.stub chibi: foreign/c/primitives/chibi/foreign-c.stub
chibi-ffi foreign/c/primitives/chibi/foreign-c.stub chibi-ffi foreign/c/primitives/chibi/foreign-c.stub
${CC} \ ${CC} \
${CFLAGS} \
-g3 \ -g3 \
-o foreign/c/primitives/chibi/foreign-c.so \ -o foreign/c/primitives/chibi/foreign-c.so \
foreign/c/primitives/chibi/foreign-c.c \ foreign/c/primitives/chibi/foreign-c.c \
@ -79,7 +82,7 @@ gauche:
gauche-package compile \ gauche-package compile \
--srcdir=foreign/c/primitives/gauche \ --srcdir=foreign/c/primitives/gauche \
--cc=${CC} \ --cc=${CC} \
--cflags="-I.foreign/c/primitives/gauche" \ --cflags="${CFLAGS} -I.foreign/c/primitives/gauche" \
--libs=-lffi \ --libs=-lffi \
foreign-c-primitives-gauche foreign-c-primitives-gauche.c gauchelib.scm foreign-c-primitives-gauche foreign-c-primitives-gauche.c gauchelib.scm
mkdir -p foreign/c/lib mkdir -p foreign/c/lib

View File

@ -194,6 +194,7 @@ library directory.
Example for how to install for Gauche: Example for how to install for Gauche:
apt-get install libffi-dev
git clone https://git.sr.ht/~retropikzel/foreign-c git clone https://git.sr.ht/~retropikzel/foreign-c
cd foreign-c cd foreign-c
make SCHEME=gauche make SCHEME=gauche