summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/scripts/CMakeLists.txt3
-rw-r--r--lldb/scripts/Python/modify-python-lldb.py17
-rw-r--r--lldb/scripts/Python/use_lldb_suite.py22
-rw-r--r--lldb/scripts/use_lldb_suite.py22
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)
OpenPOWER on IntegriCloud