Adding testing
This commit is contained in:
commit
7feda1cade
|
|
@ -0,0 +1,3 @@
|
|||
*/README.html
|
||||
*.tgz
|
||||
tmp
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
FROM debian:trixie
|
||||
RUN apt-get update && apt-get install -y build-essential make docker.io
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
ARG SCHEME=chibi
|
||||
ARG IMAGE=${SCHEME}:head
|
||||
FROM debian:trixie AS cache
|
||||
RUN apt-get update && apt-get install -y git ca-certificates make gcc libffi-dev
|
||||
RUN mkdir ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm
|
||||
WORKDIR /cache
|
||||
RUN git clone https://github.com/ashinn/chibi-scheme.git --depth=1
|
||||
RUN git clone https://codeberg.org/retropikzel/compile-r7rs.git --depth=1 --branch=silence
|
||||
WORKDIR /cache/chibi-scheme
|
||||
RUN make
|
||||
RUN make install
|
||||
WORKDIR /cache/compile-r7rs
|
||||
RUN snow-chibi install --always-yes "(foreign c)"
|
||||
RUN snow-chibi install --always-yes "(srfi 170)"
|
||||
RUN make build-chibi
|
||||
|
||||
ARG SCHEME=chibi
|
||||
ARG IMAGE=${SCHEME}:head
|
||||
FROM schemers/${IMAGE}
|
||||
RUN apt-get update && apt-get install -y make gcc libffi-dev
|
||||
RUN mkdir ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm
|
||||
COPY --from=cache /cache /cache
|
||||
COPY --from=cache /usr/local/share/snow /usr/local/share/snow
|
||||
COPY --from=cache /usr/local/lib/snow /usr/local/lib/snow
|
||||
ARG SCHEME=chibi
|
||||
WORKDIR /cache/compile-r7rs
|
||||
RUN make install
|
||||
WORKDIR /cache/chibi-scheme
|
||||
RUN make install
|
||||
WORKDIR /
|
||||
RUN snow-chibi install --impls=${SCHEME} --always-yes "(srfi 64)"
|
||||
RUN snow-chibi install --impls=${SCHEME} --always-yes "(foreign c)"
|
||||
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
pipeline {
|
||||
agent {
|
||||
dockerfile {
|
||||
filename 'Dockerfile.jenkins'
|
||||
image 'debian'
|
||||
args '--user=root --privileged -v /var/run/docker.sock:/var/run/docker.sock'
|
||||
}
|
||||
}
|
||||
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10'))
|
||||
}
|
||||
|
||||
parameters {
|
||||
string(name: 'LIBRARIES', defaultValue: 'system', description: '')
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Tests') {
|
||||
steps {
|
||||
script {
|
||||
def implementations = sh(script: 'compile-r7rs --list-r7rs-schemes', returnStdout: true).split()
|
||||
|
||||
params.LIBRARIES.split().each { LIBRARY ->
|
||||
stage("${LIBRARY}") {
|
||||
parallel implementations.collectEntries { SCHEME ->
|
||||
[(SCHEME): {
|
||||
stage("${SCHEME}") {
|
||||
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
|
||||
sh "make SCHEME=${SCHEME} clean test-docker"
|
||||
}
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
.SILENT: build install test test-docker clean ${TMPDIR}
|
||||
LIBRARY=system
|
||||
README=${LIBRARY}/README.html
|
||||
DESCRIPTION=$(shell head -n1 ${LIBRARY}/README.md)
|
||||
VERSION=$(shell cat ${LIBRARY}/VERSION)
|
||||
AUTHOR=$(shell cat ${LIBRARY}/AUTHOR | tr '[:upper:]' '[:lower:]')
|
||||
LIBRARY_FILE=${LIBRARY}/${AUTHOR}/${LIBRARY}.sld
|
||||
PKG=${AUTHOR}-${LIBRARY}-${VERSION}.tgz
|
||||
SCHEME=chibi
|
||||
TMPDIR=tmp/${SCHEME}
|
||||
TESTFILE=${LIBRARY}/test.scm
|
||||
|
||||
DOCKERIMG=${SCHEME}:head
|
||||
ifeq "${SCHEME}" "chicken"
|
||||
DOCKERIMG="chicken:5"
|
||||
endif
|
||||
|
||||
all: build
|
||||
|
||||
build: ${LIBRARY}/LICENSE ${LIBRARY}/VERSION ${LIBRARY}/AUTHOR
|
||||
echo "<pre>$$(cat ${LIBRARY}/README.md)</pre>" > ${README}
|
||||
snow-chibi package --version=${VERSION} --authors=${AUTHOR} --doc=${README} --description="${DESCRIPTION}" ${LIBRARY_FILE}
|
||||
|
||||
install:
|
||||
snow-chibi install --impls=${SCHEME} ${SNOW_CHIBI_ARGS} ${PKG}
|
||||
|
||||
uninstall:
|
||||
-snow-chibi remove --impls=${SCHEME} ${PKG}
|
||||
|
||||
${TMPDIR}:
|
||||
@mkdir -p ${TMPDIR}
|
||||
@cp ${TESTFILE} ${TMPDIR}/
|
||||
@cp -r ${LIBRARY} ${TMPDIR}/
|
||||
|
||||
test: ${TMPDIR}
|
||||
echo "Hello"
|
||||
cd ${TMPDIR} && COMPILE_R7RS=${SCHEME} compile-r7rs -I . -o test test.scm
|
||||
cd ${TMPDIR} && ./test
|
||||
|
||||
test-docker: ${TMPDIR}
|
||||
docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-test-${SCHEME} -f Dockerfile.test . 2> ${TMPDIR}/docker.log || cat ${TMPDIR}/docker.log
|
||||
docker run -it -v "${PWD}:/workdir" -w /workdir -t foreign-c-test-${SCHEME} \
|
||||
sh -c "make SCHEME=${SCHEME} SNOW_CHIBI_ARGS=--always-yes build install test; chmod -R 755 ${TMPDIR}"
|
||||
|
||||
clean:
|
||||
find . -name "README.html" -delete
|
||||
rm -rf ${TMPDIR}
|
||||
rm -rf *.tgz
|
||||
|
||||
clean-all:
|
||||
rm -rf tmp
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 5a543f51e99f79b7ee22e19fd235f5f75da4f5a4
|
||||
Loading…
Reference in New Issue