diff options
author | Jonas Devlieghere <jonas@devlieghere.com> | 2024-10-30 11:36:10 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-30 11:36:10 -0700 |
commit | 2bc5302706e710d125752c215392043fd5bf80fa (patch) | |
tree | 793d1434c30ab39909fc3e70394c316941b64c03 /lldb/source/Plugins/ScriptInterpreter/Python | |
parent | a518ed2d815c16010a6262edd0414a5f60a63a39 (diff) | |
download | llvm-2bc5302706e710d125752c215392043fd5bf80fa.zip llvm-2bc5302706e710d125752c215392043fd5bf80fa.tar.gz llvm-2bc5302706e710d125752c215392043fd5bf80fa.tar.bz2 |
Revert "[lldb] Use Py_InitializeFromConfig with Python >= 3.8 (NFC)" (#114290)
Reverts llvm/llvm-project#114112 because this triggers a compile error:
```
no known conversion from 'str_type' (aka 'wchar_t *') to 'const char *' for 3rd argument
221 | PyAPI_FUNC(PyStatus) PyConfig_SetBytesString(
| ^
222 | PyConfig *config,
223 | wchar_t **config_str,
224 | const char *str);
| ~~~~~~~~~~~~~~~
1 error generated.
```
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python')
-rw-r--r-- | lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp | 68 |
1 files changed, 28 insertions, 40 deletions
diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp index 6158083..7cc38da 100644 --- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp +++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp @@ -92,38 +92,7 @@ namespace { struct InitializePythonRAII { public: InitializePythonRAII() { -#if (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 8) || (PY_MAJOR_VERSION > 3) - PyConfig config; - PyConfig_InitPythonConfig(&config); -#endif - -#if LLDB_EMBED_PYTHON_HOME - typedef wchar_t *str_type; - static str_type g_python_home = []() -> str_type { - const char *lldb_python_home = LLDB_PYTHON_HOME; - const char *absolute_python_home = nullptr; - llvm::SmallString<64> path; - if (llvm::sys::path::is_absolute(lldb_python_home)) { - absolute_python_home = lldb_python_home; - } else { - FileSpec spec = HostInfo::GetShlibDir(); - if (!spec) - return nullptr; - spec.GetPath(path); - llvm::sys::path::append(path, lldb_python_home); - absolute_python_home = path.c_str(); - } - size_t size = 0; - return Py_DecodeLocale(absolute_python_home, &size); - }(); - if (g_python_home != nullptr) { -#if (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 8) || (PY_MAJOR_VERSION > 3) - PyConfig_SetBytesString(&config, &config.home, g_python_home); -#else - Py_SetPythonHome(g_python_home); -#endif - } -#endif + InitializePythonHome(); // The table of built-in modules can only be extended before Python is // initialized. @@ -148,23 +117,16 @@ public: PyImport_AppendInittab("_lldb", LLDBSwigPyInit); } -#if (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 8) || (PY_MAJOR_VERSION > 3) - config.install_signal_handlers = 0; - Py_InitializeFromConfig(&config); - PyConfig_Clear(&config); - InitializeThreadsPrivate(); -#else // Python < 3.2 and Python >= 3.2 reversed the ordering requirements for // calling `Py_Initialize` and `PyEval_InitThreads`. < 3.2 requires that you // call `PyEval_InitThreads` first, and >= 3.2 requires that you call it last. -#if (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 2) +#if (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 2) || (PY_MAJOR_VERSION > 3) Py_InitializeEx(0); InitializeThreadsPrivate(); #else InitializeThreadsPrivate(); Py_InitializeEx(0); #endif -#endif } ~InitializePythonRAII() { @@ -180,6 +142,32 @@ public: } private: + void InitializePythonHome() { +#if LLDB_EMBED_PYTHON_HOME + typedef wchar_t *str_type; + static str_type g_python_home = []() -> str_type { + const char *lldb_python_home = LLDB_PYTHON_HOME; + const char *absolute_python_home = nullptr; + llvm::SmallString<64> path; + if (llvm::sys::path::is_absolute(lldb_python_home)) { + absolute_python_home = lldb_python_home; + } else { + FileSpec spec = HostInfo::GetShlibDir(); + if (!spec) + return nullptr; + spec.GetPath(path); + llvm::sys::path::append(path, lldb_python_home); + absolute_python_home = path.c_str(); + } + size_t size = 0; + return Py_DecodeLocale(absolute_python_home, &size); + }(); + if (g_python_home != nullptr) { + Py_SetPythonHome(g_python_home); + } +#endif + } + void InitializeThreadsPrivate() { // Since Python 3.7 `Py_Initialize` calls `PyEval_InitThreads` inside itself, // so there is no way to determine whether the embedded interpreter |