[Buildroot] [PATCH] package/python3: bump to 3.13.3

Vincent Fazio vfazio at xes-inc.com
Thu Apr 10 13:42:22 UTC 2025


Drop backported patches which have been included in the release.

Fixup the tk module patch to apply cleanly on 3.13.3

Signed-off-by: Vincent Fazio <vfazio at xes-inc.com>
---
 ...d-an-option-to-disable-the-tk-module.patch |  12 ++-
 ...ad-identifiers-on-32-bit-musl-builds.patch | 100 ------------------
 ...ix-pyatomic.h-include-paths-GH-12932.patch |  63 -----------
 ...ix-mi_atomic_yield-in-mimalloc-on-32.patch |  80 --------------
 package/python3/python3.hash                  |   6 +-
 package/python3/python3.mk                    |   2 +-
 6 files changed, 11 insertions(+), 252 deletions(-)
 delete mode 100644 package/python3/0009-Fix-thread-identifiers-on-32-bit-musl-builds.patch
 delete mode 100644 package/python3/0010-3.13-gh-129296-Fix-pyatomic.h-include-paths-GH-12932.patch
 delete mode 100644 package/python3/0011-3.13-gh-131675-Fix-mi_atomic_yield-in-mimalloc-on-32.patch

diff --git a/package/python3/0006-Add-an-option-to-disable-the-tk-module.patch b/package/python3/0006-Add-an-option-to-disable-the-tk-module.patch
index 6dc5d9f837..054a676b03 100644
--- a/package/python3/0006-Add-an-option-to-disable-the-tk-module.patch
+++ b/package/python3/0006-Add-an-option-to-disable-the-tk-module.patch
@@ -1,4 +1,4 @@
-From 0b04847e1007f5d34b986eb12ae63f140d14b01e Mon Sep 17 00:00:00 2001
+From bd14e6f232232c11b67477a5d8f0caf174a089d0 Mon Sep 17 00:00:00 2001
 From: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
 Date: Wed, 22 Feb 2017 17:23:42 -0800
 Subject: [PATCH] Add an option to disable the tk module
@@ -17,13 +17,15 @@ Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
 Signed-off-by: Adam Duskett <adam.duskett at amarulasolutions.com>
 [ Vincent Fazio: ported to Python 3.13.2 ]
 Signed-off-by: Vincent Fazio <vfazio at gmail.com>
+[ Vincent Fazio: fix Python 3.13.3 conflict ]
+Signed-off-by: Vincent Fazio <vfazio at xes-inc.com>
 ---
  Makefile.pre.in | 8 +++++---
  configure.ac    | 7 +++++++
  2 files changed, 12 insertions(+), 3 deletions(-)
 
 diff --git a/Makefile.pre.in b/Makefile.pre.in
-index 88a48eb5333..6d6631cbe31 100644
+index 0f394d6ece4..a44307a0fb1 100644
 --- a/Makefile.pre.in
 +++ b/Makefile.pre.in
 @@ -2331,7 +2331,6 @@ LIBSUBDIRS=	asyncio \
@@ -42,15 +44,15 @@ index 88a48eb5333..6d6631cbe31 100644
  		test/test_tomllib \
  		test/test_tomllib/data \
  		test/test_tomllib/data/invalid \
-@@ -2460,7 +2458,6 @@ TESTSUBDIRS=	idlelib/idle_test \
- 		test/test_tomllib/data/valid/multiline-basic-str \
+@@ -2461,7 +2459,6 @@ TESTSUBDIRS=	idlelib/idle_test \
  		test/test_tools \
  		test/test_tools/i18n_data \
+ 		test/test_tools/msgfmt_data \
 -		test/test_ttk \
  		test/test_unittest \
  		test/test_unittest/testmock \
  		test/test_warnings \
-@@ -2482,6 +2479,11 @@ TESTSUBDIRS=	idlelib/idle_test \
+@@ -2483,6 +2480,11 @@ TESTSUBDIRS=	idlelib/idle_test \
  		test/xmltestdata/c14n-20 \
  		test/zipimport_data
  
diff --git a/package/python3/0009-Fix-thread-identifiers-on-32-bit-musl-builds.patch b/package/python3/0009-Fix-thread-identifiers-on-32-bit-musl-builds.patch
deleted file mode 100644
index cb5a67ad6e..0000000000
--- a/package/python3/0009-Fix-thread-identifiers-on-32-bit-musl-builds.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 8a8f8d72212d043469ef33549e8edc3bce244516 Mon Sep 17 00:00:00 2001
-From: Vincent Fazio <vfazio at gmail.com>
-Date: Sat, 22 Feb 2025 19:43:26 -0600
-Subject: [PATCH] Fix thread identifiers on 32-bit musl builds
-
-CPython's pthread-based thread identifier relies on pthread_t being able
-to be represented as an unsigned integer type.
-
-This is true in most Linux libc implementations where it's defined as an
-unsigned long, however musl typedefs it as a struct *.
-
-If the pointer has the high bit set and is cast to PyThread_ident_t, the
-resultant value can be sign-extended [0]. This can cause issues when
-comparing against threading._MainThread's identifier. The main thread's
-identifier value is retrieved via _get_main_thread_ident which is backed
-by an unsigned long which truncates sign extended bits.
-
-  >>> hex(threading.main_thread().ident)
-  '0xb6f33f3c'
-  >>> hex(threading.current_thread().ident)
-  '0xffffffffb6f33f3c'
-
-Fix this by compiling in code targeting non-glibc based Linux platforms
-to cast the pthread_t to a uintptr and then to PyThread_ident_t.
-
-Upstream: https://github.com/python/cpython/pull/130391
-[0]: https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Arrays-and-pointers-implementation.html
-
-Signed-off-by: Vincent Fazio <vfazio at gmail.com>
----
- Python/thread_pthread.h | 31 ++++++++++++++++++++++---------
- 1 file changed, 22 insertions(+), 9 deletions(-)
-
-diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h
-index f588b4620da..84900c86401 100644
---- a/Python/thread_pthread.h
-+++ b/Python/thread_pthread.h
-@@ -307,6 +307,25 @@ do_start_joinable_thread(void (*func)(void *), void *arg, pthread_t* out_id)
-     return 0;
- }
- 
-+/* Helper to convert pthread_t to PyThread_ident_t. POSIX allows pthread_t to be
-+   non-arithmetic, e.g., musl typedefs it as a pointer */
-+static PyThread_ident_t
-+_pthread_t_to_ident(pthread_t value) {
-+#if SIZEOF_PTHREAD_T > SIZEOF_LONG
-+    return (PyThread_ident_t) *(unsigned long *) &value;
-+#else
-+    PyThread_ident_t ident;
-+#if defined(__linux__) && !defined(__GLIBC__)
-+    ident = (PyThread_ident_t) (uintptr_t) value;
-+    assert(pthread_equal(value, (pthread_t) (uintptr_t) ident));
-+#else
-+    ident = (PyThread_ident_t) value;
-+    assert(pthread_equal(value, (pthread_t) ident));
-+#endif
-+    return ident;
-+#endif  // SIZEOF_PTHREAD_T > SIZEOF_LONG
-+}
-+
- int
- PyThread_start_joinable_thread(void (*func)(void *), void *arg,
-                                PyThread_ident_t* ident, PyThread_handle_t* handle) {
-@@ -314,9 +333,8 @@ PyThread_start_joinable_thread(void (*func)(void *), void *arg,
-     if (do_start_joinable_thread(func, arg, &th)) {
-         return -1;
-     }
--    *ident = (PyThread_ident_t) th;
-+    *ident = _pthread_t_to_ident(th);
-     *handle = (PyThread_handle_t) th;
--    assert(th == (pthread_t) *ident);
-     assert(th == (pthread_t) *handle);
-     return 0;
- }
-@@ -329,11 +347,7 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
-         return PYTHREAD_INVALID_THREAD_ID;
-     }
-     pthread_detach(th);
--#if SIZEOF_PTHREAD_T <= SIZEOF_LONG
--    return (unsigned long) th;
--#else
--    return (unsigned long) *(unsigned long *) &th;
--#endif
-+    return (unsigned long) _pthread_t_to_ident(th);;
- }
- 
- int
-@@ -358,8 +372,7 @@ PyThread_get_thread_ident_ex(void) {
-     if (!initialized)
-         PyThread_init_thread();
-     threadid = pthread_self();
--    assert(threadid == (pthread_t) (PyThread_ident_t) threadid);
--    return (PyThread_ident_t) threadid;
-+    return _pthread_t_to_ident(threadid);
- }
- 
- unsigned long
--- 
-2.34.1
-
diff --git a/package/python3/0010-3.13-gh-129296-Fix-pyatomic.h-include-paths-GH-12932.patch b/package/python3/0010-3.13-gh-129296-Fix-pyatomic.h-include-paths-GH-12932.patch
deleted file mode 100644
index 00451af9bf..0000000000
--- a/package/python3/0010-3.13-gh-129296-Fix-pyatomic.h-include-paths-GH-12932.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 0ee012224447b6ec7f6f20d316b24449fdcc0d4b Mon Sep 17 00:00:00 2001
-From: "Miss Islington (bot)"
- <31488909+miss-islington at users.noreply.github.com>
-Date: Fri, 28 Feb 2025 09:22:15 +0100
-Subject: [PATCH] [3.13] gh-129296: Fix `pyatomic.h` include paths (GH-129320)
- (#130667)
-
-gh-129296: Fix `pyatomic.h` include paths (GH-129320)
-
-Use relative includes in Include/cpython/pyatomic.h for
-pyatomic_gcc.h, pyatomic_std.h and pyatomic_msc.h.
-
-Do a similar change in Include/cpython/pythread.h for
-pthread_stubs.h include.
-(cherry picked from commit 3a974e39d54902699f360bc4db2fd351a6baf3ef)
-
-Co-authored-by: Zanie Blue <contact at zanie.dev>
-Upstream: 125ca028664ce72556e3983b57f521a118c4e677
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
----
- Include/cpython/pyatomic.h | 6 +++---
- Include/cpython/pythread.h | 2 +-
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/Include/cpython/pyatomic.h b/Include/cpython/pyatomic.h
-index 4ecef4f56ed..28029859d3d 100644
---- a/Include/cpython/pyatomic.h
-+++ b/Include/cpython/pyatomic.h
-@@ -529,15 +529,15 @@ static inline void _Py_atomic_fence_release(void);
- 
- #if _Py_USE_GCC_BUILTIN_ATOMICS
- #  define Py_ATOMIC_GCC_H
--#  include "cpython/pyatomic_gcc.h"
-+#  include "pyatomic_gcc.h"
- #  undef Py_ATOMIC_GCC_H
- #elif __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_ATOMICS__)
- #  define Py_ATOMIC_STD_H
--#  include "cpython/pyatomic_std.h"
-+#  include "pyatomic_std.h"
- #  undef Py_ATOMIC_STD_H
- #elif defined(_MSC_VER)
- #  define Py_ATOMIC_MSC_H
--#  include "cpython/pyatomic_msc.h"
-+#  include "pyatomic_msc.h"
- #  undef Py_ATOMIC_MSC_H
- #else
- #  error "no available pyatomic implementation for this platform/compiler"
-diff --git a/Include/cpython/pythread.h b/Include/cpython/pythread.h
-index 03f710a9f7e..e658b35bd90 100644
---- a/Include/cpython/pythread.h
-+++ b/Include/cpython/pythread.h
-@@ -22,7 +22,7 @@ PyAPI_DATA(const long long) PY_TIMEOUT_MAX;
-     */
- #   define NATIVE_TSS_KEY_T     unsigned long
- #elif defined(HAVE_PTHREAD_STUBS)
--#   include "cpython/pthread_stubs.h"
-+#   include "pthread_stubs.h"
- #   define NATIVE_TSS_KEY_T     pthread_key_t
- #else
- #   error "Require native threads. See https://bugs.python.org/issue31370"
--- 
-2.48.1
-
diff --git a/package/python3/0011-3.13-gh-131675-Fix-mi_atomic_yield-in-mimalloc-on-32.patch b/package/python3/0011-3.13-gh-131675-Fix-mi_atomic_yield-in-mimalloc-on-32.patch
deleted file mode 100644
index b4ecde94ee..0000000000
--- a/package/python3/0011-3.13-gh-131675-Fix-mi_atomic_yield-in-mimalloc-on-32.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From a9aae012b4ee83f1aba7c122943c63b69c5b9f97 Mon Sep 17 00:00:00 2001
-From: "Miss Islington (bot)"
- <31488909+miss-islington at users.noreply.github.com>
-Date: Mon, 31 Mar 2025 20:58:29 +0200
-Subject: [PATCH] [3.13] gh-131675: Fix `mi_atomic_yield` in mimalloc on 32-bit
- ARM (gh-131784) (gh-131954)
-
-Use the standard `__ARM_ARCH` macro, which is supported by GCC and Clang.
-
-The branching logic for of `__ARMEL__` has been removed so if the target
-architecture supports v7+ instructions, a yield is emitted, otherwise a nop
-is emitted. This covers both big and little endian scenarios.
-(cherry picked from commit 03f6c8e239723637811fd8d278661f5292351197)
-
-Upstream: https://github.com/python/cpython/pull/131954
-
-Signed-off-by: Vincent Fazio <vfazio at gmail.com>
-Co-authored-by: Vincent Fazio <vfazio at gmail.com>
-Signed-off-by: Vincent Fazio <vfazio at xes-inc.com>
----
- Include/internal/mimalloc/mimalloc/atomic.h     | 17 ++++++++++-------
- ...25-03-27-01-21-50.gh-issue-131675.l2zfOO.rst |  1 +
- 2 files changed, 11 insertions(+), 7 deletions(-)
- create mode 100644 Misc/NEWS.d/next/Build/2025-03-27-01-21-50.gh-issue-131675.l2zfOO.rst
-
-diff --git a/Include/internal/mimalloc/mimalloc/atomic.h b/Include/internal/mimalloc/mimalloc/atomic.h
-index 1093c540864..a46a7676ad2 100644
---- a/Include/internal/mimalloc/mimalloc/atomic.h
-+++ b/Include/internal/mimalloc/mimalloc/atomic.h
-@@ -338,8 +338,9 @@ static inline void mi_atomic_yield(void) {
-   _mm_pause();
- }
- #elif (defined(__GNUC__) || defined(__clang__)) && \
--      (defined(__x86_64__) || defined(__i386__) || defined(__arm__) || defined(__armel__) || defined(__ARMEL__) || \
--       defined(__aarch64__) || defined(__powerpc__) || defined(__ppc__) || defined(__PPC__)) || defined(__POWERPC__)
-+      (defined(__x86_64__) || defined(__i386__) || \
-+       defined(__aarch64__) || defined(__arm__) || \
-+       defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(__POWERPC__))
- #if defined(__x86_64__) || defined(__i386__)
- static inline void mi_atomic_yield(void) {
-   __asm__ volatile ("pause" ::: "memory");
-@@ -348,10 +349,16 @@ static inline void mi_atomic_yield(void) {
- static inline void mi_atomic_yield(void) {
-   __asm__ volatile("wfe");
- }
--#elif (defined(__arm__) && __ARM_ARCH__ >= 7)
-+#elif defined(__arm__)
-+#if __ARM_ARCH >= 7
- static inline void mi_atomic_yield(void) {
-   __asm__ volatile("yield" ::: "memory");
- }
-+#else
-+static inline void mi_atomic_yield(void) {
-+  __asm__ volatile ("nop" ::: "memory");
-+}
-+#endif
- #elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(__POWERPC__)
- #ifdef __APPLE__
- static inline void mi_atomic_yield(void) {
-@@ -362,10 +369,6 @@ static inline void mi_atomic_yield(void) {
-   __asm__ __volatile__ ("or 27,27,27" ::: "memory");
- }
- #endif
--#elif defined(__armel__) || defined(__ARMEL__)
--static inline void mi_atomic_yield(void) {
--  __asm__ volatile ("nop" ::: "memory");
--}
- #endif
- #elif defined(__sun)
- // Fallback for other archs
-diff --git a/Misc/NEWS.d/next/Build/2025-03-27-01-21-50.gh-issue-131675.l2zfOO.rst b/Misc/NEWS.d/next/Build/2025-03-27-01-21-50.gh-issue-131675.l2zfOO.rst
-new file mode 100644
-index 00000000000..be870a81df1
---- /dev/null
-+++ b/Misc/NEWS.d/next/Build/2025-03-27-01-21-50.gh-issue-131675.l2zfOO.rst
-@@ -0,0 +1 @@
-+Fix mimalloc library builds for 32-bit ARM targets.
--- 
-2.34.1
-
diff --git a/package/python3/python3.hash b/package/python3/python3.hash
index 4f4f67c8cb..b13f5cc742 100644
--- a/package/python3/python3.hash
+++ b/package/python3/python3.hash
@@ -1,5 +1,5 @@
-# From https://www.python.org/downloads/release/python-3132/
-md5  4c2d9202ab4db02c9d0999b14655dfe5  Python-3.13.2.tar.xz
+# From https://www.python.org/downloads/release/python-3133/
+md5  8bb5f0b8c9d9d7b87d7d98510e8d58e5  Python-3.13.3.tar.xz
 # Locally computed
-sha256  d984bcc57cd67caab26f7def42e523b1c015bbc5dc07836cf4f0b63fa159eb56  Python-3.13.2.tar.xz
+sha256  40f868bcbdeb8149a3149580bb9bfd407b3321cd48f0be631af955ac92c0e041  Python-3.13.3.tar.xz
 sha256  78b12c3a81360b357002334f0e70ea0e92eebf7a9b358805c03c48484945f3bb  LICENSE
diff --git a/package/python3/python3.mk b/package/python3/python3.mk
index 806617b8b6..3e6273a773 100644
--- a/package/python3/python3.mk
+++ b/package/python3/python3.mk
@@ -5,7 +5,7 @@
 ################################################################################
 
 PYTHON3_VERSION_MAJOR = 3.13
-PYTHON3_VERSION = $(PYTHON3_VERSION_MAJOR).2
+PYTHON3_VERSION = $(PYTHON3_VERSION_MAJOR).3
 PYTHON3_SOURCE = Python-$(PYTHON3_VERSION).tar.xz
 PYTHON3_SITE = https://python.org/ftp/python/$(PYTHON3_VERSION)
 PYTHON3_LICENSE = Python-2.0, others
-- 
2.34.1



More information about the buildroot mailing list