Hi,
The following diff updates sbcl to 2.4.4.
It also adds libsbcl.a and libsbcl.so to the port.
Regarding libsbcl.so, the library isn't available on all platforms (some
.S files aren't PIC compatible - at least on i386), so I only added it
to tested platforms (aarch64 and amd64 at time).
Comments or OK ?
--
Sebastien Marie
Index: Makefile
===================================================================
RCS file: /cvs/ports/lang/sbcl/Makefile,v
diff -u -p -r1.67 Makefile
--- Makefile 8 Apr 2024 15:32:45 -0000 1.67
+++ Makefile 1 May 2024 13:41:32 -0000
@@ -4,10 +4,12 @@ ONLY_FOR_ARCHS += aarch64 amd64 arm i386
COMMENT = high performance Common Lisp compiler
-V = 2.4.3
+V = 2.4.4
DISTNAME = sbcl-${V}-source
PKGNAME = sbcl-${V}
+SHARED_LIBS += sbcl 0.0
+
CATEGORIES = lang
HOMEPAGE = https://www.sbcl.org/
@@ -79,17 +81,28 @@ WANTLIB += pthread
EXTRA_PARAMS += --without-sb-thread
.endif
+# libsbcl.so is not available everywhere
+LIBSBCL-${MACHINE_ARCH} ?= No
+LIBSBCL-aarch64 = Yes
+LIBSBCL-amd64 = Yes
+
+SUBST_VARS += COMMENT_libsbcl
+
+.if ${LIBSBCL-${MACHINE_ARCH}:MYes}
+COMMENT_libsbcl = @lib
+.else
+COMMENT_libsbcl = @comment
+.endif
+
BUILD_DEPENDS += print/texinfo
LIB_DEPENDS += archivers/zstd
TEST_DEPENDS += devel/capstone/main \
devel/gmp
-MAKE_ENV += CFLAGS="${CFLAGS} -I${LOCALBASE}/include" \
- LDFLAGS="-L${LOCALBASE}/lib" \
- LINKFLAGS="-L${LOCALBASE}/lib" \
+MAKE_ENV += INFO_DIR="${PREFIX}/info/" \
+ LIBsbcl_VERSION="${LIBsbcl_VERSION}" \
MAKEINFO=${PREFIX}/bin/gmakeinfo \
MAN_DIR="${PREFIX}/man/" \
- INFO_DIR="${PREFIX}/info/" \
SBCL_MAKE_JOBS="-j${MAKE_JOBS}"
USE_GMAKE = Yes
@@ -115,7 +128,12 @@ do-build:
--xc-host="${XCHOST_CMD}" \
--with-sb-core-compression \
--with-sb-xref-for-internals \
+ --with-sb-linkable-runtime \
${EXTRA_PARAMS}
+.if ${LIBSBCL-${MACHINE_ARCH}:MYes}
+ umask 022 && cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
+ /bin/sh ./make-shared-library.sh
+.endif
umask 022 && cd ${WRKSRC}/doc/manual/ && ${SETENV} ${MAKE_ENV} \
${GMAKE} info
@@ -126,6 +144,11 @@ do-install:
post-install:
rmdir ${PREFIX}/share/doc/sbcl/html/
+.if ${LIBSBCL-${MACHINE_ARCH}:MYes}
+ # the SONAME is properly configured
+ mv ${PREFIX}/lib/libsbcl.so \
+ ${PREFIX}/lib/libsbcl.so.${LIBsbcl_VERSION}
+.endif
do-test:
cd ${WRKSRC}/tests/ && ${SETENV} ${MAKE_ENV} /bin/sh ./run-tests.sh
Index: distinfo
===================================================================
RCS file: /cvs/ports/lang/sbcl/distinfo,v
diff -u -p -r1.32 distinfo
--- distinfo 8 Apr 2024 15:32:45 -0000 1.32
+++ distinfo 1 May 2024 13:41:32 -0000
@@ -1,2 +1,2 @@
-SHA256 (sbcl-2.4.3-source.tar.bz2) = icmq35K4KtPHSj1PFYoDiJPeoOTzlNyvyWNYPDC3w/I=
-SIZE (sbcl-2.4.3-source.tar.bz2) = 8126417
+SHA256 (sbcl-2.4.4-source.tar.bz2) = ipMmJ7Px2OlhjxzcIl7csAJFaARpfiyH0UBoN2ShBtU=
+SIZE (sbcl-2.4.4-source.tar.bz2) = 8065883
Index: patches/patch-src_cold_shared_lisp
===================================================================
RCS file: patches/patch-src_cold_shared_lisp
diff -N patches/patch-src_cold_shared_lisp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_cold_shared_lisp 1 May 2024 13:41:32 -0000
@@ -0,0 +1,12 @@
+Index: src/cold/shared.lisp
+--- src/cold/shared.lisp.orig
++++ src/cold/shared.lisp
+@@ -392,7 +392,7 @@
+ ("(and cons-profiling (not sb-thread))" ":CONS-PROFILING requires :SB-THREAD")
+ ("(and sb-linkable-runtime (not (or arm arm64 x86 x86-64 ppc ppc64)))"
+ ":SB-LINKABLE-RUNTIME not supported on selected architecture")
+- ("(and sb-linkable-runtime (not (or darwin freebsd linux win32)))"
++ ("(and sb-linkable-runtime (not (or darwin openbsd freebsd linux win32)))"
+ ":SB-LINKABLE-RUNTIME not supported on selected operating system")
+ ("(and sb-eval sb-fasteval)"
+ ;; It sorta kinda works to have both, but there should be no need,
Index: patches/patch-src_runtime_Config_generic-openbsd
===================================================================
RCS file: patches/patch-src_runtime_Config_generic-openbsd
diff -N patches/patch-src_runtime_Config_generic-openbsd
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_runtime_Config_generic-openbsd 1 May 2024 13:41:32 -0000
@@ -0,0 +1,37 @@
+Index: src/runtime/Config.generic-openbsd
+--- src/runtime/Config.generic-openbsd.orig
++++ src/runtime/Config.generic-openbsd
+@@ -11,17 +11,27 @@
+
+ LINKFLAGS += -Wl,-z,wxneeded
+ OS_LIBS += -lutil
++SOFLAGS += -Wl,-soname,libsbcl.so.${LIBsbcl_VERSION}
+
+ ifdef LISP_FEATURE_SB_THREAD
+-CFLAGS += -pthread
+-OS_LIBS += -pthread
++ OS_LIBS += -lpthread
+ endif
+
++ifdef LISP_FEATURE_SB_CORE_COMPRESSION
++ CPPFLAGS += -I/usr/local/include
++ OS_LIBS += -L/usr/local/lib
++endif
++
++ifdef LISP_FEATURE_SB_LINKABLE_RUNTIME
++ LIBSBCL = libsbcl.a
++ USE_LIBSBCL = -Wl,--whole-archive libsbcl.a -Wl,--no-whole-archive
++endif
++
+ ifeq ($(DISABLE_PIE),yes)
+ ifneq ($(shell $(CC) -dM -E - < /dev/null 2>/dev/null | grep -e '__clang__'),)
+-CFLAGS += -fno-pie
+-LINKFLAGS += -nopie
+-LDFLAGS += -nopie
+-__LDFLAGS__ += -nopie
++ CFLAGS += -fno-pie
++ LINKFLAGS += -nopie
++ LDFLAGS += -nopie
++ __LDFLAGS__ += -nopie
+ endif
+ endif
Index: patches/patch-xperfecthash30_lisp-expr
===================================================================
RCS file: patches/patch-xperfecthash30_lisp-expr
diff -N patches/patch-xperfecthash30_lisp-expr
--- patches/patch-xperfecthash30_lisp-expr 8 Apr 2024 15:32:45 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,28 +0,0 @@
-Add some missing entries for bootstrapping from no-sbcl on i386
-
-Index: xperfecthash30.lisp-expr
---- xperfecthash30.lisp-expr.orig
-+++ xperfecthash30.lisp-expr
-@@ -2322,5 +2322,22 @@
- (#(73FB831 85FCC7A 1025CF34 1A13A884 1CA0C5B8)
- "(REAL FLOAT DOUBLE-FLOAT SINGLE-FLOAT RATIONAL)"
- "( (& (+ (>> val 18) (>> val 22)) 7))")
-+(#(B1B342 207D684 20BE5F4 27E4E79 34001B1 34EBEE5 35C8E17 3CC42AC 4BB7808 4C4FB75 5502DD7 70F5EF0 8E1655F 8FFB29F 9D14A2B
-+ A8542A3 AD2E8E6 B0580F9 BE9B4CB C042E4D E824A51 EF70D00 FB43EC2 10D39C38 114F77D4 116E414E 118F7907 11AD100A 11E583E7
-+ 11FF1DFE 12B50090 13B30D76 13D394E1 14287725 159AB905 15E063C2 17AAEED6 17BE5DB2 17D87E68 183A215C 1A66777D 1E25A858
-+ 1EFFF46E 1F125097)
-+ "#(T *FREE-INTERRUPT-CONTEXT-INDEX* *ALLOW-WITH-INTERRUPTS* *INTERRUPTS-ENABLED* *INTERRUPT-PENDING* *IN-WITHOUT-GCING* *GC-INHIBIT* *GC-PENDING* SB-IMPL::*UNWEAKENED-VECTORS* SB-VM::*PINNED-OBJECTS* *GC-PIN-CODE-PAGES* SB-VM:*CURRENT-CATCH-BLOCK* SB-VM::*CURRENT-UNWIND-PROTECT-BLOCK* SB-VM::*IMMOBILE-CODEBLOB-TREE* SB-VM::*IMMOBILE-CODEBLOB-VECTOR* SB-VM::*DYNSPACE-CODEBLOB-TREE* SB-IMPL::**FINALIZER-STORE** SB-IMPL::*FINALIZER-REHASHLIST* SB-IMPL::*FINALIZERS-TRIGGERED* SB-VM:*BINDING-STACK-START* SB-VM:*CONTROL-STACK-START* SB-VM:*CONTROL-STACK-END* *STEPPING* SB-VM::*FREE-TLS-INDEX* SB-VM::+REQUIRED-FOREIGN-SYMBOLS+ *GC-EPOCH* %%DATA-VECTOR-REFFERS%% SB-VM::%%DATA-VECTOR-REFFERS/CHECK-BOUNDS%% %%DATA-VECTOR-SETTERS%% SB-VM::%%DATA-VECTOR-SETTERS/CHECK-BOUNDS%% SB-C:*ALIEN-STACK-POINTER* *PSEUDO-ATOMIC-BITS* SB-VM::*BINDING-STACK-POINTER* SB-VM::*FP-CONSTANT-0D0* SB-VM::*FP-CONSTANT-1D0* SB-VM::*FP-CONSTANT-0F0* SB-VM::*FP-CONSTANT-1F0* SB-VM::*FP-CONSTANT-0L0* SB-VM::*FP-CONSTANT-1L0* SB-VM::*FP-CONSTANT-PI* SB-VM::*FP-CONSTANT-L2T* SB-VM::*FP-CONSTANT-L2E* SB-VM::*FP-CONSTANT-LG2* SB-VM::*FP-CONSTANT-LN2*)"
-+ "((let ((tab #a((32) (unsigned-byte 8) 28 28 0 36 34 0 51 0 0 0 34 19 51 41 0 0 19 18 19 0 9 59 46 0 9 16 0 0 11 12 52 57)))
-+ (let ((b (& val #x1f)))
-+ (let ((a (>> (<< val 9) 27)))
-+ (^ a (aref tab b))))))")
-+(#(B17EA B621A 765909 CA4AAA 261EC99 2740F12 2DCA563 3338509 4838F98 5408EC3 54FE9F6 620099A AA84B76 BFFC3D4 D514142 DC65EEE
-+ E5D1897 EDFD052 FA21765 10E2FDD1 11191CE8 1278BFE6 13632D1F 13FFF4F3 1451524B 169E1DF6 16AAD643 1712EA5F 17A76ECC 1806A438
-+ 187CC43D 18AD9421 19C62B17 1ABE4E69 1BBA8D9F 1C5C0C65 1CDF5674 1D7BD61D 1DC4409C 1F038512 1F354480 1F7C3062)
-+ "#(SUB-GC POST-GC INTERNAL-ERROR CONTROL-STACK-EXHAUSTED-ERROR BINDING-STACK-EXHAUSTED-ERROR ALIEN-STACK-EXHAUSTED-ERROR HEAP-EXHAUSTED-ERROR UNDEFINED-ALIEN-VARIABLE-ERROR MEMORY-FAULT-ERROR UNHANDLED-TRAP-ERROR UNDEFINED-ALIEN-FUN-ERROR SB-DI::HANDLE-BREAKPOINT SB-DI::HANDLE-SINGLE-STEP-TRAP ENTER-ALIEN-CALLBACK TWO-ARG-+ TWO-ARG-- TWO-ARG-* TWO-ARG-/ TWO-ARG-< TWO-ARG-> TWO-ARG-= EQL %NEGATE LENGTH ERROR FORMAT EQUALP SB-C::CHECK-DS-LIST SB-C::CHECK-DS-LIST/&REST WRITE-STRING WRITE-CHAR PRINC HAIRY-DATA-VECTOR-SET HAIRY-DATA-VECTOR-REF VECTOR-HAIRY-DATA-VECTOR-SET VECTOR-HAIRY-DATA-VECTOR-REF HAIRY-DATA-VECTOR-SET/CHECK-BOUNDS HAIRY-DATA-VECTOR-REF/CHECK-BOUNDS VECTOR-HAIRY-DATA-VECTOR-SET/CHECK-BOUNDS VECTOR-HAIRY-DATA-VECTOR-REF/CHECK-BOUNDS %LDB VECTOR-UNSIGNED-BYTE-8-P)"
-+ "((let ((tab #a((32) (unsigned-byte 8) 36 46 7 0 0 19 7 0 0 0 0 60 28 0 7 0 0 7 9 26 31 0 9 51 33 59 9 0 13 57 0 9)))
-+ (let ((b (& val #x1f)))
-+ (let ((a (>> (<< val 9) 27)))
-+ (^ a (aref tab b))))))")
- )
- ;; EOF
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/lang/sbcl/pkg/PLIST,v
diff -u -p -r1.17 PLIST
--- pkg/PLIST 16 Oct 2023 08:41:24 -0000 1.17
+++ pkg/PLIST 1 May 2024 13:41:32 -0000
@@ -2,6 +2,7 @@
@bin bin/sbcl
@info info/asdf.info
@info info/sbcl.info
+${COMMENT_libsbcl} lib/libsbcl.so.${LIBsbcl_VERSION}
lib/sbcl/
lib/sbcl/contrib/
lib/sbcl/contrib/asdf.fasl
@@ -44,6 +45,7 @@ lib/sbcl/contrib/sb-simple-streams.fasl
lib/sbcl/contrib/sb-sprof.asd
lib/sbcl/contrib/sb-sprof.fasl
lib/sbcl/contrib/uiop.fasl
+@static-lib lib/sbcl/libsbcl.a
lib/sbcl/sbcl.core
lib/sbcl/sbcl.mk
@man man/man1/sbcl.1
No comments:
Post a Comment