diff options
-rw-r--r-- | lldb/scripts/CMakeLists.txt | 3 | ||||
-rw-r--r-- | lldb/scripts/Python/modify-python-lldb.py | 17 | ||||
-rw-r--r-- | lldb/scripts/Python/use_lldb_suite.py | 22 | ||||
-rw-r--r-- | lldb/scripts/use_lldb_suite.py | 22 |
4 files changed, 62 insertions, 2 deletions
diff --git a/lldb/scripts/CMakeLists.txt b/lldb/scripts/CMakeLists.txt index a393517824f..71c8d1cc059 100644 --- a/lldb/scripts/CMakeLists.txt +++ b/lldb/scripts/CMakeLists.txt @@ -15,7 +15,8 @@ add_custom_command( DEPENDS ${SWIG_SOURCES} DEPENDS ${SWIG_INTERFACES} DEPENDS ${SWIG_HEADERS} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/buildSwigWrapperClasses.py + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Python/buildSwigPython.py + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Python/modify-python-lldb.py COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/buildSwigWrapperClasses.py "--srcRoot=${LLDB_SOURCE_DIR}" "--targetDir=${CMAKE_CURRENT_BINARY_DIR}" "--cfgBldDir=${CMAKE_CURRENT_BINARY_DIR}" "--prefix=${CMAKE_BINARY_DIR}" "--swigExecutable=${SWIG_EXECUTABLE}" -m COMMENT "Python script building LLDB Python wrapper") set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp PROPERTIES GENERATED 1) diff --git a/lldb/scripts/Python/modify-python-lldb.py b/lldb/scripts/Python/modify-python-lldb.py index 7b9c26c6d80..9912cd72528 100644 --- a/lldb/scripts/Python/modify-python-lldb.py +++ b/lldb/scripts/Python/modify-python-lldb.py @@ -21,12 +21,21 @@ # subsystem. # +# System modules import sys, re if sys.version_info.major >= 3: import io as StringIO else: import StringIO +# import use_lldb_suite so we can find third-party and helper modules +import use_lldb_suite + +# Third party modules +import six + +# LLDB modules + if len(sys.argv) != 2: output_name = "./lldb.py" else: @@ -190,9 +199,15 @@ eq_def = " def __eq__(self, other): return isinstance(other, %s) and %s" ne_def = " def __ne__(self, other): return not self.__eq__(other)" # Called to implement truth value testing and the built-in operation bool(); +# Note that Python 2 uses __nonzero__(), whereas Python 3 uses __bool__() # should return False or True, or their integer equivalents 0 or 1. # Delegate to self.IsValid() if it is defined for the current lldb object. -nonzero_def = " def __nonzero__(self): return self.IsValid()" + +if six.PY2: + print("Test") + nonzero_def = " def __nonzero__(self): return self.IsValid()" +else: + nonzero_def = " def __bool__(self): return self.IsValid()" # A convenience iterator for SBSymbol! symbol_in_section_iter_def = ''' diff --git a/lldb/scripts/Python/use_lldb_suite.py b/lldb/scripts/Python/use_lldb_suite.py new file mode 100644 index 00000000000..3dbcbb91700 --- /dev/null +++ b/lldb/scripts/Python/use_lldb_suite.py @@ -0,0 +1,22 @@ +import inspect +import os +import sys + +def find_lldb_root(): + lldb_root = os.path.dirname(inspect.getfile(inspect.currentframe())) + while True: + lldb_root = os.path.dirname(lldb_root) + if lldb_root is None: + return None + + test_path = os.path.join(lldb_root, "lldb.root") + if os.path.isfile(test_path): + return lldb_root + return None + +lldb_root = find_lldb_root() +if lldb_root is not None: + import imp + module = imp.find_module("use_lldb_suite_root", [lldb_root]) + if module is not None: + imp.load_module("use_lldb_suite_root", *module) diff --git a/lldb/scripts/use_lldb_suite.py b/lldb/scripts/use_lldb_suite.py new file mode 100644 index 00000000000..3dbcbb91700 --- /dev/null +++ b/lldb/scripts/use_lldb_suite.py @@ -0,0 +1,22 @@ +import inspect +import os +import sys + +def find_lldb_root(): + lldb_root = os.path.dirname(inspect.getfile(inspect.currentframe())) + while True: + lldb_root = os.path.dirname(lldb_root) + if lldb_root is None: + return None + + test_path = os.path.join(lldb_root, "lldb.root") + if os.path.isfile(test_path): + return lldb_root + return None + +lldb_root = find_lldb_root() +if lldb_root is not None: + import imp + module = imp.find_module("use_lldb_suite_root", [lldb_root]) + if module is not None: + imp.load_module("use_lldb_suite_root", *module) |