aports/main/rust/remove-musl-root.patch
2026-04-19 20:50:12 +00:00

463 lines
18 KiB
Diff

From 4a57da563f5da9501b3c7f9213b9cb40f9b6bf1e Mon Sep 17 00:00:00 2001
From: q66 <q66@chimera-linux.org>
Date: Fri, 30 May 2025 12:33:02 +0200
Subject: [PATCH 02/16] remove a bunch of unused junk
---
compiler/rustc_target/src/spec/crt_objects.rs | 22 ----
src/bootstrap/configure.py | 100 ------------------
src/bootstrap/src/core/build_steps/compile.rs | 58 +---------
src/bootstrap/src/core/build_steps/llvm.rs | 3 -
src/bootstrap/src/core/config/config.rs | 8 --
.../src/core/config/target_selection.rs | 4 -
src/bootstrap/src/core/config/toml/rust.rs | 2 -
src/bootstrap/src/core/config/toml/target.rs | 4 -
src/bootstrap/src/core/sanity.rs | 16 ---
src/bootstrap/src/lib.rs | 29 -----
src/bootstrap/src/utils/cc_detect.rs | 24 -----
11 files changed, 1 insertion(+), 269 deletions(-)
diff --git a/compiler/rustc_target/src/spec/crt_objects.rs b/compiler/rustc_target/src/spec/crt_objects.rs
index 2d84e78f2..0e6cb0f42 100644
--- a/compiler/rustc_target/src/spec/crt_objects.rs
+++ b/compiler/rustc_target/src/spec/crt_objects.rs
@@ -62,28 +62,6 @@ pub(super) fn all(obj: &'static str) -> CrtObjects {
])
}
-pub(super) fn pre_musl_self_contained() -> CrtObjects {
- new(&[
- (LinkOutputKind::DynamicNoPicExe, &["crt1.o", "crti.o", "crtbegin.o"]),
- (LinkOutputKind::DynamicPicExe, &["Scrt1.o", "crti.o", "crtbeginS.o"]),
- (LinkOutputKind::StaticNoPicExe, &["crt1.o", "crti.o", "crtbegin.o"]),
- (LinkOutputKind::StaticPicExe, &["rcrt1.o", "crti.o", "crtbeginS.o"]),
- (LinkOutputKind::DynamicDylib, &["crti.o", "crtbeginS.o"]),
- (LinkOutputKind::StaticDylib, &["crti.o", "crtbeginS.o"]),
- ])
-}
-
-pub(super) fn post_musl_self_contained() -> CrtObjects {
- new(&[
- (LinkOutputKind::DynamicNoPicExe, &["crtend.o", "crtn.o"]),
- (LinkOutputKind::DynamicPicExe, &["crtendS.o", "crtn.o"]),
- (LinkOutputKind::StaticNoPicExe, &["crtend.o", "crtn.o"]),
- (LinkOutputKind::StaticPicExe, &["crtendS.o", "crtn.o"]),
- (LinkOutputKind::DynamicDylib, &["crtendS.o", "crtn.o"]),
- (LinkOutputKind::StaticDylib, &["crtendS.o", "crtn.o"]),
- ])
-}
-
pub(super) fn pre_mingw_self_contained() -> CrtObjects {
new(&[
(LinkOutputKind::DynamicNoPicExe, &["crt2.o"]),
diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py
index fda8f004e..3e7e828a0 100755
--- a/src/bootstrap/configure.py
+++ b/src/bootstrap/configure.py
@@ -185,106 +185,6 @@ v("llvm-config", None, "set path to llvm-config")
v("llvm-filecheck", None, "set path to LLVM's FileCheck utility")
v("python", "build.python", "set path to python")
v("android-ndk", "build.android-ndk", "set path to Android NDK")
-v(
- "musl-root",
- "target.x86_64-unknown-linux-musl.musl-root",
- "MUSL root installation directory (deprecated)",
-)
-v(
- "musl-root-x86_64",
- "target.x86_64-unknown-linux-musl.musl-root",
- "x86_64-unknown-linux-musl install directory",
-)
-v(
- "musl-root-i586",
- "target.i586-unknown-linux-musl.musl-root",
- "i586-unknown-linux-musl install directory",
-)
-v(
- "musl-root-i686",
- "target.i686-unknown-linux-musl.musl-root",
- "i686-unknown-linux-musl install directory",
-)
-v(
- "musl-root-arm",
- "target.arm-unknown-linux-musleabi.musl-root",
- "arm-unknown-linux-musleabi install directory",
-)
-v(
- "musl-root-armhf",
- "target.arm-unknown-linux-musleabihf.musl-root",
- "arm-unknown-linux-musleabihf install directory",
-)
-v(
- "musl-root-armv5te",
- "target.armv5te-unknown-linux-musleabi.musl-root",
- "armv5te-unknown-linux-musleabi install directory",
-)
-v(
- "musl-root-armv7",
- "target.armv7-unknown-linux-musleabi.musl-root",
- "armv7-unknown-linux-musleabi install directory",
-)
-v(
- "musl-root-armv7hf",
- "target.armv7-unknown-linux-musleabihf.musl-root",
- "armv7-unknown-linux-musleabihf install directory",
-)
-v(
- "musl-root-aarch64",
- "target.aarch64-unknown-linux-musl.musl-root",
- "aarch64-unknown-linux-musl install directory",
-)
-v(
- "musl-root-mips",
- "target.mips-unknown-linux-musl.musl-root",
- "mips-unknown-linux-musl install directory",
-)
-v(
- "musl-root-mipsel",
- "target.mipsel-unknown-linux-musl.musl-root",
- "mipsel-unknown-linux-musl install directory",
-)
-v(
- "musl-root-mips64",
- "target.mips64-unknown-linux-muslabi64.musl-root",
- "mips64-unknown-linux-muslabi64 install directory",
-)
-v(
- "musl-root-mips64el",
- "target.mips64el-unknown-linux-muslabi64.musl-root",
- "mips64el-unknown-linux-muslabi64 install directory",
-)
-v(
- "musl-root-powerpc64",
- "target.powerpc64-unknown-linux-musl.musl-root",
- "powerpc64-unknown-linux-musl install directory",
-)
-v(
- "musl-root-powerpc64le",
- "target.powerpc64le-unknown-linux-musl.musl-root",
- "powerpc64le-unknown-linux-musl install directory",
-)
-v(
- "musl-root-riscv32gc",
- "target.riscv32gc-unknown-linux-musl.musl-root",
- "riscv32gc-unknown-linux-musl install directory",
-)
-v(
- "musl-root-riscv64gc",
- "target.riscv64gc-unknown-linux-musl.musl-root",
- "riscv64gc-unknown-linux-musl install directory",
-)
-v(
- "musl-root-loongarch64",
- "target.loongarch64-unknown-linux-musl.musl-root",
- "loongarch64-unknown-linux-musl install directory",
-)
-v(
- "musl-root-wali-wasm32",
- "target.wasm32-wali-linux-musl.musl-root",
- "wasm32-wali-linux-musl install directory",
-)
v(
"qemu-armhf-rootfs",
"target.arm-unknown-linux-gnueabihf.qemu-rootfs",
diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs
index 11f2a28bb..0270fafcc 100644
--- a/src/bootstrap/src/core/build_steps/compile.rs
+++ b/src/bootstrap/src/core/build_steps/compile.rs
@@ -382,54 +382,7 @@ fn copy_self_contained_objects(
t!(fs::create_dir_all(&libdir_self_contained));
let mut target_deps = vec![];
- // Copies the libc and CRT objects.
- //
- // rustc historically provides a more self-contained installation for musl targets
- // not requiring the presence of a native musl toolchain. For example, it can fall back
- // to using gcc from a glibc-targeting toolchain for linking.
- // To do that we have to distribute musl startup objects as a part of Rust toolchain
- // and link with them manually in the self-contained mode.
- if target.needs_crt_begin_end() {
- let srcdir = builder.musl_libdir(target).unwrap_or_else(|| {
- panic!("Target {:?} does not have a \"musl-libdir\" key", target.triple)
- });
- if !target.starts_with("wasm32") {
- for &obj in &["libc.a", "crt1.o", "Scrt1.o", "rcrt1.o", "crti.o", "crtn.o"] {
- copy_and_stamp(
- builder,
- &libdir_self_contained,
- &srcdir,
- obj,
- &mut target_deps,
- DependencyType::TargetSelfContained,
- );
- }
- let crt_path = builder.ensure(llvm::CrtBeginEnd { target });
- for &obj in &["crtbegin.o", "crtbeginS.o", "crtend.o", "crtendS.o"] {
- let src = crt_path.join(obj);
- let target = libdir_self_contained.join(obj);
- builder.copy_link(&src, &target, FileType::NativeLibrary);
- target_deps.push((target, DependencyType::TargetSelfContained));
- }
- } else {
- // For wasm32 targets, we need to copy the libc.a and crt1-command.o files from the
- // musl-libdir, but we don't need the other files.
- for &obj in &["libc.a", "crt1-command.o"] {
- copy_and_stamp(
- builder,
- &libdir_self_contained,
- &srcdir,
- obj,
- &mut target_deps,
- DependencyType::TargetSelfContained,
- );
- }
- }
- if !target.starts_with("s390x") {
- let libunwind_path = copy_llvm_libunwind(builder, target, &libdir_self_contained);
- target_deps.push((libunwind_path, DependencyType::TargetSelfContained));
- }
- } else if target.contains("-wasi") {
+ if target.contains("-wasi") {
let srcdir = builder.wasi_libdir(target).unwrap_or_else(|| {
panic!(
"Target {:?} does not have a \"wasi-root\" key in bootstrap.toml \
@@ -660,15 +613,6 @@ pub fn std_cargo(
.arg("--manifest-path")
.arg(builder.src.join("library/sysroot/Cargo.toml"));
- // Help the libc crate compile by assisting it in finding various
- // sysroot native libraries.
- if target.contains("musl")
- && let Some(p) = builder.musl_libdir(target)
- {
- let root = format!("native={}", p.to_str().unwrap());
- cargo.rustflag("-L").rustflag(&root);
- }
-
if target.contains("-wasi")
&& let Some(dir) = builder.wasi_libdir(target)
{
diff --git a/src/bootstrap/src/core/build_steps/llvm.rs b/src/bootstrap/src/core/build_steps/llvm.rs
index c3935d981..509cba033 100644
--- a/src/bootstrap/src/core/build_steps/llvm.rs
+++ b/src/bootstrap/src/core/build_steps/llvm.rs
@@ -1581,9 +1581,6 @@ impl Step for CrtBeginEnd {
}
fn make_run(run: RunConfig<'_>) {
- if run.target.needs_crt_begin_end() {
- run.builder.ensure(CrtBeginEnd { target: run.target });
- }
}
/// Build crtbegin.o/crtend.o for musl target.
diff --git a/src/bootstrap/src/core/config/config.rs b/src/bootstrap/src/core/config/config.rs
index 07405a030..4e4c4f72e 100644
--- a/src/bootstrap/src/core/config/config.rs
+++ b/src/bootstrap/src/core/config/config.rs
@@ -264,8 +264,6 @@ pub struct Config {
pub print_step_timings: bool,
pub print_step_rusage: bool,
- // Fallback musl-root for all targets
- pub musl_root: Option<PathBuf>,
pub prefix: Option<PathBuf>,
pub sysconfdir: Option<PathBuf>,
pub datadir: Option<PathBuf>,
@@ -543,7 +541,6 @@ impl Config {
randomize_layout: rust_randomize_layout,
default_linker: rust_default_linker,
channel: rust_channel,
- musl_root: rust_musl_root,
rpath: rust_rpath,
verbose_tests: rust_verbose_tests,
optimize_tests: rust_optimize_tests,
@@ -883,8 +880,6 @@ impl Config {
rpath: target_rpath,
rustflags: target_rustflags,
crt_static: target_crt_static,
- musl_root: target_musl_root,
- musl_libdir: target_musl_libdir,
wasi_root: target_wasi_root,
qemu_rootfs: target_qemu_rootfs,
no_std: target_no_std,
@@ -957,8 +952,6 @@ impl Config {
target.crt_static = target_crt_static;
target.default_linker = target_default_linker;
target.default_linker_linux_override = default_linker_linux_override;
- target.musl_root = target_musl_root.map(PathBuf::from);
- target.musl_libdir = target_musl_libdir.map(PathBuf::from);
target.wasi_root = target_wasi_root.map(PathBuf::from);
target.qemu_rootfs = target_qemu_rootfs.map(PathBuf::from);
target.runner = target_runner;
@@ -1411,7 +1404,6 @@ impl Config {
low_priority: build_low_priority.unwrap_or(false),
mandir: install_mandir.map(PathBuf::from),
miri_info,
- musl_root: rust_musl_root.map(PathBuf::from),
ninja_in_file: llvm_ninja.unwrap_or(true),
nodejs: build_nodejs.map(PathBuf::from),
omit_git_hash,
diff --git a/src/bootstrap/src/core/config/target_selection.rs b/src/bootstrap/src/core/config/target_selection.rs
index 47f6d6f38..a519b6655 100644
--- a/src/bootstrap/src/core/config/target_selection.rs
+++ b/src/bootstrap/src/core/config/target_selection.rs
@@ -96,10 +96,6 @@ impl TargetSelection {
env::var("OSTYPE").is_ok_and(|v| v.to_lowercase().contains("cygwin"))
}
- pub fn needs_crt_begin_end(&self) -> bool {
- self.contains("musl") && !self.contains("unikraft")
- }
-
/// Path to the file defining the custom target, if any.
pub fn filepath(&self) -> Option<&Path> {
self.file.as_ref().map(Path::new)
diff --git a/src/bootstrap/src/core/config/toml/rust.rs b/src/bootstrap/src/core/config/toml/rust.rs
index 48042ba56..083970f1b 100644
--- a/src/bootstrap/src/core/config/toml/rust.rs
+++ b/src/bootstrap/src/core/config/toml/rust.rs
@@ -31,7 +31,6 @@ define_config! {
incremental: Option<bool> = "incremental",
default_linker: Option<String> = "default-linker",
channel: Option<String> = "channel",
- musl_root: Option<String> = "musl-root",
rpath: Option<bool> = "rpath",
rustflags: Option<Vec<String>> = "rustflags",
strip: Option<bool> = "strip",
@@ -346,7 +345,6 @@ pub fn check_incompatible_options_for_ci_rustc(
debuginfo_level_tools: _,
debuginfo_level_tests: _,
backtrace: _,
- musl_root: _,
verbose_tests: _,
optimize_tests: _,
codegen_tests: _,
diff --git a/src/bootstrap/src/core/config/toml/target.rs b/src/bootstrap/src/core/config/toml/target.rs
index 847b75e69..5ad42917a 100644
--- a/src/bootstrap/src/core/config/toml/target.rs
+++ b/src/bootstrap/src/core/config/toml/target.rs
@@ -39,8 +39,6 @@ define_config! {
rpath: Option<bool> = "rpath",
rustflags: Option<Vec<String>> = "rustflags",
crt_static: Option<bool> = "crt-static",
- musl_root: Option<String> = "musl-root",
- musl_libdir: Option<String> = "musl-libdir",
wasi_root: Option<String> = "wasi-root",
qemu_rootfs: Option<String> = "qemu-rootfs",
no_std: Option<bool> = "no-std",
@@ -73,8 +71,6 @@ pub struct Target {
pub rpath: Option<bool>,
pub rustflags: Vec<String>,
pub crt_static: Option<bool>,
- pub musl_root: Option<PathBuf>,
- pub musl_libdir: Option<PathBuf>,
pub wasi_root: Option<PathBuf>,
pub qemu_rootfs: Option<PathBuf>,
pub runner: Option<String>,
diff --git a/src/bootstrap/src/core/sanity.rs b/src/bootstrap/src/core/sanity.rs
index 67f4eb37b..6f2cf48b0 100644
--- a/src/bootstrap/src/core/sanity.rs
+++ b/src/bootstrap/src/core/sanity.rs
@@ -374,22 +374,6 @@ than building it.
continue;
}
- // Make sure musl-root is valid.
- if target.contains("musl") && !target.contains("unikraft") {
- match build.musl_libdir(*target) {
- Some(libdir) => {
- if fs::metadata(libdir.join("libc.a")).is_err() {
- panic!("couldn't find libc.a in musl libdir: {}", libdir.display());
- }
- }
- None => panic!(
- "when targeting MUSL either the rust.musl-root \
- option or the target.$TARGET.musl-root option must \
- be specified in bootstrap.toml"
- ),
- }
- }
-
if need_cmake && target.is_msvc() {
// There are three builds of cmake on windows: MSVC, MinGW, and
// Cygwin. The Cygwin build does not have generators for Visual
diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs
index 857c0539e..ebe12d747 100644
--- a/src/bootstrap/src/lib.rs
+++ b/src/bootstrap/src/lib.rs
@@ -1389,35 +1389,6 @@ impl Build {
}
}
- /// Returns the "musl root" for this `target`, if defined.
- ///
- /// If this is a native target (host is also musl) and no musl-root is given,
- /// it falls back to the system toolchain in /usr.
- fn musl_root(&self, target: TargetSelection) -> Option<&Path> {
- let configured_root = self
- .config
- .target_config
- .get(&target)
- .and_then(|t| t.musl_root.as_ref())
- .or(self.config.musl_root.as_ref())
- .map(|p| &**p);
-
- if self.config.is_host_target(target) && configured_root.is_none() {
- Some(Path::new("/usr"))
- } else {
- configured_root
- }
- }
-
- /// Returns the "musl libdir" for this `target`.
- fn musl_libdir(&self, target: TargetSelection) -> Option<PathBuf> {
- self.config
- .target_config
- .get(&target)
- .and_then(|t| t.musl_libdir.clone())
- .or_else(|| self.musl_root(target).map(|root| root.join("lib")))
- }
-
/// Returns the `lib` directory for the WASI target specified, if
/// configured.
///
diff --git a/src/bootstrap/src/utils/cc_detect.rs b/src/bootstrap/src/utils/cc_detect.rs
index 0662ae304..f6373f44e 100644
--- a/src/bootstrap/src/utils/cc_detect.rs
+++ b/src/bootstrap/src/utils/cc_detect.rs
@@ -195,30 +195,6 @@ fn default_compiler(
}
}
- "mips-unknown-linux-musl" if compiler == Language::C => {
- if cfg.get_compiler().path().to_str() == Some("gcc") {
- Some(PathBuf::from("mips-linux-musl-gcc"))
- } else {
- None
- }
- }
- "mipsel-unknown-linux-musl" if compiler == Language::C => {
- if cfg.get_compiler().path().to_str() == Some("gcc") {
- Some(PathBuf::from("mipsel-linux-musl-gcc"))
- } else {
- None
- }
- }
-
- t if t.contains("musl") && compiler == Language::C => {
- if let Some(root) = build.musl_root(target) {
- let guess = root.join("bin/musl-gcc");
- if guess.exists() { Some(guess) } else { None }
- } else {
- None
- }
- }
-
t if t.contains("-wasi") => {
let root = if let Some(path) = build.wasi_sdk_path.as_ref() {
path
--
2.52.0