-
Notifications
You must be signed in to change notification settings - Fork 957
Description
- gevent version: 21.12.0 using Fedora's RPM package
- greenlet version: 2.0.0a1
- Python version: 3.11.0a5
- Cython version: 3.0.0a10
- Operating System: Fedora Rawhide
Description:
In Fedora, we are doing rebuilds of all Python packages with development versions of Python 3.11, currently 5th alpha.
Python 3.11 brings some backwards-incompatible changes that affect greenlet. Greenlet developers have already fixed some issues and greenlet 2.0.0a1 builds with Python 3.11. When I tried to build gevent in this setup I've got this error:
src/gevent/greenlet.c: In function ‘__pyx_f_6gevent_17_gevent_cgreenlet__extract_stack’:
src/gevent/greenlet.c:6218:43: error: ‘PyFrameObject’ {aka ‘struct _frame’} has no member named ‘f_code’
6218 | __pyx_t_6 = ((PyObject *)__pyx_v_frame->f_code);
| ^~
src/gevent/greenlet.c: In function ‘__pyx_f_6gevent_17_gevent_cgreenlet_get_generic_parent’:
src/gevent/greenlet.c:19924:26: error: ‘PyGreenlet’ {aka ‘struct _greenlet’} has no member named ‘parent’
19924 | __pyx_t_1 = ((__pyx_v_s->parent != NULL) != 0);
| ^~
In file included from /usr/include/python3.11/Python.h:42,
from src/gevent/greenlet.c:37:
src/gevent/greenlet.c:19935:40: error: ‘PyGreenlet’ {aka ‘struct _greenlet’} has no member named ‘parent’
19935 | __Pyx_INCREF(((PyObject *)__pyx_v_s->parent));
| ^~
/usr/include/python3.11/object.h:112:41: note: in definition of macro ‘_PyObject_CAST’
112 | #define _PyObject_CAST(op) ((PyObject*)(op))
| ^~
./src/gevent/_generated_include/Refnanny_proto_251246e7dae1dc172351bab7073efbf5de224e2b.h:50:27: note: in expansion of macro ‘Py_INCREF’
50 | #define __Pyx_INCREF(r) Py_INCREF(r)
| ^~~~~~~~~
src/gevent/greenlet.c:19935:5: note: in expansion of macro ‘__Pyx_INCREF’
19935 | __Pyx_INCREF(((PyObject *)__pyx_v_s->parent));
| ^~~~~~~~~~~~
src/gevent/greenlet.c:19936:37: error: ‘PyGreenlet’ {aka ‘struct _greenlet’} has no member named ‘parent’
19936 | __pyx_r = ((PyObject *)__pyx_v_s->parent);
| ^~
src/gevent/greenlet.c: In function ‘__pyx_f_6gevent_17_gevent_cgreenlet_get_my_hub’:
src/gevent/greenlet.c:19988:26: error: ‘PyGreenlet’ {aka ‘struct _greenlet’} has no member named ‘parent’
19988 | __pyx_t_1 = ((__pyx_v_s->parent != NULL) != 0);
| ^~
src/gevent/greenlet.c:19999:42: error: ‘PyGreenlet’ {aka ‘struct _greenlet’} has no member named ‘parent’
19999 | if (!(likely(((((PyObject *)__pyx_v_s->parent)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_s->parent), __pyx_ptype_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop))))) __PYX_ERR(1, 45, __pyx_L1_error)
| ^~
src/gevent/greenlet.c:1156:43: note: in definition of macro ‘likely’
1156 | #define likely(x) __builtin_expect(!!(x), 1)
| ^
src/gevent/greenlet.c:19999:112: error: ‘PyGreenlet’ {aka ‘struct _greenlet’} has no member named ‘parent’
19999 | if (!(likely(((((PyObject *)__pyx_v_s->parent)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_s->parent), __pyx_ptype_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop))))) __PYX_ERR(1, 45, __pyx_L1_error)
| ^~
src/gevent/greenlet.c:1156:43: note: in definition of macro ‘likely’
1156 | #define likely(x) __builtin_expect(!!(x), 1)
| ^
src/gevent/greenlet.c:19999:68: note: in expansion of macro ‘likely’
19999 | if (!(likely(((((PyObject *)__pyx_v_s->parent)) == Py_None) || likely(__Pyx_TypeTest(((PyObject *)__pyx_v_s->parent), __pyx_ptype_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop))))) __PYX_ERR(1, 45, __pyx_L1_error)
| ^~~~~~
src/gevent/greenlet.c:20000:40: error: ‘PyGreenlet’ {aka ‘struct _greenlet’} has no member named ‘parent’
20000 | __Pyx_INCREF(((PyObject *)__pyx_v_s->parent));
| ^~
/usr/include/python3.11/object.h:112:41: note: in definition of macro ‘_PyObject_CAST’
112 | #define _PyObject_CAST(op) ((PyObject*)(op))
| ^~
./src/gevent/_generated_include/Refnanny_proto_251246e7dae1dc172351bab7073efbf5de224e2b.h:50:27: note: in expansion of macro ‘Py_INCREF’
50 | #define __Pyx_INCREF(r) Py_INCREF(r)
| ^~~~~~~~~
src/gevent/greenlet.c:20000:5: note: in expansion of macro ‘__Pyx_INCREF’
20000 | __Pyx_INCREF(((PyObject *)__pyx_v_s->parent));
| ^~~~~~~~~~~~
src/gevent/greenlet.c:20001:124: error: ‘PyGreenlet’ {aka ‘struct _greenlet’} has no member named ‘parent’
20001 | __pyx_r = ((struct __pyx_obj_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop *)((PyObject *)__pyx_v_s->parent));
| ^~
You can see full log here https://download.copr.fedorainfracloud.org/results/@python/python3.11/fedora-rawhide-x86_64/03415430-python-gevent/builder-live.log.gz .
I am not well oriented in greenlet/gevent relationship, but I think that greenlet changed some internals and gevent needs to be adapted.
Plenty of packages depends on gevent and we cannot test them with Python 3.11 without this dependency. I would like to kindly ask for help how to fix gevent. I understand that it is just 1st alpha of greenlet and it can change in the future, but for now, some dirty patch would be sufficient, just to unblock gevent. Thank you.