Add version, deb building and update readme
This commit is contained in:
parent
c54520928d
commit
6c3978792c
|
|
@ -2,3 +2,5 @@ venv
|
||||||
compile-test
|
compile-test
|
||||||
*.link
|
*.link
|
||||||
test
|
test
|
||||||
|
*.deb
|
||||||
|
deb
|
||||||
|
|
|
||||||
12
Makefile
12
Makefile
|
|
@ -1,3 +1,5 @@
|
||||||
|
VERSION=1.0.0
|
||||||
|
DEB=scheme-venv-${VERSION}.deb
|
||||||
PREFIX=/usr/local
|
PREFIX=/usr/local
|
||||||
SCHEME=chibi
|
SCHEME=chibi
|
||||||
RNRS=r7rs
|
RNRS=r7rs
|
||||||
|
|
@ -32,6 +34,16 @@ test-script-docker: build-docker-image
|
||||||
test-compile-docker: build-docker-image
|
test-compile-docker: build-docker-image
|
||||||
docker run -v ${PWD}:${PWD} -w ${PWD} ${DOCKERTAG} sh -c "make SCHEME=${SCHEME} RNRS=${RNRS} test-compile"
|
docker run -v ${PWD}:${PWD} -w ${PWD} ${DOCKERTAG} sh -c "make SCHEME=${SCHEME} RNRS=${RNRS} test-compile"
|
||||||
|
|
||||||
|
deb:
|
||||||
|
mkdir -p deb/usr/local/bin
|
||||||
|
cp scheme-venv deb/usr/local/bin/
|
||||||
|
mkdir -p deb/DEBIAN
|
||||||
|
printf "Package: scheme-venv\nArchitecture: amd64\nVersion: ${VERSION}\nSection: misc\nMaintainer: Retropikzel <retropikzel@iki.fi>\nDescription: Tool to create Scheme virtual environments\n" \
|
||||||
|
> deb/DEBIAN/control
|
||||||
|
dpkg-deb -b deb
|
||||||
|
cp deb.deb scheme-venv-latest.deb
|
||||||
|
mv deb.deb scheme-venv-${VERSION}.deb
|
||||||
|
|
||||||
install:
|
install:
|
||||||
@mkdir -p ${PREFIX}/bin
|
@mkdir -p ${PREFIX}/bin
|
||||||
@install scheme-venv ${PREFIX}/bin/scheme-venv
|
@install scheme-venv ${PREFIX}/bin/scheme-venv
|
||||||
|
|
|
||||||
41
README.md
41
README.md
|
|
@ -1,10 +1,47 @@
|
||||||
Tool to create Scheme virtual environments
|
Tool to create Scheme virtual environments
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
## scheme-compile
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
|
||||||
## Chicken
|
## Usage
|
||||||
|
|
||||||
|
scheme-venv chibi r7rs venv
|
||||||
|
|
||||||
|
|
||||||
|
First argument is Scheme, second is RnRS and third is path to directory. The
|
||||||
|
directory must not exist.
|
||||||
|
|
||||||
|
After the virtual environment is created you can activate is with:
|
||||||
|
|
||||||
|
source venv/bin/activate
|
||||||
|
|
||||||
|
|
||||||
|
After activation you can install packages with either snow-chibi or akku and
|
||||||
|
they will be installed inside the virtual environment. To run your Scheme code
|
||||||
|
use either scheme-script or scheme-compile, executables.
|
||||||
|
|
||||||
|
|
||||||
|
R6RS:
|
||||||
|
|
||||||
|
akku install chez-srfi
|
||||||
|
scheme-script main.sps
|
||||||
|
scheme-compile main.sps
|
||||||
|
./main
|
||||||
|
|
||||||
|
R7RS:
|
||||||
|
|
||||||
|
snow-chibi install srfi.64
|
||||||
|
scheme-script main.scm
|
||||||
|
scheme-compile main.scm
|
||||||
|
./main
|
||||||
|
|
||||||
|
|
||||||
|
## Implementation specific notes
|
||||||
|
|
||||||
|
### Chicken
|
||||||
|
|
||||||
- Before compilation the directory is changed to be venv/lib so libraries will be found
|
- Before compilation the directory is changed to be venv/lib so libraries will be found
|
||||||
- venv/include
|
- venv/include
|
||||||
|
|
|
||||||
39
scheme-venv
39
scheme-venv
|
|
@ -47,10 +47,12 @@ if [ "${3}" = "" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d "${3}" ]; then
|
if [ -d "${3}" ]; then
|
||||||
if [ -f "${3}/bin/scheme-venv-info" ]; then
|
if [ -f "${3}" ]; then
|
||||||
echo "Directory is already venv, reiniting..."
|
echo "Path exists"
|
||||||
else
|
exit 1
|
||||||
echo "Path already exists, and is not scheme-venv (no /bin/scheme-venv-info)"
|
fi
|
||||||
|
if [ -d "${3}" ]; then
|
||||||
|
echo "Path exists"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
@ -166,8 +168,8 @@ if [ "${rnrs}" = "r6rs" ]; then
|
||||||
scheme_repl_cmd="mosh --loadpath=\"${venvpath}/lib/.akku/lib\""
|
scheme_repl_cmd="mosh --loadpath=\"${venvpath}/lib/.akku/lib\""
|
||||||
;;
|
;;
|
||||||
"racket")
|
"racket")
|
||||||
scheme_cmd="racket -I scheme/init -l r6rs/run.rkt -S \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
scheme_cmd="PLTCOLLECTS=\"${venvpath}/lib/.akku/lib\" racket -I scheme/init -l r6rs/run.rkt -S \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||||
scheme_repl_cmd="racket -I scheme/init -l r6rs/run.rkt -S \"${venvpath}/lib/.akku/lib\""
|
scheme_repl_cmd="PLTCOLLECTS=\"${venvpath}/lib/.akku/lib\" racket -I scheme/init -l r6rs/run.rkt -S \"${venvpath}/lib/.akku/lib\""
|
||||||
;;
|
;;
|
||||||
"sagittarius")
|
"sagittarius")
|
||||||
scheme_cmd="sash -r6 -L \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
scheme_cmd="sash -r6 -L \"${venvpath}/lib/.akku/lib\" \"\${IF}\""
|
||||||
|
|
@ -217,10 +219,9 @@ else
|
||||||
scheme_repl_cmd="foment -I \"${venvpath}/lib\""
|
scheme_repl_cmd="foment -I \"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"gambit")
|
"gambit")
|
||||||
scheme_cmd="gsi \"${venvpath}/lib/\" \"\${IF}\""
|
scheme_cmd="gsi -:r7rs \"${venvpath}/lib/\" \"\${IF}\""
|
||||||
scheme_repl_cmd="gsi \"${venvpath}/lib/\""
|
scheme_repl_cmd="gsi -:r7rs \"${venvpath}/lib/\""
|
||||||
#scheme_compile_cmd="gsc -o \"\${OF}\" -exe -nopreload \"${venvpath}/lib/\" \"\${IF}\""
|
scheme_compile_cmd="gsc -:r7rs -o \"\${OF}\" -exe -nopreload \"${venvpath}/lib/\" \"\${IF}\""
|
||||||
scheme_compile_cmd="echo \"Gambit compiler not supported\" && exit 1"
|
|
||||||
;;
|
;;
|
||||||
"gauche")
|
"gauche")
|
||||||
scheme_cmd="gosh -r7 -I \"${venvpath}/lib\" \"\${IF}\""
|
scheme_cmd="gosh -r7 -I \"${venvpath}/lib\" \"\${IF}\""
|
||||||
|
|
@ -232,8 +233,9 @@ else
|
||||||
scheme_compile_cmd="echo \"Guile compiler not supported\" && exit 1"
|
scheme_compile_cmd="echo \"Guile compiler not supported\" && exit 1"
|
||||||
;;
|
;;
|
||||||
"kawa")
|
"kawa")
|
||||||
scheme_cmd="kawa -J--add-exports=java.base/jdk.internal.foreign.abi=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign.layout=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign=ALL-UNNAMED -J--enable-native-access=ALL-UNNAMED -J--enable-preview --r7rs --full-tailcalls -Dkawa.import.path=\"${venvpath}/lib/*.sld\" \"\${IF}\""
|
kawa_library_path=$(kawa -e "(display (get-environment-variable \"CLASSPATH\"))" | awk -F'kawa.jar' '{print $1}')
|
||||||
scheme_repl_cmd="kawa -J--add-exports=java.base/jdk.internal.foreign.abi=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign.layout=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign=ALL-UNNAMED -J--enable-native-access=ALL-UNNAMED -J--enable-preview --r7rs --full-tailcalls -Dkawa.import.path=\"${venvpath}/lib/*.sld\""
|
scheme_cmd="kawa -J--add-exports=java.base/jdk.internal.foreign.abi=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign.layout=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign=ALL-UNNAMED -J--enable-native-access=ALL-UNNAMED -Dkawa.import.path=\"${venvpath}/lib/*.sld:${kawa_library_path}/*.sld\" --r7rs --full-tailcalls -f \"\${IF}\""
|
||||||
|
scheme_repl_cmd="kawa -J--add-exports=java.base/jdk.internal.foreign.abi=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign.layout=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign=ALL-UNNAMED -J--enable-native-access=ALL-UNNAMED -Dkawa.import.path=\"${venvpath}/lib/*.sld:${kawa_library_path}/*.sld\" --r7rs --full-tailcalls"
|
||||||
;;
|
;;
|
||||||
"larceny")
|
"larceny")
|
||||||
scheme_cmd="larceny -nobanner -quiet -utf8 -r7 -I \"${venvpath}/lib\" \"\${IF}\""
|
scheme_cmd="larceny -nobanner -quiet -utf8 -r7 -I \"${venvpath}/lib\" \"\${IF}\""
|
||||||
|
|
@ -258,8 +260,8 @@ else
|
||||||
scheme_repl_cmd="mosh --loadpath=\"${venvpath}/lib\""
|
scheme_repl_cmd="mosh --loadpath=\"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"racket")
|
"racket")
|
||||||
scheme_cmd="racket -I r7rs -S \"${venvpath}/lib\" --script \"\${IF}\""
|
scheme_cmd="PLTCOLLECTS=\"${venvpath}/lib\" racket -I r7rs -S \"${venvpath}/lib\" --script \"\${IF}\""
|
||||||
scheme_repl_cmd="racket -I r7rs -S \"${venvpath}/lib\""
|
scheme_repl_cmd="PLTCOLLECTS=\"${venvpath}/lib\" racket -I r7rs -S \"${venvpath}/lib\""
|
||||||
;;
|
;;
|
||||||
"sagittarius")
|
"sagittarius")
|
||||||
scheme_cmd="sash -r7 -L \"${venvpath}/lib\" \"\${IF}\""
|
scheme_cmd="sash -r7 -L \"${venvpath}/lib\" \"\${IF}\""
|
||||||
|
|
@ -333,11 +335,6 @@ else
|
||||||
chmod +x "${venvpath}/bin/scheme-compile"
|
chmod +x "${venvpath}/bin/scheme-compile"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
impls="${implementation}"
|
|
||||||
if [ "${RNRS}" = "" ]; then
|
|
||||||
impls=generic
|
|
||||||
fi
|
|
||||||
|
|
||||||
## bin/snow-chibi
|
## bin/snow-chibi
|
||||||
{
|
{
|
||||||
cat << EOF
|
cat << EOF
|
||||||
|
|
@ -347,7 +344,7 @@ if [ "\${1}" = "install" ]; then
|
||||||
shift
|
shift
|
||||||
snow-chibi \
|
snow-chibi \
|
||||||
install \
|
install \
|
||||||
--impls=${impls} \
|
--impls=${implementation} \
|
||||||
--install-source-dir=${venvpath}/lib \
|
--install-source-dir=${venvpath}/lib \
|
||||||
--install-library-dir=${venvpath}/lib \
|
--install-library-dir=${venvpath}/lib \
|
||||||
--install-data-dir=${venvpath}/lib \
|
--install-data-dir=${venvpath}/lib \
|
||||||
|
|
@ -365,7 +362,7 @@ chmod +x "${venvpath}/bin/snow-chibi"
|
||||||
cat << EOF
|
cat << EOF
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
if [ ! "\${VENV_DEBUG}" = "" ]; then set -x; fi
|
if [ ! "\${VENV_DEBUG}" = "" ]; then set -x; fi
|
||||||
cd "${venvpath}/lib"
|
cd "${venvpath}/lib" || exit 1
|
||||||
akku \$@
|
akku \$@
|
||||||
EOF
|
EOF
|
||||||
} > "${venvpath}/bin/akku"
|
} > "${venvpath}/bin/akku"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue