python3-gevent: Upgrade to 22.8.0

This has the python 3.11 fix in it so drop the patch
Add a patch to avoid adding native include paths to compiler cmdline

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Alexander Kanavin <alex@linutronix.de>
This commit is contained in:
Khem Raj 2022-10-11 17:18:26 -07:00
parent 354608cb88
commit 8ac152e9e8
3 changed files with 43 additions and 173 deletions

View File

@ -0,0 +1,40 @@
From f3267ad7994a4b66e6bcf72cb0e418105f77bd52 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 11 Oct 2022 17:37:01 -0700
Subject: [PATCH] _setuputils.py: Do not add sys_inc_dir
sys_inc_dir computes to ignore sysroot and ends with paths into host
system include area, which is then flagged by OE gcc since it finds
the host include path poisoning. Since we are adding the syroot anyway
we really do not need setuptools to deduce it for us.
Upstream-Status: Inappropriate [ Cross-compile specific ]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
_setuputils.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/_setuputils.py b/_setuputils.py
index d98f716..31134a4 100644
--- a/_setuputils.py
+++ b/_setuputils.py
@@ -161,7 +161,6 @@ def get_include_dirs(*extra_paths):
# Neither sysconfig dir is not enough if we're in a virtualenv; the greenlet.h
# header goes into a site/ subdir. See https://github.com/pypa/pip/issues/4610
dist_inc_dir = os.path.abspath(dist_sysconfig.get_python_inc()) # 1
- sys_inc_dir = os.path.abspath(sysconfig.get_path("include")) # 2
venv_include_dir = os.path.join(
sys.prefix, 'include', 'site',
'python' + sysconfig.get_python_version()
@@ -175,7 +174,7 @@ def get_include_dirs(*extra_paths):
return [
p
- for p in (dist_inc_dir, sys_inc_dir, dep_inc_dir) + extra_paths
+ for p in (dist_inc_dir, dep_inc_dir) + extra_paths
if os.path.exists(p)
]
--
2.38.0

View File

@ -1,170 +0,0 @@
From 90e9169c915a640739880b55ed95f88ce21fa7b0 Mon Sep 17 00:00:00 2001
From: Victor Stinner <vstinner@python.org>
Date: Tue, 1 Mar 2022 22:28:40 +0100
Subject: [PATCH] Add Python 3.11 alpha 6 support
* On Python 3.11a6 and newer, get the PyFrameObject structure from
the internal C API ("internal/pycore_frame.h").
* On Python 3.9 and newer, use PyFrame_GetBack() and
PyFrame_GetCode().
* Add frame getter and setter functions to greenlet:
* get_f_code(frame)
* set_f_lineno(frame, lineno)
* set_f_code(frame, code)
* greenlet.h: the CFrame type has been renamed to _PyCFrame.
Upstream-Status: Submitted [https://github.com/gevent/gevent/pull/1872]
Signed-off-by: Alexander Kanavin <alex@linutronix.de>
---
_setuputils.py | 4 +++
deps/greenlet/greenlet.h | 6 +++-
src/gevent/_gevent_cgreenlet.pxd | 59 ++++++++++++++++++++++++--------
src/gevent/greenlet.py | 7 ++--
4 files changed, 59 insertions(+), 17 deletions(-)
diff --git a/_setuputils.py b/_setuputils.py
index 7257b3eea..0b14ab1f0 100644
--- a/_setuputils.py
+++ b/_setuputils.py
@@ -244,6 +244,10 @@ def cythonize1(ext):
'infer_types': True,
'nonecheck': False,
},
+ compile_time_env={
+ 'PY39B1': sys.hexversion >= 0x030900B1,
+ 'PY311A6': sys.hexversion >= 0x030B00A6,
+ },
# The common_utility_include_dir (not well documented)
# causes Cython to emit separate files for much of the
# static support code. Each of the modules then includes
diff --git a/deps/greenlet/greenlet.h b/deps/greenlet/greenlet.h
index 830bef8dd..f07ce1833 100644
--- a/deps/greenlet/greenlet.h
+++ b/deps/greenlet/greenlet.h
@@ -14,6 +14,10 @@ extern "C" {
/* This is deprecated and undocumented. It does not change. */
#define GREENLET_VERSION "1.0.0"
+#if PY_VERSION_HEX < 0x30B00A6
+# define _PyCFrame CFrame
+#endif
+
typedef struct _greenlet {
PyObject_HEAD
char* stack_start;
@@ -39,7 +43,7 @@ typedef struct _greenlet {
PyObject* context;
#endif
#if PY_VERSION_HEX >= 0x30A00B1
- CFrame* cframe;
+ _PyCFrame* cframe;
#endif
} PyGreenlet;
diff --git a/src/gevent/_gevent_cgreenlet.pxd b/src/gevent/_gevent_cgreenlet.pxd
index cbb81a638..246773e24 100644
--- a/src/gevent/_gevent_cgreenlet.pxd
+++ b/src/gevent/_gevent_cgreenlet.pxd
@@ -57,30 +57,61 @@ cdef extern from "Python.h":
ctypedef class types.CodeType [object PyCodeObject]:
pass
-cdef extern from "frameobject.h":
-
- ctypedef class types.FrameType [object PyFrameObject]:
- cdef CodeType f_code
- # Accessing the f_lineno directly doesn't work. There is an accessor
- # function, PyFrame_GetLineNumber that is needed to turn the raw line number
- # into the executing line number.
- # cdef int f_lineno
- # We can't declare this in the object as an object, because it's
- # allowed to be NULL, and Cython can't handle that.
- # We have to go through the python machinery to get a
- # proper None instead, or use an inline function.
- cdef void* f_back
+IF PY311A6:
+ cdef extern from "internal/pycore_frame.h":
+ ctypedef class types._PyInterpreterFrame [object _PyInterpreterFrame]:
+ cdef CodeType f_code
+
+ ctypedef class types.FrameType [object PyFrameObject]:
+ cdef _PyInterpreterFrame f_frame
+ # Accessing the f_lineno directly doesn't work. There is an accessor
+ # function, PyFrame_GetLineNumber that is needed to turn the raw line number
+ # into the executing line number.
+ # cdef int f_lineno
+ # We can't declare this in the object as an object, because it's
+ # allowed to be NULL, and Cython can't handle that.
+ # We have to go through the python machinery to get a
+ # proper None instead, or use an inline function.
+ cdef void* f_back
+ELSE:
+ cdef extern from "frameobject.h":
+ ctypedef class types.FrameType [object PyFrameObject]:
+ cdef CodeType f_code
+ cdef void* f_back
+cdef extern from "frameobject.h":
int PyFrame_GetLineNumber(FrameType frame)
+ IF PY39B1:
+ CodeType PyFrame_GetCode(FrameType frame)
+ void* PyFrame_GetBack(FrameType frame)
@cython.nonecheck(False)
cdef inline FrameType get_f_back(FrameType frame):
+ IF PY39B1:
+ f_back = PyFrame_GetBack(frame)
+ ELSE:
+ f_back = frame.f_back
if frame.f_back != NULL:
- return <FrameType>frame.f_back
+ return <FrameType>f_back
cdef inline int get_f_lineno(FrameType frame):
return PyFrame_GetLineNumber(frame)
+cdef inline void set_f_lineno(FrameType frame, int lineno):
+ frame.f_lineno = lineno
+
+cdef inline CodeType get_f_code(FrameType frame):
+ IF PY39B1:
+ return PyFrame_GetCode(frame)
+ ELSE:
+ return frame.f_code
+
+cdef inline void set_f_code(FrameType frame, CodeType code):
+ IF PY311A6:
+ frame.f_frame.f_code = code
+ ELSE:
+ frame.f_code = code
+
cdef void _init()
cdef class SpawnedLink:
diff --git a/src/gevent/greenlet.py b/src/gevent/greenlet.py
index bed12ed44..f925770bb 100644
--- a/src/gevent/greenlet.py
+++ b/src/gevent/greenlet.py
@@ -58,6 +58,9 @@
# Frame access
locals()['get_f_back'] = lambda frame: frame.f_back
locals()['get_f_lineno'] = lambda frame: frame.f_lineno
+locals()['set_f_lineno'] = lambda frame, lineno: setattr(frame, 'f_lineno', lineno)
+locals()['get_f_code'] = lambda frame: frame.f_code
+locals()['set_f_code'] = lambda frame, code: setattr(frame, 'f_code', code)
if _PYPY:
import _continuation # pylint:disable=import-error
@@ -157,8 +160,8 @@ def _extract_stack(limit):
# Arguments are always passed to the constructor as Python objects,
# meaning we wind up boxing the f_lineno just to unbox it if we pass it.
# It's faster to simply assign once the object is created.
- older_Frame.f_code = frame.f_code
- older_Frame.f_lineno = get_f_lineno(frame) # pylint:disable=undefined-variable
+ set_f_code(older_Frame.f_code, get_f_code(frame))
+ set_f_lineno(older_Frame.f_lineno, get_f_lineno(frame)) # pylint:disable=undefined-variable
if newer_Frame is not None:
newer_Frame.f_back = older_Frame
newer_Frame = older_Frame

View File

@ -11,7 +11,9 @@ RDEPENDS:${PN} = "${PYTHON_PN}-greenlet \
${PYTHON_PN}-pprint \
"
SRC_URI[sha256sum] = "f48b64578c367b91fa793bf8eaaaf4995cb93c8bc45860e473bf868070ad094e"
SRC_URI += "file://0001-_setuputils.py-Do-not-add-sys_inc_dir.patch"
SRC_URI[sha256sum] = "868d500fe2b7f9750eadc07ada8ab32360c0e71976be2bf5919482f14a6477c7"
inherit pypi setuptools3
@ -31,5 +33,3 @@ do_configure:append() {
do_compile:append() {
sed -i -e 's#${WORKDIR}##g' ${S}/src/gevent/*.c ${S}/src/gevent/libev/*.c ${S}/src/gevent/resolver/*.c
}
SRC_URI += "file://py-3.11.patch"