Closed salabim closed 11 months ago
#13 50.64 Failed to build greenlet
#13 50.64 ERROR: Could not build wheels for greenlet, which is required to install pyproject.toml-based projects
#13 ERROR: process "/bin/bash -c -l cd ${INSTALL_DIR} && pip install -e ." did not complete successfully: exit code: 1
Showstopper since pip nowadays require pyprojects.toml to work with pip install -e .
Python 3.12 is supported in greenlet 3. There are no issues with any modern version of pip so the person suggesting that is very wrong.
@salabim Is it possible that you have a package that's requiring an earlier version of greenlet? I just discovered that's the issue for our install, a package (playwright) requesting 2.0.2 version specifically, and then we get a wheel install error, shown below. I'm going to file an issue in playwright about it. Hopefully you can track down the issue in your requirements.
Building wheel for greenlet (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [143 lines of output]
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-aarch64-cpython-312
creating build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/__init__.py -> build/lib.linux-aarch64-cpython-312/greenlet
creating build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/test_generator_nested.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/test_extension_interface.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/test_throw.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/test_gc.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/__init__.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/test_leaks.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/test_generator.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/test_tracing.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/test_weakref.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/test_greenlet.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/test_greenlet_trash.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/test_version.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/test_contextvars.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/test_stack_saved.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/leakcheck.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/test_cpp.py -> build/lib.linux-aarch64-cpython-312/greenlet/tests
creating build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/__init__.py -> build/lib.linux-aarch64-cpython-312/greenlet/platform
running egg_info
writing src/greenlet.egg-info/PKG-INFO
writing dependency_links to src/greenlet.egg-info/dependency_links.txt
writing requirements to src/greenlet.egg-info/requires.txt
writing top-level names to src/greenlet.egg-info/top_level.txt
reading manifest file 'src/greenlet.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files found matching 'benchmarks/*.json'
no previously-included directories found matching 'docs/_build'
warning: no files found matching '*.py' under directory 'appveyor'
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.pyd' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
warning: no previously-included files matching '.coverage' found anywhere in distribution
adding license file 'LICENSE'
adding license file 'LICENSE.PSF'
adding license file 'AUTHORS'
writing manifest file 'src/greenlet.egg-info/SOURCES.txt'
copying src/greenlet/greenlet.cpp -> build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/greenlet.h -> build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/greenlet_allocator.hpp -> build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/greenlet_compiler_compat.hpp -> build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/greenlet_cpython_compat.hpp -> build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/greenlet_exceptions.hpp -> build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/greenlet_greenlet.hpp -> build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/greenlet_internal.hpp -> build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/greenlet_refs.hpp -> build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/greenlet_slp_switch.hpp -> build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/greenlet_thread_state.hpp -> build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/greenlet_thread_state_dict_cleanup.hpp -> build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/greenlet_thread_support.hpp -> build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/slp_platformselect.h -> build/lib.linux-aarch64-cpython-312/greenlet
copying src/greenlet/tests/_test_extension.c -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/tests/_test_extension_cpp.cpp -> build/lib.linux-aarch64-cpython-312/greenlet/tests
copying src/greenlet/platform/setup_switch_x64_masm.cmd -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_aarch64_gcc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_alpha_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_amd64_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_arm32_gcc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_arm32_ios.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_arm64_masm.asm -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_arm64_masm.obj -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_arm64_msvc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_csky_gcc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_m68k_gcc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_mips_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_ppc64_aix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_ppc64_linux.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_ppc_aix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_ppc_linux.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_ppc_macosx.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_ppc_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_riscv_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_s390_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_sparc_sun_gcc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_x32_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_x64_masm.asm -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_x64_masm.obj -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_x64_msvc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_x86_msvc.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
copying src/greenlet/platform/switch_x86_unix.h -> build/lib.linux-aarch64-cpython-312/greenlet/platform
running build_ext
building 'greenlet._greenlet' extension
creating build/temp.linux-aarch64-cpython-312
creating build/temp.linux-aarch64-cpython-312/src
creating build/temp.linux-aarch64-cpython-312/src/greenlet
gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -I/usr/local/include/python3.12 -c src/greenlet/greenlet.cpp -o build/temp.linux-aarch64-cpython-312/src/greenlet/greenlet.o
In file included from src/greenlet/greenlet_internal.hpp:20,
from src/greenlet/greenlet.cpp:19:
src/greenlet/greenlet_greenlet.hpp: In member function ‘void greenlet::PythonState::operator<<(const PyThreadState*)’:
src/greenlet/greenlet_greenlet.hpp:831:41: error: ‘_PyCFrame’ {aka ‘struct _PyCFrame’} has no member named ‘use_tracing’
831 | this->use_tracing = tstate->cframe->use_tracing;
| ^~~~~~~~~~~
src/greenlet/greenlet_greenlet.hpp:834:37: error: ‘const PyThreadState’ {aka ‘const struct _ts’} has no member named ‘recursion_limit’; did you mean ‘py_recursion_limit’?
834 | this->recursion_depth = tstate->recursion_limit - tstate->recursion_remaining;
| ^~~~~~~~~~~~~~~
| py_recursion_limit
src/greenlet/greenlet_greenlet.hpp:834:63: error: ‘const PyThreadState’ {aka ‘const struct _ts’} has no member named ‘recursion_remaining’; did you mean ‘c_recursion_remaining’?
834 | this->recursion_depth = tstate->recursion_limit - tstate->recursion_remaining;
| ^~~~~~~~~~~~~~~~~~~
| c_recursion_remaining
src/greenlet/greenlet_greenlet.hpp:848:42: error: ‘const PyThreadState’ {aka ‘const struct _ts’} has no member named ‘trash_delete_nesting’
848 | this->trash_delete_nesting = tstate->trash_delete_nesting;
| ^~~~~~~~~~~~~~~~~~~~
src/greenlet/greenlet_greenlet.hpp: In member function ‘void greenlet::PythonState::operator>>(PyThreadState*)’:
src/greenlet/greenlet_greenlet.hpp:867:21: error: ‘_PyCFrame’ {aka ‘struct _PyCFrame’} has no member named ‘use_tracing’
867 | tstate->cframe->use_tracing = this->use_tracing;
| ^~~~~~~~~~~
src/greenlet/greenlet_greenlet.hpp:870:13: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_remaining’; did you mean ‘c_recursion_remaining’?
870 | tstate->recursion_remaining = tstate->recursion_limit - this->recursion_depth;
| ^~~~~~~~~~~~~~~~~~~
| c_recursion_remaining
src/greenlet/greenlet_greenlet.hpp:870:43: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_limit’; did you mean ‘py_recursion_limit’?
870 | tstate->recursion_remaining = tstate->recursion_limit - this->recursion_depth;
| ^~~~~~~~~~~~~~~
| py_recursion_limit
src/greenlet/greenlet_greenlet.hpp:881:13: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘trash_delete_nesting’
881 | tstate->trash_delete_nesting = this->trash_delete_nesting;
| ^~~~~~~~~~~~~~~~~~~~
src/greenlet/greenlet_greenlet.hpp: In member function ‘void greenlet::PythonState::will_switch_from(PyThreadState*)’:
src/greenlet/greenlet_greenlet.hpp:891:48: error: ‘_PyCFrame’ {aka ‘struct _PyCFrame’} has no member named ‘use_tracing’
891 | this->use_tracing = origin_tstate->cframe->use_tracing;
| ^~~~~~~~~~~
src/greenlet/greenlet_greenlet.hpp: In member function ‘void greenlet::PythonState::set_initial_state(const PyThreadState*)’:
src/greenlet/greenlet_greenlet.hpp:899:37: error: ‘const PyThreadState’ {aka ‘const struct _ts’} has no member named ‘recursion_limit’; did you mean ‘py_recursion_limit’?
899 | this->recursion_depth = tstate->recursion_limit - tstate->recursion_remaining;
| ^~~~~~~~~~~~~~~
| py_recursion_limit
src/greenlet/greenlet_greenlet.hpp:899:63: error: ‘const PyThreadState’ {aka ‘const struct _ts’} has no member named ‘recursion_remaining’; did you mean ‘c_recursion_remaining’?
899 | this->recursion_depth = tstate->recursion_limit - tstate->recursion_remaining;
| ^~~~~~~~~~~~~~~~~~~
| c_recursion_remaining
src/greenlet/greenlet.cpp: In function ‘PyObject* mod_get_tstate_trash_delete_nesting(PyObject*)’:
src/greenlet/greenlet.cpp:3095:36: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘trash_delete_nesting’
3095 | return PyLong_FromLong(tstate->trash_delete_nesting);
| ^~~~~~~~~~~~~~~~~~~~
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for greenlet
Solved. Greenlet did not work with Python 3.12.0a2, but it works properly under Python 3.12.0.
I am trying to run a greenlet program under Python 3.12, but it doesn't seem to work. Any idea when greenlet will support Python 3.12?