diff options
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp')
-rw-r--r-- | lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp index 418e223..c1f4c2d 100644 --- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp +++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp @@ -410,30 +410,31 @@ FileSpec ScriptInterpreterPython::GetPythonDir() { return g_spec; } +static const char GetInterpreterInfoScript[] = R"( +import os +import sys + +def main(lldb_python_dir, python_exe_relative_path): + info = { + "lldb-pythonpath": lldb_python_dir, + "language": "python", + "prefix": sys.prefix, + "executable": os.path.join(sys.prefix, python_exe_relative_path) + } + return info +)"; + +static const char python_exe_relative_path[] = LLDB_PYTHON_EXE_RELATIVE_PATH; + StructuredData::DictionarySP ScriptInterpreterPython::GetInterpreterInfo() { GIL gil; FileSpec python_dir_spec = GetPythonDir(); if (!python_dir_spec) return nullptr; - PythonString python_dir(python_dir_spec.GetPath()); - PythonDictionary info(PyInitialValue::Empty); - llvm::Error error = info.SetItem("lldb-pythonpath", python_dir); - if (error) - return nullptr; - static const char script[] = R"( -def main(info): - import sys - import os - name = 'python' + str(sys.version_info.major) - info.update({ - "language": "python", - "prefix": sys.prefix, - "executable": os.path.join(sys.prefix, "bin", name), - }) - return info -)"; - PythonScript get_info(script); - auto info_json = unwrapIgnoringErrors(As<PythonDictionary>(get_info(info))); + PythonScript get_info(GetInterpreterInfoScript); + auto info_json = unwrapIgnoringErrors( + As<PythonDictionary>(get_info(PythonString(python_dir_spec.GetPath()), + PythonString(python_exe_relative_path)))); if (!info_json) return nullptr; return info_json.CreateStructuredDictionary(); |