From b9e2faec787db00714e213a873e199814cb17a3c Mon Sep 17 00:00:00 2001 From: Yan Date: Thu, 30 Sep 2021 06:29:34 +0200 Subject: [PATCH 1/9] sbcl: added new solution Use SBCL if we have it already, otherwise ECL. Build with ECL takes around seven times longer than with SBCL. Yes, in true Lisp fashion, it can build itself. ;) Possibility to use itself is useful for upgrades. With the tweaks in the patch file, all internal tests pass. ansi-test on termux-aarch64 reports 154 failures. ansi-test on darwin-x8664 reports 145 failures. So most likely nothing to worry about. --- disabled-packages/sbcl/build.sh | 22 ------- disabled-packages/sbcl/make-config.sh.patch | 15 ----- packages/sbcl/build.sh | 30 +++++++++ packages/sbcl/termux-tweaks.patch | 69 +++++++++++++++++++++ 4 files changed, 99 insertions(+), 37 deletions(-) delete mode 100644 disabled-packages/sbcl/build.sh delete mode 100644 disabled-packages/sbcl/make-config.sh.patch create mode 100644 packages/sbcl/build.sh create mode 100644 packages/sbcl/termux-tweaks.patch diff --git a/disabled-packages/sbcl/build.sh b/disabled-packages/sbcl/build.sh deleted file mode 100644 index d69fd591c2755dc..000000000000000 --- a/disabled-packages/sbcl/build.sh +++ /dev/null @@ -1,22 +0,0 @@ -TERMUX_PKG_HOMEPAGE=http://www.sbcl.org/ -TERMUX_PKG_DESCRIPTION="Steel Bank Common Lisp" -TERMUX_PKG_VERSION=1.3.9 -TERMUX_PKG_SRCURL=http://prdownloads.sourceforge.net/sbcl/sbcl-${TERMUX_PKG_VERSION}-source.tar.bz2 - -termux_step_pre_configure() { - local SBCL_HOST_TARFILE=$TERMUX_PKG_CACHEDIR/sbcl-host-${TERMUX_PKG_VERSION}.tar.bz2 - if [ ! -f $SBCL_HOST_TARFILE ]; then - curl -o $SBCL_HOST_TARFILE -L http://downloads.sourceforge.net/project/sbcl/sbcl/${TERMUX_PKG_VERSION}/sbcl-${TERMUX_PKG_VERSION}-x86-64-linux-binary.tar.bz2 - cd $TERMUX_PKG_TMPDIR - tar xf $SBCL_HOST_TARFILE - cd sbcl-${TERMUX_PKG_VERSION}-x86-64-linux - INSTALL_ROOT=$TERMUX_PKG_CACHEDIR/sbcl-host sh install.sh - fi - export PATH=$PATH:$TERMUX_PKG_CACHEDIR/sbcl-host/bin - export SBCL_HOME=$TERMUX_PKG_CACHEDIR/sbcl-host/lib/sbcl -} - -termux_step_make_install() { - cd $TERMUX_PKG_SRCDIR - sh make.sh --prefix=$TERMUX_PREFIX -} diff --git a/disabled-packages/sbcl/make-config.sh.patch b/disabled-packages/sbcl/make-config.sh.patch deleted file mode 100644 index b125bd944eb36e5..000000000000000 --- a/disabled-packages/sbcl/make-config.sh.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -u -r ../sbcl-1.3.4/make-config.sh ./make-config.sh ---- ../sbcl-1.3.4/make-config.sh 2016-03-31 03:28:36.000000000 -0400 -+++ ./make-config.sh 2016-04-10 16:43:40.651905145 -0400 -@@ -754,8 +754,9 @@ - # cross-compilers! - # - # FIXME: integrate to grovel-features, mayhaps --$GNUMAKE -C tools-for-build determine-endianness -I ../src/runtime --tools-for-build/determine-endianness >> $ltf -+# $GNUMAKE -C tools-for-build determine-endianness -I ../src/runtime -+# tools-for-build/determine-endianness >> $ltf -+echo " :little-endian" >> $ltf # Termux patch. - - export sbcl_os sbcl_arch - sh tools-for-build/grovel-features.sh >> $ltf diff --git a/packages/sbcl/build.sh b/packages/sbcl/build.sh new file mode 100644 index 000000000000000..70947b81159c850 --- /dev/null +++ b/packages/sbcl/build.sh @@ -0,0 +1,30 @@ +TERMUX_PKG_HOMEPAGE=http://www.sbcl.org/ +TERMUX_PKG_DESCRIPTION="SBCL (Steel Bank Common Lisp) is a high performance Common Lisp compiler." +TERMUX_PKG_LICENSE="MIT" +TERMUX_PKG_MAINTAINER="@metayan" +TERMUX_PKG_VERSION=2.1.9 +TERMUX_PKG_SRCURL=https://downloads.sourceforge.net/sbcl/sbcl-${TERMUX_PKG_VERSION}-source.tar.bz2 +TERMUX_PKG_SHA256=9e746ff12c4f78d2deabd95e48169b552f9472808cf8b8fc801d84df3e962fa1 +TERMUX_PKG_DEPENDS="ecl" + +termux_step_make() { + cd $TERMUX_PKG_SRCDIR + + # Use SBCL if we have it already, otherwise ECL + if [ "`which sbcl`" ]; then + XC_HOST="`which sbcl` --no-sysinit --no-userinit" + else + XC_HOST="ecl --norc" + fi + + ./make.sh \ + --xc-host="$XC_HOST" \ + --fancy \ + --without-gcc-tls \ + --prefix=$TERMUX_PREFIX +} + +termux_step_make_install() { + cd $TERMUX_PKG_SRCDIR + ./install.sh +} diff --git a/packages/sbcl/termux-tweaks.patch b/packages/sbcl/termux-tweaks.patch new file mode 100644 index 000000000000000..2d200d060d0b876 --- /dev/null +++ b/packages/sbcl/termux-tweaks.patch @@ -0,0 +1,69 @@ +diff --git a/contrib/sb-posix/posix-tests.lisp b/contrib/sb-posix/posix-tests.lisp +index 7c94a43..c565fad 100644 +--- a/contrib/sb-posix/posix-tests.lisp ++++ b/contrib/sb-posix/posix-tests.lisp +@@ -527,7 +527,7 @@ + 3 #\f #\o #\o) + + (deftest opendir.1 +- (let ((dir (sb-posix:opendir "/"))) ++ (let ((dir (sb-posix:opendir "/data/data/com.termux/cache"))) + (unwind-protect (sb-alien:null-alien dir) + (unless (sb-alien:null-alien dir) + (sb-posix:closedir dir)))) +@@ -535,7 +535,7 @@ + + #-(and darwin x86) + (deftest readdir.1 +- (let ((dir (sb-posix:opendir "/"))) ++ (let ((dir (sb-posix:opendir "/data/data/com.termux/cache"))) + (unwind-protect + (block dir-loop + (loop for dirent = (sb-posix:readdir dir) +@@ -868,7 +868,7 @@ + + #-win32 + (deftest mkstemp.null-terminate +- (let* ((default (make-pathname :directory '(:absolute "tmp"))) ++ (let* ((default (make-pathname :directory '(:absolute "data/data/com.termux/cache"))) + (filename (namestring (make-pathname :name "mkstemp-1" + :type "XXXXXX" + :defaults default))) +@@ -883,9 +883,9 @@ + (make-string n :initial-element #\x)) + :defaults default)) + (unwind-protect +- (values (integerp fd) (subseq temp 0 (position #\. temp))) ++ (values (integerp fd) (subseq temp 0 (position #\. temp :from-end t))) + (delete-file temp)))) +- t "/tmp/mkstemp-1") ++ t "/data/data/com.termux/cache/mkstemp-1") + + (deftest envstuff + (let ((name1 "ASLIFJLSDKFJKAHGSDKLJH") +diff --git a/src/runtime/run-program.c b/src/runtime/run-program.c +index 929ac99..f12d21b 100644 +--- a/src/runtime/run-program.c ++++ b/src/runtime/run-program.c +@@ -100,7 +100,7 @@ void closefrom_fallback(int lowfd) + { + int fd, maxfd; + +-#ifdef SVR4 ++#if defined(SVR4) || defined(__TERMUX__) + maxfd = sysconf(_SC_OPEN_MAX)-1; + #else + maxfd = getdtablesize()-1; +diff --git a/tools-for-build/grovel-headers.c b/tools-for-build/grovel-headers.c +index 1fc1fa0..abbe071 100644 +--- a/tools-for-build/grovel-headers.c ++++ b/tools-for-build/grovel-headers.c +@@ -40,7 +40,7 @@ + #include + #include + #include +-#if defined __HAIKU__ || defined __DragonFly__ || defined LISP_FEATURE_ANDROID ++#if defined __HAIKU__ || defined __DragonFly__ || defined LISP_FEATURE_ANDROID || defined __TERMUX__ + #include + #else + #include From 577a956a718fa11b123737a191e2eb79bbafec66 Mon Sep 17 00:00:00 2001 From: Yan Date: Thu, 30 Sep 2021 16:04:25 +0200 Subject: [PATCH 2/9] sbcl: specify ecl path --- packages/sbcl/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sbcl/build.sh b/packages/sbcl/build.sh index 70947b81159c850..65424419f604011 100644 --- a/packages/sbcl/build.sh +++ b/packages/sbcl/build.sh @@ -14,7 +14,7 @@ termux_step_make() { if [ "`which sbcl`" ]; then XC_HOST="`which sbcl` --no-sysinit --no-userinit" else - XC_HOST="ecl --norc" + XC_HOST="$TERMUX_PREFIX/bin/ecl --norc" fi ./make.sh \ From a71c7dc9330e841d2288409411ab16815e7326b3 Mon Sep 17 00:00:00 2001 From: Yan Date: Thu, 30 Sep 2021 21:52:06 +0000 Subject: [PATCH 3/9] sbcl: disable Intel builds Wrongly presumed that the ECL blacklisting would propagate --- packages/sbcl/build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/sbcl/build.sh b/packages/sbcl/build.sh index 65424419f604011..fd7007818c4cbef 100644 --- a/packages/sbcl/build.sh +++ b/packages/sbcl/build.sh @@ -6,6 +6,7 @@ TERMUX_PKG_VERSION=2.1.9 TERMUX_PKG_SRCURL=https://downloads.sourceforge.net/sbcl/sbcl-${TERMUX_PKG_VERSION}-source.tar.bz2 TERMUX_PKG_SHA256=9e746ff12c4f78d2deabd95e48169b552f9472808cf8b8fc801d84df3e962fa1 TERMUX_PKG_DEPENDS="ecl" +TERMUX_PKG_BLACKLISTED_ARCHES="i686, x86_64" termux_step_make() { cd $TERMUX_PKG_SRCDIR From 27ba670c694bab702f77b31da366327e09a9aafc Mon Sep 17 00:00:00 2001 From: Yan Date: Sun, 28 Nov 2021 07:35:19 +0100 Subject: [PATCH 4/9] Only whitespace changes to comply with termux coding guidelines Spaces changed to tabs. https://github.com/termux/termux-packages/wiki/Coding-guideline --- packages/sbcl/build.sh | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/sbcl/build.sh b/packages/sbcl/build.sh index fd7007818c4cbef..160fbfa22740080 100644 --- a/packages/sbcl/build.sh +++ b/packages/sbcl/build.sh @@ -9,23 +9,23 @@ TERMUX_PKG_DEPENDS="ecl" TERMUX_PKG_BLACKLISTED_ARCHES="i686, x86_64" termux_step_make() { - cd $TERMUX_PKG_SRCDIR + cd $TERMUX_PKG_SRCDIR - # Use SBCL if we have it already, otherwise ECL - if [ "`which sbcl`" ]; then - XC_HOST="`which sbcl` --no-sysinit --no-userinit" - else - XC_HOST="$TERMUX_PREFIX/bin/ecl --norc" - fi + # Use SBCL if we have it already, otherwise ECL + if [ "`which sbcl`" ]; then + XC_HOST="`which sbcl` --no-sysinit --no-userinit" + else + XC_HOST="$TERMUX_PREFIX/bin/ecl --norc" + fi - ./make.sh \ - --xc-host="$XC_HOST" \ - --fancy \ - --without-gcc-tls \ - --prefix=$TERMUX_PREFIX + ./make.sh \ + --xc-host="$XC_HOST" \ + --fancy \ + --without-gcc-tls \ + --prefix=$TERMUX_PREFIX } termux_step_make_install() { - cd $TERMUX_PKG_SRCDIR - ./install.sh + cd $TERMUX_PKG_SRCDIR + ./install.sh } From e9c4123b075eb461b0b3365acd90c523c62d9993 Mon Sep 17 00:00:00 2001 From: Yan Date: Sun, 28 Nov 2021 07:47:37 +0100 Subject: [PATCH 5/9] sbcl: update to 2.1.10 --- packages/sbcl/build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sbcl/build.sh b/packages/sbcl/build.sh index 160fbfa22740080..d08bebfa2bd5ae7 100644 --- a/packages/sbcl/build.sh +++ b/packages/sbcl/build.sh @@ -2,9 +2,9 @@ TERMUX_PKG_HOMEPAGE=http://www.sbcl.org/ TERMUX_PKG_DESCRIPTION="SBCL (Steel Bank Common Lisp) is a high performance Common Lisp compiler." TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_MAINTAINER="@metayan" -TERMUX_PKG_VERSION=2.1.9 +TERMUX_PKG_VERSION=2.1.10 TERMUX_PKG_SRCURL=https://downloads.sourceforge.net/sbcl/sbcl-${TERMUX_PKG_VERSION}-source.tar.bz2 -TERMUX_PKG_SHA256=9e746ff12c4f78d2deabd95e48169b552f9472808cf8b8fc801d84df3e962fa1 +TERMUX_PKG_SHA256=eb183f0f59a5cb2cbed762ec062bc34b9b6214b65402660784ef54838884b138 TERMUX_PKG_DEPENDS="ecl" TERMUX_PKG_BLACKLISTED_ARCHES="i686, x86_64" From 1cd2dcebcd631ff1a6bacf626795f8678a0e8592 Mon Sep 17 00:00:00 2001 From: Yan Date: Sun, 28 Nov 2021 07:50:46 +0100 Subject: [PATCH 6/9] remove the blacklisting of i686 and x86_64 --- packages/sbcl/build.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/sbcl/build.sh b/packages/sbcl/build.sh index d08bebfa2bd5ae7..ea1f24e0425e403 100644 --- a/packages/sbcl/build.sh +++ b/packages/sbcl/build.sh @@ -6,7 +6,6 @@ TERMUX_PKG_VERSION=2.1.10 TERMUX_PKG_SRCURL=https://downloads.sourceforge.net/sbcl/sbcl-${TERMUX_PKG_VERSION}-source.tar.bz2 TERMUX_PKG_SHA256=eb183f0f59a5cb2cbed762ec062bc34b9b6214b65402660784ef54838884b138 TERMUX_PKG_DEPENDS="ecl" -TERMUX_PKG_BLACKLISTED_ARCHES="i686, x86_64" termux_step_make() { cd $TERMUX_PKG_SRCDIR From 2bfa764480b93c8d5643d607c4f530b94d1d6644 Mon Sep 17 00:00:00 2001 From: Yan Date: Sun, 28 Nov 2021 10:26:30 +0100 Subject: [PATCH 7/9] use correct termux tmp directory for tests --- packages/sbcl/termux-tweaks.patch | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/sbcl/termux-tweaks.patch b/packages/sbcl/termux-tweaks.patch index 2d200d060d0b876..95392c599a05fa5 100644 --- a/packages/sbcl/termux-tweaks.patch +++ b/packages/sbcl/termux-tweaks.patch @@ -7,7 +7,7 @@ index 7c94a43..c565fad 100644 (deftest opendir.1 - (let ((dir (sb-posix:opendir "/"))) -+ (let ((dir (sb-posix:opendir "/data/data/com.termux/cache"))) ++ (let ((dir (sb-posix:opendir "@TERMUX_PREFIX@/tmp"))) (unwind-protect (sb-alien:null-alien dir) (unless (sb-alien:null-alien dir) (sb-posix:closedir dir)))) @@ -16,7 +16,7 @@ index 7c94a43..c565fad 100644 #-(and darwin x86) (deftest readdir.1 - (let ((dir (sb-posix:opendir "/"))) -+ (let ((dir (sb-posix:opendir "/data/data/com.termux/cache"))) ++ (let ((dir (sb-posix:opendir "@TERMUX_PREFIX@/tmp"))) (unwind-protect (block dir-loop (loop for dirent = (sb-posix:readdir dir) @@ -25,7 +25,7 @@ index 7c94a43..c565fad 100644 #-win32 (deftest mkstemp.null-terminate - (let* ((default (make-pathname :directory '(:absolute "tmp"))) -+ (let* ((default (make-pathname :directory '(:absolute "data/data/com.termux/cache"))) ++ (let* ((default (make-pathname :directory '(:absolute "@TERMUX_PREFIX@/tmp"))) (filename (namestring (make-pathname :name "mkstemp-1" :type "XXXXXX" :defaults default))) @@ -37,7 +37,7 @@ index 7c94a43..c565fad 100644 + (values (integerp fd) (subseq temp 0 (position #\. temp :from-end t))) (delete-file temp)))) - t "/tmp/mkstemp-1") -+ t "/data/data/com.termux/cache/mkstemp-1") ++ t "@TERMUX_PREFIX@/tmp/mkstemp-1") (deftest envstuff (let ((name1 "ASLIFJLSDKFJKAHGSDKLJH") From 2a7c36edb60bbc4dd9a470276cb18b5a5b4be91b Mon Sep 17 00:00:00 2001 From: Yan Date: Sun, 28 Nov 2021 10:28:07 +0100 Subject: [PATCH 8/9] use __ANDROID__ instead of __TERMUX__ in patch file --- packages/sbcl/termux-tweaks.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sbcl/termux-tweaks.patch b/packages/sbcl/termux-tweaks.patch index 95392c599a05fa5..38eeda4708ae001 100644 --- a/packages/sbcl/termux-tweaks.patch +++ b/packages/sbcl/termux-tweaks.patch @@ -50,7 +50,7 @@ index 929ac99..f12d21b 100644 int fd, maxfd; -#ifdef SVR4 -+#if defined(SVR4) || defined(__TERMUX__) ++#if defined(SVR4) || defined(__ANDROID__) maxfd = sysconf(_SC_OPEN_MAX)-1; #else maxfd = getdtablesize()-1; @@ -63,7 +63,7 @@ index 1fc1fa0..abbe071 100644 #include #include -#if defined __HAIKU__ || defined __DragonFly__ || defined LISP_FEATURE_ANDROID -+#if defined __HAIKU__ || defined __DragonFly__ || defined LISP_FEATURE_ANDROID || defined __TERMUX__ ++#if defined __HAIKU__ || defined __DragonFly__ || defined LISP_FEATURE_ANDROID || defined __ANDROID__ #include #else #include From e03d0a823d28d60fca1b73ee1a74250f1890b540 Mon Sep 17 00:00:00 2001 From: Yan Date: Sun, 28 Nov 2021 12:33:05 +0100 Subject: [PATCH 9/9] trim leading / from path in sb-posix test --- packages/sbcl/termux-tweaks.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sbcl/termux-tweaks.patch b/packages/sbcl/termux-tweaks.patch index 38eeda4708ae001..284e5deab4dc339 100644 --- a/packages/sbcl/termux-tweaks.patch +++ b/packages/sbcl/termux-tweaks.patch @@ -25,7 +25,7 @@ index 7c94a43..c565fad 100644 #-win32 (deftest mkstemp.null-terminate - (let* ((default (make-pathname :directory '(:absolute "tmp"))) -+ (let* ((default (make-pathname :directory '(:absolute "@TERMUX_PREFIX@/tmp"))) ++ (let* ((default (make-pathname :directory (list :absolute (string-left-trim '(#\/) "@TERMUX_PREFIX@/tmp")))) (filename (namestring (make-pathname :name "mkstemp-1" :type "XXXXXX" :defaults default)))