From 8ac152e9e8de65de5857b95560c12b60fd19d7a3 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Tue, 11 Oct 2022 17:18:26 -0700 Subject: 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 Cc: Alexander Kanavin --- ...001-_setuputils.py-Do-not-add-sys_inc_dir.patch | 40 +++++ .../python/python3-gevent/py-3.11.patch | 170 --------------------- .../python/python3-gevent_21.12.0.bb | 35 ----- .../python/python3-gevent_22.8.0.bb | 35 +++++ 4 files changed, 75 insertions(+), 205 deletions(-) create mode 100644 meta-python/recipes-devtools/python/python3-gevent/0001-_setuputils.py-Do-not-add-sys_inc_dir.patch delete mode 100644 meta-python/recipes-devtools/python/python3-gevent/py-3.11.patch delete mode 100644 meta-python/recipes-devtools/python/python3-gevent_21.12.0.bb create mode 100644 meta-python/recipes-devtools/python/python3-gevent_22.8.0.bb (limited to 'meta-python') diff --git a/meta-python/recipes-devtools/python/python3-gevent/0001-_setuputils.py-Do-not-add-sys_inc_dir.patch b/meta-python/recipes-devtools/python/python3-gevent/0001-_setuputils.py-Do-not-add-sys_inc_dir.patch new file mode 100644 index 0000000000..ac8b031cf5 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-gevent/0001-_setuputils.py-Do-not-add-sys_inc_dir.patch @@ -0,0 +1,40 @@ +From f3267ad7994a4b66e6bcf72cb0e418105f77bd52 Mon Sep 17 00:00:00 2001 +From: Khem Raj +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 +--- + _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 + diff --git a/meta-python/recipes-devtools/python/python3-gevent/py-3.11.patch b/meta-python/recipes-devtools/python/python3-gevent/py-3.11.patch deleted file mode 100644 index 6750c1a3cf..0000000000 --- a/meta-python/recipes-devtools/python/python3-gevent/py-3.11.patch +++ /dev/null @@ -1,170 +0,0 @@ -From 90e9169c915a640739880b55ed95f88ce21fa7b0 Mon Sep 17 00:00:00 2001 -From: Victor Stinner -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 ---- - _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 frame.f_back -+ return 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 diff --git a/meta-python/recipes-devtools/python/python3-gevent_21.12.0.bb b/meta-python/recipes-devtools/python/python3-gevent_21.12.0.bb deleted file mode 100644 index f891c2eeab..0000000000 --- a/meta-python/recipes-devtools/python/python3-gevent_21.12.0.bb +++ /dev/null @@ -1,35 +0,0 @@ -SUMMARY = "A coroutine-based Python networking library" -DESCRIPTION = "gevent is a coroutine-based Python networking library that uses greenlet to provide \ -a high-level synchronous API on top of the libevent event loop." -HOMEPAGE = "http://www.gevent.org" -LICENSE = "MIT & Python-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=4de99aac27b470c29c6c309e0c279b65" -DEPENDS += "${PYTHON_PN}-greenlet libev libuv c-ares python3-cython-native" - -RDEPENDS:${PN} = "${PYTHON_PN}-greenlet \ - ${PYTHON_PN}-mime \ - ${PYTHON_PN}-pprint \ - " - -SRC_URI[sha256sum] = "f48b64578c367b91fa793bf8eaaaf4995cb93c8bc45860e473bf868070ad094e" - -inherit pypi setuptools3 - -# Don't embed libraries, link to the system provided libs instead -export GEVENTSETUP_EMBED_CARES = "0" -export GEVENTSETUP_EMBED_LIBEV = "0" -export GEVENTSETUP_EMBED_LIBUV = "0" - -do_configure:append() { - # Delete the embedded copies of libraries so we can't accidentally link to them - rm -rf ${S}/deps - - # Delete the generated cython files, as they are all out of date with python 3.11 - rm -rf ${S}/src/gevent/*.c -} - -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" diff --git a/meta-python/recipes-devtools/python/python3-gevent_22.8.0.bb b/meta-python/recipes-devtools/python/python3-gevent_22.8.0.bb new file mode 100644 index 0000000000..96a0cb78e2 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-gevent_22.8.0.bb @@ -0,0 +1,35 @@ +SUMMARY = "A coroutine-based Python networking library" +DESCRIPTION = "gevent is a coroutine-based Python networking library that uses greenlet to provide \ +a high-level synchronous API on top of the libevent event loop." +HOMEPAGE = "http://www.gevent.org" +LICENSE = "MIT & Python-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=4de99aac27b470c29c6c309e0c279b65" +DEPENDS += "${PYTHON_PN}-greenlet libev libuv c-ares python3-cython-native" + +RDEPENDS:${PN} = "${PYTHON_PN}-greenlet \ + ${PYTHON_PN}-mime \ + ${PYTHON_PN}-pprint \ + " + +SRC_URI += "file://0001-_setuputils.py-Do-not-add-sys_inc_dir.patch" + +SRC_URI[sha256sum] = "868d500fe2b7f9750eadc07ada8ab32360c0e71976be2bf5919482f14a6477c7" + +inherit pypi setuptools3 + +# Don't embed libraries, link to the system provided libs instead +export GEVENTSETUP_EMBED_CARES = "0" +export GEVENTSETUP_EMBED_LIBEV = "0" +export GEVENTSETUP_EMBED_LIBUV = "0" + +do_configure:append() { + # Delete the embedded copies of libraries so we can't accidentally link to them + rm -rf ${S}/deps + + # Delete the generated cython files, as they are all out of date with python 3.11 + rm -rf ${S}/src/gevent/*.c +} + +do_compile:append() { + sed -i -e 's#${WORKDIR}##g' ${S}/src/gevent/*.c ${S}/src/gevent/libev/*.c ${S}/src/gevent/resolver/*.c +} -- cgit v1.2.3-54-g00ecf