diff options
Diffstat (limited to 'user/rust')
17 files changed, 422 insertions, 113 deletions
diff --git a/user/rust/0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch b/user/rust/0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch index 7bd3daed7..492dbf7ec 100644 --- a/user/rust/0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch +++ b/user/rust/0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch @@ -1,17 +1,17 @@ -From 3ee2eb230aa2414a7cf5e55cba365edbd20e25b4 Mon Sep 17 00:00:00 2001 +From c5fd39c8da01cdb0fea0e323937abcf4895b7511 Mon Sep 17 00:00:00 2001 From: Samuel Holland <samuel@sholland.org> Date: Wed, 10 Jan 2018 13:36:41 -0600 -Subject: [PATCH 01/12] Don't pass CFLAGS to the C++ compiler +Subject: [PATCH 01/16] Don't pass CFLAGS to the C++ compiler --- src/bootstrap/builder.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs -index 51663e93169..af4b471921c 100644 +index 2e9df48d000..f5ced5b16ed 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs -@@ -1116,8 +1116,7 @@ impl<'a> Builder<'a> { +@@ -1138,8 +1138,7 @@ impl<'a> Builder<'a> { if let Ok(cxx) = self.cxx(target) { let cxx = ccacheify(&cxx); cargo diff --git a/user/rust/0002-Fix-LLVM-build.patch b/user/rust/0002-Fix-LLVM-build.patch index 7209c3c75..83091f46b 100644 --- a/user/rust/0002-Fix-LLVM-build.patch +++ b/user/rust/0002-Fix-LLVM-build.patch @@ -1,17 +1,17 @@ -From 93c87d4cf5ef70813b8e909cdc04527b1f5d7555 Mon Sep 17 00:00:00 2001 +From 0a19456e2445def4cfe99dd02cf8292c1db5d4d4 Mon Sep 17 00:00:00 2001 From: Samuel Holland <samuel@sholland.org> Date: Fri, 8 Sep 2017 00:04:29 -0500 -Subject: [PATCH 02/12] Fix LLVM build +Subject: [PATCH 02/16] Fix LLVM build --- src/bootstrap/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs -index ca4489655ca..7618a6e6df5 100644 +index 4d297fa918a..867df81d972 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs -@@ -774,7 +774,8 @@ impl Build { +@@ -769,7 +769,8 @@ impl Build { // cc-rs because the build scripts will determine that for themselves. let mut base = self.cc[&target].args().iter() .map(|s| s.to_string_lossy().into_owned()) diff --git a/user/rust/0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch b/user/rust/0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch index e9f879cbb..cf07c76d2 100644 --- a/user/rust/0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch +++ b/user/rust/0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch @@ -1,7 +1,7 @@ -From 09d94e416d0dbc2e5f0e873fd7e72acdf2c7e178 Mon Sep 17 00:00:00 2001 +From 2200debf48b6ef4c87e258cf8a968a89903f8723 Mon Sep 17 00:00:00 2001 From: Samuel Holland <samuel@sholland.org> Date: Sat, 2 Dec 2017 17:25:44 -0600 -Subject: [PATCH 03/12] Allow rustdoc to work when cross-compiling on musl +Subject: [PATCH 03/16] Allow rustdoc to work when cross-compiling on musl musl can't handle foreign-architecture libraries in LD_LIBRARY_PATH. --- diff --git a/user/rust/0004-Require-static-native-libraries-when-linking-static-.patch b/user/rust/0004-Require-static-native-libraries-when-linking-static-.patch index e8fada6be..854cd61e6 100644 --- a/user/rust/0004-Require-static-native-libraries-when-linking-static-.patch +++ b/user/rust/0004-Require-static-native-libraries-when-linking-static-.patch @@ -1,7 +1,7 @@ -From 41de62cd1f5e6326987cd9ec625b8ed06efa3041 Mon Sep 17 00:00:00 2001 +From 10bd267ac2621267e1f537a5a7df34cb87354cd3 Mon Sep 17 00:00:00 2001 From: Samuel Holland <samuel@sholland.org> Date: Fri, 8 Sep 2017 00:05:18 -0500 -Subject: [PATCH 04/12] Require static native libraries when linking static +Subject: [PATCH 04/16] Require static native libraries when linking static executables On ELF targets like Linux, gcc/ld will create a dynamically-linked @@ -16,10 +16,10 @@ Fixes #54243 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/librustc_codegen_ssa/back/link.rs b/src/librustc_codegen_ssa/back/link.rs -index d5a56f6a09e..bb06d80d814 100644 +index e3d297e7862..974e8c0239b 100644 --- a/src/librustc_codegen_ssa/back/link.rs +++ b/src/librustc_codegen_ssa/back/link.rs -@@ -1548,9 +1548,7 @@ fn add_upstream_rust_crates<'a, B: ArchiveBuilder<'a>>(cmd: &mut dyn Linker, +@@ -1571,9 +1571,7 @@ fn add_upstream_rust_crates<'a, B: ArchiveBuilder<'a>>(cmd: &mut dyn Linker, } } @@ -30,7 +30,7 @@ index d5a56f6a09e..bb06d80d814 100644 // // 1. The upstream crate is an rlib. In this case we *must* link in the // native dependency because the rlib is just an archive. -@@ -1593,7 +1591,19 @@ pub fn add_upstream_native_libraries(cmd: &mut dyn Linker, +@@ -1616,7 +1614,19 @@ pub fn add_upstream_native_libraries(cmd: &mut dyn Linker, continue } match lib.kind { diff --git a/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch b/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch index 8dfb217b5..2df7a6654 100644 --- a/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch +++ b/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch @@ -1,7 +1,7 @@ -From dc5862fa6adcd35e46b0a3ab160f5577535b4b76 Mon Sep 17 00:00:00 2001 +From e8ef432c23ea9fb70b28bea07042b33f1050569b 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 +Subject: [PATCH 05/16] Remove -nostdlib and musl_root from musl targets --- config.toml.example | 6 ---- @@ -20,10 +20,10 @@ Subject: [PATCH 05/12] Remove -nostdlib and musl_root from musl targets 13 files changed, 4 insertions(+), 152 deletions(-) diff --git a/config.toml.example b/config.toml.example -index 556625b531d..3c6f1872822 100644 +index c14adf8ce33..8ec8d2bbbb7 100644 --- a/config.toml.example +++ b/config.toml.example -@@ -474,12 +474,6 @@ +@@ -479,12 +479,6 @@ # only use static libraries. If unset, the target's default linkage is used. #crt-static = false @@ -37,10 +37,10 @@ index 556625b531d..3c6f1872822 100644 #wasi-root = "..." diff --git a/src/bootstrap/bin/rustc.rs b/src/bootstrap/bin/rustc.rs -index 821c37dc235..906af787f4a 100644 +index 595deb07ec8..c077dc1581e 100644 --- a/src/bootstrap/bin/rustc.rs +++ b/src/bootstrap/bin/rustc.rs -@@ -122,16 +122,6 @@ fn main() { +@@ -145,16 +145,6 @@ fn main() { cmd.arg("-Cprefer-dynamic"); } @@ -58,7 +58,7 @@ index 821c37dc235..906af787f4a 100644 let mut root = OsString::from("native="); root.push(&s); diff --git a/src/bootstrap/cc_detect.rs b/src/bootstrap/cc_detect.rs -index dfc243b7054..848d1d4b2b3 100644 +index 400375cd201..0394ab7a8a7 100644 --- a/src/bootstrap/cc_detect.rs +++ b/src/bootstrap/cc_detect.rs @@ -84,7 +84,7 @@ pub fn find(build: &mut Build) { @@ -70,16 +70,16 @@ index dfc243b7054..848d1d4b2b3 100644 } 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()) { +@@ -107,7 +107,7 @@ pub fn find(build: &mut Build) { cfg.compiler(cxx); + true + } else if build.hosts.contains(&target) || build.build == target { +- set_compiler(&mut cfg, Language::CPlusPlus, target, config, build); ++ set_compiler(&mut cfg, Language::CPlusPlus, target, config); + true } 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) { + false +@@ -134,8 +134,7 @@ pub fn find(build: &mut Build) { fn set_compiler(cfg: &mut cc::Build, compiler: Language, target: Interned<String>, @@ -89,7 +89,7 @@ index dfc243b7054..848d1d4b2b3 100644 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, +@@ -175,26 +174,6 @@ fn set_compiler(cfg: &mut cc::Build, } } @@ -117,10 +117,10 @@ index dfc243b7054..848d1d4b2b3 100644 } } diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs -index e1cdd226fd6..05442c6c612 100644 +index 576267e6948..8e5de3907f6 100644 --- a/src/bootstrap/compile.rs +++ b/src/bootstrap/compile.rs -@@ -115,20 +115,7 @@ impl Step for Std { +@@ -116,20 +116,7 @@ impl Step for Std { fn copy_third_party_objects(builder: &Builder<'_>, compiler: &Compiler, target: Interned<String>) { let libdir = builder.sysroot_libdir(*compiler, target); @@ -142,7 +142,7 @@ index e1cdd226fd6..05442c6c612 100644 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<'_>, +@@ -219,12 +206,6 @@ pub fn std_cargo(builder: &Builder<'_>, .arg("--manifest-path") .arg(builder.src.join("src/libstd/Cargo.toml")); @@ -156,10 +156,10 @@ index e1cdd226fd6..05442c6c612 100644 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 b1d009a6740..cc567839f47 100644 +index 66f504ea924..5bb211501b1 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs -@@ -135,8 +135,6 @@ pub struct Config { +@@ -133,8 +133,6 @@ pub struct Config { pub print_step_timings: bool, pub missing_tools: bool, @@ -168,7 +168,7 @@ index b1d009a6740..cc567839f47 100644 pub prefix: Option<PathBuf>, pub sysconfdir: Option<PathBuf>, pub datadir: Option<PathBuf>, -@@ -171,7 +169,6 @@ pub struct Target { +@@ -169,7 +167,6 @@ pub struct Target { pub linker: Option<PathBuf>, pub ndk: Option<PathBuf>, pub crt_static: Option<bool>, @@ -176,15 +176,15 @@ index b1d009a6740..cc567839f47 100644 pub wasi_root: Option<PathBuf>, pub qemu_rootfs: Option<PathBuf>, pub no_std: bool, -@@ -308,7 +305,6 @@ struct Rust { +@@ -307,7 +304,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 { + codegen_tests: Option<bool>, +@@ -346,7 +342,6 @@ struct TomlTarget { linker: Option<String>, android_ndk: Option<String>, crt_static: Option<bool>, @@ -192,7 +192,7 @@ index b1d009a6740..cc567839f47 100644 wasi_root: Option<String>, qemu_rootfs: Option<String>, } -@@ -568,7 +563,6 @@ impl Config { +@@ -569,7 +564,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(); @@ -200,7 +200,7 @@ index b1d009a6740..cc567839f47 100644 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 { +@@ -607,7 +601,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(); @@ -209,7 +209,7 @@ index b1d009a6740..cc567839f47 100644 target.qemu_rootfs = cfg.qemu_rootfs.clone().map(PathBuf::from); diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py -index ade8afee7c1..f9ccf7aed5c 100755 +index 907983d43ad..e91f6fcbe4b 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", @@ -242,10 +242,10 @@ index ade8afee7c1..f9ccf7aed5c 100755 "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 7618a6e6df5..49cdb526e44 100644 +index 867df81d972..4fb57aa6db6 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs -@@ -852,14 +852,6 @@ impl Build { +@@ -847,14 +847,6 @@ impl Build { } } @@ -313,10 +313,10 @@ index ba2d32a9296..412c37fdd12 100644 --disable-docs diff --git a/src/ci/docker/dist-various-1/Dockerfile b/src/ci/docker/dist-various-1/Dockerfile -index a722a418391..44e6728de79 100644 +index 5ab4be328a9..f3b622e6037 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 \ +@@ -131,13 +131,6 @@ ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \ CXX_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-g++ ENV RUST_CONFIGURE_ARGS \ @@ -343,10 +343,10 @@ index 385eefde846..81d4f7737e8 100644 --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 611a24a69bd..99c2b866b1d 100644 +index c45b1a9a0f1..440796ff3ec 100644 --- a/src/ci/docker/test-various/Dockerfile +++ b/src/ci/docker/test-various/Dockerfile -@@ -31,7 +31,6 @@ COPY scripts/sccache.sh /scripts/ +@@ -27,7 +27,6 @@ COPY scripts/sccache.sh /scripts/ RUN sh /scripts/sccache.sh ENV RUST_CONFIGURE_ARGS \ diff --git a/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch b/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch index 901c52c7e..2f1094448 100644 --- a/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch +++ b/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch @@ -1,17 +1,17 @@ -From e0556e5cdd456e37e61e4ca1f5ef9862a2c6d3ae Mon Sep 17 00:00:00 2001 +From 1eb558f246269606c6d8d73824ef6b44fa10764e Mon Sep 17 00:00:00 2001 From: Samuel Holland <samuel@sholland.org> Date: Sat, 9 Sep 2017 00:14:16 -0500 -Subject: [PATCH 06/12] Prefer libgcc_eh over libunwind for musl +Subject: [PATCH 06/16] Prefer libgcc_eh over libunwind for musl --- src/libunwind/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libunwind/lib.rs b/src/libunwind/lib.rs -index 0ccffea3170..935175dd8d1 100644 +index 9182e349b19..0377fbb58fc 100644 --- a/src/libunwind/lib.rs +++ b/src/libunwind/lib.rs -@@ -26,6 +26,6 @@ cfg_if! { +@@ -23,6 +23,6 @@ cfg_if::cfg_if! { } #[cfg(target_env = "musl")] diff --git a/user/rust/0007-Fix-C-aggregate-passing-ABI-on-powerpc.patch b/user/rust/0007-Fix-C-aggregate-passing-ABI-on-powerpc.patch new file mode 100644 index 000000000..05b91456f --- /dev/null +++ b/user/rust/0007-Fix-C-aggregate-passing-ABI-on-powerpc.patch @@ -0,0 +1,93 @@ +From c9a914f48652de22832a40ef9639ff8d57c57f31 Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Wed, 4 Sep 2019 20:40:18 -0500 +Subject: [PATCH 07/16] Fix C aggregate-passing ABI on powerpc + +The existing code (which looks like it was copied from MIPS) passes +aggregates by value in registers. This is wrong. According to the SVR4 +powerpc psABI, all aggregates are passed indirectly. +--- + src/librustc_target/abi/call/mod.rs | 2 +- + src/librustc_target/abi/call/powerpc.rs | 41 ++++++------------------- + 2 files changed, 11 insertions(+), 32 deletions(-) + +diff --git a/src/librustc_target/abi/call/mod.rs b/src/librustc_target/abi/call/mod.rs +index fbbd120f934..f4d98177072 100644 +--- a/src/librustc_target/abi/call/mod.rs ++++ b/src/librustc_target/abi/call/mod.rs +@@ -562,7 +562,7 @@ impl<'a, Ty> FnType<'a, Ty> { + "arm" => arm::compute_abi_info(cx, self), + "mips" => mips::compute_abi_info(cx, self), + "mips64" => mips64::compute_abi_info(cx, self), +- "powerpc" => powerpc::compute_abi_info(cx, self), ++ "powerpc" => powerpc::compute_abi_info(self), + "powerpc64" => powerpc64::compute_abi_info(cx, self), + "s390x" => s390x::compute_abi_info(cx, self), + "asmjs" => asmjs::compute_abi_info(cx, self), +diff --git a/src/librustc_target/abi/call/powerpc.rs b/src/librustc_target/abi/call/powerpc.rs +index d496abf8e8b..f20defd6f5b 100644 +--- a/src/librustc_target/abi/call/powerpc.rs ++++ b/src/librustc_target/abi/call/powerpc.rs +@@ -1,49 +1,28 @@ +-use crate::abi::call::{ArgType, FnType, Reg, Uniform}; +-use crate::abi::{HasDataLayout, LayoutOf, Size, TyLayoutMethods}; ++use crate::abi::call::{ArgType, FnType}; + +-fn classify_ret_ty<'a, Ty, C>(cx: &C, ret: &mut ArgType<'_, Ty>, offset: &mut Size) +- where Ty: TyLayoutMethods<'a, C>, C: LayoutOf<Ty = Ty> + HasDataLayout +-{ +- if !ret.layout.is_aggregate() { +- ret.extend_integer_width_to(32); +- } else { ++fn classify_ret_ty<Ty>(ret: &mut ArgType<'_, Ty>) { ++ if ret.layout.is_aggregate() { + ret.make_indirect(); +- *offset += cx.data_layout().pointer_size; ++ } else { ++ ret.extend_integer_width_to(32); + } + } + +-fn classify_arg_ty<'a, Ty, C>(cx: &C, arg: &mut ArgType<'_, Ty>, offset: &mut Size) +- where Ty: TyLayoutMethods<'a, C>, C: LayoutOf<Ty = Ty> + HasDataLayout +-{ +- let dl = cx.data_layout(); +- let size = arg.layout.size; +- let align = arg.layout.align.max(dl.i32_align).min(dl.i64_align).abi; +- ++fn classify_arg_ty<Ty>(arg: &mut ArgType<'_, Ty>) { + if arg.layout.is_aggregate() { +- arg.cast_to(Uniform { +- unit: Reg::i32(), +- total: size +- }); +- if !offset.is_aligned(align) { +- arg.pad_with(Reg::i32()); +- } ++ arg.make_indirect(); + } else { + arg.extend_integer_width_to(32); + } +- +- *offset = offset.align_to(align) + size.align_to(align); + } + +-pub fn compute_abi_info<'a, Ty, C>(cx: &C, fty: &mut FnType<'_, Ty>) +- where Ty: TyLayoutMethods<'a, C>, C: LayoutOf<Ty = Ty> + HasDataLayout +-{ +- let mut offset = Size::ZERO; ++pub fn compute_abi_info<Ty>(fty: &mut FnType<'_, Ty>) { + if !fty.ret.is_ignore() { +- classify_ret_ty(cx, &mut fty.ret, &mut offset); ++ classify_ret_ty(&mut fty.ret); + } + + for arg in &mut fty.args { + if arg.is_ignore() { continue; } +- classify_arg_ty(cx, arg, &mut offset); ++ classify_arg_ty(arg); + } + } +-- +2.21.0 + diff --git a/user/rust/0008-Fix-zero-sized-aggregate-ABI-on-powerpc.patch b/user/rust/0008-Fix-zero-sized-aggregate-ABI-on-powerpc.patch new file mode 100644 index 000000000..c3da394a7 --- /dev/null +++ b/user/rust/0008-Fix-zero-sized-aggregate-ABI-on-powerpc.patch @@ -0,0 +1,62 @@ +From f67f0ab40f1328e04916512b9af858ca1b7faa24 Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Wed, 4 Sep 2019 20:44:30 -0500 +Subject: [PATCH 08/16] Fix zero-sized aggregate ABI on powerpc + +For targets that pass zero-sized aggregates indirectly (generally +those that pass all aggregates indirectly), we must allocate a register +for passing the address of the ZST. Clean up the existing cases and add +powerpc, which requires this as well. + +While there are not currently musl targets for s390x or sparc64, they +would have the same ABI as gnu targets, so remove the env == "gnu" check +in the Linux case. + +Ideally, since it is a property of the C ABI, the `!rust_abi` case would +be handled entirely in `adjust_c_abi`. However, that would require +updating each implementation of `compute_abi_info` to handle ZSTs. +--- + src/librustc/ty/layout.rs | 20 +++++++++----------- + 1 file changed, 9 insertions(+), 11 deletions(-) + +diff --git a/src/librustc/ty/layout.rs b/src/librustc/ty/layout.rs +index 4af26e19b37..163db9778e5 100644 +--- a/src/librustc/ty/layout.rs ++++ b/src/librustc/ty/layout.rs +@@ -2667,12 +2667,11 @@ where + }; + + let target = &cx.tcx().sess.target.target; +- let win_x64_gnu = +- target.target_os == "windows" && target.arch == "x86_64" && target.target_env == "gnu"; +- let linux_s390x = +- target.target_os == "linux" && target.arch == "s390x" && target.target_env == "gnu"; +- let linux_sparc64 = +- target.target_os == "linux" && target.arch == "sparc64" && target.target_env == "gnu"; ++ let indirect_zst = match target.arch.as_ref() { ++ "powerpc" | "s390x" | "sparc64" => true, ++ "x86_64" => target.target_os == "windows" && target.target_env == "gnu", ++ _ => false, ++ }; + let rust_abi = match sig.abi { + RustIntrinsic | PlatformIntrinsic | Rust | RustCall => true, + _ => false, +@@ -2742,11 +2741,10 @@ where + let is_return = arg_idx.is_none(); + let mut arg = mk_arg_type(ty, arg_idx); + if arg.layout.is_zst() { +- // For some forsaken reason, x86_64-pc-windows-gnu +- // doesn't ignore zero-sized struct arguments. +- // The same is true for s390x-unknown-linux-gnu +- // and sparc64-unknown-linux-gnu. +- if is_return || rust_abi || (!win_x64_gnu && !linux_s390x && !linux_sparc64) { ++ // FIXME: The C ABI case should be handled in adjust_for_cabi. ++ // Zero-sized struct arguments cannot be ignored in the C ABI ++ // if they are passed indirectly. ++ if is_return || rust_abi || !indirect_zst { + arg.mode = PassMode::Ignore(IgnoreMode::Zst); + } + } +-- +2.21.0 + diff --git a/user/rust/0009-compiletest-Match-suffixed-environments.patch b/user/rust/0009-compiletest-Match-suffixed-environments.patch new file mode 100644 index 000000000..9ca4d9900 --- /dev/null +++ b/user/rust/0009-compiletest-Match-suffixed-environments.patch @@ -0,0 +1,48 @@ +From 0b28aa018f3f64913101495ce9806d356230856e Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Mon, 2 Sep 2019 22:10:10 -0500 +Subject: [PATCH 09/16] compiletest: Match suffixed environments + +--- + src/tools/compiletest/src/header.rs | 2 +- + src/tools/compiletest/src/util.rs | 8 ++++++-- + 2 files changed, 7 insertions(+), 3 deletions(-) + +diff --git a/src/tools/compiletest/src/header.rs b/src/tools/compiletest/src/header.rs +index 52f777db2da..4bf3c1a8527 100644 +--- a/src/tools/compiletest/src/header.rs ++++ b/src/tools/compiletest/src/header.rs +@@ -820,10 +820,10 @@ impl Config { + + if name == "test" || + util::matches_os(&self.target, name) || // target ++ util::matches_env(&self.target, name) || // env + name == util::get_arch(&self.target) || // architecture + name == util::get_pointer_width(&self.target) || // pointer width + name == self.stage_id.split('-').next().unwrap() || // stage +- Some(name) == util::get_env(&self.target) || // env + (self.target != self.host && name == "cross-compile") || + match self.compare_mode { + Some(CompareMode::Nll) => name == "compare-mode-nll", +diff --git a/src/tools/compiletest/src/util.rs b/src/tools/compiletest/src/util.rs +index 8caf5ca00f5..d23f4edc55d 100644 +--- a/src/tools/compiletest/src/util.rs ++++ b/src/tools/compiletest/src/util.rs +@@ -101,8 +101,12 @@ pub fn get_arch(triple: &str) -> &'static str { + panic!("Cannot determine Architecture from triple"); + } + +-pub fn get_env(triple: &str) -> Option<&str> { +- triple.split('-').nth(3) ++pub fn matches_env(triple: &str, name: &str) -> bool { ++ if let Some(env) = triple.split('-').nth(3) { ++ env.starts_with(name) ++ } else { ++ false ++ } + } + + pub fn get_pointer_width(triple: &str) -> &'static str { +-- +2.21.0 + diff --git a/user/rust/0010-test-c-variadic-Fix-patterns-on-powerpc64.patch b/user/rust/0010-test-c-variadic-Fix-patterns-on-powerpc64.patch new file mode 100644 index 000000000..2e2111edb --- /dev/null +++ b/user/rust/0010-test-c-variadic-Fix-patterns-on-powerpc64.patch @@ -0,0 +1,73 @@ +From e6a01c436377109808cac2d49ec30968a02b561d Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Mon, 2 Sep 2019 22:09:15 -0500 +Subject: [PATCH 10/16] test/c-variadic: Fix patterns on powerpc64 + +--- + src/test/codegen/c-variadic.rs | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +diff --git a/src/test/codegen/c-variadic.rs b/src/test/codegen/c-variadic.rs +index bb90a9653f5..6ef77ca483f 100644 +--- a/src/test/codegen/c-variadic.rs ++++ b/src/test/codegen/c-variadic.rs +@@ -14,13 +14,13 @@ extern "C" { + #[unwind(aborts)] // FIXME(#58794) + pub unsafe extern "C" fn use_foreign_c_variadic_0() { + // Ensure that we correctly call foreign C-variadic functions. +- // CHECK: invoke void (i32, ...) @foreign_c_variadic_0(i32 0) ++ // CHECK: invoke void (i32, ...) @foreign_c_variadic_0([[PARAM:i32( signext)?]] 0) + foreign_c_variadic_0(0); +- // CHECK: invoke void (i32, ...) @foreign_c_variadic_0(i32 0, i32 42) ++ // CHECK: invoke void (i32, ...) @foreign_c_variadic_0([[PARAM]] 0, [[PARAM]] 42) + foreign_c_variadic_0(0, 42i32); +- // CHECK: invoke void (i32, ...) @foreign_c_variadic_0(i32 0, i32 42, i32 1024) ++ // CHECK: invoke void (i32, ...) @foreign_c_variadic_0([[PARAM]] 0, [[PARAM]] 42, [[PARAM]] 1024) + foreign_c_variadic_0(0, 42i32, 1024i32); +- // CHECK: invoke void (i32, ...) @foreign_c_variadic_0(i32 0, i32 42, i32 1024, i32 0) ++ // CHECK: invoke void (i32, ...) @foreign_c_variadic_0([[PARAM]] 0, [[PARAM]] 42, [[PARAM]] 1024, [[PARAM]] 0) + foreign_c_variadic_0(0, 42i32, 1024i32, 0i32); + } + +@@ -34,18 +34,18 @@ pub unsafe extern "C" fn use_foreign_c_variadic_1_0(ap: VaList) { + + #[unwind(aborts)] // FIXME(#58794) + pub unsafe extern "C" fn use_foreign_c_variadic_1_1(ap: VaList) { +- // CHECK: invoke void ({{.*}}*, ...) @foreign_c_variadic_1({{.*}} %ap, i32 42) ++ // CHECK: invoke void ({{.*}}*, ...) @foreign_c_variadic_1({{.*}} %ap, [[PARAM]] 42) + foreign_c_variadic_1(ap, 42i32); + } + #[unwind(aborts)] // FIXME(#58794) + pub unsafe extern "C" fn use_foreign_c_variadic_1_2(ap: VaList) { +- // CHECK: invoke void ({{.*}}*, ...) @foreign_c_variadic_1({{.*}} %ap, i32 2, i32 42) ++ // CHECK: invoke void ({{.*}}*, ...) @foreign_c_variadic_1({{.*}} %ap, [[PARAM]] 2, [[PARAM]] 42) + foreign_c_variadic_1(ap, 2i32, 42i32); + } + + #[unwind(aborts)] // FIXME(#58794) + pub unsafe extern "C" fn use_foreign_c_variadic_1_3(ap: VaList) { +- // CHECK: invoke void ({{.*}}*, ...) @foreign_c_variadic_1({{.*}} %ap, i32 2, i32 42, i32 0) ++ // CHECK: invoke void ({{.*}}*, ...) @foreign_c_variadic_1({{.*}} %ap, [[PARAM]] 2, [[PARAM]] 42, [[PARAM]] 0) + foreign_c_variadic_1(ap, 2i32, 42i32, 0i32); + } + +@@ -64,12 +64,12 @@ pub unsafe extern "C" fn c_variadic(n: i32, mut ap: ...) -> i32 { + // Ensure that we generate the correct `call` signature when calling a Rust + // defined C-variadic. + pub unsafe fn test_c_variadic_call() { +- // CHECK: call i32 (i32, ...) @c_variadic(i32 0) ++ // CHECK: call [[RET:(signext )?i32]] (i32, ...) @c_variadic([[PARAM]] 0) + c_variadic(0); +- // CHECK: call i32 (i32, ...) @c_variadic(i32 0, i32 42) ++ // CHECK: call [[RET]] (i32, ...) @c_variadic([[PARAM]] 0, [[PARAM]] 42) + c_variadic(0, 42i32); +- // CHECK: call i32 (i32, ...) @c_variadic(i32 0, i32 42, i32 1024) ++ // CHECK: call [[RET]] (i32, ...) @c_variadic([[PARAM]] 0, [[PARAM]] 42, [[PARAM]] 1024) + c_variadic(0, 42i32, 1024i32); +- // CHECK: call i32 (i32, ...) @c_variadic(i32 0, i32 42, i32 1024, i32 0) ++ // CHECK: call [[RET]] (i32, ...) @c_variadic([[PARAM]] 0, [[PARAM]] 42, [[PARAM]] 1024, [[PARAM]] 0) + c_variadic(0, 42i32, 1024i32, 0i32); + } +-- +2.21.0 + diff --git a/user/rust/0007-test-use-extern-for-plugins-Don-t-assume-multilib.patch b/user/rust/0011-test-use-extern-for-plugins-Don-t-assume-multilib.patch index 0655d8ac1..002d84024 100644 --- a/user/rust/0007-test-use-extern-for-plugins-Don-t-assume-multilib.patch +++ b/user/rust/0011-test-use-extern-for-plugins-Don-t-assume-multilib.patch @@ -1,7 +1,7 @@ -From 27dcf49a9a5a27c39b6f66837060bfa5d03ced50 Mon Sep 17 00:00:00 2001 +From f0fce1130ffe6b5a7666979aedd956becc4d7c25 Mon Sep 17 00:00:00 2001 From: Samuel Holland <samuel@sholland.org> Date: Sat, 6 Oct 2018 04:01:48 +0000 -Subject: [PATCH 07/12] test/use-extern-for-plugins: Don't assume multilib +Subject: [PATCH 11/16] test/use-extern-for-plugins: Don't assume multilib --- src/test/run-make-fulldeps/use-extern-for-plugins/Makefile | 7 +------ diff --git a/user/rust/0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch b/user/rust/0012-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch index 7b23b662d..6123af837 100644 --- a/user/rust/0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch +++ b/user/rust/0012-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch @@ -1,7 +1,7 @@ -From 2b5385b0c6db9cf02d467b23df89596d33557adf Mon Sep 17 00:00:00 2001 +From 93835653d45142c17adcf3087d2a8e512053bccf Mon Sep 17 00:00:00 2001 From: Samuel Holland <samuel@sholland.org> Date: Mon, 17 Sep 2018 01:32:20 +0000 -Subject: [PATCH 08/12] test/sysroot-crates-are-unstable: Fix test when rpath +Subject: [PATCH 12/16] test/sysroot-crates-are-unstable: Fix test when rpath is disabled Without this environment var, the test can't run rustc to find diff --git a/user/rust/0009-Ignore-broken-and-non-applicable-tests.patch b/user/rust/0013-Ignore-broken-and-non-applicable-tests.patch index c56f943c8..dc0f7adb3 100644 --- a/user/rust/0009-Ignore-broken-and-non-applicable-tests.patch +++ b/user/rust/0013-Ignore-broken-and-non-applicable-tests.patch @@ -1,7 +1,7 @@ -From 9af5f127b0809c1cadef639f96907d5908d1aec3 Mon Sep 17 00:00:00 2001 +From 8eb87a7b794e649003bc8f4bed6c6d6739f65e43 Mon Sep 17 00:00:00 2001 From: Samuel Holland <samuel@sholland.org> Date: Sun, 16 Sep 2018 16:38:48 +0000 -Subject: [PATCH 09/12] Ignore broken and non-applicable tests +Subject: [PATCH 13/16] Ignore broken and non-applicable tests c-link-to-rust-va-list-fn: unstable feature, broken on aarch64, #56475 env-funky-keys: can't handle LD_PRELOAD (e.g. sandbox) diff --git a/user/rust/0010-Link-stage-2-tools-dynamically-to-libstd.patch b/user/rust/0014-Link-stage-2-tools-dynamically-to-libstd.patch index ab31ba75f..47e9173a9 100644 --- a/user/rust/0010-Link-stage-2-tools-dynamically-to-libstd.patch +++ b/user/rust/0014-Link-stage-2-tools-dynamically-to-libstd.patch @@ -1,17 +1,17 @@ -From cef4e3d7019c07115f1a4ee66987a4e0ecf8505f Mon Sep 17 00:00:00 2001 +From 8e160daedd1a8c928024db648c2f851cddbbd000 Mon Sep 17 00:00:00 2001 From: Samuel Holland <samuel@sholland.org> Date: Mon, 24 Sep 2018 23:42:23 +0000 -Subject: [PATCH 10/12] Link stage 2 tools dynamically to libstd +Subject: [PATCH 14/16] Link stage 2 tools dynamically to libstd --- src/bootstrap/tool.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs -index edcd68d010e..b5acf43bba7 100644 +index bd77f7a91d9..70477b44032 100644 --- a/src/bootstrap/tool.rs +++ b/src/bootstrap/tool.rs -@@ -209,7 +209,9 @@ pub fn prepare_tool_cargo( +@@ -210,7 +210,9 @@ pub fn prepare_tool_cargo( // We don't want to build tools dynamically as they'll be running across // stages and such and it's just easier if they're not dynamically linked. diff --git a/user/rust/0011-Move-debugger-scripts-to-usr-share-rust.patch b/user/rust/0015-Move-debugger-scripts-to-usr-share-rust.patch index 375eb7545..ed30dfd15 100644 --- a/user/rust/0011-Move-debugger-scripts-to-usr-share-rust.patch +++ b/user/rust/0015-Move-debugger-scripts-to-usr-share-rust.patch @@ -1,7 +1,7 @@ -From 06a3f0608f996cc2791041a3f9a72f224223de43 Mon Sep 17 00:00:00 2001 +From 1d81148c7b7c048cb1c586ece96bd326ae0f72ec Mon Sep 17 00:00:00 2001 From: Samuel Holland <samuel@sholland.org> Date: Mon, 17 Sep 2018 02:09:10 +0000 -Subject: [PATCH 11/12] Move debugger scripts to /usr/share/rust +Subject: [PATCH 15/16] Move debugger scripts to /usr/share/rust --- src/bootstrap/dist.rs | 2 +- @@ -10,10 +10,10 @@ Subject: [PATCH 11/12] Move debugger scripts to /usr/share/rust 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs -index b0616ff6691..7a1225a9346 100644 +index 45bc77ec97d..9e82352ef65 100644 --- a/src/bootstrap/dist.rs +++ b/src/bootstrap/dist.rs -@@ -597,7 +597,7 @@ impl Step for DebuggerScripts { +@@ -593,7 +593,7 @@ impl Step for DebuggerScripts { fn run(self, builder: &Builder<'_>) { let host = self.host; let sysroot = self.sysroot; @@ -36,7 +36,7 @@ index 23ba93da8e5..dc51b16c572 100755 # Run GDB with the additional arguments that load the pretty printers # Set the environment variable `RUST_GDB` to overwrite the call to a diff --git a/src/etc/rust-lldb b/src/etc/rust-lldb -index 424302d495f..460e1192100 100755 +index 0eb99423df5..f069300dafe 100755 --- a/src/etc/rust-lldb +++ b/src/etc/rust-lldb @@ -26,7 +26,7 @@ display the contents of local variables!" diff --git a/user/rust/0012-Add-foxkit-target-specs.patch b/user/rust/0016-Add-foxkit-target-specs.patch index 119722688..2b60ca937 100644 --- a/user/rust/0012-Add-foxkit-target-specs.patch +++ b/user/rust/0016-Add-foxkit-target-specs.patch @@ -1,7 +1,7 @@ -From 5b43a025fae81fa1356e3331bff8cba8e3f58013 Mon Sep 17 00:00:00 2001 +From e31b3c5f24306f0e643c38692e4679707bea8bb8 Mon Sep 17 00:00:00 2001 From: Samuel Holland <samuel@sholland.org> Date: Mon, 17 Sep 2018 02:29:06 +0000 -Subject: [PATCH 12/12] Add foxkit target specs +Subject: [PATCH 16/16] Add foxkit target specs --- .../spec/aarch64_foxkit_linux_musl.rs | 11 +++++++++++ @@ -73,7 +73,7 @@ index 00000000000..f0c4ffbf580 + Ok(base) +} diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs -index 844edbb946a..2d7746c871c 100644 +index 75821aba470..fad73c0fc0e 100644 --- a/src/librustc_target/spec/mod.rs +++ b/src/librustc_target/spec/mod.rs @@ -328,6 +328,13 @@ macro_rules! supported_targets { diff --git a/user/rust/APKBUILD b/user/rust/APKBUILD index 36715a07c..50608079b 100644 --- a/user/rust/APKBUILD +++ b/user/rust/APKBUILD @@ -3,9 +3,9 @@ # Contributor: Jeizsm <jeizsm@gmail.com> # Maintainer: Samuel Holland <samuel@sholland.org> pkgname=rust -pkgver=1.36.0 -_bootcargover=0.36.0 -_bootver=1.35.0 +pkgver=1.37.0 +_bootcargover=0.37.0 +_bootver=1.36.0 _llvmver=8 pkgrel=0 pkgdesc="The Rust Programming Language" @@ -23,6 +23,7 @@ makedepends=" python3 zlib-dev " +provides="$pkgname-bootstrap=$pkgver-r$pkgrel" subpackages=" $pkgname-dbg $pkgname-stdlib @@ -37,6 +38,7 @@ subpackages=" cargo-doc:_cargo_doc:noarch cargo-bash-completion:_cargo_bashcomp:noarch cargo-zsh-completion:_cargo_zshcomp:noarch + miri rls rustfmt " @@ -50,12 +52,16 @@ source="https://static.rust-lang.org/dist/rustc-$pkgver-src.tar.xz 0004-Require-static-native-libraries-when-linking-static-.patch 0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch 0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch - 0007-test-use-extern-for-plugins-Don-t-assume-multilib.patch - 0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch - 0009-Ignore-broken-and-non-applicable-tests.patch - 0010-Link-stage-2-tools-dynamically-to-libstd.patch - 0011-Move-debugger-scripts-to-usr-share-rust.patch - 0012-Add-foxkit-target-specs.patch + 0007-Fix-C-aggregate-passing-ABI-on-powerpc.patch + 0008-Fix-zero-sized-aggregate-ABI-on-powerpc.patch + 0009-compiletest-Match-suffixed-environments.patch + 0010-test-c-variadic-Fix-patterns-on-powerpc64.patch + 0011-test-use-extern-for-plugins-Don-t-assume-multilib.patch + 0012-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch + 0013-Ignore-broken-and-non-applicable-tests.patch + 0014-Link-stage-2-tools-dynamically-to-libstd.patch + 0015-Move-debugger-scripts-to-usr-share-rust.patch + 0016-Add-foxkit-target-specs.patch 0030-libc-linkage.patch 0031-typenum-pmmx.patch 0040-rls-atomics.patch @@ -64,8 +70,6 @@ builddir="$srcdir/rustc-$pkgver-src" _rlibdir="/usr/lib/rustlib/$CTARGET/lib" prepare() { - cd "$builddir" - default_prepare $srcdir/cargo-$_bootcargover-$CBUILD/install.sh \ @@ -83,8 +87,6 @@ prepare() { } build() { - cd "$builddir" - cat > config.toml <<- EOF [build] build = "$CBUILD" @@ -102,31 +104,39 @@ build() { prefix = "/usr" [rust] codegen-units = 1 - debuginfo = true - debuginfo-lines = true - debuginfo-only-std = true - debuginfo-tools = true + codegen-units-std = 1 + debug-assertions = false + debuginfo-level = 2 + debuginfo-level-rustc = 0 + debuginfo-level-tests = 0 backtrace = true + incremental = false + parallel-compiler = false channel = "stable" rpath = false + verbose-tests = true + dist-src = false jemalloc = false + llvm-libunwind = false [target.$CTARGET] cc = "$CTARGET-gcc" cxx = "$CTARGET-g++" linker = "$CTARGET-gcc" llvm-config = "/usr/lib/llvm$_llvmver/bin/llvm-config" crt-static = false + [dist] + src-tarball = false EOF LIBGIT2_SYS_USE_PKG_CONFIG=1 \ LLVM_LINK_SHARED=1 \ RUST_BACKTRACE=1 \ - python3 x.py build -j ${JOBS:-2} + python3 x.py dist -j ${JOBS:-2} } check() { - cd "$builddir" - + LIBGIT2_SYS_USE_PKG_CONFIG=1 \ + LLVM_LINK_SHARED=1 \ RUST_BACKTRACE=1 \ python3 x.py test -j ${JOBS:-2} --no-doc --no-fail-fast \ src/test/codegen \ @@ -148,17 +158,26 @@ check() { } package() { - cd "$builddir" + cd "$builddir"/build/dist - DESTDIR="$pkgdir" python3 x.py install + tar xf rust-$pkgver-$CTARGET.tar.gz + rust-$pkgver-$CTARGET/install.sh \ + --destdir="$pkgdir" \ + --prefix=/usr \ + --sysconfdir="$pkgdir"/etc \ + --disable-ldconfig + tar xf rust-src-$pkgver.tar.gz + rust-src-$pkgver/install.sh \ + --destdir="$pkgdir" \ + --prefix=/usr \ + --disable-ldconfig rm "$pkgdir"/usr/lib/*.so \ "$pkgdir"/usr/lib/rustlib/components \ "$pkgdir"/usr/lib/rustlib/install.log \ "$pkgdir"/usr/lib/rustlib/manifest-* \ "$pkgdir"/usr/lib/rustlib/rust-installer-version \ - "$pkgdir"/usr/lib/rustlib/uninstall.sh \ - "$pkgdir"/usr/share/doc/rust/*.old + "$pkgdir"/usr/lib/rustlib/uninstall.sh } stdlib() { @@ -186,7 +205,7 @@ gdb() { _mv "$pkgdir"/usr/bin/rust-gdb "$subpkgdir"/usr/bin _mv "$pkgdir"/usr/bin/rust-gdbgui "$subpkgdir"/usr/bin - _mv "$pkgdir"/usr/share/rust/gdb_*.py "$subpkgdir"/usr/share/rust || true + _mv "$pkgdir"/usr/share/rust/gdb_*.py "$subpkgdir"/usr/share/rust } lldb() { @@ -196,7 +215,7 @@ lldb() { install_if="$pkgname=$pkgver-r$pkgrel lldb" _mv "$pkgdir"/usr/bin/rust-lldb "$subpkgdir"/usr/bin - _mv "$pkgdir"/usr/share/rust/lldb_*.py "$subpkgdir"/usr/share/rust || true + _mv "$pkgdir"/usr/share/rust/lldb_*.py "$subpkgdir"/usr/share/rust } src() { @@ -212,6 +231,7 @@ src() { cargo() { pkgdesc="The Rust package manager" + provides="cargo-bootstrap=$pkgver-r$pkgrel" depends="$pkgname-stdlib=$pkgver-r$pkgrel $pkgname" _mv "$pkgdir"/usr/bin/cargo "$subpkgdir"/usr/bin @@ -267,6 +287,14 @@ _cargo_doc() { "$subpkgdir"/usr/share/man/man1 } +miri() { + pkgdesc="An interpreter for Rust's mid-level intermediate representation" + license="Apache-2.0 OR MIT" + depends="$pkgname-stdlib=$pkgver-r$pkgrel" + + _mv "$pkgdir"/usr/bin/miri "$subpkgdir"/usr/bin +} + rls() { pkgdesc="The Rust language server" license="Apache-2.0 OR MIT" @@ -287,22 +315,27 @@ _mv() { mkdir -p "$dest" mv "$@" } -sha512sums="1adbb3b67d599f926dc19258e2596cb3b990e152e75e71645637098526207aa5632d7915fd5b67c7a045f63860cc7be3d28be014ad6141a342adc16b2fe8a879 rustc-1.36.0-src.tar.xz -c42ee71cdfacd27d468a0349c5e5b14c5e9701b3f54f22361ec6d9c5255ed6d0eac49e2d64254e3d62e8eba1292427ed07be3cc22b7b784471d079c37a60f0ca cargo-0.36.0-powerpc64-foxkit-linux-musl.tar.xz -772e58df18018dc32185181ffd4eebd5c83809d28bff849944573dbe05eee77c99d874f0a8d40222e6dc69679e8cb7d50230b81111dea6e05dce7e3ce5c7c8fa rust-std-1.35.0-powerpc64-foxkit-linux-musl.tar.xz -ca5430f5c86a1df7f52058dc7ae53e557b0572a88b6288757a2702a979412971da78861c40ab11f4cf0cfa0406a9f19e1329dc2624f47b2b14dadfd094b0a745 rustc-1.35.0-powerpc64-foxkit-linux-musl.tar.xz -b9847c12db94e80879c382aa33dd3fc170536c901bac0cdc2ff507e4daa8a89116be9ff67139e130b990e8a46a0aa9db1a90b2aac34e73b7a45845974109cd3c 0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch -2685cb1991de921731f4908265a2de91724ce7811c99ef9d81d018be1b4c320ff181f078b59ed170ab72234463cf3688b06d96ac158f57b4f923ee30255b304d 0002-Fix-LLVM-build.patch -d31ae4f2a2fa016907d0c141a14ba2e3e38f87155ad030249b7eec64cd5238784a5321aa0612c54e14ed746607aa6058acc275efddbb750e92008566858b3361 0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch -0836b0332013c2798fb1c4aecea61315dcbd62799ec37343f2b5aa9373347d3c50af83dc2a331ddcf4c2527851ca22cb58da0600fb5c593e02b0de72f05c7e34 0004-Require-static-native-libraries-when-linking-static-.patch -bb4180012c1e3156b1ead0fd3bacc1d2cb924eb362e3437b887ec19241e6576274649e218f958d474c132b9ad70567bc3b94d21c12062a6469d1f2236671a885 0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch -712b8e8e0aa640bdf81a3a5f92cf06a7c2cebee472ab9f7da6347c0dc5cc2d7c39e49b5351c436d19371060459080c777ec95edcb4a0d3f7bea85fa2ec700f4b 0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch -009632d5c0e783f58b4fe1f01846cad2a605da47ef29de7d728c6f08280db3532c0b7ac5a9ac0d356c795107638cd8c2c388a87969bab5e77ef7d8d71cd638d0 0007-test-use-extern-for-plugins-Don-t-assume-multilib.patch -1f04218ff5005d7ad35bb507baaf6d01f50941c809c1fbb6716ba2e35370fe9d5f50e56021cfbf036bb4336b0b1f7e98678e60e2f5fefa9d0078d7d9ffab63b8 0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch -f67e238168a19564e7002fd24fc22a93a44f6d84d762324bbb9218bcb348d695df58ef6046c2dd7fcee68bf1f36ea2395d216ee73b4218dcdc075b0d815cd095 0009-Ignore-broken-and-non-applicable-tests.patch -90a9f6c25879a297b248ec8ee406382cd55ead4b7695635c3a0f5eb9e1d9145df0d727c4c644ebb053b64fa784e917fa56a9ec4d3c026d1ab3751ed4bed50ec5 0010-Link-stage-2-tools-dynamically-to-libstd.patch -0964cd36a14c252f24c9d896ad88f864394ebeca4cd03138c7ca82978dcbbd707b7306320c68afd799b6db153a0425e4f0d863c17ced482cfccbbaf99c836188 0011-Move-debugger-scripts-to-usr-share-rust.patch -333775512fd401acd27e5efe5e626e93193ef75986e51fca8987b0cc2b10e7ac41634305c7845410f333c93d5ac86af0f2763d221e8b2ab6061db5c792a3aa32 0012-Add-foxkit-target-specs.patch + +sha512sums="bfee43f578e6d44ead950b870b9fd31087e1bd3f917611f5dce7ad56504b83185edf43e297e8d1304e9e97b9a580d1e6adf6608ab8ed6dee0dc8c5153cdbc5d4 rustc-1.37.0-src.tar.xz +ab0711dafeae76d9718a0c6aaf118f512d295c66191d96198acc3591f5412d4ee6c50ad5cc56df8f1f32a2be3c4d9bb5ead798c6b9f4089c0a624e09825dd6be cargo-0.37.0-powerpc-foxkit-linux-musl.tar.xz +aa97abeccf03d3368b60731845d23ff74fb962818b7d1e6ada2e9a647b442a1b824541402f3a883c9be6e1f8db94ca98244fc4009ff0386403c57f999bd6d263 rust-std-1.36.0-powerpc-foxkit-linux-musl.tar.xz +5078bdd341b145119ba3396892cd8f63c65fafb1b041674e350b2cc02376fd2c32799baca85e916522c34c416a6c67d9d92bf8f44abb575a1ae1fedc4726516e rustc-1.36.0-powerpc-foxkit-linux-musl.tar.xz +5b765a47a49cbab26e5093ebf6dce5b8e3463ebdb0e404b9c952fef7993fd57e9a0d9f7d301c97b76b8bd35e4ea8b72c8768aa384cd215c2a12ddd45727343f8 0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch +9b711ee16eed20a0293c1ca6d96c48db3fae5f2f60fdcb04ae2d1acfdc8036fa3b41ca799717aa14279fd7b7db0090861bceddeafd8d41f70433039e4983d9c8 0002-Fix-LLVM-build.patch +7f61bdc7c754379e1675d2f102f1f60f4c29ca2a2293d70741db46a0f29d61008d067166c7576cd0e5fa3c26e811e711e851b22f7df69974a7b53fa316c33777 0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch +0f1989e4db3a48fe8718002a58aaecf359bc65bf5a6dae327c062fce0b8a3176a6b70c80c72118d5fcabbc16b67b986ce67ab1fda13ca52899ca320716f3e606 0004-Require-static-native-libraries-when-linking-static-.patch +b27045eb7809438db988979843f68ddfee46a6f889b0fbaaed401b249d6e224940e9d15143e55f8b2df911a8fa24dfec81da0f064b47a86f3ed24010aee309e3 0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch +4662f036e037b99178bb24c32524211eb5fc10ac711d16f13ddb933db84811eab3149cbe943521536d00c765eade1c1df01ca7e8f4fee69fca540546c0fbe806 0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch +8742ff1c442dc2c7baad528fd6c51e202d091f24fbd7ac1350241a729a20f6f90818b76bb4de0b36b09afdeaad89b54843f08fb474e2232854cb68cd3d6a57b5 0007-Fix-C-aggregate-passing-ABI-on-powerpc.patch +8eb5c08701cfcdc14ece1c40fa2276e760283ce9228c96ff1dedb5256dcec307c3705a8e27ac1bd767184d0acfc835b9b0b4f02d5fa7ec24a75f04014e67ec61 0008-Fix-zero-sized-aggregate-ABI-on-powerpc.patch +20f794339f7a9c048dad2f39b5a3dad9293b07ba0b130354c0e74ec71088d2f2c24f6630543e8e5a41b244c8c1013249403ce8acf1fc2c2b4ab5065049f7f04e 0009-compiletest-Match-suffixed-environments.patch +d3d3250d762b482c93679cbc7a1d5ccf2eb803e271b840a5d426cf77d58d2cb53fd76baf46bfbaf7674c5ef9f18133cf0b48be08864c002171f3547aaa377bd6 0010-test-c-variadic-Fix-patterns-on-powerpc64.patch +d01d27d6f344fd30f75e7acd8f1b967eda382f7ee6387f8b0c52aa1ab083d5d86fa9d8d424c3e2b792502e75df03bacc58bd24ed4e448cfefe6bbfbb57586b06 0011-test-use-extern-for-plugins-Don-t-assume-multilib.patch +e25a4ba32b3b6fbc774c341bb3bda481a9f86917204e7c9bd69f34e2a72b4b3e58256d0619a94ce1d0f4cc17913d7216974b86fe96a776ba4260d0a01dcacaa9 0012-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch +68f7b35980c7b4b7088e28a7350c847656d4ffecbcec125ac6790a057a8a735563739f0ade8a7cf0283844cd1655114fa7ad6be106993e34b66e520aed34dd6d 0013-Ignore-broken-and-non-applicable-tests.patch +b6d4ce58e540373da797c89ed2ca3b23a8504511ee6bb6d0c52bd04273498aab10c99baf6f4633bb5a246c2612a7a538cbfed494bf901afdc6688f937234b4ac 0014-Link-stage-2-tools-dynamically-to-libstd.patch +fc10130544f7ceda378a9e7fb03a0dc4ea32a6d031061eada60af2d1c688d94f38ab31aad74f8f11b8aec2614415befa2c5e9789eeaf73b998f39b9677886155 0015-Move-debugger-scripts-to-usr-share-rust.patch +2c11c4bee3c6d10de6c2a9937bf3901f4c60dd1d9c50fcf57daa182a9b4d7b40d27632d3ef31ef083ae7903fcd49fdd41413ab8de1021f7d857884b9ac53c724 0016-Add-foxkit-target-specs.patch 7642e95d7f5e5d167a2f3e1300fc63f7bf34b6c0667b4e43e7c2378acd8c293f82d7c5651dfb75b03d717c0c5c369911f595dc641a629024e615d443244e6da1 0030-libc-linkage.patch 0cb12e9165d198c1e04b258454dbaf5459e192ad24d64c9fa132ebe0f1bcd5da3550eae8dfdaa792fa809b505af62964ecf0219dc4373420ee8ad3e111539a09 0031-typenum-pmmx.patch ab35bacf45ef5e46be110a8d27867fd4d5deb23cd5cbe8dc7f1da2177469945f9254f2a7915ee4fc430468a4421623429f0a01eb9eba14e047384efe3d3ec152 0040-rls-atomics.patch" |