diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b143b09 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,46 @@ +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 +RUN mkdir ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm +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=1 +RUN git clone https://codeberg.org/retropikzel/compile-scheme.git --depth=1 +RUN git clone https://codeberg.org/foreign-c/foreign-c.git --depth=1 +WORKDIR /build/chibi-scheme +RUN make +RUN make install +WORKDIR /build/compile-scheme +RUN make build-gauche +WORKDIR /build +RUN akku install chez-srfi akku-r7rs "(foreign c)" + +ARG SCHEME=chibi +ARG IMAGE=${SCHEME}:head +FROM schemers/${IMAGE} +RUN apt-get update && apt-get install -y make gcc libffi-dev libcurl4 gauche +RUN mkdir ${HOME}/.snow && echo "()" > ${HOME}/.snow/config.scm +COPY --from=build /build /build +ARG SCHEME=chibi +WORKDIR /build/compile-scheme +RUN make install +WORKDIR /build/chibi-scheme +RUN make install +WORKDIR /build/chibi-scheme +RUN make install +WORKDIR /build/akku +RUN bash install.sh +ENV PATH=/root/.local/bin:${PATH} +RUN akku update +WORKDIR / +RUN snow-chibi install --impls=${SCHEME} --always-yes "(srfi 64)" +RUN snow-chibi install --impls=${SCHEME} --always-yes "(foreign c)" +WORKDIR /workdir +COPY Makefile . +COPY retropikzel retropikzel/ +COPY /build/.akku .akku + diff --git a/Dockerfile-r6rs.test b/Dockerfile-r6rs.test deleted file mode 100644 index e69de29..0000000 diff --git a/Dockerfile.jenkins b/Dockerfile.jenkins deleted file mode 100644 index af9ea53..0000000 --- a/Dockerfile.jenkins +++ /dev/null @@ -1,14 +0,0 @@ -FROM debian:trixie -RUN apt-get update && apt-get install -y \ - build-essential make docker.io git ca-certificates libffi-dev -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 /chibi-scheme -RUN make -RUN make install -WORKDIR /compile-r7rs -RUN snow-chibi install --always-yes "(foreign c)" -RUN snow-chibi install --always-yes "(srfi 170)" -RUN make build-chibi -RUN make install - diff --git a/Dockerfile.test b/Dockerfile.test deleted file mode 100644 index 4ba8ce6..0000000 --- a/Dockerfile.test +++ /dev/null @@ -1,36 +0,0 @@ -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)" -WORKDIR /workdir -COPY Makefile . -COPY retropikzel retropikzel/ - diff --git a/Makefile b/Makefile index 028b885..a1b3cd2 100644 --- a/Makefile +++ b/Makefile @@ -29,8 +29,12 @@ install: uninstall: -snow-chibi remove --impls=${SCHEME} ${PKG} -tmpdir: +.akku: + akku install chez-srfi akku-r7rs "(foreign c)" + +tmpdir: .akku mkdir -p ${TMPDIR} + cp -r .akku ${TMPDIR}/ cp ${TESTFILE} ${TMPDIR}/ mkdir -p ${TMPDIR}/retropikzel cp -r retropikzel/${LIBRARY} ${TMPDIR}/retropikzel/ @@ -43,19 +47,18 @@ test-r7rs: tmpdir cd ${TMPDIR} && printf "\n" | ./test-r7rs test-r7rs-docker: - docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-library-test-${SCHEME} -f Dockerfile.test . + docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-library-test-${SCHEME} . docker run -t foreign-c-library-test-${SCHEME} sh -c "make SCHEME=${SCHEME} test-r7rs" test-r6rs: tmpdir - cp -r ../foreign-c/foreign ${TMPDIR}/ cd ${TMPDIR} && echo "(import (rnrs) (retropikzel ${LIBRARY}) (srfi :64))" > test-r6rs.sps cd ${TMPDIR} && cat retropikzel/${LIBRARY}/test.scm >> test-r6rs.sps - cd ${TMPDIR} && akku install chez-srfi akku-r7rs + cd ${TMPDIR} && akku install cd ${TMPDIR} && COMPILE_R7RS=${SCHEME} compile-scheme -I .akku/lib -o test-r6rs test-r6rs.sps cd ${TMPDIR} && ./test-r6rs test-r6rs-docker: - docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-library-test-${SCHEME} -f Dockerfile.test . + docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-library-test-${SCHEME} . docker run -t foreign-c-library-test-${SCHEME} sh -c "make SCHEME=${SCHEME} test-r6rs"