diff --git a/requirements.txt b/requirements.txt index 9a0b2d2933..5396e240bb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,8 +16,9 @@ gdbgui==0.13.2.0 # 0.13.2.1 supports Python 3.6+ only # Windows is not supported since 0.14.0.0. See https://github.com/cs01/gdbgui/issues/348 pygdbmi<=0.9.0.2 -# The pygdbmi required max version 0.9.0.2 since 0.9.0.3 is not copatible with latest gdbgui (>=0.13.2.0) -python-socketio<5; python_version<="2.7" +# The pygdbmi required max version 0.9.0.2 since 0.9.0.3 is not compatible with latest gdbgui (>=0.13.2.0) +# A compatible Socket.IO should be used. See https://github.com/miguelgrinberg/python-socketio/issues/578 +python-socketio<5 # esptool requirements (see components/esptool_py/esptool/setup.py) reedsolo>=1.5.3,<=1.5.4 diff --git a/tools/idf_py_actions/debug_ext.py b/tools/idf_py_actions/debug_ext.py index 57d1829608..0bbdd74165 100644 --- a/tools/idf_py_actions/debug_ext.py +++ b/tools/idf_py_actions/debug_ext.py @@ -202,9 +202,14 @@ def action_extensions(base_actions, project_path): if gdbgui_port is not None: args += ["--port", gdbgui_port] gdbgui_out_name = os.path.join(local_dir, GDBGUI_OUT_FILE) - gdbgui_out = open(gdbgui_out_name, "a+") + gdbgui_out = open(gdbgui_out_name, 'a+') + env = os.environ.copy() + # The only known solution for https://github.com/cs01/gdbgui/issues/359 is to set the following environment + # variable. The greenlet package cannot be downgraded for compatibility with other requirements (gdbgui, + # pygdbmi). + env['PURE_PYTHON'] = '1' try: - process = subprocess.Popen(args, stdout=gdbgui_out, stderr=subprocess.STDOUT, bufsize=1) + process = subprocess.Popen(args, stdout=gdbgui_out, stderr=subprocess.STDOUT, bufsize=1, env=env) except Exception as e: print(e) raise FatalError("Error starting gdbgui. Please make sure gdbgui can be started", ctx)