From 740204bf9a731b0c276f3b78202d6f4d55a2dae5 Mon Sep 17 00:00:00 2001 From: El Mehdi YOUNES Date: Tue, 22 Apr 2025 09:47:35 +0200 Subject: [PATCH] =?UTF-8?q?package/rust:=20fix=20bootstrap=20with=20Rust?= =?UTF-8?q?=E2=89=A51.83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rust includes an option `download-ci-llvm` in config.toml that enables downloading prebuilt LLVM binaries from Rust's CI infrastructure instead of building LLVM from source. This option helps speed up the bootstrap process and is enabled by default starting from Rust 1.83. However, starting from commit [1] the bootstrap process performs a strict check via the function check_incompatible_options_for_ci_llvm(). This validation, implemented in the function check_incompatible_options_for_ci_llvm(), checks for any incompatible custom options such as `llvm.ldflags`, `llvm.cflags`, `targets`, etc. If any of these are set locally and differ from the values used to build the CI-provided LLVM, the build fails immediately with the error: ERROR: Setting `llvm.ldflags` is incompatible with `llvm.download-ci-llvm`. Buildroot explicitly sets `llvm.ldflags` in rust.mk to ensure proper host linking during the build of host-rust. Removing this setting may introduce portability or reliability issues across toolchains. To address the issue without compromising the build environment, this patch disables the use of CI-provided LLVM by setting: [llvm] download-ci-llvm = false This follows the recommendation from the Rust bootstrap script itself. Note: this is a temporary workaround to restore compatibility with Rust ≥1.83. Other solutions will be investigated to avoid disabling the use of prebuilt LLVM in the future, while preserving Buildroot’s reproducible build setup. [1] https://github.com/rust-lang/rust/commit/9df7680ecf698bf7087616b595774ee1023d3c7b Signed-off-by: El Mehdi YOUNES Signed-off-by: Thomas Petazzoni --- package/rust/rust.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/package/rust/rust.mk b/package/rust/rust.mk index 29c03594d2..6481e40561 100644 --- a/package/rust/rust.mk +++ b/package/rust/rust.mk @@ -48,6 +48,7 @@ define HOST_RUST_CONFIGURE_CMDS echo '[target.$(RUSTC_TARGET_NAME)]'; \ echo 'cc = "$(TARGET_CROSS)gcc"'; \ echo '[llvm]'; \ + echo 'download-ci-llvm = false'; \ echo 'ninja = false'; \ echo 'ldflags = "$(HOST_LDFLAGS)"'; \ ) > $(@D)/config.toml