From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 4B5411382C5 for ; Sat, 15 May 2021 00:36:49 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 58E36E090E; Sat, 15 May 2021 00:36:48 +0000 (UTC) Received: from smtp.gentoo.org (dev.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 18F36E090E for ; Sat, 15 May 2021 00:36:48 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id C43C5335DB3 for ; Sat, 15 May 2021 00:36:46 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 31A5F745 for ; Sat, 15 May 2021 00:36:45 +0000 (UTC) From: "Marek Szuba" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Marek Szuba" Message-ID: <1621038991.56e03cffa7bcb4b7b3043360e28e89cf308714e5.marecki@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-python/cython/files/, dev-python/cython/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-python/cython/cython-0.29.23.ebuild dev-python/cython/files/cython-0.29.23-tracing-py310.patch X-VCS-Directories: dev-python/cython/ dev-python/cython/files/ X-VCS-Committer: marecki X-VCS-Committer-Name: Marek Szuba X-VCS-Revision: 56e03cffa7bcb4b7b3043360e28e89cf308714e5 X-VCS-Branch: master Date: Sat, 15 May 2021 00:36:45 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: e0518d40-30f1-410d-8074-411d610709ef X-Archives-Hash: 4caf247a4e928035d9466759c3c74b10 commit: 56e03cffa7bcb4b7b3043360e28e89cf308714e5 Author: Marek Szuba gentoo org> AuthorDate: Fri May 14 23:11:37 2021 +0000 Commit: Marek Szuba gentoo org> CommitDate: Sat May 15 00:36:31 2021 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=56e03cff dev-python/cython: backport tracing fix for python3_10 compatibility Spotted it now that I am able to run the cython test suite. There is another error, in test_exceptions.pyx, stemming from the fact IndentationError messages in 3.10 are more verbose (e.g. expected an indented block after 'if' statement on line 1 instead of simply expected an indented block) - that one however seems to be a test-only issue. Signed-off-by: Marek Szuba gentoo.org> dev-python/cython/cython-0.29.23.ebuild | 1 + .../files/cython-0.29.23-tracing-py310.patch | 213 +++++++++++++++++++++ 2 files changed, 214 insertions(+) diff --git a/dev-python/cython/cython-0.29.23.ebuild b/dev-python/cython/cython-0.29.23.ebuild index eb35100a371..d091b7190eb 100644 --- a/dev-python/cython/cython-0.29.23.ebuild +++ b/dev-python/cython/cython-0.29.23.ebuild @@ -32,6 +32,7 @@ BDEPEND="${RDEPEND} PATCHES=( "${FILESDIR}/${PN}-0.29.14-sphinx-update.patch" "${FILESDIR}/${PN}-0.29.22-spawn-multiprocessing.patch" + "${FILESDIR}/${PN}-0.29.23-tracing-py310.patch" ) SITEFILE=50cython-gentoo.el diff --git a/dev-python/cython/files/cython-0.29.23-tracing-py310.patch b/dev-python/cython/files/cython-0.29.23-tracing-py310.patch new file mode 100644 index 00000000000..ff0e45a646d --- /dev/null +++ b/dev-python/cython/files/cython-0.29.23-tracing-py310.patch @@ -0,0 +1,213 @@ +From c9cccfeaf3f0e20c2bb14fc234e86f4fc8e4fe81 Mon Sep 17 00:00:00 2001 +From: Stefan Behnel +Date: Fri, 14 May 2021 19:39:58 +0200 +Subject: [PATCH] Adapt tracing code to Py3.10 beta 1. + +--- + Cython/Utility/Profile.c | 79 +++++++++++++++++++++++++--------------- + 1 file changed, 49 insertions(+), 30 deletions(-) + +diff --git a/Cython/Utility/Profile.c b/Cython/Utility/Profile.c +index 15ceb41cc2..2cd9af9da7 100644 +--- a/Cython/Utility/Profile.c ++++ b/Cython/Utility/Profile.c +@@ -47,13 +47,32 @@ + #define CYTHON_FRAME_DEL(frame) Py_CLEAR(frame) + #endif + +- #define __Pyx_TraceDeclarations \ +- static PyCodeObject *$frame_code_cname = NULL; \ +- CYTHON_FRAME_MODIFIER PyFrameObject *$frame_cname = NULL; \ +- int __Pyx_use_tracing = 0; ++ #define __Pyx_TraceDeclarations \ ++ static PyCodeObject *$frame_code_cname = NULL; \ ++ CYTHON_FRAME_MODIFIER PyFrameObject *$frame_cname = NULL; \ ++ int __Pyx_use_tracing = 0; + +- #define __Pyx_TraceFrameInit(codeobj) \ +- if (codeobj) $frame_code_cname = (PyCodeObject*) codeobj; ++ #define __Pyx_TraceFrameInit(codeobj) \ ++ if (codeobj) $frame_code_cname = (PyCodeObject*) codeobj; ++ ++#if PY_VERSION_HEX >= 0x030a00b1 ++ #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))) ++ ++ #define __Pyx_SetTracing(tstate, enable) \ ++ (tstate)->cframe->use_tracing = (enable) ++ ++#else ++ #define __Pyx_IsTracing(tstate, check_tracing, check_funcs) \ ++ (unlikely(tstate->use_tracing) && \ ++ (!(check_tracing) || !tstate->tracing) && \ ++ (!(check_funcs) || tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) ++ ++ #define __Pyx_SetTracing(tstate, enable) \ ++ (tstate)->use_tracing = (enable) ++#endif + + #ifdef WITH_THREAD + #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error) \ +@@ -62,8 +81,7 @@ + PyThreadState *tstate; \ + PyGILState_STATE state = PyGILState_Ensure(); \ + tstate = __Pyx_PyThreadState_Current; \ +- if (unlikely(tstate->use_tracing) && !tstate->tracing && \ +- (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) { \ ++ if (__Pyx_IsTracing(tstate, 1, 1)) { \ + __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&$frame_code_cname, &$frame_cname, tstate, funcname, srcfile, firstlineno); \ + } \ + PyGILState_Release(state); \ +@@ -71,8 +89,7 @@ + } \ + } else { \ + PyThreadState* tstate = PyThreadState_GET(); \ +- if (unlikely(tstate->use_tracing) && !tstate->tracing && \ +- (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) { \ ++ if (__Pyx_IsTracing(tstate, 1, 1)) { \ + __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&$frame_code_cname, &$frame_cname, tstate, funcname, srcfile, firstlineno); \ + if (unlikely(__Pyx_use_tracing < 0)) goto_error; \ + } \ +@@ -80,8 +97,7 @@ + #else + #define __Pyx_TraceCall(funcname, srcfile, firstlineno, nogil, goto_error) \ + { PyThreadState* tstate = PyThreadState_GET(); \ +- if (unlikely(tstate->use_tracing) && !tstate->tracing && \ +- (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) { \ ++ if (__Pyx_IsTracing(tstate, 1, 1)) { \ + __Pyx_use_tracing = __Pyx_TraceSetupAndCall(&$frame_code_cname, &$frame_cname, tstate, funcname, srcfile, firstlineno); \ + if (unlikely(__Pyx_use_tracing < 0)) goto_error; \ + } \ +@@ -91,10 +107,9 @@ + #define __Pyx_TraceException() \ + if (likely(!__Pyx_use_tracing)); else { \ + PyThreadState* tstate = __Pyx_PyThreadState_Current; \ +- if (tstate->use_tracing && \ +- (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))) { \ ++ if (__Pyx_IsTracing(tstate, 0, 1)) { \ + tstate->tracing++; \ +- tstate->use_tracing = 0; \ ++ __Pyx_SetTracing(tstate, 0); \ + PyObject *exc_info = __Pyx_GetExceptionTuple(tstate); \ + if (exc_info) { \ + if (CYTHON_TRACE && tstate->c_tracefunc) \ +@@ -104,7 +119,7 @@ + tstate->c_profileobj, $frame_cname, PyTrace_EXCEPTION, exc_info); \ + Py_DECREF(exc_info); \ + } \ +- tstate->use_tracing = 1; \ ++ __Pyx_SetTracing(tstate, 1); \ + tstate->tracing--; \ + } \ + } +@@ -113,13 +128,13 @@ + PyObject *type, *value, *traceback; + __Pyx_ErrFetchInState(tstate, &type, &value, &traceback); + tstate->tracing++; +- tstate->use_tracing = 0; ++ __Pyx_SetTracing(tstate, 0); + if (CYTHON_TRACE && tstate->c_tracefunc) + tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_RETURN, result); + if (tstate->c_profilefunc) + tstate->c_profilefunc(tstate->c_profileobj, frame, PyTrace_RETURN, result); + CYTHON_FRAME_DEL(frame); +- tstate->use_tracing = 1; ++ __Pyx_SetTracing(tstate, 1); + tstate->tracing--; + __Pyx_ErrRestoreInState(tstate, type, value, traceback); + } +@@ -132,14 +147,14 @@ + PyThreadState *tstate; \ + PyGILState_STATE state = PyGILState_Ensure(); \ + tstate = __Pyx_PyThreadState_Current; \ +- if (tstate->use_tracing) { \ ++ if (__Pyx_IsTracing(tstate, 0, 0)) { \ + __Pyx_call_return_trace_func(tstate, $frame_cname, (PyObject*)result); \ + } \ + PyGILState_Release(state); \ + } \ + } else { \ + PyThreadState* tstate = __Pyx_PyThreadState_Current; \ +- if (tstate->use_tracing) { \ ++ if (__Pyx_IsTracing(tstate, 0, 0)) { \ + __Pyx_call_return_trace_func(tstate, $frame_cname, (PyObject*)result); \ + } \ + } \ +@@ -148,7 +163,7 @@ + #define __Pyx_TraceReturn(result, nogil) \ + if (likely(!__Pyx_use_tracing)); else { \ + PyThreadState* tstate = __Pyx_PyThreadState_Current; \ +- if (tstate->use_tracing) { \ ++ if (__Pyx_IsTracing(tstate, 0, 0)) { \ + __Pyx_call_return_trace_func(tstate, $frame_cname, (PyObject*)result); \ + } \ + } +@@ -176,9 +191,11 @@ + __Pyx_ErrFetchInState(tstate, &type, &value, &traceback); + __Pyx_PyFrame_SetLineNumber(frame, lineno); + tstate->tracing++; +- tstate->use_tracing = 0; ++ __Pyx_SetTracing(tstate, 0); ++ + ret = tstate->c_tracefunc(tstate->c_traceobj, frame, PyTrace_LINE, NULL); +- tstate->use_tracing = 1; ++ ++ __Pyx_SetTracing(tstate, 1); + tstate->tracing--; + if (likely(!ret)) { + __Pyx_ErrRestoreInState(tstate, type, value, traceback); +@@ -199,7 +216,7 @@ + PyThreadState *tstate; \ + PyGILState_STATE state = __Pyx_PyGILState_Ensure(); \ + tstate = __Pyx_PyThreadState_Current; \ +- if (unlikely(tstate->use_tracing && tstate->c_tracefunc && $frame_cname->f_trace)) { \ ++ if (__Pyx_IsTracing(tstate, 0, 0) && tstate->c_tracefunc && $frame_cname->f_trace) { \ + ret = __Pyx_call_line_trace_func(tstate, $frame_cname, lineno); \ + } \ + __Pyx_PyGILState_Release(state); \ +@@ -207,7 +224,7 @@ + } \ + } else { \ + PyThreadState* tstate = __Pyx_PyThreadState_Current; \ +- if (unlikely(tstate->use_tracing && tstate->c_tracefunc && $frame_cname->f_trace)) { \ ++ if (__Pyx_IsTracing(tstate, 0, 0) && tstate->c_tracefunc && $frame_cname->f_trace) { \ + int ret = __Pyx_call_line_trace_func(tstate, $frame_cname, lineno); \ + if (unlikely(ret)) goto_error; \ + } \ +@@ -217,7 +234,7 @@ + #define __Pyx_TraceLine(lineno, nogil, goto_error) \ + if (likely(!__Pyx_use_tracing)); else { \ + PyThreadState* tstate = __Pyx_PyThreadState_Current; \ +- if (unlikely(tstate->use_tracing && tstate->c_tracefunc && $frame_cname->f_trace)) { \ ++ if (__Pyx_IsTracing(tstate, 0, 0) && tstate->c_tracefunc && $frame_cname->f_trace) { \ + int ret = __Pyx_call_line_trace_func(tstate, $frame_cname, lineno); \ + if (unlikely(ret)) goto_error; \ + } \ +@@ -263,19 +280,21 @@ static int __Pyx_TraceSetupAndCall(PyCodeObject** code, + (*frame)->f_tstate = tstate; + #endif + } +- __Pyx_PyFrame_SetLineNumber(*frame, firstlineno); ++ __Pyx_PyFrame_SetLineNumber(*frame, firstlineno); ++ + retval = 1; + tstate->tracing++; +- tstate->use_tracing = 0; ++ __Pyx_SetTracing(tstate, 0); + __Pyx_ErrFetchInState(tstate, &type, &value, &traceback); ++ + #if CYTHON_TRACE + if (tstate->c_tracefunc) + retval = tstate->c_tracefunc(tstate->c_traceobj, *frame, PyTrace_CALL, NULL) == 0; + if (retval && tstate->c_profilefunc) + #endif + retval = tstate->c_profilefunc(tstate->c_profileobj, *frame, PyTrace_CALL, NULL) == 0; +- tstate->use_tracing = (tstate->c_profilefunc || +- (CYTHON_TRACE && tstate->c_tracefunc)); ++ ++ __Pyx_SetTracing(tstate, (tstate->c_profilefunc || (CYTHON_TRACE && tstate->c_tracefunc))); + tstate->tracing--; + if (retval) { + __Pyx_ErrRestoreInState(tstate, type, value, traceback);