<pre style='margin:0'>
Herby Gillot (herbygillot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/c7b5cacb0ae939fd4ca17525a1ae1a1b1d0e5e82">https://github.com/macports/macports-ports/commit/c7b5cacb0ae939fd4ca17525a1ae1a1b1d0e5e82</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new c7b5cacb0ae sbcl: fix build on macOS 11 / arm
</span>c7b5cacb0ae is described below

<span style='display:block; white-space:pre;color:#808000;'>commit c7b5cacb0ae939fd4ca17525a1ae1a1b1d0e5e82
</span>Author: Kirill A. Korinsky <kirill@korins.ky>
AuthorDate: Mon Jun 12 13:17:27 2023 +0200

<span style='display:block; white-space:pre;color:#404040;'>    sbcl: fix build on macOS 11 / arm
</span>---
 lang/sbcl/Portfile                                 |  9 +---
 .../0004-arm-Darwin-disable-futex-on-BigSur.patch  | 63 ++++++++++++++++++++++
 2 files changed, 65 insertions(+), 7 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/sbcl/Portfile b/lang/sbcl/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index b1cba60308f..2a6e4da4acb 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/sbcl/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/sbcl/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -152,13 +152,8 @@ if {${configure.build_arch} eq "i386"} {
</span> }
 
 platform darwin arm 20 {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # SBCL 2.3.5 unconditionally switched on FUTEX on all arm macOS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # unfortunately it use an assembler block of code from macOS SDK
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # that doesn't work on BigSur and brokes the build.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Error: GC invariant lost, file "thread.c", line 256
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # See: https://github.com/sbcl/sbcl/blob/sbcl-2.3.5/src/runtime/thread.c#L245-L259
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    build.args-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                --without-sb-futex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                0004-arm-Darwin-disable-futex-on-BigSur.patch
</span> }
 
 # SBCL enables SIMD only when host CPU supports AVX2 which may not be true for buildbot.
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/sbcl/files/0004-arm-Darwin-disable-futex-on-BigSur.patch b/lang/sbcl/files/0004-arm-Darwin-disable-futex-on-BigSur.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..7262636b779
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/sbcl/files/0004-arm-Darwin-disable-futex-on-BigSur.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,63 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 41c087a1ccdfd1827ceeea5464acf39c225a1eaf Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: "Kirill A. Korinsky" <kirill@korins.ky>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 12 Jun 2023 13:04:08 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] arm/Darwin: disable futex on BigSur
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Unconditional enable of futex on macOS on arm had happened at
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+4ce2310cc5d9db835423168cac0d28ed8caff3eb, unfortunately it brokes build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+on macOS 11 aka BigSur as:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  fatal error encountered in SBCL pid 42995 pthread 0x16b513000:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  GC invariant lost, file "thread.c", line 256
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Building with --without-sb-futex won't help because it's enforced on all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+arm darwin machines.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Here I've moved enabling it into make-config.sh on macOS 12 or never.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ make-config.sh       | 7 +++++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/cold/shared.lisp | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 6 insertions(+), 3 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git make-config.sh make-config.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0be42f451..0812b0ca9 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- make-config.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ make-config.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -628,9 +628,9 @@ case "$sbcl_os" in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ;;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         printf ' :unix :bsd :darwin :mach-o' >> $ltf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        darwin_version=`uname -r`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        darwin_version_major=${DARWIN_VERSION_MAJOR:-${darwin_version%%.*}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if [ $sbcl_arch = "x86-64" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            darwin_version=`uname -r`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            darwin_version_major=${DARWIN_VERSION_MAJOR:-${darwin_version%%.*}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if (( 8 < $darwin_version_major )); then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           printf ' :inode64' >> $ltf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -638,6 +638,9 @@ case "$sbcl_os" in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if [ $sbcl_arch = "arm64" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             printf ' :darwin-jit :gcc-tls' >> $ltf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if (( 20 < $darwin_version_major )); then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          printf ' :sb-futex' >> $ltf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if $android; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             echo "Android build is unsupported on darwin"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/cold/shared.lisp src/cold/shared.lisp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 695c168d6..241176aa0 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/cold/shared.lisp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/cold/shared.lisp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -291,7 +291,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              (arch (target-platform-keyword)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ;; Win32 conditionally adds :sb-futex in grovel-features.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ;; Futexes aren't available in all macos versions, but they are available in all versions that support arm, so always enable them there
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        (when (target-featurep '(:and :sb-thread (:or :linux :freebsd :openbsd (:and :darwin :arm64))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        (when (target-featurep '(:and :sb-thread (:or :linux :freebsd :openbsd)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           (pushnew :sb-futex sb-xc:*features*))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ;; If may not be the best idea to put clock_gettime calls around every
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ;; futex_wait if the OS/libc you're building for does not have a vdso entry point.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.41.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span></pre><pre style='margin:0'>

</pre>