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

Reply via email to