<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/1a5270feaa0840a62dd55bd7cc3bc4a3ff56dc88">https://github.com/macports/macports-ports/commit/1a5270feaa0840a62dd55bd7cc3bc4a3ff56dc88</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 1a5270feaa0840a62dd55bd7cc3bc4a3ff56dc88
</span>Author: Sergey Fedorov <barracuda@macos-powerpc.org>
AuthorDate: Wed Nov 13 10:11:26 2024 +0800
<span style='display:block; white-space:pre;color:#404040;'> py-numpy: fix threads bug in f2py
</span>---
python/py-numpy/Portfile | 6 ++++-
python/py-numpy/files/patch-threads.diff | 46 ++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+), 1 deletion(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-numpy/Portfile b/python/py-numpy/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 41bedcdae54..5edbf9cc2c8 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-numpy/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-numpy/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -7,7 +7,7 @@ PortGroup compiler_blacklist_versions 1.0
</span>
name py-numpy
version 1.26.4
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 2
</span>
# stealth update recipe, due to swith to PyPI
dist_subdir ${name}/${version}_1
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -54,6 +54,10 @@ if {${name} ne ${subport}} {
</span> patchfiles-append \
patch_vendored-meson-meson-mesonbuild-dependencies-blas_lapack.py.diff
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://github.com/numpy/numpy/pull/27729
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patch-threads.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> post-patch {
# https://trac.macports.org/ticket/46392
if {${os.arch} eq "powerpc"} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-numpy/files/patch-threads.diff b/python/py-numpy/files/patch-threads.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..8a53cbd8099
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-numpy/files/patch-threads.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,46 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- numpy/f2py/cfuncs.py 2024-02-06 05:17:48.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ numpy/f2py/cfuncs.py 2024-11-13 10:02:16.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -540,24 +540,31 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #error You need to install NumPy version 0.13 or higher. See https://scipy.org/install.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# Defining the correct value to indicate thread-local storage in C without
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# running a compile-time check (which we have no control over in generated
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# code used outside of NumPy) is hard. Therefore we support overriding this
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# via an external define - the f2py-using package can them use the same
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# compile-time checks as we use for `NPY_TLS` when building NumPy.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# __STDC_NO_THREADS__ should not be coupled to the availability of _Thread_local.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# In case we get a bug report, guard it with __STDC_NO_THREADS__ after all.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# `thread_local` has become a keyword in C23, but don't try to use that yet
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# (too new, doing so while C23 support is preliminary will likely cause more
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# problems than it solves).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# Note: do not try to use `threads.h`, its availability is very low
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# *and* threads.h isn't actually used where `F2PY_THREAD_LOCAL_DECL` is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# in the generated code. See gh-27718 for more details.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cppmacros["F2PY_THREAD_LOCAL_DECL"] = """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef F2PY_THREAD_LOCAL_DECL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(_MSC_VER)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define F2PY_THREAD_LOCAL_DECL __declspec(thread)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(NPY_OS_MINGW)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define F2PY_THREAD_LOCAL_DECL __thread
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(__STDC_VERSION__) \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- && (__STDC_VERSION__ >= 201112L) \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- && !defined(__STDC_NO_THREADS__) \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- && (!defined(__GLIBC__) || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 12)) \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- && !defined(NPY_OS_OPENBSD) && !defined(NPY_OS_HAIKU)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-/* __STDC_NO_THREADS__ was first defined in a maintenance release of glibc 2.12,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- see https://lists.gnu.org/archive/html/commit-hurd/2012-07/msg00180.html,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- so `!defined(__STDC_NO_THREADS__)` may give false positive for the existence
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- of `threads.h` when using an older release of glibc 2.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- See gh-19437 for details on OpenBSD */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <threads.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define F2PY_THREAD_LOCAL_DECL thread_local
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define F2PY_THREAD_LOCAL_DECL _Thread_local
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(__GNUC__) \\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ && (__GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 4)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define F2PY_THREAD_LOCAL_DECL __thread
</span></pre><pre style='margin:0'>
</pre>