summaryrefslogtreecommitdiff
path: root/user/rust
diff options
context:
space:
mode:
Diffstat (limited to 'user/rust')
-rw-r--r--user/rust/0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch8
-rw-r--r--user/rust/0002-Fix-LLVM-build.patch8
-rw-r--r--user/rust/0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch4
-rw-r--r--user/rust/0004-Require-static-native-libraries-when-linking-static-.patch10
-rw-r--r--user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch68
-rw-r--r--user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch8
-rw-r--r--user/rust/0007-Fix-C-aggregate-passing-ABI-on-powerpc.patch93
-rw-r--r--user/rust/0008-Fix-zero-sized-aggregate-ABI-on-powerpc.patch62
-rw-r--r--user/rust/0009-compiletest-Match-suffixed-environments.patch48
-rw-r--r--user/rust/0010-test-c-variadic-Fix-patterns-on-powerpc64.patch73
-rw-r--r--user/rust/0011-test-use-extern-for-plugins-Don-t-assume-multilib.patch (renamed from user/rust/0007-test-use-extern-for-plugins-Don-t-assume-multilib.patch)4
-rw-r--r--user/rust/0012-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch (renamed from user/rust/0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch)4
-rw-r--r--user/rust/0013-Ignore-broken-and-non-applicable-tests.patch (renamed from user/rust/0009-Ignore-broken-and-non-applicable-tests.patch)4
-rw-r--r--user/rust/0014-Link-stage-2-tools-dynamically-to-libstd.patch (renamed from user/rust/0010-Link-stage-2-tools-dynamically-to-libstd.patch)8
-rw-r--r--user/rust/0015-Move-debugger-scripts-to-usr-share-rust.patch (renamed from user/rust/0011-Move-debugger-scripts-to-usr-share-rust.patch)10
-rw-r--r--user/rust/0016-Add-foxkit-target-specs.patch (renamed from user/rust/0012-Add-foxkit-target-specs.patch)6
-rw-r--r--user/rust/APKBUILD117
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"