From c6b945e9de35df905af769607bd4f3e98c44e003 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Jun 30 2023 14:52:02 +0000 Subject: Backport compile-time Python 3.12 compatibility for CYTHON_TRACE support --- diff --git a/Cython.spec b/Cython.spec index 3201e36..109f5f0 100644 --- a/Cython.spec +++ b/Cython.spec @@ -9,7 +9,7 @@ Name: Cython Version: 0.29.35 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Language for writing Python extension modules License: Apache-2.0 @@ -21,6 +21,11 @@ Source: https://github.com/cython/cython/archive/%{version}/Cython-%{ver # Fixes https://bugzilla.redhat.com/2155090 Patch: emacs-docstring-wrap.patch +# Compile-time Python 3.12 compatibility for CYTHON_TRACE support +# Taken from the 3.x branch upstream. +# See: https://github.com/cython/cython/issues/5450 +Patch: https://github.com/cython/cython/commit/03c498d3142ccee2da258c540e96f12c863159fc.patch?/py3.12-tracing.patch + BuildRequires: python3-devel BuildRequires: python3-setuptools @@ -151,6 +156,9 @@ cp -p cython-mode-init.el cython-mode-init.elc %{buildroot}%{_emacs_sitestartdir %changelog +* Fri Jun 30 2023 Petr Viktorin - 0.29.35-2 +- Compile-time Python 3.12 compatibility for CYTHON_TRACE support + * Sun Jun 18 2023 Miro HronĨok - 0.29.35-1 - Update to 0.29.35 - Fixes: rhbz#2210064 diff --git a/py3.12-tracing.patch b/py3.12-tracing.patch new file mode 100644 index 0000000..9d46643 --- /dev/null +++ b/py3.12-tracing.patch @@ -0,0 +1,43 @@ +From 03c498d3142ccee2da258c540e96f12c863159fc Mon Sep 17 00:00:00 2001 +From: Stefan Behnel +Date: Mon, 29 May 2023 22:08:50 +0200 +Subject: [PATCH] Avoid using the thread state attribute "use_tracing" in + Python 3.12 where it was removed from the struct. + +See PEP-669 (https://peps.python.org/pep-0669/) and the implementation in https://github.com/python/cpython/pull/103083. +There is more to be done to properly support PEP-669, but this makes it compile. + +See https://github.com/cython/cython/issues/5450 +--- + Cython/Utility/Profile.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/Cython/Utility/Profile.c b/Cython/Utility/Profile.c +index 20b599e7979..2b8564b226f 100644 +--- a/Cython/Utility/Profile.c ++++ b/Cython/Utility/Profile.c +@@ -61,15 +61,21 @@ + #define __Pyx_TraceFrameInit(codeobj) \ + if (codeobj) $frame_code_cname = (PyCodeObject*) codeobj; + ++ + #if PY_VERSION_HEX >= 0x030b00a2 ++ #if PY_VERSION_HEX >= 0x030C00b1 ++ #define __Pyx_IsTracing(tstate, check_tracing, check_funcs) \ ++ ((!(check_tracing) || !(tstate)->tracing) && \ ++ (!(check_funcs) || (tstate)->c_profilefunc || (CYTHON_TRACE && (tstate)->c_tracefunc))) ++ #else + #define __Pyx_IsTracing(tstate, check_tracing, check_funcs) \ + (unlikely((tstate)->cframe->use_tracing) && \ + (!(check_tracing) || !(tstate)->tracing) && \ + (!(check_funcs) || (tstate)->c_profilefunc || (CYTHON_TRACE && (tstate)->c_tracefunc))) ++ #endif + +- #define __Pyx_EnterTracing(tstate) PyThreadState_EnterTracing(tstate) +- +- #define __Pyx_LeaveTracing(tstate) PyThreadState_LeaveTracing(tstate) ++ #define __Pyx_EnterTracing(tstate) PyThreadState_EnterTracing(tstate) ++ #define __Pyx_LeaveTracing(tstate) PyThreadState_LeaveTracing(tstate) + + #elif PY_VERSION_HEX >= 0x030a00b1 + #define __Pyx_IsTracing(tstate, check_tracing, check_funcs) \