Hi Joshua,
the attached patch enables threading support in lang/sbcl, which is
disabled by default for systems other than Linux.
I briefly tested the results with bordeaux-threads, which seems to work
fine now.
The only downside of the change that I have noticed is that it changes
*FEATURES*, which invalidates precompiled Lisp bytecode. This could be
cumbersome for unprepared users because it also applies to the REPL, but
removing cached bytecode in ~/.cache/common-lisp/sbcl* fixes that.
--
Gregor Best
diff -Nur /usr/ports/lang/sbcl/Makefile lang/sbcl/Makefile
--- /usr/ports/lang/sbcl/Makefile Fri Dec 13 13:07:12 2013
+++ lang/sbcl/Makefile Tue Feb 18 15:30:05 2014
@@ -10,6 +10,7 @@
PKGNAME= sbcl-${V}
WRKDIST= ${WRKDIR}/sbcl-${V}
EXTRACT_SUFX= .tar.bz2
+REVISION= 1
CATEGORIES= lang
HOMEPAGE= http://www.sbcl.org/
@@ -41,8 +42,8 @@
PORTHOME= ${TMPDIR}
MAKE_ENV= GNUMAKE=${GMAKE} INSTALL_ROOT=${PREFIX} \
MAN_DIR=${PREFIX}/man INFO_DIR=${PREFIX}/info \
- LINKFLAGS="-nopie" LDFLAGS="-nopie"
-CFLAGS += -fno-pie
+ LINKFLAGS="-nopie -pthread" LDFLAGS="-nopie -pthread"
+CFLAGS += -fno-pie -pthread
# Upstream asks that packagers append something like this to the
# version to distinguish official tarballs from third-party packages.
@@ -60,7 +61,8 @@
do-build:
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} SBCL_CONTRIB_TARGET=all \
- /bin/sh make.sh --prefix=${PREFIX} --xc-host="${BOOTSTRAP_CMD}"
+ /bin/sh make.sh --prefix=${PREFIX} --xc-host="${BOOTSTRAP_CMD}"
\
+ --with-sb-thread
cd ${WRKSRC}/doc/manual && touch sbcl.texinfo && \
${SETENV} ${MAKE_ENV} ${GMAKE} asdf.info sbcl.info html
diff -Nur /usr/ports/lang/sbcl/patches/patch-src_runtime_bsd-os_h
lang/sbcl/patches/patch-src_runtime_bsd-os_h
--- /usr/ports/lang/sbcl/patches/patch-src_runtime_bsd-os_h Thu Jan 1
01:00:00 1970
+++ lang/sbcl/patches/patch-src_runtime_bsd-os_h Tue Feb 18 15:45:00 2014
@@ -0,0 +1,11 @@
+--- src/runtime/bsd-os.h.old Tue Feb 18 15:26:08 2014
++++ src/runtime/bsd-os.h Tue Feb 18 15:26:33 2014
+@@ -69,6 +69,8 @@
+ extern int openbsd_use_fxsave;
+ #endif
+
++#define SIG_STOP_FOR_GC (SIGUSR2)
++
+ #elif defined __NetBSD__
+
+ #include <ucontext.h>