Hi,

The following patch updates lang/sbcl to 2.4.3

I am interested to have it tested on:
- arm
- powerpc
- powerpc64

(for others archs, I have already tested it).

A build test is enough (running 'make' and see if it build successfully
or error-out).

The reason is 2.4.2 introduced some changes in the way some hashes are
generated (by using perfecthash). If it works well when using sbcl for
building itself (using FLAVOR=native_bootstrap), but it uses
pre-computed values for clisp or ecl, and fail to build if some values
are missing.

So before commiting the update, I would like to be sure to not break
arm, powerpc or powerpc64... I already added bits for i386. amd64 and
aarch64 was fine.

The Makefile also includes few changes to error-out early (and have the
error message at the end of the build, instead of several lines before).

The post-extract changes will help to get the missing bits for
perfecthash:
- if usual build failed
  - install sbcl from package (pkg_add -a sbcl)
  - build sbcl using sbcl (env FLAVOR=native_bootstrap make) - it is a quick 
build (usually 5~10min)
  - update the patches to get the new bits (env FLAVOR=native_bootstrap make 
update-patches)
  - build 'normally' using the changed patches (make)

Thanks.
-- 
Sebastien Marie


Index: Makefile
===================================================================
RCS file: /cvs/ports/lang/sbcl/Makefile,v
diff -u -p -r1.66 Makefile
--- Makefile    3 Feb 2024 07:21:34 -0000       1.66
+++ Makefile    30 Mar 2024 10:36:06 -0000
@@ -4,7 +4,7 @@ ONLY_FOR_ARCHS +=       aarch64 amd64 arm i386
 
 COMMENT =      high performance Common Lisp compiler
 
-V =            2.4.1
+V =            2.4.3
 DISTNAME =     sbcl-${V}-source
 PKGNAME =      sbcl-${V}
 
@@ -55,11 +55,13 @@ XCHOST_CMD =                ${LOCALBASE}/bin/sbcl \
 
 .elif ${BOOTSTRAP_METHOD:Mclisp}
 BUILD_DEPENDS +=       lang/clisp
-XCHOST_CMD =           ${LOCALBASE}/bin/clisp -q -norc
+XCHOST_CMD =           ${LOCALBASE}/bin/clisp \
+                               -q -norc -on-error exit
 
 .elif ${BOOTSTRAP_METHOD:Mecl}
 BUILD_DEPENDS +=       lang/ecl
-XCHOST_CMD =           ${LOCALBASE}/bin/ecl -q --norc
+XCHOST_CMD =           ${LOCALBASE}/bin/ecl \
+                               -q --norc --load 
${.CURDIR}/files/ecl-nodebugger.lisp
 
 .else
 ERRORS +=      "Fatal: unknown BOOTSTRAP_METHOD"
@@ -87,11 +89,20 @@ MAKE_ENV +=         CFLAGS="${CFLAGS} -I${LOCAL
                        LINKFLAGS="-L${LOCALBASE}/lib" \
                        MAKEINFO=${PREFIX}/bin/gmakeinfo \
                        MAN_DIR="${PREFIX}/man/" \
-                       INFO_DIR="${PREFIX}/info/"
+                       INFO_DIR="${PREFIX}/info/" \
+                       SBCL_MAKE_JOBS="-j${MAKE_JOBS}"
 
 USE_GMAKE =            Yes
 
 DEBUG_PACKAGES =       ${BUILD_PACKAGES}
+
+post-extract:
+# the build might modify some files. keep original files to help creating 
patches.
+.if ${FLAVOR:Mnative_bootstrap}
+.  for nn in 30 61 63
+       cp ${WRKSRC}/xperfecthash${nn}.lisp-expr{,${PATCHORIG}}
+.  endfor
+.endif
 
 do-configure:
        printf '"%s.%s.%s"\n' "${V}" "openbsd" "${FULLPKGNAME}" \
Index: distinfo
===================================================================
RCS file: /cvs/ports/lang/sbcl/distinfo,v
diff -u -p -r1.31 distinfo
--- distinfo    3 Feb 2024 07:21:34 -0000       1.31
+++ distinfo    30 Mar 2024 10:36:06 -0000
@@ -1,2 +1,2 @@
-SHA256 (sbcl-2.4.1-source.tar.bz2) = 
2k+UhvrUE9OversbCSaTJf20v/fnuI8hld3udDJjz34=
-SIZE (sbcl-2.4.1-source.tar.bz2) = 7800453
+SHA256 (sbcl-2.4.3-source.tar.bz2) = 
icmq35K4KtPHSj1PFYoDiJPeoOTzlNyvyWNYPDC3w/I=
+SIZE (sbcl-2.4.3-source.tar.bz2) = 8126417
Index: files/ecl-nodebugger.lisp
===================================================================
RCS file: files/ecl-nodebugger.lisp
diff -N files/ecl-nodebugger.lisp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ files/ecl-nodebugger.lisp   30 Mar 2024 10:36:06 -0000
@@ -0,0 +1,6 @@
+;; define a debugger hook which exit early
+(setf *debugger-hook*
+      (lambda (c fun)
+        (princ c)
+        (si::tpl-backtrace)
+        (quit 1)))
Index: patches/patch-xperfecthash30_lisp-expr
===================================================================
RCS file: patches/patch-xperfecthash30_lisp-expr
diff -N patches/patch-xperfecthash30_lisp-expr
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-xperfecthash30_lisp-expr      30 Mar 2024 10:36:06 -0000
@@ -0,0 +1,28 @@
+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

Reply via email to