[Lldb-commits] [lldb] r167570 - in /lldb/trunk/source: Interpreter/ScriptInterpreterPython.cpp Plugins/Platform/MacOSX/PlatformDarwin.cpp

Enrico Granata egranata at apple.com
Wed Nov 7 18:44:11 PST 2012


Author: enrico
Date: Wed Nov  7 20:44:10 2012
New Revision: 167570

URL: http://llvm.org/viewvc/llvm-project?rev=167570&view=rev
Log:
Adding support for loading the scripting resource as part of a framework, lacking the dSYM bundle, or if the bundle has no Pythonic resources whatsoever
Solving an issue where "command script import" would fail to pick the file indicated by the user as a result of something with the same name being in an earlier position in sys.path


Modified:
    lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp
    lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp

Modified: lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp?rev=167570&r1=167569&r2=167570&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp (original)
+++ lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp Wed Nov  7 20:44:10 2012
@@ -2424,7 +2424,7 @@
         
         // now make sure that Python has "directory" in the search path
         StreamString command_stream;
-        command_stream.Printf("if not (sys.path.__contains__('%s')):\n    sys.path.append('%s');\n\n",
+        command_stream.Printf("if not (sys.path.__contains__('%s')):\n    sys.path.insert(1,'%s');\n\n",
                               directory,
                               directory);
         bool syspath_retval = ExecuteMultipleLines(command_stream.GetData(), ScriptInterpreter::ExecuteScriptOptions().SetEnableIO(false).SetSetLLDBGlobals(false));

Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp?rev=167570&r1=167569&r2=167570&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp (original)
+++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp Wed Nov  7 20:44:10 2012
@@ -55,6 +55,9 @@
     const ArchSpec *arch = module_spec.GetArchitecturePtr();
     const UUID *uuid = module_spec.GetUUIDPtr();
     
+    const char* module_directory = exec_fspec->GetDirectory().GetCString();
+    const char* module_basename = exec_fspec->GetFileNameStrippingExtension().GetCString();
+    
     Timer scoped_timer (__PRETTY_FUNCTION__,
                         "LocateExecutableScriptingResource (file = %s, arch = %s, uuid = %p)",
                         exec_fspec ? exec_fspec->GetFilename().AsCString ("<NULL>") : "<NULL>",
@@ -66,17 +69,35 @@
     
     FileSpec script_fspec;
     
+    StreamString path_string;
+    
     if (symbol_fspec && symbol_fspec.Exists())
     {
         // for OSX we are going to be in .dSYM/Contents/Resources/DWARF/<basename>
         // let us go to .dSYM/Contents/Resources/Python/<basename>.py and see if the file exists
-        StreamString path_string;
-        path_string.Printf("%s/../Python/%s.py",symbol_fspec.GetDirectory().GetCString(),module_spec.GetFileSpec().GetFileNameStrippingExtension().GetCString());
+        path_string.Printf("%s/../Python/%s.py",symbol_fspec.GetDirectory().GetCString(),module_basename);
         script_fspec.SetFile(path_string.GetData(), true);
         if (!script_fspec.Exists())
             script_fspec.Clear();
     }
     
+    // no symbols or symbols did not have a scripting resource
+    if (!symbol_fspec || !script_fspec)
+    {
+        path_string.Clear();
+        path_string.Printf("%s.framework",module_basename);
+        if (strstr(module_directory, path_string.GetData()))
+        {
+            // we are going to be in foo.framework/Versions/X/foo
+            path_string.Clear();
+            // let's go to foo.framework/Versions/X/Resources/Python/foo.py
+            path_string.Printf("%s/Resources/Python/%s.py",module_directory,module_basename);
+            script_fspec.SetFile(path_string.GetData(), true);
+            if (!script_fspec.Exists())
+                script_fspec.Clear();
+        }
+    }
+    
     return script_fspec;
 }
 





More information about the lldb-commits mailing list