cs01 / gdbgui

Browser-based frontend to gdb (gnu debugger). Add breakpoints, view the stack, visualize data structures, and more in C, C++, Go, Rust, and Fortran. Run gdbgui from the terminal and a new tab will open in your browser.
https://gdbgui.com
GNU General Public License v3.0
9.91k stars 499 forks source link

Gdbgui is not compatible with Python 3.11 #447

Closed dobairoland closed 1 year ago

dobairoland commented 1 year ago

Describe the bug

Gdbgui is not compatible with Python 3.11 because it requires greenlet==1.1.2.

See https://github.com/python-greenlet/greenlet/issues/295#issuecomment-1078891696 and https://github.com/python-greenlet/greenlet/pull/280.

To Reproduce Steps to reproduce the behavior:

python3.11 -m pip install gdbgui 

Please complete the following information:

Additional context

osfe commented 1 year ago

I'm having the same issue...

➜ ~ pip install gdbgui

Defaulting to user installation because normal site-packages is not writeable
Collecting gdbgui
  Using cached gdbgui-0.15.1.0-py3-none-any.whl (1.3 MB)
Collecting bidict==0.21.2
  Using cached bidict-0.21.2-py2.py3-none-any.whl (37 kB)
Requirement already satisfied: brotli==1.0.9 in /usr/lib64/python3.11/site-packages (from gdbgui) (1.0.9)
Collecting click==8.0.1
  Using cached click-8.0.1-py3-none-any.whl (97 kB)
Requirement already satisfied: dnspython==2.2.1 in /usr/lib/python3.11/site-packages (from gdbgui) (2.2.1)
Collecting eventlet==0.33.0
  Using cached eventlet-0.33.0-py2.py3-none-any.whl (226 kB)
Collecting flask==2.0.1
  Using cached Flask-2.0.1-py3-none-any.whl (94 kB)
Collecting flask-compress==1.10.1
  Using cached Flask_Compress-1.10.1-py3-none-any.whl (7.9 kB)
Collecting flask-socketio==5.1.1
  Using cached Flask_SocketIO-5.1.1-py3-none-any.whl (17 kB)
Collecting greenlet==1.1.2
  Using cached greenlet-1.1.2.tar.gz (91 kB)
  Preparing metadata (setup.py) ... done
Requirement already satisfied: itsdangerous==2.0.1 in ./.local/lib/python3.11/site-packages (from gdbgui) (2.0.1)
Requirement already satisfied: jinja2==3.0.1 in ./.local/lib/python3.11/site-packages (from gdbgui) (3.0.1)
Requirement already satisfied: markupsafe==2.0.1 in ./.local/lib/python3.11/site-packages (from gdbgui) (2.0.1)
Requirement already satisfied: pygdbmi==0.10.0.1 in ./.local/lib/python3.11/site-packages (from gdbgui) (0.10.0.1)
Requirement already satisfied: pygments==2.10.0 in ./.local/lib/python3.11/site-packages (from gdbgui) (2.10.0)
Requirement already satisfied: python-engineio==4.2.1 in ./.local/lib/python3.11/site-packages (from gdbgui) (4.2.1)
Collecting python-socketio==5.4.0
  Using cached python_socketio-5.4.0-py3-none-any.whl (55 kB)
Requirement already satisfied: six==1.16.0 in /usr/lib/python3.11/site-packages (from gdbgui) (1.16.0)
Requirement already satisfied: werkzeug==2.0.1 in ./.local/lib/python3.11/site-packages (from gdbgui) (2.0.1)
Building wheels for collected packages: greenlet
  Building wheel for greenlet (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [273 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-311
      creating build/lib.linux-x86_64-cpython-311/greenlet
      copying src/greenlet/__init__.py -> build/lib.linux-x86_64-cpython-311/greenlet
      creating build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_weakref.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_version.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_tracing.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_throw.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_stack_saved.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_leaks.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_greenlet.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_generator_nested.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_generator.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_gc.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_extension_interface.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_cpp.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_contextvars.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/__init__.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      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'
      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'
      /usr/lib/python3.11/site-packages/setuptools/command/build_py.py:153: SetuptoolsDeprecationWarning:     Installing 'greenlet.platform' as data is deprecated, please list it in `packages`.
          !!

          ############################
          # Package would be ignored #
          ############################
          Python recognizes 'greenlet.platform' as an importable package,
          but it is not listed in the `packages` configuration of setuptools.

          'greenlet.platform' has been automatically added to the distribution only
          because it may contain data files, but this behavior is likely to change
          in future versions of setuptools (and therefore is considered deprecated).

          Please make sure that 'greenlet.platform' is included as a package by using
          the `packages` configuration field or the proper discovery methods
          (for example by using `find_namespace_packages(...)`/`find_namespace:`
          instead of `find_packages(...)`/`find:`).

          You can read more about "package discovery" and "data files" on setuptools
          documentation page.

      !!

        check.warn(importable)
      copying src/greenlet/greenlet.c -> build/lib.linux-x86_64-cpython-311/greenlet
      copying src/greenlet/greenlet.h -> build/lib.linux-x86_64-cpython-311/greenlet
      copying src/greenlet/slp_platformselect.h -> build/lib.linux-x86_64-cpython-311/greenlet
      creating build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/setup_switch_x64_masm.cmd -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_aarch64_gcc.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_alpha_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_amd64_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_arm32_gcc.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_arm32_ios.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_csky_gcc.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_m68k_gcc.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_mips_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_ppc64_aix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_ppc64_linux.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_ppc_aix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_ppc_linux.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_ppc_macosx.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_ppc_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_riscv_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_s390_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_sparc_sun_gcc.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_x32_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_x64_masm.asm -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_x64_masm.obj -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_x64_msvc.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_x86_msvc.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_x86_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/tests/_test_extension.c -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/_test_extension_cpp.cpp -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      running build_ext
      building 'greenlet._greenlet' extension
      creating build/temp.linux-x86_64-cpython-311
      creating build/temp.linux-x86_64-cpython-311/src
      creating build/temp.linux-x86_64-cpython-311/src/greenlet
      gcc -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python3.11 -c src/greenlet/greenlet.c -o build/temp.linux-x86_64-cpython-311/src/greenlet/greenlet.o
      In file included from src/greenlet/greenlet.c:11:
      src/greenlet/greenlet.h:42:5: error: unknown type name ‘CFrame’
         42 |     CFrame* cframe;
            |     ^~~~~~
      src/greenlet/greenlet.c: In function ‘green_clear_exc’:
      src/greenlet/greenlet.c:173:17: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        173 |     g->exc_state.exc_type = NULL;
            |                 ^
      src/greenlet/greenlet.c:175:17: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        175 |     g->exc_state.exc_traceback = NULL;
            |                 ^
      src/greenlet/greenlet.c: In function ‘g_switchstack’:
      src/greenlet/greenlet.c:528:44: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_depth’; did you mean ‘recursion_limit’?
        528 |         current->recursion_depth = tstate->recursion_depth;
            |                                            ^~~~~~~~~~~~~~~
            |                                            recursion_limit
      src/greenlet/greenlet.c:529:38: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘frame’; did you mean ‘cframe’?
        529 |         current->top_frame = tstate->frame;
            |                                      ^~~~~
            |                                      cframe
      src/greenlet/greenlet.c:552:25: warning: assignment to ‘int *’ from incompatible pointer type ‘_PyCFrame *’ [-Wincompatible-pointer-types]
        552 |         current->cframe = tstate->cframe;
            |                         ^
      src/greenlet/greenlet.c:577:17: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_depth’; did you mean ‘recursion_limit’?
        577 |         tstate->recursion_depth = target->recursion_depth;
            |                 ^~~~~~~~~~~~~~~
            |                 recursion_limit
      src/greenlet/greenlet.c:578:17: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘frame’; did you mean ‘cframe’?
        578 |         tstate->frame = target->top_frame;
            |                 ^~~~~
            |                 cframe
      src/greenlet/greenlet.c:601:24: warning: assignment to ‘_PyCFrame *’ from incompatible pointer type ‘int *’ [-Wincompatible-pointer-types]
        601 |         tstate->cframe = target->cframe;
            |                        ^
      src/greenlet/greenlet.c: In function ‘g_initialstub’:
      src/greenlet/greenlet.c:813:5: error: unknown type name ‘CFrame’
        813 |     CFrame trace_info;
            |     ^~~~~~
      src/greenlet/greenlet.c:857:18: error: incompatible types when assigning to type ‘int’ from type ‘_PyCFrame’
        857 |     trace_info = *PyThreadState_GET()->cframe;
            |                  ^
      src/greenlet/greenlet.c:864:17: error: request for member ‘previous’ in something not a structure or union
        864 |     self->cframe->previous = &PyThreadState_GET()->root_cframe;
            |                 ^~
      src/greenlet/greenlet.c:878:50: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_depth’; did you mean ‘recursion_limit’?
        878 |     self->recursion_depth = PyThreadState_GET()->recursion_depth;
            |                                                  ^~~~~~~~~~~~~~~
            |                                                  recursion_limit
      src/greenlet/greenlet.c: In function ‘green_new’:
      src/greenlet/greenlet.c:1018:34: warning: assignment to ‘int *’ from incompatible pointer type ‘_PyCFrame *’ [-Wincompatible-pointer-types]
       1018 |         ((PyGreenlet*)o)->cframe = &PyThreadState_GET()->root_cframe;
            |                                  ^
      In file included from /usr/include/python3.11/Python.h:45,
                       from src/greenlet/greenlet.h:8:
      src/greenlet/greenlet.c: In function ‘green_traverse’:
      src/greenlet/greenlet.c:1124:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
       1124 |     Py_VISIT(self->exc_state.exc_type);
            |                             ^
      /usr/include/python3.11/objimpl.h:199:13: note: in definition of macro ‘Py_VISIT’
        199 |         if (op) {                                                       \
            |             ^~
      In file included from /usr/include/python3.11/Python.h:38:
      src/greenlet/greenlet.c:1124:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
       1124 |     Py_VISIT(self->exc_state.exc_type);
            |                             ^
      /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
         24 | #define _Py_CAST(type, expr) ((type)(expr))
            |                                      ^~~~
      /usr/include/python3.11/objimpl.h:200:30: note: in expansion of macro ‘_PyObject_CAST’
        200 |             int vret = visit(_PyObject_CAST(op), arg);                  \
            |                              ^~~~~~~~~~~~~~
      src/greenlet/greenlet.c:1124:5: note: in expansion of macro ‘Py_VISIT’
       1124 |     Py_VISIT(self->exc_state.exc_type);
            |     ^~~~~~~~
      src/greenlet/greenlet.c:1126:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
       1126 |     Py_VISIT(self->exc_state.exc_traceback);
            |                             ^
      /usr/include/python3.11/objimpl.h:199:13: note: in definition of macro ‘Py_VISIT’
        199 |         if (op) {                                                       \
            |             ^~
      src/greenlet/greenlet.c:1126:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
       1126 |     Py_VISIT(self->exc_state.exc_traceback);
            |                             ^
      /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
         24 | #define _Py_CAST(type, expr) ((type)(expr))
            |                                      ^~~~
      /usr/include/python3.11/objimpl.h:200:30: note: in expansion of macro ‘_PyObject_CAST’
        200 |             int vret = visit(_PyObject_CAST(op), arg);                  \
            |                              ^~~~~~~~~~~~~~
      src/greenlet/greenlet.c:1126:5: note: in expansion of macro ‘Py_VISIT’
       1126 |     Py_VISIT(self->exc_state.exc_traceback);
            |     ^~~~~~~~
      src/greenlet/greenlet.c: In function ‘green_clear’:
      src/greenlet/greenlet.c:1162:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
       1162 |     Py_CLEAR(self->exc_state.exc_type);
            |                             ^
      /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
         24 | #define _Py_CAST(type, expr) ((type)(expr))
            |                                      ^~~~
      /usr/include/python3.11/object.h:581:29: note: in expansion of macro ‘_PyObject_CAST’
        581 |         PyObject *_py_tmp = _PyObject_CAST(op); \
            |                             ^~~~~~~~~~~~~~
      src/greenlet/greenlet.c:1162:5: note: in expansion of macro ‘Py_CLEAR’
       1162 |     Py_CLEAR(self->exc_state.exc_type);
            |     ^~~~~~~~
      In file included from /usr/include/python3.11/Python.h:44:
      src/greenlet/greenlet.c:1162:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
       1162 |     Py_CLEAR(self->exc_state.exc_type);
            |                             ^
      /usr/include/python3.11/object.h:583:14: note: in definition of macro ‘Py_CLEAR’
        583 |             (op) = NULL;                        \
            |              ^~
      src/greenlet/greenlet.c:1164:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
       1164 |     Py_CLEAR(self->exc_state.exc_traceback);
            |                             ^
      /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
         24 | #define _Py_CAST(type, expr) ((type)(expr))
            |                                      ^~~~
      /usr/include/python3.11/object.h:581:29: note: in expansion of macro ‘_PyObject_CAST’
        581 |         PyObject *_py_tmp = _PyObject_CAST(op); \
            |                             ^~~~~~~~~~~~~~
      src/greenlet/greenlet.c:1164:5: note: in expansion of macro ‘Py_CLEAR’
       1164 |     Py_CLEAR(self->exc_state.exc_traceback);
            |     ^~~~~~~~
      src/greenlet/greenlet.c:1164:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
       1164 |     Py_CLEAR(self->exc_state.exc_traceback);
            |                             ^
      /usr/include/python3.11/object.h:583:14: note: in definition of macro ‘Py_CLEAR’
        583 |             (op) = NULL;                        \
            |              ^~
      src/greenlet/greenlet.c: In function ‘green_dealloc’:
      src/greenlet/greenlet.c:1256:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
       1256 |     Py_CLEAR(self->exc_state.exc_type);
            |                             ^
      /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
         24 | #define _Py_CAST(type, expr) ((type)(expr))
            |                                      ^~~~
      /usr/include/python3.11/object.h:581:29: note: in expansion of macro ‘_PyObject_CAST’
        581 |         PyObject *_py_tmp = _PyObject_CAST(op); \
            |                             ^~~~~~~~~~~~~~
      src/greenlet/greenlet.c:1256:5: note: in expansion of macro ‘Py_CLEAR’
       1256 |     Py_CLEAR(self->exc_state.exc_type);
            |     ^~~~~~~~
      src/greenlet/greenlet.c:1256:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
       1256 |     Py_CLEAR(self->exc_state.exc_type);
            |                             ^
      /usr/include/python3.11/object.h:583:14: note: in definition of macro ‘Py_CLEAR’
        583 |             (op) = NULL;                        \
            |              ^~
      src/greenlet/greenlet.c:1258:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
       1258 |     Py_CLEAR(self->exc_state.exc_traceback);
            |                             ^
      /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
         24 | #define _Py_CAST(type, expr) ((type)(expr))
            |                                      ^~~~
      /usr/include/python3.11/object.h:581:29: note: in expansion of macro ‘_PyObject_CAST’
        581 |         PyObject *_py_tmp = _PyObject_CAST(op); \
            |                             ^~~~~~~~~~~~~~
      src/greenlet/greenlet.c:1258:5: note: in expansion of macro ‘Py_CLEAR’
       1258 |     Py_CLEAR(self->exc_state.exc_traceback);
            |     ^~~~~~~~
      src/greenlet/greenlet.c:1258:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
       1258 |     Py_CLEAR(self->exc_state.exc_traceback);
            |                             ^
      /usr/include/python3.11/object.h:583:14: note: in definition of macro ‘Py_CLEAR’
        583 |             (op) = NULL;                        \
            |              ^~
      src/greenlet/greenlet.c: In function ‘PyGreenlet_New’:
      src/greenlet/greenlet.c:1777:15: warning: assignment to ‘int *’ from incompatible pointer type ‘_PyCFrame *’ [-Wincompatible-pointer-types]
       1777 |     g->cframe = &PyThreadState_GET()->root_cframe;
            |               ^
      error: command '/usr/lib64/ccache/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
  Running setup.py clean for greenlet
Failed to build greenlet
Installing collected packages: greenlet, click, bidict, python-socketio, flask, eventlet, flask-socketio, flask-compress, gdbgui
  Attempting uninstall: greenlet
    Found existing installation: greenlet 2.0.0a2
    Uninstalling greenlet-2.0.0a2:
      Successfully uninstalled greenlet-2.0.0a2
  Running setup.py install for greenlet ... error
  error: subprocess-exited-with-error

  × Running setup.py install for greenlet did not run successfully.
  │ exit code: 1
  ╰─> [275 lines of output]
      running install
      /usr/lib/python3.11/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
        warnings.warn(
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-311
      creating build/lib.linux-x86_64-cpython-311/greenlet
      copying src/greenlet/__init__.py -> build/lib.linux-x86_64-cpython-311/greenlet
      creating build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_weakref.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_version.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_tracing.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_throw.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_stack_saved.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_leaks.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_greenlet.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_generator_nested.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_generator.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_gc.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_extension_interface.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_cpp.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/test_contextvars.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/__init__.py -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      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'
      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'
      /usr/lib/python3.11/site-packages/setuptools/command/build_py.py:153: SetuptoolsDeprecationWarning:     Installing 'greenlet.platform' as data is deprecated, please list it in `packages`.
          !!

          ############################
          # Package would be ignored #
          ############################
          Python recognizes 'greenlet.platform' as an importable package,
          but it is not listed in the `packages` configuration of setuptools.

          'greenlet.platform' has been automatically added to the distribution only
          because it may contain data files, but this behavior is likely to change
          in future versions of setuptools (and therefore is considered deprecated).

          Please make sure that 'greenlet.platform' is included as a package by using
          the `packages` configuration field or the proper discovery methods
          (for example by using `find_namespace_packages(...)`/`find_namespace:`
          instead of `find_packages(...)`/`find:`).

          You can read more about "package discovery" and "data files" on setuptools
          documentation page.

      !!

        check.warn(importable)
      copying src/greenlet/greenlet.c -> build/lib.linux-x86_64-cpython-311/greenlet
      copying src/greenlet/greenlet.h -> build/lib.linux-x86_64-cpython-311/greenlet
      copying src/greenlet/slp_platformselect.h -> build/lib.linux-x86_64-cpython-311/greenlet
      creating build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/setup_switch_x64_masm.cmd -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_aarch64_gcc.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_alpha_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_amd64_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_arm32_gcc.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_arm32_ios.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_csky_gcc.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_m68k_gcc.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_mips_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_ppc64_aix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_ppc64_linux.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_ppc_aix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_ppc_linux.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_ppc_macosx.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_ppc_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_riscv_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_s390_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_sparc_sun_gcc.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_x32_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_x64_masm.asm -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_x64_masm.obj -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_x64_msvc.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_x86_msvc.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/platform/switch_x86_unix.h -> build/lib.linux-x86_64-cpython-311/greenlet/platform
      copying src/greenlet/tests/_test_extension.c -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      copying src/greenlet/tests/_test_extension_cpp.cpp -> build/lib.linux-x86_64-cpython-311/greenlet/tests
      running build_ext
      building 'greenlet._greenlet' extension
      creating build/temp.linux-x86_64-cpython-311
      creating build/temp.linux-x86_64-cpython-311/src
      creating build/temp.linux-x86_64-cpython-311/src/greenlet
      gcc -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python3.11 -c src/greenlet/greenlet.c -o build/temp.linux-x86_64-cpython-311/src/greenlet/greenlet.o
      In file included from src/greenlet/greenlet.c:11:
      src/greenlet/greenlet.h:42:5: error: unknown type name ‘CFrame’
         42 |     CFrame* cframe;
            |     ^~~~~~
      src/greenlet/greenlet.c: In function ‘green_clear_exc’:
      src/greenlet/greenlet.c:173:17: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        173 |     g->exc_state.exc_type = NULL;
            |                 ^
      src/greenlet/greenlet.c:175:17: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        175 |     g->exc_state.exc_traceback = NULL;
            |                 ^
      src/greenlet/greenlet.c: In function ‘g_switchstack’:
      src/greenlet/greenlet.c:528:44: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_depth’; did you mean ‘recursion_limit’?
        528 |         current->recursion_depth = tstate->recursion_depth;
            |                                            ^~~~~~~~~~~~~~~
            |                                            recursion_limit
      src/greenlet/greenlet.c:529:38: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘frame’; did you mean ‘cframe’?
        529 |         current->top_frame = tstate->frame;
            |                                      ^~~~~
            |                                      cframe
      src/greenlet/greenlet.c:552:25: warning: assignment to ‘int *’ from incompatible pointer type ‘_PyCFrame *’ [-Wincompatible-pointer-types]
        552 |         current->cframe = tstate->cframe;
            |                         ^
      src/greenlet/greenlet.c:577:17: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_depth’; did you mean ‘recursion_limit’?
        577 |         tstate->recursion_depth = target->recursion_depth;
            |                 ^~~~~~~~~~~~~~~
            |                 recursion_limit
      src/greenlet/greenlet.c:578:17: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘frame’; did you mean ‘cframe’?
        578 |         tstate->frame = target->top_frame;
            |                 ^~~~~
            |                 cframe
      src/greenlet/greenlet.c:601:24: warning: assignment to ‘_PyCFrame *’ from incompatible pointer type ‘int *’ [-Wincompatible-pointer-types]
        601 |         tstate->cframe = target->cframe;
            |                        ^
      src/greenlet/greenlet.c: In function ‘g_initialstub’:
      src/greenlet/greenlet.c:813:5: error: unknown type name ‘CFrame’
        813 |     CFrame trace_info;
            |     ^~~~~~
      src/greenlet/greenlet.c:857:18: error: incompatible types when assigning to type ‘int’ from type ‘_PyCFrame’
        857 |     trace_info = *PyThreadState_GET()->cframe;
            |                  ^
      src/greenlet/greenlet.c:864:17: error: request for member ‘previous’ in something not a structure or union
        864 |     self->cframe->previous = &PyThreadState_GET()->root_cframe;
            |                 ^~
      src/greenlet/greenlet.c:878:50: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘recursion_depth’; did you mean ‘recursion_limit’?
        878 |     self->recursion_depth = PyThreadState_GET()->recursion_depth;
            |                                                  ^~~~~~~~~~~~~~~
            |                                                  recursion_limit
      src/greenlet/greenlet.c: In function ‘green_new’:
      src/greenlet/greenlet.c:1018:34: warning: assignment to ‘int *’ from incompatible pointer type ‘_PyCFrame *’ [-Wincompatible-pointer-types]
       1018 |         ((PyGreenlet*)o)->cframe = &PyThreadState_GET()->root_cframe;
            |                                  ^
      In file included from /usr/include/python3.11/Python.h:45,
                       from src/greenlet/greenlet.h:8:
      src/greenlet/greenlet.c: In function ‘green_traverse’:
      src/greenlet/greenlet.c:1124:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
       1124 |     Py_VISIT(self->exc_state.exc_type);
            |                             ^
      /usr/include/python3.11/objimpl.h:199:13: note: in definition of macro ‘Py_VISIT’
        199 |         if (op) {                                                       \
            |             ^~
      In file included from /usr/include/python3.11/Python.h:38:
      src/greenlet/greenlet.c:1124:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
       1124 |     Py_VISIT(self->exc_state.exc_type);
            |                             ^
      /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
         24 | #define _Py_CAST(type, expr) ((type)(expr))
            |                                      ^~~~
      /usr/include/python3.11/objimpl.h:200:30: note: in expansion of macro ‘_PyObject_CAST’
        200 |             int vret = visit(_PyObject_CAST(op), arg);                  \
            |                              ^~~~~~~~~~~~~~
      src/greenlet/greenlet.c:1124:5: note: in expansion of macro ‘Py_VISIT’
       1124 |     Py_VISIT(self->exc_state.exc_type);
            |     ^~~~~~~~
      src/greenlet/greenlet.c:1126:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
       1126 |     Py_VISIT(self->exc_state.exc_traceback);
            |                             ^
      /usr/include/python3.11/objimpl.h:199:13: note: in definition of macro ‘Py_VISIT’
        199 |         if (op) {                                                       \
            |             ^~
      src/greenlet/greenlet.c:1126:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
       1126 |     Py_VISIT(self->exc_state.exc_traceback);
            |                             ^
      /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
         24 | #define _Py_CAST(type, expr) ((type)(expr))
            |                                      ^~~~
      /usr/include/python3.11/objimpl.h:200:30: note: in expansion of macro ‘_PyObject_CAST’
        200 |             int vret = visit(_PyObject_CAST(op), arg);                  \
            |                              ^~~~~~~~~~~~~~
      src/greenlet/greenlet.c:1126:5: note: in expansion of macro ‘Py_VISIT’
       1126 |     Py_VISIT(self->exc_state.exc_traceback);
            |     ^~~~~~~~
      src/greenlet/greenlet.c: In function ‘green_clear’:
      src/greenlet/greenlet.c:1162:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
       1162 |     Py_CLEAR(self->exc_state.exc_type);
            |                             ^
      /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
         24 | #define _Py_CAST(type, expr) ((type)(expr))
            |                                      ^~~~
      /usr/include/python3.11/object.h:581:29: note: in expansion of macro ‘_PyObject_CAST’
        581 |         PyObject *_py_tmp = _PyObject_CAST(op); \
            |                             ^~~~~~~~~~~~~~
      src/greenlet/greenlet.c:1162:5: note: in expansion of macro ‘Py_CLEAR’
       1162 |     Py_CLEAR(self->exc_state.exc_type);
            |     ^~~~~~~~
      In file included from /usr/include/python3.11/Python.h:44:
      src/greenlet/greenlet.c:1162:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
       1162 |     Py_CLEAR(self->exc_state.exc_type);
            |                             ^
      /usr/include/python3.11/object.h:583:14: note: in definition of macro ‘Py_CLEAR’
        583 |             (op) = NULL;                        \
            |              ^~
      src/greenlet/greenlet.c:1164:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
       1164 |     Py_CLEAR(self->exc_state.exc_traceback);
            |                             ^
      /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
         24 | #define _Py_CAST(type, expr) ((type)(expr))
            |                                      ^~~~
      /usr/include/python3.11/object.h:581:29: note: in expansion of macro ‘_PyObject_CAST’
        581 |         PyObject *_py_tmp = _PyObject_CAST(op); \
            |                             ^~~~~~~~~~~~~~
      src/greenlet/greenlet.c:1164:5: note: in expansion of macro ‘Py_CLEAR’
       1164 |     Py_CLEAR(self->exc_state.exc_traceback);
            |     ^~~~~~~~
      src/greenlet/greenlet.c:1164:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
       1164 |     Py_CLEAR(self->exc_state.exc_traceback);
            |                             ^
      /usr/include/python3.11/object.h:583:14: note: in definition of macro ‘Py_CLEAR’
        583 |             (op) = NULL;                        \
            |              ^~
      src/greenlet/greenlet.c: In function ‘green_dealloc’:
      src/greenlet/greenlet.c:1256:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
       1256 |     Py_CLEAR(self->exc_state.exc_type);
            |                             ^
      /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
         24 | #define _Py_CAST(type, expr) ((type)(expr))
            |                                      ^~~~
      /usr/include/python3.11/object.h:581:29: note: in expansion of macro ‘_PyObject_CAST’
        581 |         PyObject *_py_tmp = _PyObject_CAST(op); \
            |                             ^~~~~~~~~~~~~~
      src/greenlet/greenlet.c:1256:5: note: in expansion of macro ‘Py_CLEAR’
       1256 |     Py_CLEAR(self->exc_state.exc_type);
            |     ^~~~~~~~
      src/greenlet/greenlet.c:1256:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
       1256 |     Py_CLEAR(self->exc_state.exc_type);
            |                             ^
      /usr/include/python3.11/object.h:583:14: note: in definition of macro ‘Py_CLEAR’
        583 |             (op) = NULL;                        \
            |              ^~
      src/greenlet/greenlet.c:1258:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
       1258 |     Py_CLEAR(self->exc_state.exc_traceback);
            |                             ^
      /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
         24 | #define _Py_CAST(type, expr) ((type)(expr))
            |                                      ^~~~
      /usr/include/python3.11/object.h:581:29: note: in expansion of macro ‘_PyObject_CAST’
        581 |         PyObject *_py_tmp = _PyObject_CAST(op); \
            |                             ^~~~~~~~~~~~~~
      src/greenlet/greenlet.c:1258:5: note: in expansion of macro ‘Py_CLEAR’
       1258 |     Py_CLEAR(self->exc_state.exc_traceback);
            |     ^~~~~~~~
      src/greenlet/greenlet.c:1258:29: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
       1258 |     Py_CLEAR(self->exc_state.exc_traceback);
            |                             ^
      /usr/include/python3.11/object.h:583:14: note: in definition of macro ‘Py_CLEAR’
        583 |             (op) = NULL;                        \
            |              ^~
      src/greenlet/greenlet.c: In function ‘PyGreenlet_New’:
      src/greenlet/greenlet.c:1777:15: warning: assignment to ‘int *’ from incompatible pointer type ‘_PyCFrame *’ [-Wincompatible-pointer-types]
       1777 |     g->cframe = &PyThreadState_GET()->root_cframe;
            |               ^
      error: command '/usr/lib64/ccache/gcc' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  Rolling back uninstall of greenlet
  Moving to /home/lemaire/.local/include/python3.11/greenlet/
   from /home/lemaire/.local/include/python3.11/~reenlet
  Moving to /home/lemaire/.local/lib/python3.11/site-packages/greenlet-2.0.0a2-py3.11.egg-info
   from /home/lemaire/.local/lib/python3.11/site-packages/~reenlet-2.0.0a2-py3.11.egg-info
  Moving to /home/lemaire/.local/lib/python3.11/site-packages/greenlet/
   from /home/lemaire/.local/lib/python3.11/site-packages/~reenlet
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> greenlet

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.
EgorSozonov commented 1 year ago

Same issue here! God, why does Python suck so much...

Cherrg commented 1 year ago

Same issue here! God, why does Python suck so much...

You are right with that.

Just found this project and tried to fix this issue The reason this is failing (above error), is that the requirements.txt of this project fixes the greenlet lib to an old version. Greenlet seems to be fixed itself to support python3.11.

I tied to change the version to the current version - in time of writing this version (2.0.2). gdbgui seems to to work, at least in debugging mode.

There is an other thing if you try to build the program:

vkottler commented 1 year ago

It would be awesome to merge @Cherrg's PR. I'm just editable installing that fork right now for convenience's sake.

@cs01 wondering if you've had a chance to look?

Nic30 commented 1 year ago

Without the update of greenlet dependency, as done in mentioned PR, the gdbgui can not be compiled basically on every latest version of any distro. Just saying.

indeedhat commented 1 year ago

If you happen to have more than one version of python installed on your system you can install with pipx install --python [python-version(python3.9)] gdbgui

Its a nasty workaround but it'll get you up and running in the meantime

VPaulV commented 1 year ago

same here, python 3.11 is default in gentoo, would really appreciate if we could get a fix

vkottler commented 1 year ago

Pinged the repository owner 5 months ago. Next step here is to fork if someone wants to pick up the torch.

cs01 commented 1 year ago

I am so sorry everyone. I will take care of this as soon as I can. Hopefully within the next week. If I don’t fix it by then please ping me again.

cs01 commented 1 year ago

Beyond this fix I also have a fork that is a significant rewrite. It’s about 80% done, and I am unfortunately probably not going to be able to complete it. I was going to wait to push the fork but I will share it in its current state in case anyone wants to try it or improve on it.

vkottler commented 1 year ago

Beyond this fix I also have a fork that is a significant rewrite. It’s about 80% done, and I am unfortunately probably not going to be able to complete it. I was going to wait to push the fork but I will share it in its current state in case anyone wants to try it or improve on it.

@cs01 badass! Would love to see it. I don't know if anyone else is using / building tooling for embedded/microcontroller debugging (using a GDB client-server pair) but would love to collaborate.

cs01 commented 1 year ago

@cs01 badass! Would love to see it. I don't know if anyone else is using / building tooling for embedded/microcontroller debugging (using a GDB client-server pair) but would love to collaborate.

That would be amazing. I will let you know when I push it.

Based on this issue it is apparent that I need to find a more sustainable way to maintain this project (after having a child I just can’t seem to find the time), so if you or anyone else is interested in maintaining it let me know.

vleo commented 1 year ago

pip install gdbgui

Not OK on Fedora38 with default python 3.11 also.

But, there is a fixed version on PyPi, installs and runs on Fedora38, python3.11 - fine:

pip install gdbgui-bugfix

cs01 commented 1 year ago

gdbgui 0.15.2.0 has been released which has been tested to be compatible with python 3.12. Please let me know if it resolves your issues.