[Lldb-commits] [PATCH] D96370: Pass enviroment variables to python scripts.
Rumeet Dhindsa via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Tue Feb 9 14:47:22 PST 2021
rdhindsa updated this revision to Diff 322510.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D96370/new/
https://reviews.llvm.org/D96370
Files:
lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPythonImpl.h
lldb/test/Shell/ScriptInterpreter/Python/Inputs/environ.py
lldb/test/Shell/ScriptInterpreter/Python/pass_environment.test
Index: lldb/test/Shell/ScriptInterpreter/Python/pass_environment.test
===================================================================
--- /dev/null
+++ lldb/test/Shell/ScriptInterpreter/Python/pass_environment.test
@@ -0,0 +1,10 @@
+# REQUIRES: python
+
+# RUN: %lldb --batch \
+# RUN: --script-language python \
+# RUN: -O 'settings append target.env-vars PYTHONPATH=/tmp' \
+# RUN: -O 'command script import %S/Inputs/environ.py' \
+# RUN: -O 'test' 2>&1 | FileCheck %s
+
+# CHECK: :/tmp
+# CHECK: '/tmp'
Index: lldb/test/Shell/ScriptInterpreter/Python/Inputs/environ.py
===================================================================
--- /dev/null
+++ lldb/test/Shell/ScriptInterpreter/Python/Inputs/environ.py
@@ -0,0 +1,10 @@
+import os
+import sys
+
+def test(debugger, command, result, internal_dict):
+ print(os.environ["PYTHONPATH"])
+ print(sys.path)
+
+def __lldb_init_module(debugger, internal_dict):
+ debugger.HandleCommand('command script add -f environ.test test')
+
Index: lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPythonImpl.h
===================================================================
--- lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPythonImpl.h
+++ lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPythonImpl.h
@@ -341,6 +341,8 @@
lldb::user_id_t watch_id);
static void InitializePrivate();
+ static void SetPythonEnvironment(Debugger &debugger);
+
class SynchronicityHandler {
private:
lldb::DebuggerSP m_debugger_sp;
Index: lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
===================================================================
--- lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -537,6 +537,8 @@
PyRun_SimpleString(run_string.GetData());
run_string.Clear();
+ SetPythonEnvironment(m_debugger);
+
run_string.Printf("run_one_line (%s, 'import lldb.embedded_interpreter; from "
"lldb.embedded_interpreter import run_python_interpreter; "
"from lldb.embedded_interpreter import run_one_line')",
@@ -3269,6 +3271,26 @@
"from lldb.embedded_interpreter import run_one_line");
}
+void ScriptInterpreterPythonImpl::SetPythonEnvironment(Debugger &debugger) {
+ StreamString run_string;
+ lldb::TargetSP target_get = debugger.GetTargetList().GetSelectedTarget();
+ const Environment &env = target_get->GetGlobalProperties()->GetEnvironment();
+
+ PyRun_SimpleString("import os");
+ for (const auto &KV : env) {
+ if (strcmp(KV.getKey().data(), "PYTHONPATH") == 0 ||
+ strcmp(KV.getKey().data(), "PATH") == 0) {
+ run_string.Clear();
+ run_string.Printf(
+ "os.environ[\"%s\"] = os.environ.get(\"%s\",\"\")+ os.pathsep +"
+ "\"%s\"",
+ KV.getKey().data(), KV.getKey().data(), KV.getValue().data());
+ PyRun_SimpleString(run_string.GetData());
+ AddToSysPath(AddLocation::End, KV.getValue().data());
+ }
+ }
+}
+
void ScriptInterpreterPythonImpl::AddToSysPath(AddLocation location,
std::string path) {
std::string path_copy;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D96370.322510.patch
Type: text/x-patch
Size: 3317 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20210209/872693ab/attachment.bin>
More information about the lldb-commits
mailing list