fa4de5dd3a
This brings in a batch of template changes, including: - We are now using python3 - Cleaned up distfiles fetching section (clearer, shorter) - Binary distfiles now use standard install.sh scripts - Imported various patches from Adélie Linux - We are now using config.toml instead of configure - Other assorted changes
392 lines
17 KiB
Diff
392 lines
17 KiB
Diff
From 9e646efacc9459f05bcefe9ad6d8e65dd06ba2d7 Mon Sep 17 00:00:00 2001
|
|
From: Samuel Holland <samuel@sholland.org>
|
|
Date: Fri, 8 Sep 2017 22:11:14 -0500
|
|
Subject: [PATCH 05/12] Remove -nostdlib and musl_root from musl targets
|
|
|
|
---
|
|
config.toml.example | 6 ----
|
|
src/bootstrap/bin/rustc.rs | 10 -------
|
|
src/bootstrap/cc_detect.rs | 27 ++----------------
|
|
src/bootstrap/compile.rs | 21 +-------------
|
|
src/bootstrap/config.rs | 7 -----
|
|
src/bootstrap/configure.py | 22 ---------------
|
|
src/bootstrap/lib.rs | 8 ------
|
|
src/bootstrap/sanity.rs | 28 -------------------
|
|
.../dist-i586-gnu-i586-i686-musl/Dockerfile | 2 --
|
|
src/ci/docker/dist-various-1/Dockerfile | 7 -----
|
|
src/ci/docker/dist-x86_64-musl/Dockerfile | 1 -
|
|
src/ci/docker/test-various/Dockerfile | 1 -
|
|
src/librustc_target/spec/linux_musl_base.rs | 16 -----------
|
|
13 files changed, 4 insertions(+), 152 deletions(-)
|
|
|
|
diff --git a/config.toml.example b/config.toml.example
|
|
index 556625b53..3c6f18728 100644
|
|
--- a/config.toml.example
|
|
+++ b/config.toml.example
|
|
@@ -474,12 +474,6 @@
|
|
# only use static libraries. If unset, the target's default linkage is used.
|
|
#crt-static = false
|
|
|
|
-# The root location of the MUSL installation directory. The library directory
|
|
-# will also need to contain libunwind.a for an unwinding implementation. Note
|
|
-# that this option only makes sense for MUSL targets that produce statically
|
|
-# linked binaries
|
|
-#musl-root = "..."
|
|
-
|
|
# The root location of the `wasm32-wasi` sysroot.
|
|
#wasi-root = "..."
|
|
|
|
diff --git a/src/bootstrap/bin/rustc.rs b/src/bootstrap/bin/rustc.rs
|
|
index 821c37dc2..906af787f 100644
|
|
--- a/src/bootstrap/bin/rustc.rs
|
|
+++ b/src/bootstrap/bin/rustc.rs
|
|
@@ -122,16 +122,6 @@ fn main() {
|
|
cmd.arg("-Cprefer-dynamic");
|
|
}
|
|
|
|
- // Help the libc crate compile by assisting it in finding various
|
|
- // sysroot native libraries.
|
|
- if let Some(s) = env::var_os("MUSL_ROOT") {
|
|
- if target.contains("musl") {
|
|
- let mut root = OsString::from("native=");
|
|
- root.push(&s);
|
|
- root.push("/lib");
|
|
- cmd.arg("-L").arg(&root);
|
|
- }
|
|
- }
|
|
if let Some(s) = env::var_os("WASI_ROOT") {
|
|
let mut root = OsString::from("native=");
|
|
root.push(&s);
|
|
diff --git a/src/bootstrap/cc_detect.rs b/src/bootstrap/cc_detect.rs
|
|
index dfc243b70..848d1d4b2 100644
|
|
--- a/src/bootstrap/cc_detect.rs
|
|
+++ b/src/bootstrap/cc_detect.rs
|
|
@@ -84,7 +84,7 @@ pub fn find(build: &mut Build) {
|
|
if let Some(cc) = config.and_then(|c| c.cc.as_ref()) {
|
|
cfg.compiler(cc);
|
|
} else {
|
|
- set_compiler(&mut cfg, Language::C, target, config, build);
|
|
+ set_compiler(&mut cfg, Language::C, target, config);
|
|
}
|
|
|
|
let compiler = cfg.get_compiler();
|
|
@@ -113,7 +113,7 @@ pub fn find(build: &mut Build) {
|
|
if let Some(cxx) = config.and_then(|c| c.cxx.as_ref()) {
|
|
cfg.compiler(cxx);
|
|
} else {
|
|
- set_compiler(&mut cfg, Language::CPlusPlus, host, config, build);
|
|
+ set_compiler(&mut cfg, Language::CPlusPlus, host, config);
|
|
}
|
|
let compiler = cfg.get_compiler();
|
|
build.verbose(&format!("CXX_{} = {:?}", host, compiler.path()));
|
|
@@ -124,8 +124,7 @@ pub fn find(build: &mut Build) {
|
|
fn set_compiler(cfg: &mut cc::Build,
|
|
compiler: Language,
|
|
target: Interned<String>,
|
|
- config: Option<&Target>,
|
|
- build: &Build) {
|
|
+ config: Option<&Target>) {
|
|
match &*target {
|
|
// When compiling for android we may have the NDK configured in the
|
|
// config.toml in which case we look there. Otherwise the default
|
|
@@ -165,26 +164,6 @@ fn set_compiler(cfg: &mut cc::Build,
|
|
}
|
|
}
|
|
|
|
- "mips-unknown-linux-musl" => {
|
|
- if cfg.get_compiler().path().to_str() == Some("gcc") {
|
|
- cfg.compiler("mips-linux-musl-gcc");
|
|
- }
|
|
- }
|
|
- "mipsel-unknown-linux-musl" => {
|
|
- if cfg.get_compiler().path().to_str() == Some("gcc") {
|
|
- cfg.compiler("mipsel-linux-musl-gcc");
|
|
- }
|
|
- }
|
|
-
|
|
- t if t.contains("musl") => {
|
|
- if let Some(root) = build.musl_root(target) {
|
|
- let guess = root.join("bin/musl-gcc");
|
|
- if guess.exists() {
|
|
- cfg.compiler(guess);
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
_ => {}
|
|
}
|
|
}
|
|
diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
|
|
index e1cdd226f..05442c6c6 100644
|
|
--- a/src/bootstrap/compile.rs
|
|
+++ b/src/bootstrap/compile.rs
|
|
@@ -115,20 +115,7 @@ impl Step for Std {
|
|
fn copy_third_party_objects(builder: &Builder<'_>, compiler: &Compiler, target: Interned<String>) {
|
|
let libdir = builder.sysroot_libdir(*compiler, target);
|
|
|
|
- // Copies the crt(1,i,n).o startup objects
|
|
- //
|
|
- // Since musl supports fully static linking, we can cross link for it even
|
|
- // with a glibc-targeting toolchain, given we have the appropriate startup
|
|
- // files. As those shipped with glibc won't work, copy the ones provided by
|
|
- // musl so we have them on linux-gnu hosts.
|
|
- if target.contains("musl") {
|
|
- for &obj in &["crt1.o", "crti.o", "crtn.o"] {
|
|
- builder.copy(
|
|
- &builder.musl_root(target).unwrap().join("lib").join(obj),
|
|
- &libdir.join(obj),
|
|
- );
|
|
- }
|
|
- } else if target.ends_with("-wasi") {
|
|
+ if target.ends_with("-wasi") {
|
|
for &obj in &["crt1.o"] {
|
|
builder.copy(
|
|
&builder.wasi_root(target).unwrap().join("lib/wasm32-wasi").join(obj),
|
|
@@ -191,12 +178,6 @@ pub fn std_cargo(builder: &Builder<'_>,
|
|
.arg("--manifest-path")
|
|
.arg(builder.src.join("src/libstd/Cargo.toml"));
|
|
|
|
- if target.contains("musl") {
|
|
- if let Some(p) = builder.musl_root(target) {
|
|
- cargo.env("MUSL_ROOT", p);
|
|
- }
|
|
- }
|
|
-
|
|
if target.ends_with("-wasi") {
|
|
if let Some(p) = builder.wasi_root(target) {
|
|
cargo.env("WASI_ROOT", p);
|
|
diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs
|
|
index b1d009a67..cc567839f 100644
|
|
--- a/src/bootstrap/config.rs
|
|
+++ b/src/bootstrap/config.rs
|
|
@@ -135,8 +135,6 @@ pub struct Config {
|
|
pub print_step_timings: bool,
|
|
pub missing_tools: bool,
|
|
|
|
- // Fallback musl-root for all targets
|
|
- pub musl_root: Option<PathBuf>,
|
|
pub prefix: Option<PathBuf>,
|
|
pub sysconfdir: Option<PathBuf>,
|
|
pub datadir: Option<PathBuf>,
|
|
@@ -171,7 +169,6 @@ pub struct Target {
|
|
pub linker: Option<PathBuf>,
|
|
pub ndk: Option<PathBuf>,
|
|
pub crt_static: Option<bool>,
|
|
- pub musl_root: Option<PathBuf>,
|
|
pub wasi_root: Option<PathBuf>,
|
|
pub qemu_rootfs: Option<PathBuf>,
|
|
pub no_std: bool,
|
|
@@ -308,7 +305,6 @@ struct Rust {
|
|
backtrace: Option<bool>,
|
|
default_linker: Option<String>,
|
|
channel: Option<String>,
|
|
- musl_root: Option<String>,
|
|
rpath: Option<bool>,
|
|
optimize_tests: Option<bool>,
|
|
debuginfo_tests: Option<bool>,
|
|
@@ -348,7 +344,6 @@ struct TomlTarget {
|
|
linker: Option<String>,
|
|
android_ndk: Option<String>,
|
|
crt_static: Option<bool>,
|
|
- musl_root: Option<String>,
|
|
wasi_root: Option<String>,
|
|
qemu_rootfs: Option<String>,
|
|
}
|
|
@@ -568,7 +563,6 @@ impl Config {
|
|
set(&mut config.llvm_tools_enabled, rust.llvm_tools);
|
|
config.rustc_parallel = rust.parallel_compiler.unwrap_or(false);
|
|
config.rustc_default_linker = rust.default_linker.clone();
|
|
- config.musl_root = rust.musl_root.clone().map(PathBuf::from);
|
|
config.save_toolstates = rust.save_toolstates.clone().map(PathBuf::from);
|
|
set(&mut config.deny_warnings, rust.deny_warnings.or(flags.warnings));
|
|
set(&mut config.backtrace_on_ice, rust.backtrace_on_ice);
|
|
@@ -611,7 +605,6 @@ impl Config {
|
|
target.ranlib = cfg.ranlib.clone().map(PathBuf::from);
|
|
target.linker = cfg.linker.clone().map(PathBuf::from);
|
|
target.crt_static = cfg.crt_static.clone();
|
|
- target.musl_root = cfg.musl_root.clone().map(PathBuf::from);
|
|
target.wasi_root = cfg.wasi_root.clone().map(PathBuf::from);
|
|
target.qemu_rootfs = cfg.qemu_rootfs.clone().map(PathBuf::from);
|
|
|
|
diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py
|
|
index ade8afee7..f9ccf7aed 100755
|
|
--- a/src/bootstrap/configure.py
|
|
+++ b/src/bootstrap/configure.py
|
|
@@ -111,28 +111,6 @@ v("aarch64-linux-android-ndk", "target.aarch64-linux-android.android-ndk",
|
|
"aarch64-linux-android NDK standalone path")
|
|
v("x86_64-linux-android-ndk", "target.x86_64-linux-android.android-ndk",
|
|
"x86_64-linux-android NDK standalone path")
|
|
-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-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("qemu-armhf-rootfs", "target.arm-unknown-linux-gnueabihf.qemu-rootfs",
|
|
"rootfs in qemu testing, you probably don't want to use this")
|
|
v("qemu-aarch64-rootfs", "target.aarch64-unknown-linux-gnu.qemu-rootfs",
|
|
diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs
|
|
index 7618a6e6d..49cdb526e 100644
|
|
--- a/src/bootstrap/lib.rs
|
|
+++ b/src/bootstrap/lib.rs
|
|
@@ -852,14 +852,6 @@ impl Build {
|
|
}
|
|
}
|
|
|
|
- /// Returns the "musl root" for this `target`, if defined
|
|
- fn musl_root(&self, target: Interned<String>) -> Option<&Path> {
|
|
- self.config.target_config.get(&target)
|
|
- .and_then(|t| t.musl_root.as_ref())
|
|
- .or(self.config.musl_root.as_ref())
|
|
- .map(|p| &**p)
|
|
- }
|
|
-
|
|
/// Returns the sysroot for the wasi target, if defined
|
|
fn wasi_root(&self, target: Interned<String>) -> Option<&Path> {
|
|
self.config.target_config.get(&target)
|
|
diff --git a/src/bootstrap/sanity.rs b/src/bootstrap/sanity.rs
|
|
index dc65fb9b7..060ba6d9e 100644
|
|
--- a/src/bootstrap/sanity.rs
|
|
+++ b/src/bootstrap/sanity.rs
|
|
@@ -176,34 +176,6 @@ pub fn check(build: &mut Build) {
|
|
}
|
|
}
|
|
|
|
- // Make sure musl-root is valid
|
|
- if target.contains("musl") {
|
|
- // If this is a native target (host is also musl) and no musl-root is given,
|
|
- // fall back to the system toolchain in /usr before giving up
|
|
- if build.musl_root(*target).is_none() && build.config.build == *target {
|
|
- let target = build.config.target_config.entry(target.clone())
|
|
- .or_default();
|
|
- target.musl_root = Some("/usr".into());
|
|
- }
|
|
- match build.musl_root(*target) {
|
|
- Some(root) => {
|
|
- if fs::metadata(root.join("lib/libc.a")).is_err() {
|
|
- panic!("couldn't find libc.a in musl dir: {}",
|
|
- root.join("lib").display());
|
|
- }
|
|
- if fs::metadata(root.join("lib/libunwind.a")).is_err() {
|
|
- panic!("couldn't find libunwind.a in musl dir: {}",
|
|
- root.join("lib").display());
|
|
- }
|
|
- }
|
|
- None => {
|
|
- panic!("when targeting MUSL either the rust.musl-root \
|
|
- option or the target.$TARGET.musl-root option must \
|
|
- be specified in config.toml")
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
if target.contains("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/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile b/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile
|
|
index ba2d32a92..412c37fdd 100644
|
|
--- a/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile
|
|
+++ b/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile
|
|
@@ -30,8 +30,6 @@ COPY scripts/sccache.sh /scripts/
|
|
RUN sh /scripts/sccache.sh
|
|
|
|
ENV RUST_CONFIGURE_ARGS \
|
|
- --musl-root-i586=/musl-i586 \
|
|
- --musl-root-i686=/musl-i686 \
|
|
--enable-extended \
|
|
--disable-docs
|
|
|
|
diff --git a/src/ci/docker/dist-various-1/Dockerfile b/src/ci/docker/dist-various-1/Dockerfile
|
|
index a722a4183..44e6728de 100644
|
|
--- a/src/ci/docker/dist-various-1/Dockerfile
|
|
+++ b/src/ci/docker/dist-various-1/Dockerfile
|
|
@@ -132,13 +132,6 @@ ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
|
|
CXX_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-g++
|
|
|
|
ENV RUST_CONFIGURE_ARGS \
|
|
- --musl-root-armv5te=/musl-armv5te \
|
|
- --musl-root-arm=/musl-arm \
|
|
- --musl-root-armhf=/musl-armhf \
|
|
- --musl-root-armv7=/musl-armv7 \
|
|
- --musl-root-aarch64=/musl-aarch64 \
|
|
- --musl-root-mips=/musl-mips \
|
|
- --musl-root-mipsel=/musl-mipsel \
|
|
--enable-emscripten \
|
|
--disable-docs
|
|
|
|
diff --git a/src/ci/docker/dist-x86_64-musl/Dockerfile b/src/ci/docker/dist-x86_64-musl/Dockerfile
|
|
index 385eefde8..81d4f7737 100644
|
|
--- a/src/ci/docker/dist-x86_64-musl/Dockerfile
|
|
+++ b/src/ci/docker/dist-x86_64-musl/Dockerfile
|
|
@@ -31,7 +31,6 @@ RUN sh /scripts/sccache.sh
|
|
ENV HOSTS=x86_64-unknown-linux-musl
|
|
|
|
ENV RUST_CONFIGURE_ARGS \
|
|
- --musl-root-x86_64=/usr/local/x86_64-linux-musl \
|
|
--enable-extended \
|
|
--disable-docs \
|
|
--set target.x86_64-unknown-linux-musl.crt-static=false \
|
|
diff --git a/src/ci/docker/test-various/Dockerfile b/src/ci/docker/test-various/Dockerfile
|
|
index 611a24a69..99c2b866b 100644
|
|
--- a/src/ci/docker/test-various/Dockerfile
|
|
+++ b/src/ci/docker/test-various/Dockerfile
|
|
@@ -31,7 +31,6 @@ COPY scripts/sccache.sh /scripts/
|
|
RUN sh /scripts/sccache.sh
|
|
|
|
ENV RUST_CONFIGURE_ARGS \
|
|
- --musl-root-x86_64=/usr/local/x86_64-linux-musl \
|
|
--set build.nodejs=/node-v9.2.0-linux-x64/bin/node \
|
|
--set rust.lld
|
|
|
|
diff --git a/src/librustc_target/spec/linux_musl_base.rs b/src/librustc_target/spec/linux_musl_base.rs
|
|
index e294e6398..58ae91a96 100644
|
|
--- a/src/librustc_target/spec/linux_musl_base.rs
|
|
+++ b/src/librustc_target/spec/linux_musl_base.rs
|
|
@@ -3,28 +3,12 @@ use crate::spec::{LinkerFlavor, TargetOptions};
|
|
pub fn opts() -> TargetOptions {
|
|
let mut base = super::linux_base::opts();
|
|
|
|
- // Make sure that the linker/gcc really don't pull in anything, including
|
|
- // default objects, libs, etc.
|
|
- base.pre_link_args_crt.insert(LinkerFlavor::Gcc, Vec::new());
|
|
- base.pre_link_args_crt.get_mut(&LinkerFlavor::Gcc).unwrap().push("-nostdlib".to_string());
|
|
-
|
|
// At least when this was tested, the linker would not add the
|
|
// `GNU_EH_FRAME` program header to executables generated, which is required
|
|
// when unwinding to locate the unwinding information. I'm not sure why this
|
|
// argument is *not* necessary for normal builds, but it can't hurt!
|
|
base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-Wl,--eh-frame-hdr".to_string());
|
|
|
|
- // When generating a statically linked executable there's generally some
|
|
- // small setup needed which is listed in these files. These are provided by
|
|
- // a musl toolchain and are linked by default by the `musl-gcc` script. Note
|
|
- // that `gcc` also does this by default, it just uses some different files.
|
|
- //
|
|
- // Each target directory for musl has these object files included in it so
|
|
- // they'll be included from there.
|
|
- base.pre_link_objects_exe_crt.push("crt1.o".to_string());
|
|
- base.pre_link_objects_exe_crt.push("crti.o".to_string());
|
|
- base.post_link_objects_crt.push("crtn.o".to_string());
|
|
-
|
|
// These targets statically link libc by default
|
|
base.crt_static_default = true;
|
|
// These targets allow the user to choose between static and dynamic linking.
|
|
--
|
|
2.22.0
|
|
|