toolchains_llvm icon indicating copy to clipboard operation
toolchains_llvm copied to clipboard

Clangd, clang-format, and clang-tidy are required to be in distribution since 1.4.0

Open scasagrande opened this issue 8 months ago • 5 comments

Problem

Updating from 1.3.0 to 1.4.0 requires an llvm distribution that contains clangd, clang-format, and clang-tidy

Example error output:

ERROR: /home/runner/.cache/bazel/_bazel_runner/05e35152b9f4d639f0caf72c58272633/sandbox/processwrapper-sandbox/1/execroot/_main/_tmp/20b0fbcfb3bd545ee034011c9840c284/_bazel_runner/3a2f3221680ba9580bde03029baa3e75/external/rules_rust++i+rules_rust_tinyjson/BUILD.bazel:4:37: Compiling Rust (without process_wrapper) rlib tinyjson (4 files) [for tool] failed: missing input file '@@toolchains_llvm++llvm+llvm_toolchain//:bin/clang-format'
ERROR: /home/runner/.cache/bazel/_bazel_runner/05e35152b9f4d639f0caf72c58272633/sandbox/processwrapper-sandbox/1/execroot/_main/_tmp/20b0fbcfb3bd545ee034011c9840c284/_bazel_runner/3a2f3221680ba9580bde03029baa3e75/external/rules_rust++i+rules_rust_tinyjson/BUILD.bazel:4:37: Compiling Rust (without process_wrapper) rlib tinyjson (4 files) [for tool] failed: missing input file '@@toolchains_llvm++llvm+llvm_toolchain//:bin/clang-tidy'
ERROR: /home/runner/.cache/bazel/_bazel_runner/05e35152b9f4d639f0caf72c58272633/sandbox/processwrapper-sandbox/1/execroot/_main/_tmp/20b0fbcfb3bd545ee034011c9840c284/_bazel_runner/3a2f3221680ba9580bde03029baa3e75/external/rules_rust++i+rules_rust_tinyjson/BUILD.bazel:4:37: Compiling Rust (without process_wrapper) rlib tinyjson (4 files) [for tool] failed: missing input file '@@toolchains_llvm++llvm+llvm_toolchain//:bin/clangd'
ERROR: /home/runner/.cache/bazel/_bazel_runner/05e35152b9f4d639f0caf72c58272633/sandbox/processwrapper-sandbox/1/execroot/_main/_tmp/20b0fbcfb3bd545ee034011c9840c284/_bazel_runner/3a2f3221680ba9580bde03029baa3e75/external/rules_rust++i+rules_rust_tinyjson/BUILD.bazel:4:37: Compiling Rust (without process_wrapper) rlib tinyjson (4 files) [for tool] failed: 3 input file(s) do not exist

Likely cause

https://github.com/bazel-contrib/toolchains_llvm/pull/463

Prior to this pr, clang-format and clang-tidy were available via @llvm_toolchain_llvm//:bin/clang-format and @llvm_toolchain_llvm//:bin/clang-tidy, but were not requirements.

Discussion

If this is what we want, we should update document this and update some common "slimmer" llvm distributions, such as:

  • https://steven.casagrande.io/posts/2024/building-macos-llvm-package/
  • https://github.com/MaterializeInc/toolchains
  • https://github.com/dzbarsky/static-clang

scasagrande avatar Apr 14 '25 13:04 scasagrande

Instead of documenting additional requirements, we should probably just make the logic at https://github.com/bazel-contrib/toolchains_llvm/blob/4c3d6cfc62d4639106d807476aa1702dfc2c884b/toolchain/internal/configure.bzl#L125-L130 more intelligent by testing for existence. Would you be interested in sending a PR for this?

fmeum avatar Apr 14 '25 13:04 fmeum

Sure, I'll take a look this week

scasagrande avatar Apr 14 '25 13:04 scasagrande

@scasagrande have you had time to check this out ? We just faced this issue last week because we also use static-clang from dzbarsky.

While static-clang has a trick to add empty binaries in their archive, this would be an even better fix so that the tools are dynamic according to the pulled distribution

darkrift avatar May 12 '25 12:05 darkrift

Here was my first attempt, but it doesn't work: https://github.com/bazel-contrib/toolchains_llvm/pull/483

See the comments as to why

scasagrande avatar May 12 '25 12:05 scasagrande

I'm actually a confused as to why clang-format and clang-tidy were added in #463 when they were previously accessible via @llvm_toolchain_llvm//:clang-format and @llvm_toolchain_llvm//:clang-tidy https://github.com/bazel-contrib/toolchains_llvm/blob/23721c98423f4e467236709e1e75b43b3cdfc3cf/toolchain/BUILD.llvm_repo#L149-L157

and clangd should be accessible via the general export: https://github.com/bazel-contrib/toolchains_llvm/blob/23721c98423f4e467236709e1e75b43b3cdfc3cf/toolchain/BUILD.llvm_repo#L20

scasagrande avatar May 12 '25 13:05 scasagrande