diff mbox series

[v2,1/6] clang: improve opt-viewer PACKAGECONFIG

Message ID 20250914133258.2625735-1-ross.burton@arm.com
State New
Headers show
Series [v2,1/6] clang: improve opt-viewer PACKAGECONFIG | expand

Commit Message

Ross Burton Sept. 14, 2025, 1:32 p.m. UTC
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

Comments

Khem Raj Sept. 15, 2025, 5:23 a.m. UTC | #1
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]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Mathieu Dubois-Briand Sept. 15, 2025, 5:32 a.m. UTC | #2
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 mbox series

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 ??= ""