Skip to content

Commit fa1b780

Browse files
ycongal-smilekraj
authored andcommitted
clang: Disable building dexp in clang-native
Building dexp (native) on Debian 11 causes intermittent failure[0]. This tools in not used in clang except in tests (that we don't run). So, disable building this tool by encapsulating its build in a cmake option and then in a PACKAGECONFIG. Users sure of not using Debian 11 (or the impacted g++ compiler) can turn this config on safely. Only the -native* variants change. Dexp is still enabled by default for target. [0]: https://bugzilla.yoctoproject.org/show_bug.cgi?id=15803 Signed-off-by: Yoann Congal <[email protected]>
1 parent 65da70e commit fa1b780

File tree

3 files changed

+91
-0
lines changed

3 files changed

+91
-0
lines changed
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
From 8001f900e602c0a8abcf118bda5869a2eb0d5ee9 Mon Sep 17 00:00:00 2001
2+
From: Yoann Congal <[email protected]>
3+
Date: Tue, 25 Mar 2025 22:25:55 +0100
4+
Subject: [PATCH] clangd: Add a build option to disable building dexp
5+
6+
Building dexp on Debian 11 currently causes intermittent failure[0][1].
7+
8+
Adding the CLANGD_BUILD_DEXP option to disable dexp from the build
9+
allows Debian 11 users to build clang (albeit without the dexp tool).
10+
11+
This option is set to "Build Dexp" by default so, no change is expected
12+
without manual setting.
13+
14+
[0]: https://bugzilla.yoctoproject.org/show_bug.cgi?id=15803
15+
[1]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1101322
16+
17+
Upstream-Status: Submitted [https://github.com/llvm/llvm-project/pull/133124]
18+
Signed-off-by: Yoann Congal <[email protected]>
19+
---
20+
clang-tools-extra/clangd/CMakeLists.txt | 8 +++++++-
21+
clang-tools-extra/clangd/test/CMakeLists.txt | 7 +++++--
22+
clang-tools-extra/clangd/test/lit.site.cfg.py.in | 1 +
23+
3 files changed, 13 insertions(+), 3 deletions(-)
24+
25+
diff --git a/clang-tools-extra/clangd/CMakeLists.txt b/clang-tools-extra/clangd/CMakeLists.txt
26+
index 6f10afe4a562..a1e9da41b4b3 100644
27+
--- a/clang-tools-extra/clangd/CMakeLists.txt
28+
+++ b/clang-tools-extra/clangd/CMakeLists.txt
29+
@@ -210,6 +210,9 @@ if (CLANGD_ENABLE_REMOTE)
30+
include(AddGRPC)
31+
endif()
32+
33+
+option(CLANGD_BUILD_DEXP "Build the dexp tool as part of Clangd" ON)
34+
+llvm_canonicalize_cmake_booleans(CLANGD_BUILD_DEXP)
35+
+
36+
if(CLANG_INCLUDE_TESTS)
37+
add_subdirectory(test)
38+
add_subdirectory(unittests)
39+
@@ -220,4 +223,7 @@ option(CLANGD_ENABLE_REMOTE "Use gRPC library to enable remote index support for
40+
set(GRPC_INSTALL_PATH "" CACHE PATH "Path to gRPC library manual installation.")
41+
42+
add_subdirectory(index/remote)
43+
-add_subdirectory(index/dex/dexp)
44+
+
45+
+if(CLANGD_BUILD_DEXP)
46+
+ add_subdirectory(index/dex/dexp)
47+
+endif()
48+
diff --git a/clang-tools-extra/clangd/test/CMakeLists.txt b/clang-tools-extra/clangd/test/CMakeLists.txt
49+
index b51f461a4986..42fc3506641f 100644
50+
--- a/clang-tools-extra/clangd/test/CMakeLists.txt
51+
+++ b/clang-tools-extra/clangd/test/CMakeLists.txt
52+
@@ -3,8 +3,6 @@ set(CLANGD_TEST_DEPS
53+
ClangdTests
54+
clangd-indexer
55+
split-file
56+
- # No tests for it, but we should still make sure they build.
57+
- dexp
58+
)
59+
60+
if(CLANGD_BUILD_XPC)
61+
@@ -12,6 +10,11 @@ if(CLANGD_BUILD_XPC)
62+
list(APPEND CLANGD_TEST_DEPS ClangdXpcUnitTests)
63+
endif()
64+
65+
+if(CLANGD_BUILD_DEXP)
66+
+ # No tests for it, but we should still make sure they build.
67+
+ list(APPEND CLANGD_TEST_DEPS dexp)
68+
+endif()
69+
+
70+
if(CLANGD_ENABLE_REMOTE)
71+
list(APPEND CLANGD_TEST_DEPS clangd-index-server clangd-index-server-monitor)
72+
endif()
73+
diff --git a/clang-tools-extra/clangd/test/lit.site.cfg.py.in b/clang-tools-extra/clangd/test/lit.site.cfg.py.in
74+
index 1fe7c8d0f324..a0bb3561e19e 100644
75+
--- a/clang-tools-extra/clangd/test/lit.site.cfg.py.in
76+
+++ b/clang-tools-extra/clangd/test/lit.site.cfg.py.in
77+
@@ -15,6 +15,7 @@ config.llvm_shlib_dir = "@SHLIBDIR@"
78+
config.clangd_source_dir = "@CMAKE_CURRENT_SOURCE_DIR@/.."
79+
config.clangd_binary_dir = "@CMAKE_CURRENT_BINARY_DIR@/.."
80+
config.clangd_build_xpc = @CLANGD_BUILD_XPC@
81+
+config.clangd_build_dexp = @CLANGD_BUILD_DEXP@
82+
config.clangd_enable_remote = @CLANGD_ENABLE_REMOTE@
83+
config.clangd_tidy_checks = @CLANGD_TIDY_CHECKS@
84+
config.have_zlib = @LLVM_ENABLE_ZLIB@

recipes-devtools/clang/clang_git.bb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@ PACKAGECONFIG:class-nativesdk = "clangd \
7878
PACKAGECONFIG[bootstrap] = "-DCLANG_ENABLE_BOOTSTRAP=On -DCLANG_BOOTSTRAP_PASSTHROUGH='${PASSTHROUGH}' -DBOOTSTRAP_LLVM_ENABLE_LTO=Thin -DBOOTSTRAP_LLVM_ENABLE_LLD=ON,,,"
7979
PACKAGECONFIG[build-id] = "-DENABLE_LINKER_BUILD_ID=ON,-DENABLE_LINKER_BUILD_ID=OFF,,"
8080
PACKAGECONFIG[clangd] = "-DCLANG_ENABLE_CLANGD=ON,-DCLANG_ENABLE_CLANGD=OFF,,"
81+
82+
# Activate to build the dexp tool in clangd
83+
# Disabled by default for -native since it is known to trigger compiler failure on Debian 11
84+
# See: https://bugzilla.yoctoproject.org/show_bug.cgi?id=15803
85+
PACKAGECONFIG[clangd-dexp] = "-DCLANGD_BUILD_DEXP=ON,-DCLANGD_BUILD_DEXP=OFF,,"
86+
8187
PACKAGECONFIG[compiler-rt] = "-DCLANG_DEFAULT_RTLIB=compiler-rt,,"
8288
PACKAGECONFIG[eh] = "-DLLVM_ENABLE_EH=ON,-DLLVM_ENABLE_EH=OFF,,"
8389
PACKAGECONFIG[libcplusplus] = "-DCLANG_DEFAULT_CXX_STDLIB=libc++,,"

recipes-devtools/clang/common.inc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ SRC_URI = "\
5555
file://0034-scan-build-py-respect-LLVM_LIBDIR_SUFFIX-like-other-.patch \
5656
file://0035-compiler-rt-Do-not-pass-target-to-clang-compiler.patch \
5757
file://0036-Fix-build-on-ppc64-musl.patch \
58+
file://0037-clangd-Add-a-build-option-to-disable-building-dexp.patch \
5859
"
5960
# Fallback to no-PIE if not set
6061
GCCPIE ??= ""

0 commit comments

Comments
 (0)