blob: a2145d504661ff9efe7759b9efa396a054357775 [file] [log] [blame]
Daniel Maleaac4ce0c2013-02-11 17:18:14 +00001
2# Locate and load the lldb python module
3
4import os, sys
5
6def import_lldb():
7 """ Find and import the lldb modules. This function tries to find the lldb module by:
8 1. Simply by doing "import lldb" in case the system python installation is aware of lldb. If that fails,
9 2. Executes the lldb executable pointed to by the LLDB environment variable (or if unset, the first lldb
10 on PATH") with the -P flag to determine the PYTHONPATH to set. If the lldb executable returns a valid
11 path, it is added to sys.path and the import is attempted again. If that fails, 3. On Mac OS X the
12 default Xcode 4.5 installation path.
13 """
14
15 # Try simple 'import lldb', in case of a system-wide install or a pre-configured PYTHONPATH
16 try:
17 import lldb
18 return True
19 except ImportError:
20 pass
21
22 # Allow overriding default path to lldb executable with the LLDB environment variable
23 lldb_executable = 'lldb'
24 if 'LLDB' in os.environ and os.path.exists(os.environ['LLDB']):
25 lldb_executable = os.environ['LLDB']
26
27 # Try using builtin module location support ('lldb -P')
28 from subprocess import check_output, CalledProcessError
29 try:
30 with open(os.devnull, 'w') as fnull:
31 lldb_minus_p_path = check_output("%s -P" % lldb_executable, shell=True, stderr=fnull).strip()
32 if not os.path.exists(lldb_minus_p_path):
33 #lldb -P returned invalid path, probably too old
34 pass
35 else:
36 sys.path.append(lldb_minus_p_path)
37 import lldb
38 return True
39 except CalledProcessError:
40 # Cannot run 'lldb -P' to determine location of lldb python module
41 pass
42 except ImportError:
43 # Unable to import lldb module from path returned by `lldb -P`
44 pass
45
46 # On Mac OS X, use the try the default path to XCode lldb module
47 if "darwin" in sys.platform:
48 xcode_python_path = "/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/Current/Resources/Python/"
49 sys.path.append(xcode_python_path)
50 try:
51 import lldb
52 return True
53 except ImportError:
54 # Unable to import lldb module from default Xcode python path
55 pass
56
57 return False
58
59if not import_lldb():
60 import vim
61 vim.command('redraw | echo "%s"' % " Error loading lldb module; vim-lldb will be disabled. Check LLDB installation or set LLDB environment variable.")