diff --git a/Dockerfile.test b/Dockerfile.test index 5e46b7f..17a7514 100644 --- a/Dockerfile.test +++ b/Dockerfile.test @@ -14,11 +14,12 @@ RUN cp -r /var/cache/apt/archives/*.deb . ARG SCHEME=chibi ARG IMAGE=chibi:head FROM schemers/${IMAGE} +RUN mkdir -p ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm COPY --from=build /cache /cache WORKDIR /cache/debs RUN dpkg -i *.deb COPY --from=retropikzel1/compile-r7rs /opt/compile-r7rs /opt/compile-r7rs -RUN /opt/compile-r7rs/bin/install-docker +ENV PATH=/opt/compile-r7rs/bin:${PATH} WORKDIR / ARG SCHEME=chibi ENV COMPILE_R7RS=${SCHEME} diff --git a/Jenkinsfile b/Jenkinsfile index c4fec3e..f7bb762 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,3 @@ -def tests = ['primitives', 'array', 'struct', 'addressof', 'callback'] - pipeline { agent { label 'linux' @@ -11,15 +9,7 @@ pipeline { } stages { - stage('Tests x86_64 Debian') { - agent { - docker { - label 'docker-x86_64' - image 'retropikzel1/compile-r7rs' - args '--user=root --privileged -v /var/run/docker.sock:/var/run/docker.sock' - } - } steps { script { def schemes = "chibi chicken gauche guile kawa mosh racket sagittarius stklos ypsilon" @@ -27,14 +17,10 @@ pipeline { schemes.split().each { SCHEME -> stage("${SCHEME}") { catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { - sh "COMPILE_R7RS=${SCHEME} test-r7rs test.scm" - } - } - stage("${SCHEME} logs") { - catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { - sh "cat .tmp/test/test-r7rs/tmp/*" - sh "cat .tmp/test/test-r7rs/Dockerfile" - sh "cat .tmp/test-r7rs/${SCHEME}/logs/*.log" + def DOCKERIMG="${SCHEME}:head" + sh "docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-test-${SCHEME} -f Dockerfile.test ." + sh "docker run -it -v ${WORKSPACE}:/workdir -w /workdir -t foreign-c-test-${SCHEME} sh -c \"make SCHEME=${SCHEME} SNOW_CHIBI_ARGS=--always-yes install test\"" + archiveArtifacts artifacts: '.tmp/test/*.log', allowEmptyArchive: true, fingerprint: true, onlyIfSuccessful: true } } } diff --git a/Makefile b/Makefile index 0350aa6..07e2bf9 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ .PHONY: libtest.o tests/libtest.so libtest.a documentation README.html SCHEME=chibi +DOCKERIMG=${SCHEME}:head VERSION=0.10.7 CC=gcc TMPDIR=.tmp @@ -32,24 +33,19 @@ install: package uninstall: snow-chibi --impls=${SCHEME} remove "(foreign c)" -test-old: ${TMPDIR}/test/libtest.o ${TMPDIR}/test/libtest.so ${TMPDIR}/test/libtest.a +test: ${TMPDIR}/test/libtest.o ${TMPDIR}/test/libtest.so ${TMPDIR}/test/libtest.a cp -r foreign ${TMPDIR}/test/ cp tests/*.scm ${TMPDIR}/test/ cp tests/c-include/libtest.h ${TMPDIR}/test/ cd ${TMPDIR}/test && \ COMPILE_R7RS_CHICKEN="-L -ltest -I. -L." \ - COMPILE_R7RS=${SCHEME} timeout 600 compile-r7rs -o ${TEST} ${TEST}.scm - cd ${TMPDIR}/test && printf "\n" | LD_LIBRARY_PATH=. timeout 600 ./${TEST} - -test: ${TMPDIR}/test ${TMPDIR}/test/libtest.o ${TMPDIR}/test/libtest.so ${TMPDIR}/test/libtest.a - cp -r foreign ${TMPDIR}/test/ - cp test.scm ${TMPDIR}/test/ - cd ${TMPDIR}/test && COMPILE_R7RS="${SCHEME}" APT_PKGS=libffi-dev test-r7rs ${TEST_R7RS_ARGS} --use-docker-head -I . -o test test.scm + COMPILE_R7RS=${SCHEME} timeout 600 compile-r7rs -o test test.scm + cd ${TMPDIR}/test && printf "\n" | LD_LIBRARY_PATH=. timeout 600 ./test test-docker: 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 \ - "timeout 120 make SCHEME=${SCHEME} TEST=${TEST} SNOW_CHIBI_ARGS=--always-yes install test" + "make SCHEME=${SCHEME} SNOW_CHIBI_ARGS=--always-yes install test" ${TMPDIR}/test/libtest.o: tests/c-src/libtest.c ${TMPDIR}/test ${CC} ${CFLAGS} -o ${TMPDIR}/test/libtest.o -fPIC -c tests/c-src/libtest.c -I./include ${LDFLAGS}