Message ID | 20250914133258.2625735-1-ross.burton@arm.com |
---|---|
State | New |
Headers | show |
Series | [v2,1/6] clang: improve opt-viewer PACKAGECONFIG | expand |
On Sun, Sep 14, 2025 at 6:33 AM Ross Burton via lists.openembedded.org <ross.burton=arm.com@lists.openembedded.org> wrote: > > Instead of patching the python module detection, we can use the hidden > option LLVM_TOOL_OPT_VIEWER_BUILD. How are these hidden options materialized ? it will be good to describe that because there is no description of LLVM_HAVE_OPT_VIEWER_BUILD anywhere in llvm sources. > > Signed-off-by: Ross Burton <ross.burton@arm.com> > --- > ...-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch | 70 ------------------- > meta/recipes-devtools/clang/clang_git.bb | 2 +- > meta/recipes-devtools/clang/common.inc | 1 - > 3 files changed, 1 insertion(+), 72 deletions(-) > delete mode 100644 meta/recipes-devtools/clang/clang/0041-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch > > diff --git a/meta/recipes-devtools/clang/clang/0041-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch b/meta/recipes-devtools/clang/clang/0041-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch > deleted file mode 100644 > index 4dc01f6e640..00000000000 > --- a/meta/recipes-devtools/clang/clang/0041-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch > +++ /dev/null > @@ -1,70 +0,0 @@ > -From 93a51605fccf0f99868f8bae212a08823d01b03a Mon Sep 17 00:00:00 2001 > -From: Khem Raj <raj.khem@gmail.com> > -Date: Sat, 2 Aug 2025 17:58:20 -0700 > -Subject: [PATCH] [opt-viewer] Allow users to set LLVM_HAVE_OPT_VIEWER_MODULES > - manually from the CMake > - > -Check right before setting LLVM_HAVE_OPT_VIEWER_MODULES > -so that if the user specifies the variable on the commandline > -it takes precedence. If not, fall back to the old logic > - > -Upstream-Status: Submitted [https://github.com/llvm/llvm-project/pull/151845] > -Signed-off-by: Khem Raj <raj.khem@gmail.com> > ---- > - llvm/CMakeLists.txt | 2 ++ > - llvm/cmake/config-ix.cmake | 13 ++++++++++--- > - llvm/include/llvm/Config/config.h.cmake | 3 +++ > - 3 files changed, 15 insertions(+), 3 deletions(-) > - > -diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt > -index cb945b578e46..e4ed9eca6014 100644 > ---- a/llvm/CMakeLists.txt > -+++ b/llvm/CMakeLists.txt > -@@ -7,6 +7,8 @@ set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake) > - include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake > - NO_POLICY_SCOPE) > - > -+option(LLVM_HAVE_OPT_VIEWER_MODULES "Enable opt-viewer modules support" ON) > -+ > - # Builds with custom install names and installation rpath setups may not work > - # in the build tree. Allow these cases to use CMake's default build tree > - # behavior by setting `LLVM_NO_INSTALL_NAME_DIR_FOR_BUILD_TREE` to do this. > -diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake > -index a8e4e5a63244..17af3dc1e93f 100644 > ---- a/llvm/cmake/config-ix.cmake > -+++ b/llvm/cmake/config-ix.cmake > -@@ -805,10 +805,17 @@ foreach(module ${PYTHON_MODULES}) > - find_python_module(${module}) > - endforeach() > - > --if(PY_PYGMENTS_FOUND AND PY_PYGMENTS_LEXERS_C_CPP_FOUND AND PY_YAML_FOUND) > -- set (LLVM_HAVE_OPT_VIEWER_MODULES 1) > -+if(NOT DEFINED LLVM_HAVE_OPT_VIEWER_MODULES) > -+ if(PY_PYGMENTS_FOUND AND PY_PYGMENTS_LEXERS_C_CPP_FOUND AND PY_YAML_FOUND) > -+ set (LLVM_HAVE_OPT_VIEWER_MODULES 1) > -+ else() > -+ set (LLVM_HAVE_OPT_VIEWER_MODULES 0) > -+ endif() > -+elseif(LLVM_HAVE_OPT_VIEWER_MODULES) > -+ # Use the user-provided value > -+ set(LLVM_HAVE_OPT_VIEWER_MODULES 1) > - else() > -- set (LLVM_HAVE_OPT_VIEWER_MODULES 0) > -+ set(LLVM_HAVE_OPT_VIEWER_MODULES 0) > - endif() > - > - function(llvm_get_host_prefixes_and_suffixes) > -diff --git a/llvm/include/llvm/Config/config.h.cmake b/llvm/include/llvm/Config/config.h.cmake > -index ce83de8e4cba..02cf6d2ec363 100644 > ---- a/llvm/include/llvm/Config/config.h.cmake > -+++ b/llvm/include/llvm/Config/config.h.cmake > -@@ -287,6 +287,9 @@ > - /* Define to a function implementing strdup */ > - #cmakedefine strdup ${strdup} > - > -+/* Define indicating opt-viewer modules */ > -+#cmakedefine LLVM_HAVE_OPT_VIEWER_MODULES > -+ > - /* Whether GlobalISel rule coverage is being collected */ > - #cmakedefine01 LLVM_GISEL_COV_ENABLED > - > diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb > index 0009a95628d..f53ecbfe398 100644 > --- a/meta/recipes-devtools/clang/clang_git.bb > +++ b/meta/recipes-devtools/clang/clang_git.bb > @@ -59,7 +59,7 @@ PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON,-DLLVM_ENABLE_LIBEDIT=OFF,lib > PACKAGECONFIG[libomp] = "-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp,," > PACKAGECONFIG[lld] = "-DCLANG_DEFAULT_LINKER=lld,,," > PACKAGECONFIG[lto] = "-DLLVM_ENABLE_LTO=Full -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils," > -PACKAGECONFIG[opt-viewer] = "-DLLVM_HAVE_OPT_VIEWER_MODULES=ON,-DLLVM_HAVE_OPT_VIEWER_MODULES=OFF, \ > +PACKAGECONFIG[opt-viewer] = "-DLLVM_TOOL_OPT_VIEWER_BUILD=ON,-DLLVM_TOOL_OPT_VIEWER_BUILD=OFF, \ > python3-pyyaml-native python3-pygments-native python3-pyyaml python3-pygments, \ > python3-pyyaml python3-pygments," > PACKAGECONFIG[pfm] = "-DLLVM_ENABLE_LIBPFM=ON,-DLLVM_ENABLE_LIBPFM=OFF,libpfm," > diff --git a/meta/recipes-devtools/clang/common.inc b/meta/recipes-devtools/clang/common.inc > index 889847c3e11..ac86284fb20 100644 > --- a/meta/recipes-devtools/clang/common.inc > +++ b/meta/recipes-devtools/clang/common.inc > @@ -61,7 +61,6 @@ SRC_URI = "\ > file://0038-Revert-libc-Remap-headers-in-the-debug-info-when-bui.patch \ > file://0039-Prevent-revisiting-block-when-searching-for-noreturn.patch \ > file://0040-Only-build-c-index-test-when-clang-tests-are-include.patch \ > - file://0041-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch \ > " > # Fallback to no-PIE if not set > GCCPIE ??= "" > -- > 2.43.0 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#223351): https://lists.openembedded.org/g/openembedded-core/message/223351 > Mute This Topic: https://lists.openembedded.org/mt/115236806/1997914 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
On Sun Sep 14, 2025 at 3:32 PM CEST, Ross Burton via lists.openembedded.org wrote: > Instead of patching the python module detection, we can use the hidden > option LLVM_TOOL_OPT_VIEWER_BUILD. > > Signed-off-by: Ross Burton <ross.burton@arm.com> > --- Ho Ross, I just launched a reproducibility test build. It did not crash, but we still got some issues: AssertionError: The following deb packages are different and not in exclusion list: /srv/pokybuild/yocto-worker/reproducible/build/build-st/reproducibleB-extended/tmp/deploy/deb/./x86-64-v3/clang-dbg_21.1.1-r0_amd64.deb /srv/pokybuild/yocto-worker/reproducible/build/build-st/reproducibleB-extended/tmp/deploy/deb/./x86-64-v3/clang-format_21.1.1-r0_amd64.deb /srv/pokybuild/yocto-worker/reproducible/build/build-st/reproducibleB-extended/tmp/deploy/deb/./x86-64-v3/clang-tidy_21.1.1-r0_amd64.deb /srv/pokybuild/yocto-worker/reproducible/build/build-st/reproducibleB-extended/tmp/deploy/deb/./x86-64-v3/clang-tools_21.1.1-r0_amd64.deb /srv/pokybuild/yocto-worker/reproducible/build/build-st/reproducibleB-extended/tmp/deploy/deb/./x86-64-v3/clang_21.1.1-r0_amd64.deb /srv/pokybuild/yocto-worker/reproducible/build/build-st/reproducibleB-extended/tmp/deploy/deb/./x86-64-v3/libclang-cpp21.1_21.1.1-r0_amd64.deb /srv/pokybuild/yocto-worker/reproducible/build/build-st/reproducibleB-extended/tmp/deploy/deb/./x86-64-v3/libclang21.1_21.1.1-r0_amd64.deb ... (same with ipk and rpm) https://autobuilder.yoctoproject.org/valkyrie/#/builders/37/builds/2497 http://valkyrie.yocto.io/pub/repro-fail/oe-reproducible-20250914-yhzvpnom/packages/diff-html/ Thanks, Mathieu
diff --git a/meta/recipes-devtools/clang/clang/0041-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch b/meta/recipes-devtools/clang/clang/0041-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch deleted file mode 100644 index 4dc01f6e640..00000000000 --- a/meta/recipes-devtools/clang/clang/0041-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 93a51605fccf0f99868f8bae212a08823d01b03a Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Sat, 2 Aug 2025 17:58:20 -0700 -Subject: [PATCH] [opt-viewer] Allow users to set LLVM_HAVE_OPT_VIEWER_MODULES - manually from the CMake - -Check right before setting LLVM_HAVE_OPT_VIEWER_MODULES -so that if the user specifies the variable on the commandline -it takes precedence. If not, fall back to the old logic - -Upstream-Status: Submitted [https://github.com/llvm/llvm-project/pull/151845] -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - llvm/CMakeLists.txt | 2 ++ - llvm/cmake/config-ix.cmake | 13 ++++++++++--- - llvm/include/llvm/Config/config.h.cmake | 3 +++ - 3 files changed, 15 insertions(+), 3 deletions(-) - -diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt -index cb945b578e46..e4ed9eca6014 100644 ---- a/llvm/CMakeLists.txt -+++ b/llvm/CMakeLists.txt -@@ -7,6 +7,8 @@ set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake) - include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake - NO_POLICY_SCOPE) - -+option(LLVM_HAVE_OPT_VIEWER_MODULES "Enable opt-viewer modules support" ON) -+ - # Builds with custom install names and installation rpath setups may not work - # in the build tree. Allow these cases to use CMake's default build tree - # behavior by setting `LLVM_NO_INSTALL_NAME_DIR_FOR_BUILD_TREE` to do this. -diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake -index a8e4e5a63244..17af3dc1e93f 100644 ---- a/llvm/cmake/config-ix.cmake -+++ b/llvm/cmake/config-ix.cmake -@@ -805,10 +805,17 @@ foreach(module ${PYTHON_MODULES}) - find_python_module(${module}) - endforeach() - --if(PY_PYGMENTS_FOUND AND PY_PYGMENTS_LEXERS_C_CPP_FOUND AND PY_YAML_FOUND) -- set (LLVM_HAVE_OPT_VIEWER_MODULES 1) -+if(NOT DEFINED LLVM_HAVE_OPT_VIEWER_MODULES) -+ if(PY_PYGMENTS_FOUND AND PY_PYGMENTS_LEXERS_C_CPP_FOUND AND PY_YAML_FOUND) -+ set (LLVM_HAVE_OPT_VIEWER_MODULES 1) -+ else() -+ set (LLVM_HAVE_OPT_VIEWER_MODULES 0) -+ endif() -+elseif(LLVM_HAVE_OPT_VIEWER_MODULES) -+ # Use the user-provided value -+ set(LLVM_HAVE_OPT_VIEWER_MODULES 1) - else() -- set (LLVM_HAVE_OPT_VIEWER_MODULES 0) -+ set(LLVM_HAVE_OPT_VIEWER_MODULES 0) - endif() - - function(llvm_get_host_prefixes_and_suffixes) -diff --git a/llvm/include/llvm/Config/config.h.cmake b/llvm/include/llvm/Config/config.h.cmake -index ce83de8e4cba..02cf6d2ec363 100644 ---- a/llvm/include/llvm/Config/config.h.cmake -+++ b/llvm/include/llvm/Config/config.h.cmake -@@ -287,6 +287,9 @@ - /* Define to a function implementing strdup */ - #cmakedefine strdup ${strdup} - -+/* Define indicating opt-viewer modules */ -+#cmakedefine LLVM_HAVE_OPT_VIEWER_MODULES -+ - /* Whether GlobalISel rule coverage is being collected */ - #cmakedefine01 LLVM_GISEL_COV_ENABLED - diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb index 0009a95628d..f53ecbfe398 100644 --- a/meta/recipes-devtools/clang/clang_git.bb +++ b/meta/recipes-devtools/clang/clang_git.bb @@ -59,7 +59,7 @@ PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON,-DLLVM_ENABLE_LIBEDIT=OFF,lib PACKAGECONFIG[libomp] = "-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp,," PACKAGECONFIG[lld] = "-DCLANG_DEFAULT_LINKER=lld,,," PACKAGECONFIG[lto] = "-DLLVM_ENABLE_LTO=Full -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils," -PACKAGECONFIG[opt-viewer] = "-DLLVM_HAVE_OPT_VIEWER_MODULES=ON,-DLLVM_HAVE_OPT_VIEWER_MODULES=OFF, \ +PACKAGECONFIG[opt-viewer] = "-DLLVM_TOOL_OPT_VIEWER_BUILD=ON,-DLLVM_TOOL_OPT_VIEWER_BUILD=OFF, \ python3-pyyaml-native python3-pygments-native python3-pyyaml python3-pygments, \ python3-pyyaml python3-pygments," PACKAGECONFIG[pfm] = "-DLLVM_ENABLE_LIBPFM=ON,-DLLVM_ENABLE_LIBPFM=OFF,libpfm," diff --git a/meta/recipes-devtools/clang/common.inc b/meta/recipes-devtools/clang/common.inc index 889847c3e11..ac86284fb20 100644 --- a/meta/recipes-devtools/clang/common.inc +++ b/meta/recipes-devtools/clang/common.inc @@ -61,7 +61,6 @@ SRC_URI = "\ file://0038-Revert-libc-Remap-headers-in-the-debug-info-when-bui.patch \ file://0039-Prevent-revisiting-block-when-searching-for-noreturn.patch \ file://0040-Only-build-c-index-test-when-clang-tests-are-include.patch \ - file://0041-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch \ " # Fallback to no-PIE if not set GCCPIE ??= ""
Instead of patching the python module detection, we can use the hidden option LLVM_TOOL_OPT_VIEWER_BUILD. Signed-off-by: Ross Burton <ross.burton@arm.com> --- ...-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch | 70 ------------------- meta/recipes-devtools/clang/clang_git.bb | 2 +- meta/recipes-devtools/clang/common.inc | 1 - 3 files changed, 1 insertion(+), 72 deletions(-) delete mode 100644 meta/recipes-devtools/clang/clang/0041-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch