forked from OSchip/llvm-project
72 lines
2.5 KiB
Python
72 lines
2.5 KiB
Python
|
|
# Locate and load the lldb python module
|
|
|
|
import os
|
|
import sys
|
|
|
|
|
|
def import_lldb():
|
|
""" Find and import the lldb modules. This function tries to find the lldb module by:
|
|
1. Simply by doing "import lldb" in case the system python installation is aware of lldb. If that fails,
|
|
2. Executes the lldb executable pointed to by the LLDB environment variable (or if unset, the first lldb
|
|
on PATH") with the -P flag to determine the PYTHONPATH to set. If the lldb executable returns a valid
|
|
path, it is added to sys.path and the import is attempted again. If that fails, 3. On Mac OS X the
|
|
default Xcode 4.5 installation path.
|
|
"""
|
|
|
|
# Try simple 'import lldb', in case of a system-wide install or a
|
|
# pre-configured PYTHONPATH
|
|
try:
|
|
import lldb
|
|
return True
|
|
except ImportError:
|
|
pass
|
|
|
|
# Allow overriding default path to lldb executable with the LLDB
|
|
# environment variable
|
|
lldb_executable = 'lldb'
|
|
if 'LLDB' in os.environ and os.path.exists(os.environ['LLDB']):
|
|
lldb_executable = os.environ['LLDB']
|
|
|
|
# Try using builtin module location support ('lldb -P')
|
|
from subprocess import check_output, CalledProcessError
|
|
try:
|
|
with open(os.devnull, 'w') as fnull:
|
|
lldb_minus_p_path = check_output(
|
|
"%s -P" %
|
|
lldb_executable,
|
|
shell=True,
|
|
stderr=fnull).strip()
|
|
if not os.path.exists(lldb_minus_p_path):
|
|
# lldb -P returned invalid path, probably too old
|
|
pass
|
|
else:
|
|
sys.path.append(lldb_minus_p_path)
|
|
import lldb
|
|
return True
|
|
except CalledProcessError:
|
|
# Cannot run 'lldb -P' to determine location of lldb python module
|
|
pass
|
|
except ImportError:
|
|
# Unable to import lldb module from path returned by `lldb -P`
|
|
pass
|
|
|
|
# On Mac OS X, use the try the default path to XCode lldb module
|
|
if "darwin" in sys.platform:
|
|
xcode_python_path = "/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/Current/Resources/Python/"
|
|
sys.path.append(xcode_python_path)
|
|
try:
|
|
import lldb
|
|
return True
|
|
except ImportError:
|
|
# Unable to import lldb module from default Xcode python path
|
|
pass
|
|
|
|
return False
|
|
|
|
if not import_lldb():
|
|
import vim
|
|
vim.command(
|
|
'redraw | echo "%s"' %
|
|
" Error loading lldb module; vim-lldb will be disabled. Check LLDB installation or set LLDB environment variable.")
|