diff options
-rw-r--r-- | experimental/sbcl/APKBUILD | 38 | ||||
-rw-r--r-- | experimental/sbcl/musl-libc.patch | 180 | ||||
-rw-r--r-- | user/clisp/APKBUILD | 44 | ||||
-rw-r--r-- | user/clisp/no-page.h.patch | 12 | ||||
-rw-r--r-- | user/libffcall/APKBUILD | 39 | ||||
-rw-r--r-- | user/libsigsegv/APKBUILD | 35 |
6 files changed, 348 insertions, 0 deletions
diff --git a/experimental/sbcl/APKBUILD b/experimental/sbcl/APKBUILD new file mode 100644 index 000000000..86f9ab1f5 --- /dev/null +++ b/experimental/sbcl/APKBUILD @@ -0,0 +1,38 @@ +# Contributor: Lee Starnes <lee@canned-death.us> +# Maintainer: Lee Starnes <lee@canned-death.us> +pkgname=sbcl +pkgver=2.0.3 +pkgrel=0 +pkgdesc="Steel Bank Common Lisp" +url="http://www.sbcl.org" +arch="all !armv7" +license="BSD-2-Clause AND BSD-2-Clause-FreeBSD AND BSD-3-Clause AND MIT" +depends="" +makedepends="clisp clisp-dev" +checkdepends="ed" +subpackages="$pkgname-doc" +# Patch provided by Eric Timmons: https://bugs.launchpad.net/sbcl/+bug/1768368 +source="https://sourceforge.net/projects/$pkgname/files/$pkgname/$pkgver/$pkgname-$pkgver-source.tar.bz2 + musl-libc.patch" + +prepare() { + default_prepare + + # run-program test is hard-coded to use /bin/ed but it should be /usr/bin/ed + sed -i 's,/bin/ed,/usr/bin/ed,g' tests/run-program.impure.lisp +} + +build() { + ./make.sh --prefix=/usr --with-dlclose-is-noop --xc-host=clisp +} + +check() { + cd tests && sh run-tests.sh +} + +package() { + INSTALL_ROOT="$pkgdir"/usr sh install.sh +} + +sha512sums="c29c115fff0e118e5c05959dd8d73ae876458daeb5ddde67ce485b10e6d1583b1f8a9597b54b45606696ab1b1eea5392dcb09357c83fce31323f2a5a154f2dd1 sbcl-2.0.3-source.tar.bz2 +e6757e4cc623682c501ab5e255a881833ff393efac829ffe9f67fff0a005724c3c03a23352b4c88d58b3d15dbb0cf33c8cc58d72d3795abb2f12a4bca4302165 musl-libc.patch" diff --git a/experimental/sbcl/musl-libc.patch b/experimental/sbcl/musl-libc.patch new file mode 100644 index 000000000..1aa5cb557 --- /dev/null +++ b/experimental/sbcl/musl-libc.patch @@ -0,0 +1,180 @@ +diff --git a/contrib/sb-bsd-sockets/constants.lisp b/contrib/sb-bsd-sockets/constants.lisp +index 88f5bb7c4..23fd87277 100644 +--- a/contrib/sb-bsd-sockets/constants.lisp ++++ b/contrib/sb-bsd-sockets/constants.lisp +@@ -93,8 +93,8 @@ + (:integer EAFNOSUPPORT "EAFNOSUPPORT") + (:integer EINPROGRESS "EINPROGRESS") + +- (:integer NETDB-INTERNAL #+hpux "h_NETDB_INTERNAL" #-hpux "NETDB_INTERNAL" "See errno.") +- (:integer NETDB-SUCCESS #+hpux "h_NETDB_SUCCESS" #-hpux "NETDB_SUCCESS" "No problem.") ++ (:integer-no-check NETDB-INTERNAL #-os-provides-netdb-internal "-1" #+(and os-provides-netdb-internal hpux) "h_NETDB_INTERNAL" #+(and os-provides-netdb-internal (not hpux)) "NETDB_INTERNAL" "See errno.") ++ (:integer-no-check NETDB-SUCCESS #-os-provides-netdb-internal "0" #+(and os-provides-netdb-internal hpux) "h_NETDB_SUCCESS" #+(and os-provides-netdb-internal (not hpux)) "NETDB_SUCCESS" "No problem.") + (:integer HOST-NOT-FOUND "HOST_NOT_FOUND" "Authoritative Answer Host not found.") + (:integer TRY-AGAIN "TRY_AGAIN" "Non-Authoritative Host not found, or SERVERFAIL.") + (:integer NO-RECOVERY "NO_RECOVERY" "Non recoverable errors, FORMERR, REFUSED, NOTIMP.") +diff --git a/src/runtime/linux-os.c b/src/runtime/linux-os.c +index fa4f5e490..60b5fea4e 100644 +--- a/src/runtime/linux-os.c ++++ b/src/runtime/linux-os.c +@@ -187,8 +187,15 @@ isnptl (void) + if (strstr (buf, "NPTL")) { + return 1; + } ++ else { ++ return 0; ++ } ++ } ++ else { ++ /* If the configuration variable is empty, just assume we have a ++ * good enough thread implementation. */ ++ return 1; + } +- return 0; + } + #endif + +diff --git a/tests/foreign.test.sh b/tests/foreign.test.sh +index 7fb757813..9ba8ed3cf 100755 +--- a/tests/foreign.test.sh ++++ b/tests/foreign.test.sh +@@ -248,16 +248,23 @@ cat > $TEST_FILESTEM.test.lisp <<EOF + (assert (= 13 foo)) + (assert (= 42 (bar))) + (note "/original definitions ok") +- (rename-file "$TEST_FILESTEM-b.so" "$TEST_FILESTEM-b.bak") +- (rename-file "$TEST_FILESTEM-b2.so" "$TEST_FILESTEM-b.so") +- (load-shared-object (truename "$TEST_FILESTEM-b.so")) +- (note "/reloading ok") +- (assert (= 42 foo)) +- (assert (= 13 (bar))) +- (note "/redefined versions ok") +- (rename-file "$TEST_FILESTEM-b.so" "$TEST_FILESTEM-b2.so") +- (rename-file "$TEST_FILESTEM-b.bak" "$TEST_FILESTEM-b.so") +- (note "/renamed back to originals") ++ ;; test late resolution ++ (eval-when (:compile-toplevel :load-toplevel :execute) ++ (setq *features* (union *features* sb-impl:+internal-features+))) ++ #+dlclose-is-noop ++ (note "/skipping reloading tests") ++ #-dlclose-is-noop ++ (progn ++ (rename-file "$TEST_FILESTEM-b.so" "$TEST_FILESTEM-b.bak") ++ (rename-file "$TEST_FILESTEM-b2.so" "$TEST_FILESTEM-b.so") ++ (load-shared-object (truename "$TEST_FILESTEM-b.so")) ++ (note "/reloading ok") ++ (assert (= 42 foo)) ++ (assert (= 13 (bar))) ++ (note "/redefined versions ok") ++ (rename-file "$TEST_FILESTEM-b.so" "$TEST_FILESTEM-b2.so") ++ (rename-file "$TEST_FILESTEM-b.bak" "$TEST_FILESTEM-b.so") ++ (note "/renamed back to originals")) + + ;; test late resolution + #+linkage-table +@@ -274,13 +278,17 @@ cat > $TEST_FILESTEM.test.lisp <<EOF + (load-shared-object (truename "$TEST_FILESTEM-c.so")) + (assert (= 43 late-foo)) + (assert (= 14 (late-bar))) +- (unload-shared-object (truename "$TEST_FILESTEM-c.so")) +- (multiple-value-bind (val err) (ignore-errors late-foo) +- (assert (not val)) +- (assert (typep err 'undefined-alien-error))) +- (multiple-value-bind (val err) (ignore-errors (late-bar)) +- (assert (not val)) +- (assert (typep err 'undefined-alien-error))) ++ #+dlclose-is-noop ++ (note "/skipping unloading tests") ++ #-dlclose-is-noop ++ (progn ++ (unload-shared-object (truename "$TEST_FILESTEM-c.so")) ++ (multiple-value-bind (val err) (ignore-errors late-foo) ++ (assert (not val)) ++ (assert (typep err 'undefined-alien-error))) ++ (multiple-value-bind (val err) (ignore-errors (late-bar)) ++ (assert (not val)) ++ (assert (typep err 'undefined-alien-error)))) + (note "/linkage table ok")) + + (sb-ext:exit :code $EXIT_LISP_WIN) ; success convention for Lisp program +diff --git a/tools-for-build/Makefile b/tools-for-build/Makefile +index 3f6e4ecf9..39bab2b92 100644 +--- a/tools-for-build/Makefile ++++ b/tools-for-build/Makefile +@@ -16,6 +16,9 @@ LDLIBS:=$(OS_LIBS) + + all: grovel-headers determine-endianness where-is-mcontext + ++dlclose-is-noop-test-helper.so: dlclose-is-noop-test-helper.c ++ @$(CC) $(LDFLAGS) -shared $< -o $@ $(LOADLIBES) $(LDLIBS) ++ + clean: + rm -f *.o grovel-headers determine-endianness where-is-mcontext + rm -f *.exe +diff --git a/tools-for-build/dlclose-is-noop-test-helper.c b/tools-for-build/dlclose-is-noop-test-helper.c +new file mode 100644 +index 000000000..4be7a8e5b +--- /dev/null ++++ b/tools-for-build/dlclose-is-noop-test-helper.c +@@ -0,0 +1 @@ ++int sbcl_dl_close_test = 42; +diff --git a/tools-for-build/dlclose-is-noop-test.c b/tools-for-build/dlclose-is-noop-test.c +new file mode 100644 +index 000000000..f4eab26a5 +--- /dev/null ++++ b/tools-for-build/dlclose-is-noop-test.c +@@ -0,0 +1,19 @@ ++/* test to build and run so that we know if we have a noop dlclose ++ */ ++ ++#include <dlfcn.h> ++#include <stddef.h> ++ ++int main () ++{ ++ void * handle = dlopen("./dlclose-is-noop-test-helper.so", RTLD_NOW | RTLD_GLOBAL); ++ dlclose(handle); ++ ++ handle = dlopen("./dlclose-is-noop-test-helper.so", RTLD_NOW | RTLD_NOLOAD); ++ ++ if (handle != NULL) { ++ return 104; ++ } else { ++ return 0; ++ } ++} +diff --git a/tools-for-build/grovel-features.sh b/tools-for-build/grovel-features.sh +index ffc4307eb..bf1448a6a 100644 +--- a/tools-for-build/grovel-features.sh ++++ b/tools-for-build/grovel-features.sh +@@ -36,3 +36,12 @@ + if [ "$sbcl_arch" = arm ] ; then + featurep arm-softfp + fi ++ ++featurep os-provides-netdb-internal ++ ++# We need a helper shared library to test dlclose-is-noop ++$GNUMAKE dlclose-is-noop-test-helper.so > /dev/null 2>&1 ++ ++featurep dlclose-is-noop ++ ++rm -f dlclose-is-noop-test-helper.so +diff --git a/tools-for-build/os-provides-netdb-internal-test.c b/tools-for-build/os-provides-netdb-internal-test.c +new file mode 100644 +index 000000000..cab08cc41 +--- /dev/null ++++ b/tools-for-build/os-provides-netdb-internal-test.c +@@ -0,0 +1,12 @@ ++#include <netdb.h> ++ ++int main () ++{ ++#if defined NETDB_INTERNAL && defined NETDB_SUCCESS ++ return 104; ++#elif defined h_NETDB_INTERNAL && defined h_NETDB_SUCCESS ++ return 104; ++#else ++ return 0; ++#endif ++} diff --git a/user/clisp/APKBUILD b/user/clisp/APKBUILD new file mode 100644 index 000000000..d9f80ebef --- /dev/null +++ b/user/clisp/APKBUILD @@ -0,0 +1,44 @@ +# Contributor: Soren Tempel <soeren+alpine@soeren-tempel.net> +# Contrubutor: Carlo Landmeter <clandmeter@gmail.com> +# Contributor: Lee Starnes <lee@canned-death.us> +# Maintainer: Lee Starnes <lee@canned-death.us> +pkgname=clisp +pkgver=2.49 +pkgrel=0 +pkgdesc="ANSI Common Lisp interpreter, compiler, and debugger" +url="https://clisp.sourceforge.io" +arch="all" +license="GPL-2.0-only" +depends="" +depends_dev="libsigsegv-dev libffcall ncurses-dev" +makedepends="$depends_dev" +subpackages="$pkgname-dev $pkgname-doc" +source="https://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2 + no-page.h.patch" + +prepare() { + default_prepare + update_config_sub +} + +build() { + ./configure \ + --prefix=/usr \ + --with-ffcall \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + "$builddir" + # Parallel builds fail + make -j1 +} + +check() { + make check +} + +package() { + make -j1 DESTDIR="$pkgdir" install +} + +sha512sums="eef66fc85199a2c283b616db61bf67ff103eeb0f19fa907da48994dc790b6f5f8d0c74fb3bd723c6b827c0ff3cfd89fa6ba67934fc669ed5d5249044b5140d81 clisp-2.49.tar.bz2 +86273c5d5d05a8d41ab6311192e0c757d3f7fe4d78546590830aa00f8c2f170fcb08f66ea739ae8834cec00cdf0f6a20824eb6a3d0f6df97be405c26b1cc5d39 no-page.h.patch" diff --git a/user/clisp/no-page.h.patch b/user/clisp/no-page.h.patch new file mode 100644 index 000000000..aafb98a31 --- /dev/null +++ b/user/clisp/no-page.h.patch @@ -0,0 +1,12 @@ +--- a/src/unix.d ++++ b/src/unix.d +@@ -135,9 +135,6 @@ + #ifdef UNIX_AUX + #include <sys/mmu.h> /* for SHMLBA */ + #endif +- #if defined(UNIX_LINUX) && !defined(UNIX_GNU) +- #include <asm/page.h> /* for SHMLBA on Linux 2.0 */ +- #endif + /* <sys/shm.h> declares shmget(), shmat(), shmdt(), shmctl() */ + #endif + /* used by SPVW, STREAM */ diff --git a/user/libffcall/APKBUILD b/user/libffcall/APKBUILD new file mode 100644 index 000000000..a3bdfde1a --- /dev/null +++ b/user/libffcall/APKBUILD @@ -0,0 +1,39 @@ +# Contributor: Carlo Landmeter <clandmeter@gmail.com> +# Contributor: Will Sinatra <wpsinatra@gmail.com> +# Contributor: Lee Starnes <lee@canned-death.us> +# Maintainer: Lee Starnes <lee@canned-death.us> +pkgname=libffcall +pkgver=2.2 +pkgrel=0 +pkgdesc="C library for implementing foreign function calls in embedded interpreters" +url="https://www.gnu.org/software/libffcall" +arch="all" +license="GPL-2.0+" +depends="" +makedepends="" +subpackages="$pkgname-dev $pkgname-doc" +source="https://ftp.gnu.org/gnu/libffcall/libffcall-$pkgver.tar.gz" + +build() { + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + # Fails to build if building in parallel + make -j1 +} + +check() { + make check +} + +package() { + make DESTDIR="$pkgdir" htmldir=/usr/share/doc/ffcall install + +} + +sha512sums="b9d3ca4c67ab92915a8183d850153e585dcb58ceb2199a104426a7aae363d37017b1226440acd18a2db0cc207e044f71e932857189964261e8eaa6de5cef1731 libffcall-2.2.tar.gz" diff --git a/user/libsigsegv/APKBUILD b/user/libsigsegv/APKBUILD new file mode 100644 index 000000000..bb21149a3 --- /dev/null +++ b/user/libsigsegv/APKBUILD @@ -0,0 +1,35 @@ +# Contributor: Carlo Landmeter <clandmeter@gmail.com> +# Contributor: Lee Starnes <lee@canned-death.us> +# Maintainer: Lee Starnes <lee@canned-death.us> +pkgname=libsigsegv +pkgver=2.12 +pkgrel=0 +pkgdesc="A library for handling page faults in user mode" +url="https://www.gnu.org/software/libsigsegv" +arch="all" +license="GPL-2.0+" +depends="" +makedepends="" +subpackages="$pkgname-dev" +source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz" + +build() { + ./configure \ + --prefix=/usr \ + --build=$CBUILD \ + --host=$CHOST \ + --localstatedir=/var \ + --sysconfdir=/etc \ + --enable-shared + make +} + +check() { + make check +} + +package() { + make DESTDIR="$pkgdir" install +} + +sha512sums="27986e8aaf4357ed131032aa7c281a5a28c5759530c62bb76f034aea33959547dcaae805e06347a1f532f0488b72fbbbdac4400f74e8d3f2128511526e8a5913 libsigsegv-2.12.tar.gz" |