diff options
author | Michał Górny <mgorny@gentoo.org> | 2020-06-15 13:03:57 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2020-06-15 15:17:28 +0200 |
commit | 3e1e36e8d5a944cfc98584c8353da76f80a69bbd (patch) | |
tree | 4ad28bb2ad9b25ac90b287be8e86ca8cd549e92b /dev-python/cython | |
parent | app-text/txt2man: Bump to version 1.7.0 (diff) | |
download | gentoo-3e1e36e8d5a944cfc98584c8353da76f80a69bbd.tar.gz gentoo-3e1e36e8d5a944cfc98584c8353da76f80a69bbd.tar.bz2 gentoo-3e1e36e8d5a944cfc98584c8353da76f80a69bbd.zip |
dev-python/cython: Improve py39 patch to avoid breaking py27
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/cython')
-rw-r--r-- | dev-python/cython/cython-0.29.20-r2.ebuild (renamed from dev-python/cython/cython-0.29.20-r1.ebuild) | 0 | ||||
-rw-r--r-- | dev-python/cython/files/cython-0.29.20-py39-classmeth.patch | 69 |
2 files changed, 22 insertions, 47 deletions
diff --git a/dev-python/cython/cython-0.29.20-r1.ebuild b/dev-python/cython/cython-0.29.20-r2.ebuild index c536c20a045e..c536c20a045e 100644 --- a/dev-python/cython/cython-0.29.20-r1.ebuild +++ b/dev-python/cython/cython-0.29.20-r2.ebuild diff --git a/dev-python/cython/files/cython-0.29.20-py39-classmeth.patch b/dev-python/cython/files/cython-0.29.20-py39-classmeth.patch index e82982472e82..914269a5a232 100644 --- a/dev-python/cython/files/cython-0.29.20-py39-classmeth.patch +++ b/dev-python/cython/files/cython-0.29.20-py39-classmeth.patch @@ -1,59 +1,34 @@ -From 1bb26b964060392ecb08c3b6c8ca4626e5c1eec7 Mon Sep 17 00:00:00 2001 -From: Jeroen Demeyer <jeroen.k.demeyer@gmail.com> -Date: Wed, 28 Aug 2019 10:56:28 +0200 -Subject: [PATCH] Always bind Cython functions +From c29a7818d3b6806a457af698aec446d3d28d4f80 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org> +Date: Sun, 14 Jun 2020 13:45:21 +0200 +Subject: [PATCH] Always bind Cython functions in py3 +Rebased for cython 0.29.x, and made conditional to Python 3. This +does not solve the original staticmethod problem in Python 2 but it does +resolve classmethod problems in Python 3.9. Therefore, it unbreaks +other packages on Python 3.9, improves overall state for Python 3 +and does not introduce regressions in Python 2. --- - Cython/Utility/CythonFunction.c | 15 --------------- - tests/run/cyfunction.pyx | 12 ++++++++++++ - 2 files changed, 12 insertions(+), 15 deletions(-) + Cython/Utility/CythonFunction.c | 2 ++ + 1 file changed, 2 insertions(+) diff --git a/Cython/Utility/CythonFunction.c b/Cython/Utility/CythonFunction.c -index 01ff1e0dd4..0758548cb3 100644 +index a65c8eee36..33d0a4750a 100644 --- a/Cython/Utility/CythonFunction.c +++ b/Cython/Utility/CythonFunction.c -@@ -552,21 +552,6 @@ static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, +@@ -548,6 +548,7 @@ static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) { -- __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; -- -- if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { -- Py_INCREF(func); -- return func; -- } -- -- if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { -- if (type == NULL) -- type = (PyObject *)(Py_TYPE(obj)); -- return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); -- } -- -- if (obj == Py_None) -- obj = NULL; - return __Pyx_PyMethod_New(func, obj, type); - } ++#if PY_MAJOR_VERSION < 3 + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; -diff --git a/tests/run/cyfunction.pyx b/tests/run/cyfunction.pyx -index cbce48bcfc..bbd2cefb83 100644 ---- a/tests/run/cyfunction.pyx -+++ b/tests/run/cyfunction.pyx -@@ -376,6 +376,18 @@ class TestUnboundMethod: - def meth(self): pass + if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { +@@ -563,6 +564,7 @@ static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObj + if (obj == Py_None) + obj = NULL; ++#endif + return __Pyx_PyMethod_New(func, obj, type); + } -+class TestStaticmethod(object): -+ """ -+ >>> x = TestStaticmethod() -+ >>> x.staticmeth(42) -+ 42 -+ >>> x.staticmeth.__get__(42)() -+ 42 -+ """ -+ @staticmethod -+ def staticmeth(arg): return arg -+ -+ - cdef class TestOptimisedBuiltinMethod: - """ - >>> obj = TestOptimisedBuiltinMethod() |