commit:     3e1e36e8d5a944cfc98584c8353da76f80a69bbd
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Jun 15 11:03:57 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jun 15 13:17:28 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3e1e36e8

dev-python/cython: Improve py39 patch to avoid breaking py27

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 ...-0.29.20-r1.ebuild => cython-0.29.20-r2.ebuild} |  0
 .../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
similarity index 100%
rename from dev-python/cython/cython-0.29.20-r1.ebuild
rename to 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 e82982472e8..914269a5a23 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 <[email protected]>
-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?= <[email protected]>
+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()

Reply via email to