zturner created this revision.
zturner added reviewers: granata.enrico, tfiala.
zturner added a subscriber: lldb-commits.
I think this patch may require some xcode changes. This is because of the
`from six.moves import reload_module`. In the CMake build as part of the swig
wrapper python script we symlink the `six` module from
`lldb/third_party/Python/modules/six` to be in LLDB's private
`lib/site-packages` directory. This way we can `import six` from within lldb.
This may not be happening on the Xcode build yet, which if so this will fail on
Xcode build. Would someone mind helping me out with this part? LMK if I
should submit as is and you fix up the xcode build later, or you want to do it
as one patch.
http://reviews.llvm.org/D15209
Files:
source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
Index: source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
===
--- source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -286,10 +286,15 @@
PyRun_SimpleString (run_string.GetData());
run_string.Clear();
-
run_string.Printf ("run_one_line (%s, 'import copy, keyword, os, re, sys,
uuid, lldb')", m_dictionary_name.c_str());
PyRun_SimpleString (run_string.GetData());
+// Reloading modules requires a different syntax in Python 2 and Python 3.
This provides
+// a consistent syntax no matter what version of Python.
+run_string.Clear();
+run_string.Printf("run_one_line (%s, 'from six.moves import
reload_module')", m_dictionary_name.c_str());
+PyRun_SimpleString(run_string.GetData());
+
// WARNING: temporary code that loads Cocoa formatters - this should be
done on a per-platform basis rather than loading the whole set
// and letting the individual formatter classes exploit APIs to check
whether they can/cannot do their task
run_string.Clear();
@@ -2626,9 +2631,9 @@
if (was_imported)
{
if (!was_imported_locally)
-command_stream.Printf("import %s ;
reload(%s)",basename.c_str(),basename.c_str());
+command_stream.Printf("import %s ;
reload_module(%s)",basename.c_str(),basename.c_str());
else
-command_stream.Printf("reload(%s)",basename.c_str());
+command_stream.Printf("reload_module(%s)",basename.c_str());
}
else
command_stream.Printf("import %s",basename.c_str());
Index: source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
===
--- source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -286,10 +286,15 @@
PyRun_SimpleString (run_string.GetData());
run_string.Clear();
-
run_string.Printf ("run_one_line (%s, 'import copy, keyword, os, re, sys, uuid, lldb')", m_dictionary_name.c_str());
PyRun_SimpleString (run_string.GetData());
+// Reloading modules requires a different syntax in Python 2 and Python 3. This provides
+// a consistent syntax no matter what version of Python.
+run_string.Clear();
+run_string.Printf("run_one_line (%s, 'from six.moves import reload_module')", m_dictionary_name.c_str());
+PyRun_SimpleString(run_string.GetData());
+
// WARNING: temporary code that loads Cocoa formatters - this should be done on a per-platform basis rather than loading the whole set
// and letting the individual formatter classes exploit APIs to check whether they can/cannot do their task
run_string.Clear();
@@ -2626,9 +2631,9 @@
if (was_imported)
{
if (!was_imported_locally)
-command_stream.Printf("import %s ; reload(%s)",basename.c_str(),basename.c_str());
+command_stream.Printf("import %s ; reload_module(%s)",basename.c_str(),basename.c_str());
else
-command_stream.Printf("reload(%s)",basename.c_str());
+command_stream.Printf("reload_module(%s)",basename.c_str());
}
else
command_stream.Printf("import %s",basename.c_str());
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits