Fixing testing

This commit is contained in:
retropikzel 2026-01-20 08:34:39 +02:00
parent 35fe526488
commit 9c4c47c3d1
4 changed files with 66 additions and 19 deletions

View File

@ -9,7 +9,7 @@ RUN wget https://gitlab.com/-/project/6808260/uploads/094ce726ce3c6cf8c14560f1e3
&& 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/retropikzel/compile-scheme.git --depth=2
RUN git clone https://codeberg.org/retropikzel/foreign-c-libraries.git --depth=1
WORKDIR /build/chibi-scheme
RUN make
@ -38,14 +38,13 @@ RUN bash install.sh
ENV PATH=/root/.local/bin:${PATH}
RUN akku update
WORKDIR /build/foreign-c
RUN timeout 30 snow-chibi install --impls=${SCHEME} --always-yes "(srfi 64)" || true
RUN timeout 30 snow-chibi install --impls=${SCHEME} --always-yes "(foreign c)" || true
RUN timeout 30 snow-chibi install --impls=${SCHEME} --always-yes "(retropikzel shell)" || true
RUN timeout 30 snow-chibi install --impls=${SCHEME} --always-yes "(retropikzel debug)" || true
RUN snow-chibi install --impls=${SCHEME} --always-yes "(srfi 64)"
RUN snow-chibi install --impls=${SCHEME} --always-yes "(foreign c)"
RUN snow-chibi install --impls=${SCHEME} --always-yes "(retropikzel shell)"
RUN snow-chibi install --impls=${SCHEME} --always-yes "(retropikzel debug)"
RUN make SCHEME=${SCHEME} build install
WORKDIR /workdir
RUN cp -r /build/foreign-c-libraries/retropikzel retropikzel/
RUN cp -r /build/foreign-c/foreign .
COPY Makefile .
COPY srfi srfi/
COPY foreign foreign/

View File

@ -33,24 +33,24 @@ uninstall:
test-r7rs: tmpdir
@if [ "${SCHEME}" = "chibi" ]; then rm -rf ${TMPDIR}/srfi/98.*; fi
cd ${TMPDIR} && echo "(import (scheme base) (scheme write) (scheme file) (scheme process-context) (retropikzel debug) (foreign c) (srfi ${SRFI}) (srfi 64))" > test-r7rs.scm
cd ${TMPDIR} && echo "(import (scheme base) (scheme write) (scheme file) (scheme process-context) (foreign c) (srfi ${SRFI}) (srfi 64))" > test-r7rs.scm
cd ${TMPDIR} && cat srfi/${SRFI}/test.scm >> test-r7rs.scm
cd ${TMPDIR} && COMPILE_R7RS=${SCHEME} compile-scheme -I . -o test-r7rs test-r7rs.scm
cd ${TMPDIR} && printf "\n" | ./test-r7rs
test-r7rs-docker:
docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-srfi-test-${SCHEME} .
docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-srfi-test-${SCHEME} -f Dockerfile.test .
docker run -t foreign-c-srfi-test-${SCHEME} sh -c "make SCHEME=${SCHEME} SRFI=${SRFI} SNOW_CHIBI_ARGS=--always-yes build install test-r7rs"
test-r6rs: tmpdir
cd ${TMPDIR} && echo "(import (rnrs) (retropikzel debug) (foreign c) (srfi :${SRFI}) (srfi :64))" > test-r6rs.sps
cd ${TMPDIR} && echo "(import (rnrs) (foreign c) (srfi :${SRFI}) (srfi :64))" > test-r6rs.sps
cd ${TMPDIR} && cat srfi/${SRFI}/test.scm >> test-r6rs.sps
cd ${TMPDIR} && akku install chez-srfi akku-r7rs #"(foreign c)" "(retropikzel shell)"
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-srfi-test-${SCHEME} .
docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=foreign-c-srfi-test-${SCHEME} -f Dockerfile.test .
docker run -t foreign-c-srfi-test-${SCHEME} sh -c "make SCHEME=${SCHEME} SRFI=${SRFI} test-r6rs"
tmpdir:

View File

@ -8,17 +8,18 @@
(display "Testing TCP socket")
(newline)
(debug (address-family inet))
(debug (address-info v4mapped addrconfig))
(debug (socket-domain stream))
(debug (ip-protocol ip))
;(debug (address-family inet))
;(debug (address-info v4mapped addrconfig))
;(debug (socket-domain stream))
;(debug (ip-protocol ip))
(c-system (string->c-utf8 (string-append "echo \"lol\" | nc -l " sock1-port "&")))
(define sock1 (make-client-socket "127.0.0.1" sock1-port))
(debug sock1)
(debug (utf8->string (socket-recv sock1 3)))
;(debug sock1)
(write (utf8->string (socket-recv sock1 3)))
(newline)
(socket-send sock1 (string->utf8 "Hello from sock1\n"))
@ -26,15 +27,16 @@
(define sock2 (make-server-socket sock2-port))
(debug sock2)
;(debug sock2)
(display (string-append "run: echo \"lol\" | nc 127.0.0.1 " sock2-port))
(newline)
(define client-sock1 (socket-accept sock2))
(debug client-sock1)
;(debug client-sock1)
(socket-send client-sock1 (string->utf8 "Hello from client-sock1\n"))
(debug (utf8->string (socket-recv client-sock1 3)))
(write (utf8->string (socket-recv client-sock1 3)))
(newline)

46
srfi/srfi-106.scm Normal file
View File

@ -0,0 +1,46 @@
(define-library
(srfi 106)
(import (scheme base)
(scheme write)
(scheme process-context)
(foreign c))
(export make-client-socket
make-server-socket
socket?
socket-accept
socket-send
socket-recv
socket-shutdown
socket-close
;socket-input-port
;socket-output-port
call-with-socket
address-family
address-info
socket-domain
ip-protocol
message-type
shutdown-method
socket-merge-flags
socket-purge-flags
*af-inet*
*af-inet6*
*af-unspec*
*sock-stream*
*sock-dgram*
*ai-canonname*
*ai-numerichost*
*ai-v4mapped*
*ai-all*
*ai-addrconfig*
*ipproto-ip*
*ipproto-tcp*
*ipproto-udp*
*msg-peek*
*msg-oob*
*msg-waitall*
*shut-rd*
*shut-wr*
*shut-rdwr*)
(include "106.scm"))