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