From 7346f9cabcf56cb57e430a6c1b8b3c9bb779f1c0 Mon Sep 17 00:00:00 2001 From: meczka Date: Thu, 23 Feb 2023 22:26:13 +0100 Subject: [PATCH 1/4] Enable python scripting in lldb --- build_info/lldb-14.control | 2 +- build_info/python3-lldb-14.control | 9 +++++++ .../llvm/lldb-swig-multiple-declaration.diff | 10 +++++++ build_patch/llvm/python-typemaps-patch.diff | 11 ++++++++ makefiles/llvm.mk | 26 +++++++++++++++---- 5 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 build_info/python3-lldb-14.control create mode 100644 build_patch/llvm/lldb-swig-multiple-declaration.diff create mode 100644 build_patch/llvm/python-typemaps-patch.diff diff --git a/build_info/lldb-14.control b/build_info/lldb-14.control index dbd7978e21..6d0acf9ae7 100644 --- a/build_info/lldb-14.control +++ b/build_info/lldb-14.control @@ -3,7 +3,7 @@ Section: Development Version: @DEB_LLVM_V@ Architecture: @DEB_ARCH@ Maintainer: @DEB_MAINTAINER@ -Depends: liblldb-14 (= @DEB_LLVM_V@), debugserver-14 (= @DEB_LLVM_V@) +Depends: liblldb-14 (= @DEB_LLVM_V@), debugserver-14 (= @DEB_LLVM_V@), python3-lldb-14 (= @DEB_LLVM_V@) Priority: optional Homepage: https://www.llvm.org/ Description: Next generation, high-performance debugger diff --git a/build_info/python3-lldb-14.control b/build_info/python3-lldb-14.control new file mode 100644 index 0000000000..4d6dba2ef7 --- /dev/null +++ b/build_info/python3-lldb-14.control @@ -0,0 +1,9 @@ +Package: python3-lldb-14 +Section: Development +Version: @DEB_LLVM_V@ +Architecture: @DEB_ARCH@ +Maintainer: @DEB_MAINTAINER@ +Depends: python3.9 (= 3.9.9-1), libpython3.9 (= 3.9.9-1) +Priority: optional +Homepage: https://www.llvm.org/ +Description: Next generation, high-performance debugger diff --git a/build_patch/llvm/lldb-swig-multiple-declaration.diff b/build_patch/llvm/lldb-swig-multiple-declaration.diff new file mode 100644 index 0000000000..4de7641b05 --- /dev/null +++ b/build_patch/llvm/lldb-swig-multiple-declaration.diff @@ -0,0 +1,10 @@ +--- llvm/lldb/bindings/interfaces.swig 2022-11-12 00:14:17.000000000 +0100 ++++ llvm/lldb/bindings/interfaces.swig 2023-02-22 23:47:51.000000000 +0100 +@@ -2,7 +2,6 @@ + #define __extension__ /* Undefine GCC keyword to make Swig happy when processing glibc's stdint.h. */ + /* The ISO C99 standard specifies that in C++ implementations limit macros such + as INT32_MAX should only be defined if __STDC_LIMIT_MACROS is. */ +-#define __STDC_LIMIT_MACROS + %include "stdint.i" + + %include "lldb/lldb-defines.h" diff --git a/build_patch/llvm/python-typemaps-patch.diff b/build_patch/llvm/python-typemaps-patch.diff new file mode 100644 index 0000000000..049f1838ae --- /dev/null +++ b/build_patch/llvm/python-typemaps-patch.diff @@ -0,0 +1,11 @@ +--- llvm/lldb/bindings/python/python-typemaps.swig 2022-11-12 00:14:17.000000000 +0100 ++++ llvm/lldb/bindings/python/python-typemaps.swig 2023-02-23 17:48:52.000000000 +0100 +@@ -435,7 +435,7 @@ + + %typemap(out) lldb::FileSP { + $result = nullptr; +- lldb::FileSP &sp = $1; ++ const lldb::FileSP &sp = $1; + if (sp) { + PythonFile pyfile = unwrapOrSetPythonException(PythonFile::FromFile(*sp)); + if (!pyfile.IsValid()) diff --git a/makefiles/llvm.mk b/makefiles/llvm.mk index da2e774b4c..4ad99f7f27 100644 --- a/makefiles/llvm.mk +++ b/makefiles/llvm.mk @@ -2,6 +2,16 @@ ifneq ($(PROCURSUS),1) $(error Use the main Makefile) endif +#Checking if swig and python3 is installed +HAS_COMMAND = $(shell type $(1) >/dev/null 2>&1 && echo 1) +ifneq ($(call HAS_COMMAND,swig),1) +$(error Install swig) +endif +ifneq ($(call HAS_COMMAND,python3),1) +$(error Install python3) +endif +PYTHON3_PATH := $(shell which python3) + #### Consider mlir/pstl/flang too SUBPROJECTS += llvm @@ -71,6 +81,8 @@ ifeq ($(wildcard $(BUILD_WORK)/../../native/llvm/.build_complete),) touch $(BUILD_WORK)/../../native/llvm/.build_complete endif + + ifeq ($(wildcard $(BUILD_WORK)/llvm/build/.build_complete),) case $(MEMO_TARGET) in \ *"darwin"*) \ @@ -145,7 +157,8 @@ ifeq ($(wildcard $(BUILD_WORK)/llvm/build/.build_complete),) -DLLDB_TABLEGEN_EXE="$(BUILD_WORK)/../../native/llvm/bin/lldb-tblgen" \ -DLLDB_BUILD_FRAMEWORK=OFF \ -DLLDB_ENABLE_LUA=OFF \ - -DLLDB_ENABLE_PYTHON=OFF \ + -DLLDB_PYTHON_RELATIVE_PATH="$(PYTHON3_PATH)" \ + -DLLDB_ENABLE_PYTHON=ON \ -DSWIFT_DARWIN_DEPLOYMENT_VERSION_IOS="$(IPHONEOS_DEPLOYMENT_TARGET)" \ -DSWIFT_DARWIN_DEPLOYMENT_VERSION_OSX="$(MACOSX_DEPLYMENT_TARGET)" \ -DSWIFT_DARWIN_DEPLOYMENT_VERSION_WATCHOS="$(WATCHOS_DEPLOYMENT_TARGET)" \ @@ -311,7 +324,7 @@ endif # llvm.mk Prep liblldb-$(LLVM_MAJOR_V) mkdir -p $(BUILD_DIST)/liblldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/lib cp -a $(BUILD_STAGE)/llvm/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/lib/liblldb.$(LLVM_VERSION).dylib $(BUILD_DIST)/liblldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/lib - + # llvm.mk Prep liblldb-$(LLVM_MAJOR_V)-dev mkdir -p $(BUILD_DIST)/liblldb-$(LLVM_MAJOR_V)-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/{include,lib} cp -a $(BUILD_STAGE)/llvm/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/include/lldb $(BUILD_DIST)/liblldb-$(LLVM_MAJOR_V)-dev/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/include @@ -332,10 +345,14 @@ endif cp -a $(BUILD_STAGE)/llvm/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/lib/libLLVM.dylib $(BUILD_DIST)/libllvm$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/lib $(LN_S) libLLVM.dylib $(BUILD_DIST)/libllvm$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/lib/libLLVM-$(LLVM_MAJOR_V).dylib + #llvm.mk Prep python3-lldb-$(LLVM_MAJOR_V) + mkdir -p $(BUILD_DIST)/python3-lldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/local/lib/python3.9/dist-packages + cp -a $(BUILD_STAGE)/llvm/opt/procursus/bin/python3/. $(BUILD_DIST)/python3-lldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/local/lib/python3.9/dist-packages/ + # llvm.mk Prep lldb-$(LLVM_MAJOR_V) mkdir -p $(BUILD_DIST)/lldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/bin cp -a $(BUILD_STAGE)/llvm/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/bin/lldb{,-argdumper,-instr,-server,-vscode} $(BUILD_DIST)/lldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/bin - + # llvm.mk Prep lldb mkdir -p $(BUILD_DIST)/lldb/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin for bin in lldb{,-argdumper,-instr,-server,-vscode}; do \ @@ -415,8 +432,6 @@ endif # llvm.mk Prep lld mkdir -p $(BUILD_DIST)/lld/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin $(LN_S) ../lib/llvm-$(LLVM_MAJOR_V)/bin/{ld.lld,ld64.lld,lld,lld-link,wasm-ld} $(BUILD_DIST)/lld/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/bin/ - - # llvm.mk Sign $(call SIGN,clang-$(LLVM_MAJOR_V),general.xml) $(call SIGN,clangd-$(LLVM_MAJOR_V),general.xml) @@ -461,6 +476,7 @@ endif $(call PACK,liblldb-$(LLVM_MAJOR_V),DEB_LLVM_V) $(call PACK,liblldb-$(LLVM_MAJOR_V)-dev,DEB_LLVM_V) $(call PACK,libllvm$(LLVM_MAJOR_V),DEB_LLVM_V) # Provides libllvm-polly + $(call PACK,python3-lldb-$(LLVM_MAJOR_V),DEB_LLVM_V) $(call PACK,lldb-$(LLVM_MAJOR_V),DEB_LLVM_V) $(call PACK,lldb,DEB_LLVM_V) $(call PACK,swift-$(SWIFT_VERSION),DEB_SWIFT_V) From 27113f9b215609af5cc185553e159f7f751a43a0 Mon Sep 17 00:00:00 2001 From: meczka Date: Tue, 21 Mar 2023 20:29:26 +0100 Subject: [PATCH 2/4] Made requested changes --- build_info/python3-lldb-14.control | 2 +- makefiles/llvm.mk | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build_info/python3-lldb-14.control b/build_info/python3-lldb-14.control index 4d6dba2ef7..d38172295d 100644 --- a/build_info/python3-lldb-14.control +++ b/build_info/python3-lldb-14.control @@ -3,7 +3,7 @@ Section: Development Version: @DEB_LLVM_V@ Architecture: @DEB_ARCH@ Maintainer: @DEB_MAINTAINER@ -Depends: python3.9 (= 3.9.9-1), libpython3.9 (= 3.9.9-1) +Depends: python3.9, libpython3.9 Priority: optional Homepage: https://www.llvm.org/ Description: Next generation, high-performance debugger diff --git a/makefiles/llvm.mk b/makefiles/llvm.mk index 4ad99f7f27..5ebe039b6d 100644 --- a/makefiles/llvm.mk +++ b/makefiles/llvm.mk @@ -346,8 +346,8 @@ endif $(LN_S) libLLVM.dylib $(BUILD_DIST)/libllvm$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/lib/libLLVM-$(LLVM_MAJOR_V).dylib #llvm.mk Prep python3-lldb-$(LLVM_MAJOR_V) - mkdir -p $(BUILD_DIST)/python3-lldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/local/lib/python3.9/dist-packages - cp -a $(BUILD_STAGE)/llvm/opt/procursus/bin/python3/. $(BUILD_DIST)/python3-lldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/local/lib/python3.9/dist-packages/ + mkdir -p $(BUILD_DIST)/python3-lldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)$(MEMO_ALT_PREFIX)/lib/python$(PYTHON3_MAJOR_V)/dist-packages + cp -a $(BUILD_STAGE)/llvm/opt/procursus/bin/python3/. $(BUILD_DIST)/python3-lldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)$(MEMO_ALT_PREFIX)/lib/python$(PYTHON3_MAJOR_V)/dist-packages # llvm.mk Prep lldb-$(LLVM_MAJOR_V) mkdir -p $(BUILD_DIST)/lldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/bin From bc476f5a6f85349a7b278f43092b1d6e13e01916 Mon Sep 17 00:00:00 2001 From: meczka Date: Mon, 27 Mar 2023 11:06:05 +0200 Subject: [PATCH 3/4] Now using variables instead of hardcoding installation path of python3-lldb, added cleanup in build_work for that package --- makefiles/llvm.mk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/makefiles/llvm.mk b/makefiles/llvm.mk index 5ebe039b6d..c0f494e313 100644 --- a/makefiles/llvm.mk +++ b/makefiles/llvm.mk @@ -346,8 +346,8 @@ endif $(LN_S) libLLVM.dylib $(BUILD_DIST)/libllvm$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/lib/libLLVM-$(LLVM_MAJOR_V).dylib #llvm.mk Prep python3-lldb-$(LLVM_MAJOR_V) - mkdir -p $(BUILD_DIST)/python3-lldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)$(MEMO_ALT_PREFIX)/lib/python$(PYTHON3_MAJOR_V)/dist-packages - cp -a $(BUILD_STAGE)/llvm/opt/procursus/bin/python3/. $(BUILD_DIST)/python3-lldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)$(MEMO_ALT_PREFIX)/lib/python$(PYTHON3_MAJOR_V)/dist-packages + mkdir -p $(BUILD_DIST)/python3-lldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)$(MEMO_ALT_PREFIX)/lib/python3.9/dist-packages + cp -a $(BUILD_STAGE)/llvm/$(PYTHON3_PATH)/. $(BUILD_DIST)/python3-lldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)$(MEMO_ALT_PREFIX)/lib/python3.9/dist-packages # llvm.mk Prep lldb-$(LLVM_MAJOR_V) mkdir -p $(BUILD_DIST)/lldb-$(LLVM_MAJOR_V)/$(MEMO_PREFIX)$(MEMO_SUB_PREFIX)/lib/llvm-$(LLVM_MAJOR_V)/bin @@ -493,6 +493,6 @@ endif $(call PACK,lld,DEB_LLVM_V) # llvm.mk Build cleanup - rm -rf $(BUILD_DIST)/{clang*,debugserver*,libc++*,libclang*,liblldb*,liblld*,libllvm*,lldb*,swift*,lld*,llvm*}/ + rm -rf $(BUILD_DIST)/{clang*,debugserver*,libc++*,libclang*,liblldb*,liblld*,libllvm*,lldb*,swift*,lld*,llvm*,python3*}/ .PHONY: llvm llvm-package From f1ddce02306551b38fcd9f5975642b69aad9ed59 Mon Sep 17 00:00:00 2001 From: meczka Date: Mon, 27 Mar 2023 11:09:52 +0200 Subject: [PATCH 4/4] fixed dependencies of python3-lldb-14 --- build_info/python3-lldb-14.control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_info/python3-lldb-14.control b/build_info/python3-lldb-14.control index d38172295d..34e2e6675e 100644 --- a/build_info/python3-lldb-14.control +++ b/build_info/python3-lldb-14.control @@ -3,7 +3,7 @@ Section: Development Version: @DEB_LLVM_V@ Architecture: @DEB_ARCH@ Maintainer: @DEB_MAINTAINER@ -Depends: python3.9, libpython3.9 +Depends: python3 Priority: optional Homepage: https://www.llvm.org/ Description: Next generation, high-performance debugger