From: Dima Pasechnik Subject: Re: update lang/sbcl to 2.4.4 (and add libsbcl.so) To: Sebastien Marie Cc: ports@openbsd.org Date: Wed, 1 May 2024 16:50:59 +0100 Hi, On Wed, May 01, 2024 at 03:59:29PM +0200, Sebastien Marie wrote: > > 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 ? All good for me (on amd64), including using libsbcl.so. (with sbcl-librarian - I was confised about wxneeded flag at some point, but it's OK. Executables linking this library might need this flag.) Is there a reason for not installing libsbcl.a to /usr/local/lib/ ? On my system it ends up in /usr/local/lib/sbcl/. Best Dima > -- > 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