Просмотр исходного кода

tools: Add various fixes for idf.py gdbgui

Closes https://github.com/espressif/esp-idf/issues/5968
Roland Dobai 4 лет назад
Родитель
Сommit
62589fa251
2 измененных файлов с 10 добавлено и 4 удалено
  1. 3 2
      requirements.txt
  2. 7 2
      tools/idf_py_actions/debug_ext.py

+ 3 - 2
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

+ 7 - 2
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)