commit: 92906f88a84d05334f9a9382a3794f074ceadf99 Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Sun Oct 13 12:40:27 2024 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Sun Oct 13 12:40:27 2024 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=92906f88
dev-python/greenlet: Remove old Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> dev-python/greenlet/Manifest | 1 - .../greenlet/files/greenlet-3.0.3-py313.patch | 225 --------------------- dev-python/greenlet/greenlet-3.0.3-r1.ebuild | 53 ----- 3 files changed, 279 deletions(-) diff --git a/dev-python/greenlet/Manifest b/dev-python/greenlet/Manifest index f0aec4deb955..76df4ed386a1 100644 --- a/dev-python/greenlet/Manifest +++ b/dev-python/greenlet/Manifest @@ -1,2 +1 @@ -DIST greenlet-3.0.3.tar.gz 182013 BLAKE2B 34ba9f13dd01f5bacedb69952b4d3d08e55eba82d94c5d95cf8bfeb0f1ce94dbde9d62f5e56c33cbf2467d82f6ffd8d05a37048d0292102b1dbb68c67e9398f4 SHA512 20d8818376a200332cbc2c85968317ddf828d2adf3fcc3c53623cd1504ec9a4e4e987e841bd2fe65e934e2b8a5e73a7205847526f0bd196e7afcdf3ae40e9d9b DIST greenlet-3.1.1.tar.gz 186022 BLAKE2B 1d73f63d3bf881534bd64eca6510f32d1596261bd42176d396c7a0442494c73f8b03e57621bd11fc1bc67db550514c26a94926eaba8c53e08eecb3f999c9ba16 SHA512 915a6e22c20b235de472c61c7bc4cb60a08b79e29127c4fb817c362cee37f589bc362f12ed31bdc7dda91f49976d4e2784c8d13202bf598156a0aacacdb7f6fb diff --git a/dev-python/greenlet/files/greenlet-3.0.3-py313.patch b/dev-python/greenlet/files/greenlet-3.0.3-py313.patch deleted file mode 100644 index 195acae3fa6d..000000000000 --- a/dev-python/greenlet/files/greenlet-3.0.3-py313.patch +++ /dev/null @@ -1,225 +0,0 @@ -diff --git a/src/greenlet/TPythonState.cpp b/src/greenlet/TPythonState.cpp -index 465d4174..82eb34f0 100644 ---- a/src/greenlet/TPythonState.cpp -+++ b/src/greenlet/TPythonState.cpp -@@ -18,7 +18,11 @@ PythonState::PythonState() - #else - ,recursion_depth(0) - #endif -+#if GREENLET_PY313 -+ ,delete_later(nullptr) -+#else - ,trash_delete_nesting(0) -+#endif - #if GREENLET_PY311 - ,current_frame(nullptr) - ,datastack_chunk(nullptr) -@@ -130,11 +134,15 @@ void PythonState::operator<<(const PyThreadState *const tstate) noexcept - #if GREENLET_PY311 - #if GREENLET_PY312 - this->py_recursion_depth = tstate->py_recursion_limit - tstate->py_recursion_remaining; -- this->c_recursion_depth = C_RECURSION_LIMIT - tstate->c_recursion_remaining; -+ this->c_recursion_depth = Py_C_RECURSION_LIMIT - tstate->c_recursion_remaining; - #else // not 312 - this->recursion_depth = tstate->recursion_limit - tstate->recursion_remaining; - #endif // GREENLET_PY312 -+ #if GREENLET_PY313 -+ this->current_frame = tstate->current_frame; -+ #elif GREENLET_USE_CFRAME - this->current_frame = tstate->cframe->current_frame; -+ #endif - this->datastack_chunk = tstate->datastack_chunk; - this->datastack_top = tstate->datastack_top; - this->datastack_limit = tstate->datastack_limit; -@@ -143,7 +151,9 @@ void PythonState::operator<<(const PyThreadState *const tstate) noexcept - Py_XDECREF(frame); // PyThreadState_GetFrame gives us a new - // reference. - this->_top_frame.steal(frame); -- #if GREENLET_PY312 -+ #if GREENLET_PY313 -+ this->delete_later = Py_XNewRef(tstate->delete_later); -+ #elif GREENLET_PY312 - this->trash_delete_nesting = tstate->trash.delete_nesting; - #else // not 312 - this->trash_delete_nesting = tstate->trash_delete_nesting; -@@ -199,17 +209,25 @@ void PythonState::operator>>(PyThreadState *const tstate) noexcept - #if GREENLET_PY311 - #if GREENLET_PY312 - tstate->py_recursion_remaining = tstate->py_recursion_limit - this->py_recursion_depth; -- tstate->c_recursion_remaining = C_RECURSION_LIMIT - this->c_recursion_depth; -+ tstate->c_recursion_remaining = Py_C_RECURSION_LIMIT - this->c_recursion_depth; - this->unexpose_frames(); - #else // \/ 3.11 - tstate->recursion_remaining = tstate->recursion_limit - this->recursion_depth; - #endif // GREENLET_PY312 -+ #if GREENLET_PY313 -+ tstate->current_frame = this->current_frame; -+ #elif GREENLET_USE_CFRAME - tstate->cframe->current_frame = this->current_frame; -+ #endif - tstate->datastack_chunk = this->datastack_chunk; - tstate->datastack_top = this->datastack_top; - tstate->datastack_limit = this->datastack_limit; - this->_top_frame.relinquish_ownership(); -- #if GREENLET_PY312 -+ #if GREENLET_PY313 -+ Py_XDECREF(tstate->delete_later); -+ tstate->delete_later = this->delete_later; -+ Py_CLEAR(this->delete_later); -+ #elif GREENLET_PY312 - tstate->trash.delete_nesting = this->trash_delete_nesting; - #else // not 3.12 - tstate->trash_delete_nesting = this->trash_delete_nesting; -@@ -238,7 +256,7 @@ void PythonState::set_initial_state(const PyThreadState* const tstate) noexcept - #if GREENLET_PY312 - this->py_recursion_depth = tstate->py_recursion_limit - tstate->py_recursion_remaining; - // XXX: TODO: Comment from a reviewer: -- // Should this be ``C_RECURSION_LIMIT - tstate->c_recursion_remaining``? -+ // Should this be ``Py_C_RECURSION_LIMIT - tstate->c_recursion_remaining``? - // But to me it looks more like that might not be the right - // initialization either? - this->c_recursion_depth = tstate->py_recursion_limit - tstate->py_recursion_remaining; -diff --git a/src/greenlet/greenlet.cpp b/src/greenlet/greenlet.cpp -index 5a9818e8..dfc748a8 100644 ---- a/src/greenlet/greenlet.cpp -+++ b/src/greenlet/greenlet.cpp -@@ -1328,6 +1328,7 @@ mod_enable_optional_cleanup(PyObject* UNUSED(module), PyObject* flag) - Py_RETURN_NONE; - } - -+#if !GREENLET_PY313 - PyDoc_STRVAR(mod_get_tstate_trash_delete_nesting_doc, - "get_tstate_trash_delete_nesting() -> Integer\n" - "\n" -@@ -1343,6 +1344,7 @@ mod_get_tstate_trash_delete_nesting(PyObject* UNUSED(module)) - return PyLong_FromLong(tstate->trash_delete_nesting); - #endif - } -+#endif - - static PyMethodDef GreenMethods[] = { - {"getcurrent", -@@ -1356,7 +1358,9 @@ static PyMethodDef GreenMethods[] = { - {"get_total_main_greenlets", (PyCFunction)mod_get_total_main_greenlets, METH_NOARGS, mod_get_total_main_greenlets_doc}, - {"get_clocks_used_doing_optional_cleanup", (PyCFunction)mod_get_clocks_used_doing_optional_cleanup, METH_NOARGS, mod_get_clocks_used_doing_optional_cleanup_doc}, - {"enable_optional_cleanup", (PyCFunction)mod_enable_optional_cleanup, METH_O, mod_enable_optional_cleanup_doc}, -+#if !GREENLET_PY313 - {"get_tstate_trash_delete_nesting", (PyCFunction)mod_get_tstate_trash_delete_nesting, METH_NOARGS, mod_get_tstate_trash_delete_nesting_doc}, -+#endif - {NULL, NULL} /* Sentinel */ - }; - -diff --git a/src/greenlet/greenlet_cpython_compat.hpp b/src/greenlet/greenlet_cpython_compat.hpp -index cdc1617f..ce5fd882 100644 ---- a/src/greenlet/greenlet_cpython_compat.hpp -+++ b/src/greenlet/greenlet_cpython_compat.hpp -@@ -12,19 +12,24 @@ - - #if PY_VERSION_HEX >= 0x30A00B1 - # define GREENLET_PY310 1 -+#else -+# define GREENLET_PY310 0 -+#endif -+ - /* - Python 3.10 beta 1 changed tstate->use_tracing to a nested cframe member. - See https://github.com/python/cpython/pull/25276 - We have to save and restore this as well. -+ -+Python 3.13 removed PyThreadState.cframe (GH-108035). - */ -+#if GREENLET_PY310 && PY_VERSION_HEX < 0x30D0000 - # define GREENLET_USE_CFRAME 1 - #else - # define GREENLET_USE_CFRAME 0 --# define GREENLET_PY310 0 - #endif - - -- - #if PY_VERSION_HEX >= 0x30B00A4 - /* - Greenlet won't compile on anything older than Python 3.11 alpha 4 (see -@@ -50,6 +55,12 @@ Greenlet won't compile on anything older than Python 3.11 alpha 4 (see - # define GREENLET_PY312 0 - #endif - -+#if PY_VERSION_HEX >= 0x30D0000 -+# define GREENLET_PY313 1 -+#else -+# define GREENLET_PY313 0 -+#endif -+ - #ifndef Py_SET_REFCNT - /* Py_REFCNT and Py_SIZE macros are converted to functions - https://bugs.python.org/issue39573 */ -@@ -124,4 +135,8 @@ static inline void PyThreadState_LeaveTracing(PyThreadState *tstate) - } - #endif - -+#if !defined(Py_C_RECURSION_LIMIT) && defined(C_RECURSION_LIMIT) -+# define Py_C_RECURSION_LIMIT C_RECURSION_LIMIT -+#endif -+ - #endif /* GREENLET_CPYTHON_COMPAT_H */ -diff --git a/src/greenlet/greenlet_greenlet.hpp b/src/greenlet/greenlet_greenlet.hpp -index d52ce1fd..fbfdfbfc 100644 ---- a/src/greenlet/greenlet_greenlet.hpp -+++ b/src/greenlet/greenlet_greenlet.hpp -@@ -23,6 +23,7 @@ using greenlet::refs::BorrowedGreenlet; - #endif - - #if GREENLET_PY312 -+# define Py_BUILD_CORE - # include "internal/pycore_frame.h" - #endif - -@@ -110,7 +111,11 @@ namespace greenlet - #else - int recursion_depth; - #endif -+#if GREENLET_PY313 -+ PyObject *delete_later; -+#else - int trash_delete_nesting; -+#endif - #if GREENLET_PY311 - _PyInterpreterFrame* current_frame; - _PyStackChunk* datastack_chunk; -diff --git a/src/greenlet/tests/test_greenlet.py b/src/greenlet/tests/test_greenlet.py -index 51849cd6..259707ae 100644 ---- a/src/greenlet/tests/test_greenlet.py -+++ b/src/greenlet/tests/test_greenlet.py -@@ -471,7 +471,9 @@ def creator(): - # Unfortunately, this doesn't actually clear the references, they're in the - # fast local array. - if not wait_for_cleanup: -- result[0].gr_frame.f_locals.clear() -+ # f_locals has no clear method in Python 3.13 -+ if hasattr(result[0].gr_frame.f_locals, 'clear'): -+ result[0].gr_frame.f_locals.clear() - else: - self.assertIsNone(result[0].gr_frame) - -diff --git a/src/greenlet/tests/test_greenlet_trash.py b/src/greenlet/tests/test_greenlet_trash.py -index 8d9716e9..2bce8fd0 100644 ---- a/src/greenlet/tests/test_greenlet_trash.py -+++ b/src/greenlet/tests/test_greenlet_trash.py -@@ -29,8 +29,17 @@ - - import unittest - -+try: -+ from greenlet._greenlet import get_tstate_trash_delete_nesting -+except ImportError: -+ get_tstate_trash_delete_nesting = None -+ -+ - class TestTrashCanReEnter(unittest.TestCase): - -+ # Python 3.13 has not "trash delete nesting" anymore (but "delete later") -+ @unittest.skipIf(get_tstate_trash_delete_nesting is None, -+ 'need get_tstate_trash_delete_nesting()') - def test_it(self): - # Try several times to trigger it, because it isn't 100% - # reliable. diff --git a/dev-python/greenlet/greenlet-3.0.3-r1.ebuild b/dev-python/greenlet/greenlet-3.0.3-r1.ebuild deleted file mode 100644 index 85044130cc16..000000000000 --- a/dev-python/greenlet/greenlet-3.0.3-r1.ebuild +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DISTUTILS_EXT=1 -DISTUTILS_USE_PEP517=setuptools -# Note: greenlet is built-in in pypy -PYTHON_COMPAT=( python3_{10..13} ) - -inherit distutils-r1 pypi - -DESCRIPTION="Lightweight in-process concurrent programming" -HOMEPAGE=" - https://greenlet.readthedocs.io/en/latest/ - https://github.com/python-greenlet/greenlet/ - https://pypi.org/project/greenlet/ -" - -LICENSE="MIT" -SLOT="0" -KEYWORDS="~alpha amd64 arm arm64 -hppa ~m68k ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos" - -BDEPEND=" - test? ( - dev-python/objgraph[${PYTHON_USEDEP}] - dev-python/psutil[${PYTHON_USEDEP}] - ) -" - -distutils_enable_sphinx docs \ - dev-python/furo -distutils_enable_tests unittest - -src_prepare() { - local PATCHES=( - # https://github.com/python-greenlet/greenlet/pull/396 - "${FILESDIR}/${P}-py313.patch" - ) - - distutils-r1_src_prepare - - # patch cflag manipulations out - sed -i -e 's:global_compile_args[.]append.*:pass:' setup.py || die - # broken assertions on py3.12+ - # https://github.com/python-greenlet/greenlet/issues/368 - sed -e 's:test_trace_events_multiple_greenlets_switching:_&: ' \ - -i src/greenlet/tests/test_tracing.py || die -} - -python_test() { - eunittest greenlet.tests -}