Skip to content

Commit 76406d1

Browse files
authored
Merge pull request #25120 from rockwotj/clang-fixes-bazel
2 parents be69972 + 52af742 commit 76406d1

17 files changed

+91
-180
lines changed

.bazelrc

-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ build --@rules_go//go/config:pure
1414
# https://github.com/bazel-contrib/toolchains_llvm/pull/445#issuecomment-2605443516
1515
build --copt=-ffile-compilation-dir=. --host_copt=-ffile-compilation-dir=.
1616

17-
common:clang-19 --extra_toolchains=@llvm_19_toolchain//:all
18-
1917
build:system-clang --extra_toolchains=@local_config_cc_toolchains//:all
2018
build:system-clang --action_env=BAZEL_COMPILER=clang
2119
build:system-clang --cxxopt=-std=c++23 --host_cxxopt=-std=c++23

MODULE.bazel

+10-32
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ use_repo(non_module_dependencies, "x86_64_sysroot")
9696
use_repo(non_module_dependencies, "aarch64_sysroot")
9797

9898
bazel_dep(name = "toolchains_llvm", version = "1.3.0")
99+
archive_override(
100+
module_name = "toolchains_llvm",
101+
integrity = "sha256-tiSkUD4G/Zxkdm+TPSclElauijatg7jF9eqs8LvD6hw=",
102+
strip_prefix = "toolchains_llvm-e831f94a8b7f3a39391f5822adcab8e4d443c03b",
103+
urls = "https://github.com/bazel-contrib/toolchains_llvm/archive/e831f94a8b7f3a39391f5822adcab8e4d443c03b.tar.gz",
104+
)
99105

100106
# ====================================
101107
# LLVM toolchain
@@ -129,46 +135,18 @@ COMPILE_FLAGS = {
129135
] + COMMON_COMPILE_FLAGS,
130136
}
131137

132-
llvm.toolchain(
133-
name = "llvm_19_toolchain",
134-
compile_flags = COMPILE_FLAGS,
135-
cxx_standard = {"": CXX_STANDARD},
136-
llvm_version = "19.1.1",
137-
sha256 = {
138-
"linux-aarch64": "c5cade3af930255296e097687ed9c86c660ca5b619a352a536353aaa5d4fde2e",
139-
"linux-x86_64": "0617e50fdb484bcd2169b24acd90e9b9fec7e6730d187fe8d2acfe69d2d429c4",
140-
},
141-
urls = {
142-
"linux-aarch64": ["http://redpanda-core-toolchain.s3-website-us-east-1.amazonaws.com/llvm-19.1.1-ubuntu-22.04-aarch64.tar.gz"],
143-
"linux-x86_64": ["http://redpanda-core-toolchain.s3-website-us-east-1.amazonaws.com/llvm-19.1.1-ubuntu-22.04-x86_64.tar.gz"],
144-
},
145-
)
146-
llvm.sysroot(
147-
name = "llvm_19_toolchain",
148-
label = "@x86_64_sysroot//:sysroot",
149-
targets = ["linux-x86_64"],
150-
)
151-
llvm.sysroot(
152-
name = "llvm_19_toolchain",
153-
label = "@aarch64_sysroot//:sysroot",
154-
targets = ["linux-aarch64"],
155-
)
156-
use_repo(llvm, "llvm_19_toolchain", "llvm_19_toolchain_llvm")
157-
158-
register_toolchains("@llvm_19_toolchain//:all")
159-
160138
llvm.toolchain(
161139
name = "llvm_18_toolchain",
162140
compile_flags = COMPILE_FLAGS,
163141
cxx_standard = {"": CXX_STANDARD},
164142
llvm_version = "18.1.8",
165143
sha256 = {
166-
"linux-aarch64": "95223a9fd35a2cfea2582b34519bbf65ff6bed498a378eb545a9d4fb8ee5a832",
167-
"linux-x86_64": "ca33f2b189bf56a3266101b6ed267739cf10d311b5c3fbdd2c05a306574f6f70",
144+
"linux-aarch64": "621856db24f9b081d3d097f7b51b33f8cf096b0d103214b23c49fd5978ce2354",
145+
"linux-x86_64": "b568ffa3ae21ac57b4dc5c96743b298343cc503cfb52192155f836b3b10213cf",
168146
},
169147
urls = {
170-
"linux-aarch64": ["http://redpanda-core-toolchain.s3-website-us-east-1.amazonaws.com/llvm-18.1.8-ubuntu-22.04-aarch64.tar.gz"],
171-
"linux-x86_64": ["http://redpanda-core-toolchain.s3-website-us-east-1.amazonaws.com/pgo/llvm-18.1.8-ubuntu-22.04-x86_64.tar.gz"],
148+
"linux-aarch64": ["https://github.com/redpanda-data/llvm-project/releases/download/llvmorg-18.1.8/llvm-18.1.8-ubuntu-22.04-aarch64-2025-02-25.tar.zst"],
149+
"linux-x86_64": ["https://github.com/redpanda-data/llvm-project/releases/download/llvmorg-18.1.8/llvm-18.1.8-ubuntu-22.04-x86_64-2025-02-25.tar.zst"],
172150
},
173151
)
174152
llvm.sysroot(

MODULE.bazel.lock

+12-103
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bazel/repositories.bzl

+4-4
Original file line numberDiff line numberDiff line change
@@ -199,13 +199,13 @@ filegroup(
199199
http_archive(
200200
name = "x86_64_sysroot",
201201
build_file_content = sysroot_build_file,
202-
sha256 = "7639199d529a2aee4b0007a2c55f6178235e732782ca47795a3022342e7ad985",
203-
urls = ["http://redpanda-core-toolchain.s3-website-us-east-1.amazonaws.com/sysroot-ubuntu-22.04-x86_64-2025-01-26.tar.gz"],
202+
sha256 = "282b7eb89ca45d2309217d5d2099cc087c1e7bd55f7891b9d2ddca648b6663b7",
203+
urls = ["https://github.com/redpanda-data/llvm-project/releases/download/llvmorg-19.1.7/sysroot-ubuntu-22.04-x86_64-2025-02-24.tar.zst"],
204204
)
205205

206206
http_archive(
207207
name = "aarch64_sysroot",
208208
build_file_content = sysroot_build_file,
209-
sha256 = "536cc7a4e0eb41418239da62f7f8d7205f1006fa5670f4ab8fab4a8db86de087",
210-
urls = ["http://redpanda-core-toolchain.s3-website-us-east-1.amazonaws.com/sysroot-ubuntu-22.04-aarch64-2025-01-26.tar.gz"],
209+
sha256 = "a162b62d4d34588232137c8f14d45849aaa36202b9081f2718452f4a086ae817",
210+
urls = ["https://github.com/redpanda-data/llvm-project/releases/download/llvmorg-19.1.7/sysroot-ubuntu-22.04-aarch64-2025-02-24.tar.zst"],
211211
)

bazel/test.bzl

+3-2
Original file line numberDiff line numberDiff line change
@@ -426,17 +426,18 @@ def redpanda_cc_bench(
426426
"exec $@ --iterations=1 --runs=1 --duration=0 --no-stdout --overprovisioned",
427427
],
428428
)
429+
test_data, test_env = _test_options()
429430
native.sh_test(
430431
name = name + "_test",
431432
timeout = timeout,
432433
tags = resource_tags + tags,
433434
srcs = [name + "_test_script"],
434-
env = env,
435+
env = env | test_env,
435436
args = [
436437
"$(rootpath :{})".format(name),
437438
] + args,
438439
data = [
439440
":" + name,
440-
] + data,
441+
] + data + test_data,
441442
target_compatible_with = target_compatible_with,
442443
)

bazel/toolchain/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
*.tar.gz
2+
*.tar.zst

bazel/toolchain/Dockerfile.llvm

+28-14
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ ADD --chmod=755 https://github.com/kadwanev/retry/raw/20997c7712a4/retry /usr/bi
1414

1515
WORKDIR /opt
1616

17-
ARG LLVM_VERSION=19.1.6
17+
ARG LLVM_VERSION=19.1.7
1818

1919
RUN git clone --branch llvmorg-${LLVM_VERSION} --single-branch https://github.com/llvm/llvm-project.git
2020

@@ -41,10 +41,13 @@ cmake -G Ninja -DLLVM_TARGETS_TO_BUILD='AArch64;X86' \\
4141
-DLLVM_ENABLE_PIC=ON \\
4242
-DLLVM_INCLUDE_TESTS=OFF \\
4343
-DLLVM_INCLUDE_EXAMPLES=OFF \\
44+
-DLLVM_INCLUDE_BENCHMARKS=OFF \\
45+
-DLLVM_ENABLE_BINDINGS=OFF \\
4446
-DLLVM_INCLUDE_UTILS=OFF \\
4547
-DLLVM_INCLUDE_DOCS=OFF \\
46-
-DLLVM_ENABLE_ZLIB=OFF \\
47-
-DLLVM_ENABLE_ZSTD=OFF \\
48+
-DLLVM_ENABLE_ZLIB=ON \\
49+
-DLLVM_ENABLE_ZSTD=ON \\
50+
-DLLVM_USE_STATIC_ZSTD=TRUE \\
4851
-DLLVM_ENABLE_Z3_SOLVER=OFF \\
4952
-DLLVM_ENABLE_DIA_SDK=OFF \\
5053
-DLLVM_ENABLE_LIBEDIT=OFF \\
@@ -74,10 +77,11 @@ cmake -G Ninja -DLLVM_TARGETS_TO_BUILD='AArch64;X86' \\
7477
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF \\
7578
-DLLVM_PARALLEL_COMPILE_JOBS=${MAX_COMPILER_JOBS} \\
7679
-DLLVM_PARALLEL_LINK_JOBS=${MAX_LINKER_JOBS} \\
77-
-DLIBCXX_ABI_VERSION=2 \\
80+
-DLIBCXX_ABI_UNSTABLE=ON \\
7881
-DLLVM_ENABLE_LIBCXX=ON \\
7982
-DLLVM_STATIC_LINK_CXX_STDLIB=ON \\
8083
-DLLVM_ENABLE_LTO=On \\
84+
-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON \\
8185
"\$@"
8286

8387
retry --sleep=0 --tries=100 -- ninja -C "\$BUILD_DIR"
@@ -96,11 +100,9 @@ RUN /opt/build.sh \
96100

97101
WORKDIR /opt/install
98102

99-
RUN bash -c 'tar -czvf /opt/llvm-${LLVM_VERSION}-$(source /etc/os-release && echo -n "$ID")-$(source /etc/os-release && echo -n "$VERSION_ID")-$(uname -m).tar.gz .'
100-
101103
FROM scratch AS lto
102104

103-
COPY --from=lto-build /opt/llvm-*.tar.gz .
105+
COPY --from=lto-build /opt/install/ .
104106

105107
FROM base AS pgo-build
106108

@@ -113,8 +115,9 @@ RUN /opt/build.sh \
113115
-DLLVM_BUILD_INSTRUMENTED=IR \
114116
-DLLVM_PROFILE_DATA_DIR=/tmp/clang-pgo-data/ \
115117
-DLLVM_ENABLE_PROJECTS="clang;lld;bolt" \
116-
-DCMAKE_C_FLAGS="-Xclang -mllvm -Xclang -vp-counters-per-site=6" \
117-
-DCMAKE_CXX_FLAGS="-Xclang -mllvm -Xclang -vp-counters-per-site=6" \
118+
-DLLVM_VP_COUNTERS_PER_SITE=6 \
119+
-DLLVM_BUILD_LLVM_DYLIB=ON \
120+
-DLLVM_LINK_LLVM_DYLIB=ON \
118121
-DLLVM_BUILD_RUNTIME=No \
119122
-DLLVM_ENABLE_LTO=${LTO_MODE}
120123

@@ -135,13 +138,24 @@ llvm.toolchain_root(
135138
name = "pgo_toolchain",
136139
path = "/opt/stage-1",
137140
)
141+
llvm.sysroot(
142+
name = "pgo_toolchain",
143+
label = "@x86_64_sysroot//:sysroot",
144+
targets = ["linux-x86_64"],
145+
)
146+
llvm.sysroot(
147+
name = "pgo_toolchain",
148+
label = "@aarch64_sysroot//:sysroot",
149+
targets = ["linux-aarch64"],
150+
)
138151
use_repo(llvm, "pgo_toolchain")
139152
EOF
140153
RUN cat pgo_compiler.bzl >> MODULE.bazel
141154

142-
RUN retry --sleep=0 --tries=100 -- bazel build \
155+
RUN bazel build \
143156
--config=release \
144157
--extra_toolchains=@pgo_toolchain//:all \
158+
--nokeep_going \
145159
--copt=-g \
146160
--copt=-w \
147161
--copt=-Wno-error \
@@ -158,12 +172,12 @@ RUN llvm-profdata-${SYSTEM_CLANG_VERSION} merge -output=/tmp/profdata.prof /tmp/
158172
RUN /opt/build.sh \
159173
-DCMAKE_INSTALL_PREFIX=/opt/stage-2 \
160174
-DLLVM_ENABLE_LTO=${LTO_MODE} \
175+
-DLLVM_BUILD_LLVM_DYLIB=ON \
176+
-DLLVM_LINK_LLVM_DYLIB=ON \
161177
-DLLVM_PROFDATA_FILE=/tmp/profdata.prof
162178

163-
WORKDIR /opt/stage-2
164-
165-
RUN bash -c 'tar -czvf /opt/llvm-${LLVM_VERSION}-$(source /etc/os-release && echo -n "$ID")-$(source /etc/os-release && echo -n "$VERSION_ID")-$(uname -m).tar.gz .'
179+
# TODO: only copy binaries from stage 2
166180

167181
FROM scratch AS pgo
168182

169-
COPY --from=pgo-build /opt/llvm-*.tar.gz .
183+
COPY --from=pgo-build /opt/stage-2/ .

0 commit comments

Comments
 (0)