Author: Jonas Devlieghere Date: 2025-08-08T11:49:43-05:00 New Revision: bcdc80828bcb94922db6e5b8f1c0935b2f5a67e2
URL: https://github.com/llvm/llvm-project/commit/bcdc80828bcb94922db6e5b8f1c0935b2f5a67e2 DIFF: https://github.com/llvm/llvm-project/commit/bcdc80828bcb94922db6e5b8f1c0935b2f5a67e2.diff LOG: [lldb] Only use PyConfig when LLDB_EMBED_PYTHON_HOME is enabled (#152588) PyConfig and friends are not part of the stable API. We could switch back to Py_SetPythonHome, which has been deprecated, but still part of the stable API. For now, limit the use of PyConfig to when LLDB_EMBED_PYTHON_HOME is enabled, which essentially means Windows. Changing the order doesn't seem to matter. Added: Modified: lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp Removed: ################################################################################ diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp index 24d604f22a765..5b97fcb5acf58 100644 --- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp +++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp @@ -92,25 +92,6 @@ namespace { struct InitializePythonRAII { public: InitializePythonRAII() { - PyConfig config; - PyConfig_InitPythonConfig(&config); - -#if LLDB_EMBED_PYTHON_HOME - static std::string g_python_home = []() -> std::string { - if (llvm::sys::path::is_absolute(LLDB_PYTHON_HOME)) - return LLDB_PYTHON_HOME; - - FileSpec spec = HostInfo::GetShlibDir(); - if (!spec) - return {}; - spec.AppendPathComponent(LLDB_PYTHON_HOME); - return spec.GetPath(); - }(); - if (!g_python_home.empty()) { - PyConfig_SetBytesString(&config, &config.home, g_python_home.c_str()); - } -#endif - // The table of built-in modules can only be extended before Python is // initialized. if (!Py_IsInitialized()) { @@ -134,9 +115,30 @@ struct InitializePythonRAII { PyImport_AppendInittab("_lldb", LLDBSwigPyInit); } +#if LLDB_EMBED_PYTHON_HOME + PyConfig config; + PyConfig_InitPythonConfig(&config); + + static std::string g_python_home = []() -> std::string { + if (llvm::sys::path::is_absolute(LLDB_PYTHON_HOME)) + return LLDB_PYTHON_HOME; + + FileSpec spec = HostInfo::GetShlibDir(); + if (!spec) + return {}; + spec.AppendPathComponent(LLDB_PYTHON_HOME); + return spec.GetPath(); + }(); + if (!g_python_home.empty()) { + PyConfig_SetBytesString(&config, &config.home, g_python_home.c_str()); + } + config.install_signal_handlers = 0; Py_InitializeFromConfig(&config); PyConfig_Clear(&config); +#else + Py_InitializeEx(/*install_sigs=*/0); +#endif // The only case we should go further and acquire the GIL: it is unlocked. PyGILState_STATE gil_state = PyGILState_Ensure(); _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits