From 2ebbaad859738941d55ab250768b6e27e34d5b0f Mon Sep 17 00:00:00 2001 From: retropikzel Date: Fri, 27 Jun 2025 20:14:11 +0300 Subject: [PATCH] Working towards snow-fort release --- Jenkinsfile | 2 +- Makefile | 9 ++++----- documentation/foreign-c.pdf | Bin 46215 -> 46212 bytes 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 4a729f8..7e842fe 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -26,7 +26,7 @@ pipeline { stage("${implementation} snow-chibi install test") { catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { sh "docker build --build-arg COMPILE_R7RS=${implementation} --tag=r7rs-pffi-test-${implementation} -f dockerfiles/Dockerfile.snow-chibi-install-test ." - sh "docker run -v ${WORKSPACE}:/workdir -w /workdir -t r7rs-pffi-test-${implementation} sh -c \"make snow-chibi-install COMPILE_R7RS=${implementation} && cp tests/hello.scm /tmp/ && cd /tmp && COMPILE_R7RS=${implementation} compile-r7rs -o hello hello.scm && ./hello\"" + sh "docker run -v ${WORKSPACE}:/workdir -w /workdir -t r7rs-pffi-test-${implementation} sh -c \"make build install COMPILE_R7RS=${implementation} && cp tests/hello.scm /tmp/ && cd /tmp && COMPILE_R7RS=${implementation} compile-r7rs -o hello hello.scm && ./hello\"" } } } diff --git a/Makefile b/Makefile index 45f6799..8acd7d3 100644 --- a/Makefile +++ b/Makefile @@ -4,8 +4,9 @@ DOCKER=docker run -it -v ${PWD}:/workdir DOCKER_INIT=cd /workdir && make clean && VERSION=$(shell awk '/version:/{ print $$2 }' README.md ) TESTNAME=primitives +COMPILE_R7RS=chibi -package: documentation +build: documentation snow-chibi package \ --version=${VERSION} \ --authors="Retropikzel" \ @@ -14,12 +15,9 @@ package: documentation --description="Portable foreign function interface for R7RS Schemes" \ foreign/c.sld -snow-chibi-install: clean-package package +install: snow-chibi --impls=${COMPILE_R7RS} install foreign-c-${VERSION}.tgz -clean-package: - rm -rf *.tgz - test-java: tmp/test/libtest.o tmp/test/libtest.so tmp/test/libtest.a mkdir -p tmp/test cp kawa.jar tmp/test/ @@ -160,3 +158,4 @@ clean: find . -name "*@gambit*" -delete rm -rf tmp rm foreign/c/primitives/chibi/foreign-c.c + rm -rf *.tgz diff --git a/documentation/foreign-c.pdf b/documentation/foreign-c.pdf index dada921e886e0c00eea82b1e947c3cc1ee3e5228..b4541a3f9a63424d93f87d004175e05bcfe43f47 100644 GIT binary patch delta 19571 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 N83-^6B_%~qMhdfE#?Sx& delta 19531 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 VWOH