picolisp: update to 21.12 (#9084)
This commit is contained in:
parent
edda0357c0
commit
6fe370b6cd
|
@ -1,84 +1,77 @@
|
||||||
TERMUX_PKG_HOMEPAGE=https://picolisp.com/wiki/?home
|
TERMUX_PKG_HOMEPAGE=https://picolisp.com/wiki/?home
|
||||||
TERMUX_PKG_DESCRIPTION="Lisp interpreter and application server framework"
|
TERMUX_PKG_DESCRIPTION="Lisp interpreter and application server framework"
|
||||||
TERMUX_PKG_LICENSE="MIT"
|
TERMUX_PKG_LICENSE="MIT"
|
||||||
# TERMUX_PKG_SRCDIR is overriden below
|
TERMUX_PKG_LICENSE_FILE="COPYING"
|
||||||
TERMUX_PKG_LICENSE_FILE="../COPYING"
|
|
||||||
TERMUX_PKG_MAINTAINER="@termux"
|
TERMUX_PKG_MAINTAINER="@termux"
|
||||||
TERMUX_PKG_VERSION=20.7.24
|
TERMUX_PKG_VERSION=21.12
|
||||||
TERMUX_PKG_REVISION=2
|
TERMUX_PKG_SRCURL=http://archive.ubuntu.com/ubuntu/pool/universe/p/picolisp/picolisp_$TERMUX_PKG_VERSION.orig.tar.gz
|
||||||
# We use our source copies since old version snapshots are not kept on main site.
|
TERMUX_PKG_SHA256=a06838236b7f5b52c5d587d32d31627f73cdb9775cc02a80f2cdaedd12888c7d
|
||||||
TERMUX_PKG_SRCURL=https://github.com/termux/distfiles/releases/download/2021.01.04/picolisp_${TERMUX_PKG_VERSION}.tar.gz
|
TERMUX_PKG_DEPENDS="libcrypt, libffi, openssl, readline"
|
||||||
TERMUX_PKG_SHA256=72e8d394ad32a6659210ac2cc4b7bb736dc9b94c6ac8d6296506b6dfdc92f90c
|
|
||||||
TERMUX_PKG_DEPENDS="libcrypt, openssl"
|
|
||||||
TERMUX_PKG_BUILD_IN_SRC=true
|
TERMUX_PKG_BUILD_IN_SRC=true
|
||||||
# arm and i686: The c code uses gcc-specific "variable length array in structure":
|
# For 32-bit archs we nees to build minipicolisp
|
||||||
# x86_64: The assembly is not position-independent:
|
TERMUX_PKG_BLACKLISTED_ARCHES="arm, i686"
|
||||||
TERMUX_PKG_BLACKLISTED_ARCHES="arm, i686, x86_64"
|
|
||||||
|
|
||||||
termux_step_pre_configure() {
|
termux_step_make() {
|
||||||
# Certain packages are not safe to build on device because their
|
cd $TERMUX_PKG_SRCDIR/src
|
||||||
# build.sh script deletes specific files in $TERMUX_PREFIX.
|
opt-12 -O3 --mtriple=$CCTERMUX_HOST_PLATFORM -o base.bc base.ll
|
||||||
if $TERMUX_ON_DEVICE_BUILD; then
|
$CC -O3 -w -c -D_OS="\"Android\"" -D_CPU="\"$TERMUX_ARCH\"" `$PKGCONFIG --cflags libffi` -emit-llvm lib.c
|
||||||
termux_error_exit "Package '$TERMUX_PKG_NAME' is not safe for on-device builds."
|
llvm-link-12 -o picolisp.bc base.bc lib.bc
|
||||||
fi
|
mkdir -p ../bin ../lib
|
||||||
|
llc-12 --mtriple=$CCTERMUX_HOST_PLATFORM picolisp.bc -relocation-model=pic -o picolisp.s
|
||||||
|
$CC $CFLAGS $LDFLAGS picolisp.s -o ../bin/picolisp -rdynamic -lutil -lm -ldl -lreadline -lffi
|
||||||
|
$STRIP ../bin/picolisp
|
||||||
|
|
||||||
# Validate that we have the right version:
|
opt-12 -O3 --mtriple=$CCTERMUX_HOST_PLATFORM -o ext.bc ext.ll
|
||||||
grep -q "Version ${TERMUX_PKG_VERSION//./ }" src64/version.l || {
|
llc-12 --mtriple=$CCTERMUX_HOST_PLATFORM ext.bc -relocation-model=pic -o ext.s
|
||||||
termux_error_exit "Picolisp version needs to be bumped"
|
$CC $CFLAGS $LDFLAGS ext.s -o ../lib/ext.so -shared
|
||||||
}
|
$STRIP ../lib/ext.so
|
||||||
|
|
||||||
if [ $TERMUX_ARCH_BITS = 64 ]; then
|
opt-12 -O3 --mtriple=$CCTERMUX_HOST_PLATFORM -o ht.bc ht.ll
|
||||||
cd $TERMUX_PKG_SRCDIR
|
llc-12 --mtriple=$CCTERMUX_HOST_PLATFORM ht.bc -relocation-model=pic -o ht.s
|
||||||
if [ $TERMUX_ARCH = "aarch64" ]; then
|
$CC $CFLAGS $LDFLAGS ht.s -o ../lib/ht.so -shared
|
||||||
export TERMUX_PKG_EXTRA_MAKE_ARGS=arm64.android
|
$STRIP ../lib/ht.so
|
||||||
else
|
|
||||||
termux_error_exit "Unsupported arch: $TERMUX_ARCH"
|
$CC -O3 -w $CFLAGS -I$TERMUX_PREFIX/include -L$TERMUX_PREFIX/lib $LDFLAGS -o ../bin/balance balance.c
|
||||||
fi
|
$CC -O3 -w $CFLAGS -I$TERMUX_PREFIX/include -L$TERMUX_PREFIX/lib $LDFLAGS -o ../bin/ssl ssl.c -lssl -lcrypto
|
||||||
TERMUX_PKG_SRCDIR=$TERMUX_PKG_SRCDIR/src64
|
$CC -O3 -w $CFLAGS -I$TERMUX_PREFIX/include -L$TERMUX_PREFIX/lib $LDFLAGS -o ../bin/httpGate httpGate.c -lssl -lcrypto
|
||||||
else
|
|
||||||
TERMUX_PKG_SRCDIR=$TERMUX_PKG_SRCDIR/src
|
$CC -O3 -w -D_OS="\"Android\"" -D_CPU="\"$TERMUX_ARCH\"" $CFLAGS -I$TERMUX_PREFIX/include -L$TERMUX_PREFIX/lib $LDFLAGS sysdefs.c -o ../bin/sysdefs-gen
|
||||||
fi
|
|
||||||
TERMUX_PKG_BUILDDIR=$TERMUX_PKG_SRCDIR
|
$STRIP ../bin/balance
|
||||||
ORIG_CFLAGS="$CFLAGS"
|
$STRIP ../bin/ssl
|
||||||
CFLAGS+=" -c $LDFLAGS $CPPFLAGS"
|
$STRIP ../bin/httpGate
|
||||||
|
$STRIP ../bin/sysdefs-gen
|
||||||
}
|
}
|
||||||
|
|
||||||
termux_step_make_install() {
|
termux_step_make_install() {
|
||||||
cd $TERMUX_PKG_SRCDIR/
|
cd $TERMUX_PKG_SRCDIR/src
|
||||||
|
install ../bin/{picolisp,pil} -t $TERMUX_PREFIX/bin
|
||||||
|
|
||||||
if [ $TERMUX_ARCH_BITS = "64" ]; then
|
install -d -m755 $TERMUX_PREFIX/lib/picolisp/bin
|
||||||
$TERMUX_HOST_PLATFORM-as -o ${TERMUX_PKG_EXTRA_MAKE_ARGS}.base.o ${TERMUX_PKG_EXTRA_MAKE_ARGS}.base.s
|
install ../bin/{balance,httpGate,psh,ssl,sysdefs-gen,vip,watchdog} -t $TERMUX_PREFIX/lib/picolisp
|
||||||
$TERMUX_HOST_PLATFORM-as -o ${TERMUX_PKG_EXTRA_MAKE_ARGS}.ext.o ${TERMUX_PKG_EXTRA_MAKE_ARGS}.ext.s
|
|
||||||
$TERMUX_HOST_PLATFORM-as -o ${TERMUX_PKG_EXTRA_MAKE_ARGS}.ht.o ${TERMUX_PKG_EXTRA_MAKE_ARGS}.ht.s
|
install ../{ext.l,lib.css,lib.l} -t $TERMUX_PREFIX/lib/picolisp
|
||||||
|
install -d -m755 $TERMUX_PREFIX/lib/picolisp/lib
|
||||||
|
|
||||||
# Use -fuse-ld=bfd to avoid using the gold linker (which Termux
|
cp ../lib $TERMUX_PREFIX/lib/picolisp -r
|
||||||
# patches NDK to use by default) as it causes (tzo), the time
|
cp ../loc $TERMUX_PREFIX/lib/picolisp -r
|
||||||
# zone offset, to always be 0 (and probably other problems):
|
cp ../src $TERMUX_PREFIX/lib/picolisp -r
|
||||||
$CC -o ../bin/picolisp ${TERMUX_PKG_EXTRA_MAKE_ARGS}.base.o \
|
cp ../test $TERMUX_PREFIX/lib/picolisp -r
|
||||||
-Wl,--no-as-needed -rdynamic -lc -lm -ldl -pie -fuse-ld=bfd
|
cp ../doc $TERMUX_PREFIX/lib/picolisp -r
|
||||||
chmod +x ../bin/picolisp
|
cp ../img $TERMUX_PREFIX/lib/picolisp -r
|
||||||
$CC -o ../lib/ext -shared -rdynamic -fuse-ld=bfd ${TERMUX_PKG_EXTRA_MAKE_ARGS}.ext.o
|
|
||||||
$CC -o ../lib/ht -shared -rdynamic -fuse-ld=bfd ${TERMUX_PKG_EXTRA_MAKE_ARGS}.ht.o
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p $TERMUX_PREFIX/share/man/man1
|
install -d -m755 $TERMUX_PREFIX/share/man/man1
|
||||||
cp $TERMUX_PKG_SRCDIR/../man/man1/{pil,picolisp}.1 $TERMUX_PREFIX/share/man/man1/
|
install ../man/man1/*.1 -t $TERMUX_PREFIX/share/man/man1
|
||||||
|
}
|
||||||
rm -Rf $TERMUX_PREFIX/lib/picolisp
|
|
||||||
mkdir -p $TERMUX_PREFIX/lib/picolisp
|
termux_step_create_debscripts() {
|
||||||
|
cat <<- EOF > ./postinst
|
||||||
cp -Rf $TERMUX_PKG_SRCDIR/../* $TERMUX_PREFIX/lib/picolisp/
|
#!$TERMUX_PREFIX/bin/sh
|
||||||
rm -Rf $TERMUX_PREFIX/lib/picolisp/{src,man,java,ersatz}
|
$TERMUX_PREFIX/lib/picolisp/sysdefs-gen > $TERMUX_PREFIX/lib/picolisp/sysdefs
|
||||||
|
EOF
|
||||||
# Replace first line "#!/usr/bin/picolisp /usr/lib/picolisp/lib.l":
|
|
||||||
sed -i "1 s|^.*$|#!$TERMUX_PREFIX/bin/picolisp $TERMUX_PREFIX/lib/picolisp/lib.l|g" $TERMUX_PREFIX/lib/picolisp/bin/pil
|
cat <<- EOF > ./prerm
|
||||||
|
#!$TERMUX_PREFIX/bin/sh
|
||||||
( cd $TERMUX_PREFIX/bin && ln -f -s ../lib/picolisp/bin/picolisp picolisp && ln -f -s ../lib/picolisp/bin/pil pil )
|
rm -f $TERMUX_PREFIX/lib/picolisp/sysdefs
|
||||||
|
EOF
|
||||||
# Bundled tools:
|
|
||||||
$CC $ORIG_CFLAGS $CPPFLAGS $LDFLAGS -o $TERMUX_PREFIX/lib/picolisp/bin/ssl ../src/ssl.c -lssl -lcrypto
|
|
||||||
$CC $ORIG_CFLAGS $CPPFLAGS $LDFLAGS -o $TERMUX_PREFIX/lib/picolisp/bin/httpGate ../src/httpGate.c -lssl -lcrypto
|
|
||||||
|
|
||||||
# Man pages:
|
|
||||||
cp $TERMUX_PKG_SRCDIR/../man/man1/{pil,picolisp}.1 $TERMUX_PREFIX/share/man/man1/
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
--- ./bin/pil.orig 2022-02-20 20:18:10.391495466 +0530
|
||||||
|
+++ ./bin/pil 2022-02-20 20:18:26.511495460 +0530
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/usr/bin/picolisp /usr/lib/picolisp/lib.l
|
||||||
|
+#!/usr/bin/picolisp @TERMUX_PREFIX@/lib/picolisp/lib.l
|
||||||
|
(load "@lib/net.l" "@lib/misc.l" "@lib/btree.l" "@lib/db.l" "@lib/pilog.l")
|
||||||
|
|
||||||
|
`*Dbg
|
||||||
|
--- ./bin/vip.orig 2022-02-20 20:17:42.441495477 +0530
|
||||||
|
+++ ./bin/vip 2022-02-20 20:18:01.041495470 +0530
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/usr/bin/picolisp /usr/lib/picolisp/lib.l
|
||||||
|
+#!/usr/bin/picolisp @TERMUX_PREFIX@/lib/picolisp/lib.l
|
||||||
|
# 29jun21abu
|
||||||
|
|
||||||
|
(unless *Dbg
|
|
@ -1,131 +0,0 @@
|
||||||
diff -u -r ../picoLisp/src/Makefile ./src/Makefile
|
|
||||||
--- ../picoLisp/src/Makefile 2019-01-30 14:32:00.000000000 +0000
|
|
||||||
+++ ./src/Makefile 2019-07-16 12:35:22.543000406 +0000
|
|
||||||
@@ -6,121 +6,17 @@
|
|
||||||
|
|
||||||
picoFiles = main.c gc.c apply.c flow.c sym.c subr.c big.c io.c net.c tab.c
|
|
||||||
|
|
||||||
-CC = gcc
|
|
||||||
# CCLD is the cc (compiler frontend) to use for the link step.
|
|
||||||
-CCLD = gcc
|
|
||||||
-
|
|
||||||
+CCLD = $(CC)
|
|
||||||
+LCRYPT = -lcrypt
|
|
||||||
+PICOLISP-FLAGS = -rdynamic -lm $(LDFLAGS)
|
|
||||||
M32=-m32
|
|
||||||
-
|
|
||||||
-CFLAGS = -c -O2 -pipe \
|
|
||||||
+DYNAMIC-LIB-FLAGS = -shared -export-dynamic $(LDFLAGS) -lm
|
|
||||||
+CFLAGS += -c -pipe \
|
|
||||||
-falign-functions=32 -fomit-frame-pointer -fno-strict-aliasing \
|
|
||||||
-W -Wimplicit -Wreturn-type -Wunused -Wformat \
|
|
||||||
-Wuninitialized -Wstrict-prototypes \
|
|
||||||
- -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
|
|
||||||
-
|
|
||||||
-DYNAMIC-CC-FLAGS=
|
|
||||||
-
|
|
||||||
-ifeq ($(shell uname), Linux)
|
|
||||||
- OS = Linux
|
|
||||||
- CFLAGS += ${M32}
|
|
||||||
- PICOLISP-FLAGS = ${M32} -rdynamic
|
|
||||||
- LIB-FLAGS = -lm -ldl
|
|
||||||
- DYNAMIC-LIB-FLAGS = ${M32} -shared -export-dynamic
|
|
||||||
- LCRYPT = -lcrypt
|
|
||||||
- STRIP = strip
|
|
||||||
-else
|
|
||||||
-ifeq ($(shell uname), OpenBSD)
|
|
||||||
- OS = OpenBSD
|
|
||||||
- CFLAGS += ${M32}
|
|
||||||
- PICOLISP-FLAGS = ${M32} -rdynamic -Wl,-E
|
|
||||||
- LIB-FLAGS = -lm
|
|
||||||
- DYNAMIC-LIB-FLAGS = -Wl,-E -Wl,-shared
|
|
||||||
- LCRYPT = -lcrypto
|
|
||||||
- STRIP = strip
|
|
||||||
-else
|
|
||||||
-ifeq ($(shell uname), FreeBSD)
|
|
||||||
- OS = FreeBSD
|
|
||||||
- CC = gcc
|
|
||||||
- CCLD = clang
|
|
||||||
- CFLAGS += ${M32} -fPIC
|
|
||||||
- PICOLISP-FLAGS = ${M32} -rdynamic
|
|
||||||
- LIB-FLAGS = -lm
|
|
||||||
- DYNAMIC-LIB-FLAGS = ${M32} -shared
|
|
||||||
- LCRYPT = -lcrypt
|
|
||||||
- STRIP = strip
|
|
||||||
-else
|
|
||||||
-ifeq ($(shell uname), NetBSD)
|
|
||||||
- OS = NetBSD
|
|
||||||
- CFLAGS += ${M32}
|
|
||||||
- PICOLISP-FLAGS = ${M32} -rdynamic
|
|
||||||
- LIB-FLAGS = -lm
|
|
||||||
- DYNAMIC-LIB-FLAGS = ${M32} -shared -export-dynamic
|
|
||||||
- LCRYPT = -lcrypto
|
|
||||||
- STRIP = strip
|
|
||||||
-else
|
|
||||||
-ifeq ($(shell uname), Darwin)
|
|
||||||
- OS = Darwin
|
|
||||||
- CFLAGS += ${M32}
|
|
||||||
- PICOLISP-FLAGS = ${M32}
|
|
||||||
- LIB-FLAGS = -lc -lm -ldl
|
|
||||||
- DYNAMIC-LIB-FLAGS = ${M32} -dynamiclib -undefined dynamic_lookup
|
|
||||||
- LCRYPT = -lcrypto
|
|
||||||
- STRIP = strip -x
|
|
||||||
-else
|
|
||||||
-ifeq ($(shell uname), SunOS)
|
|
||||||
- OS = SunOS
|
|
||||||
- CFLAGS += ${M32}
|
|
||||||
- PICOLISP-FLAGS =
|
|
||||||
- LIB-FLAGS = -lm -lnsl -lsocket
|
|
||||||
- DYNAMIC-LIB-FLAGS = -G
|
|
||||||
- LCRYPT = -lcrypt
|
|
||||||
- STRIP = strip
|
|
||||||
-else
|
|
||||||
-ifeq ($(shell uname), AIX)
|
|
||||||
- OS = AIX
|
|
||||||
- CFLAGS += -maix32
|
|
||||||
- PICOLISP-FLAGS = -maix32 -Wl,-brtl -Wl,-bexpall
|
|
||||||
- LIB-FLAGS = -lm
|
|
||||||
- DYNAMIC-LIB-FLAGS = -maix32 -Wl,-G -shared -lm
|
|
||||||
- LCRYPT = -lcrypt
|
|
||||||
- STRIP = strip
|
|
||||||
-else
|
|
||||||
-ifeq ($(shell uname), HP-UX)
|
|
||||||
- OS = HP-UX
|
|
||||||
- CFLAGS +=
|
|
||||||
- PICOLISP-FLAGS = ${M32} -rdynamic
|
|
||||||
- LIB-FLAGS = -lm -ldl
|
|
||||||
- DYNAMIC-LIB-FLAGS = ${M32} -shared
|
|
||||||
- LCRYPT =
|
|
||||||
- STRIP = strip
|
|
||||||
-else
|
|
||||||
-ifeq ($(shell uname), IRIX64)
|
|
||||||
- OS = IRIX64
|
|
||||||
- CFLAGS += -std=gnu99
|
|
||||||
- DYNAMIC-LIB-FLAGS = -shared
|
|
||||||
- STRIP = strip -f
|
|
||||||
-else
|
|
||||||
-ifeq ($(shell uname -o | egrep -q "Cygwin|Msys" ; echo $$?), 0)
|
|
||||||
- OS = Cygwin
|
|
||||||
- CFLAGS += ${M32}
|
|
||||||
- DYNAMIC-LIB-FLAGS = -shared
|
|
||||||
- PICOLISP-FLAGS =
|
|
||||||
- DLL-DEFS = $(bin)/picolisp.dll
|
|
||||||
- LCRYPT = -lcrypt
|
|
||||||
- STRIP = strip
|
|
||||||
- exe = .exe
|
|
||||||
- dll = .dll
|
|
||||||
-endif
|
|
||||||
-endif
|
|
||||||
-endif
|
|
||||||
-endif
|
|
||||||
-endif
|
|
||||||
-endif
|
|
||||||
-endif
|
|
||||||
-endif
|
|
||||||
-endif
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
+ -D_GNU_SOURCE
|
|
||||||
|
|
||||||
picolisp: $(bin)/picolisp $(lib)/ext$(dll) $(lib)/ht$(dll)
|
|
||||||
tools: $(bin)/lat1 $(bin)/utf2 $(bin)/balance
|
|
|
@ -1,11 +0,0 @@
|
||||||
diff -u -r ../picoLisp/src/ext.c ./src/ext.c
|
|
||||||
--- ../picoLisp/src/ext.c 2016-04-01 04:05:10.000000000 -0400
|
|
||||||
+++ ./src/ext.c 2016-04-13 06:40:31.791712225 -0400
|
|
||||||
@@ -3,6 +3,7 @@
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "pico.h"
|
|
||||||
+#include <crypt.h>
|
|
||||||
|
|
||||||
/*** Soundex Algorithm ***/
|
|
||||||
static int SnxTab[] = {
|
|
|
@ -1,26 +0,0 @@
|
||||||
Avoid trying to run /usr/bin/picolisp since it is probably too
|
|
||||||
old - just run the java version, since java is needed by the
|
|
||||||
Termux package builds anyway.
|
|
||||||
|
|
||||||
diff -u -r ../picoLisp/src64/mkAsm ./src64/mkAsm
|
|
||||||
--- ../picoLisp/src64/mkAsm 2016-12-14 02:35:59.000000000 -0500
|
|
||||||
+++ ./src64/mkAsm 2016-12-27 20:06:01.126373627 -0500
|
|
||||||
@@ -1,17 +1,6 @@
|
|
||||||
#!/bin/sh
|
|
||||||
# 14dec16abu
|
|
||||||
|
|
||||||
-if test -x /usr/bin/picolisp
|
|
||||||
-then
|
|
||||||
- /usr/bin/pil mkAsm.l "$@"
|
|
||||||
-elif test -x ../bin/picolisp
|
|
||||||
-then
|
|
||||||
- ../pil mkAsm.l "$@"
|
|
||||||
-elif which java >/dev/null
|
|
||||||
-then
|
|
||||||
- ../ersatz/pil mkAsm.l "$@"
|
|
||||||
-else
|
|
||||||
- echo "No PicoLisp binary found for bootstrapping"
|
|
||||||
-fi
|
|
||||||
+../ersatz/pil mkAsm.l "$@"
|
|
||||||
|
|
||||||
# vi:et:ts=3:sw=3
|
|
|
@ -208,6 +208,10 @@ PACKAGES+=" python3-jsonschema"
|
||||||
# Needed by proxmark3/proxmark3-git
|
# Needed by proxmark3/proxmark3-git
|
||||||
PACKAGES+=" gcc-arm-none-eabi"
|
PACKAGES+=" gcc-arm-none-eabi"
|
||||||
|
|
||||||
|
# For opt, llvm-link, llc not shipped by NDK.
|
||||||
|
# Required by picolisp (and maybe a few others in future)
|
||||||
|
PACKAGES+=" llvm-12"
|
||||||
|
|
||||||
# Do not require sudo if already running as root.
|
# Do not require sudo if already running as root.
|
||||||
if [ "$(id -u)" = "0" ]; then
|
if [ "$(id -u)" = "0" ]; then
|
||||||
SUDO=""
|
SUDO=""
|
||||||
|
|
Loading…
Reference in New Issue