From 69851bdae1177246337f51a35734e93f1fd7e3d3 Mon Sep 17 00:00:00 2001 From: Rasmus Thomsen Date: Wed, 26 Jun 2019 17:58:04 +0200 Subject: community/rust: build on arm{hf,v7}, ppc64le & x86 Also disable full bootstrapping. Since we always bootstrap from $pkgver minus one we don't need it and it increases buildtime considerably. Also keep in mind that we have to add new arches in multiple steps: 1. Compile with the upstream triplets, compiling alpine's triplets in 2. Compile again, now with our triplets selected as build/target, now that rustc knows about them This means that the produced compilers MUST ONLY be used to bootstrap the actual compilers with our triplets, DO NOT use these to compile packages! Since x86_64 still uses the usual triplets it's fine to upgrade/add packages for that arch though, please DO NOT do this for armhf,armv7,aarch64,ppc64le or x86 though! --- community/rust/link-musl-dynamically.patch | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 community/rust/link-musl-dynamically.patch (limited to 'community/rust/link-musl-dynamically.patch') diff --git a/community/rust/link-musl-dynamically.patch b/community/rust/link-musl-dynamically.patch new file mode 100644 index 0000000000..20a41fe3e7 --- /dev/null +++ b/community/rust/link-musl-dynamically.patch @@ -0,0 +1,41 @@ +We don't need those, we provide musl ourselves. +--- rustc-1.35.0-src/src/bootstrap/compile.rs ++++ rustc-1.35.0-src/src/bootstrap/compile.rs +@@ -114,20 +114,7 @@ impl Step for Std { + fn copy_third_party_objects(builder: &Builder<'_>, compiler: &Compiler, target: Interned) { + 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), +--- rustc-1.35.0-src/vendor/libc/src/unix/mod.rs ++++ rustc-1.35.0-src/vendor/libc/src/unix/mod.rs +@@ -306,13 +306,6 @@ cfg_if! { + } else if #[cfg(feature = "use_std")] { + // cargo build, don't pull in anything extra as the libstd dep + // already pulls in all libs. +- } else if #[cfg(target_env = "musl")] { +- #[cfg_attr(feature = "rustc-dep-of-std", +- link(name = "c", kind = "static", +- cfg(target_feature = "crt-static")))] +- #[cfg_attr(feature = "rustc-dep-of-std", +- link(name = "c", cfg(not(target_feature = "crt-static"))))] +- extern {} + } else if #[cfg(target_os = "emscripten")] { + #[link(name = "c")] + extern {} -- cgit v1.2.3