[Lldb-commits] [PATCH] D113650: [lldb] fix -print-script-interpreter-info on windows
Lawrence D'Anna via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Wed Nov 10 23:57:51 PST 2021
lawrence_danna created this revision.
lawrence_danna added reviewers: jasonmolenda, JDevlieghere, jingham.
lawrence_danna requested review of this revision.
Herald added a project: LLDB.
Herald added a subscriber: lldb-commits.
Apparently "{sys.prefix}/bin/python3" isn't where you find the
python interpreter on windows, so the test I wrote for
-print-script-interpreter-info is failing.
I'm not thrilled with this solution, as it requires a posix-specific
rule and a windows-specific rule, but as far as I can tell there's
not a better way to do it.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D113650
Files:
lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
Index: lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
===================================================================
--- lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -410,30 +410,40 @@
return g_spec;
}
+static const char GetInterpreterInfoScript[] = R"(
+import os
+import sysconfig
+import sys
+
+def main(lldb_python_dir):
+ info = {
+ "lldb-pythonpath": lldb_python_dir,
+ "language": "python",
+ "prefix": sys.prefix,
+ }
+ sc = sysconfig.get_config_vars()
+ if os.name == 'nt':
+ if sc['EXT_SUFFIX'].startswith("_d"):
+ exename = "python_d.exe"
+ else:
+ exename = "python.exe"
+ info['executable'] = os.path.normpath(os.path.join(sys.prefix, exename))
+ elif os.name == 'posix':
+ exename = "python" + str(sys.version_info[0])
+ info['executable'] = os.path.join(sys.prefix, 'bin', exename)
+ return info
+
+)";
+
+
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(python_dir)));
if (!info_json)
return nullptr;
return info_json.CreateStructuredDictionary();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D113650.386435.patch
Type: text/x-patch
Size: 2040 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20211111/104f3e4f/attachment.bin>
More information about the lldb-commits
mailing list