Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] rust 1.43.1
@ 2020-05-24 16:50 q66
  2020-05-24 17:34 ` [PR PATCH] [Updated] " q66
  2020-05-24 19:55 ` [PR PATCH] [Merged]: " q66
  0 siblings, 2 replies; 3+ messages in thread
From: q66 @ 2020-05-24 16:50 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 831 bytes --]

There is a new pull request by q66 against master on the void-packages repository

https://github.com/void-ppc/void-packages rust1431
https://github.com/void-linux/void-packages/pull/22268

rust 1.43.1
This updates rust to 1.43.1. Cargo update has already been done previously.

Changes:

- New option `bindist` which creates bootstrap tarballs in `/host/sources/distfiles`, with the appropriate options set (rpath, static llvm)
- Removed standalone `static_llvm`
- LLVM 10

TODO:

- [x] Test `ppc64le`
- [ ] Test `ppc64le-musl`, `ppc64`, `ppc64-musl`, `ppc`, `ppc-musl`
- [ ] Test other architectures
- [ ] Test firefox
- [ ] Upload bootstrap tarballs
- [ ] Update checksums for non-ppc arches (currently still at 1.43.0)


A patch file from https://github.com/void-linux/void-packages/pull/22268.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rust1431-22268.patch --]
[-- Type: text/x-diff, Size: 57613 bytes --]

From b89963ba61d377c7ee11e0e9b7229348d9df5edd Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
Date: Sun, 3 May 2020 18:12:41 +0200
Subject: [PATCH 1/2] rust: update to 1.43.1, switch to llvm10

Also remove option static_llvm and add option bindist, which
helps simplify building bootstrap tarballs.
---
 .../rust/patches/0001-Fix-LLVM-build.patch    |  24 ++---
 ...to-work-when-cross-compiling-on-musl.patch |  18 ++--
 ...ative-libraries-when-linking-static-.patch |  16 +--
 ...dlib-and-musl_root-from-musl-targets.patch | 100 +++++++++---------
 ...er-libgcc_eh-over-libunwind-on-musl.patch} |  35 +++---
 ...-zero-sized-aggregate-ABI-on-powerpc.patch |  62 -----------
 ...n-for-plugins-Don-t-assume-multilib.patch} |   6 +-
 ...es-are-unstable-Fix-test-when-rpath.patch} |   6 +-
 ...ore-broken-and-non-applicable-tests.patch} |   8 +-
 ...-stage2-tools-dynamically-to-libstd.patch} |  14 +--
 ...-debugger-scripts-to-usr-share-rust.patch} |  10 +-
 ...ically-link-libc-on-musl-by-default.patch} |   6 +-
 ...age-of-musl-libc-for-the-libc-crate.patch} |  12 +--
 ...d-result-of-highest-as-f64-.log-2.0.patch} |   6 +-
 ...-against-host-target-LLVM-in-cross-s.patch |  31 ++++++
 ...-ELFv2-ABI-on-all-powerpc64-targets.patch} |  39 ++++---
 ...-against-host-target-LLVM-in-cross-s.patch |  28 -----
 ...879b1e24c369362bcd821959ffabc50a8a31.patch |  28 +++++
 ...a896cc92d5e0678376cf5aa8b64af0899732.patch |  28 +++++
 srcpkgs/rust/patches/need-ssp_nonshared.patch |  11 ++
 srcpkgs/rust/template                         |  90 +++++++++-------
 21 files changed, 302 insertions(+), 276 deletions(-)
 rename srcpkgs/rust/patches/{0005-Prefer-libgcc_eh-over-libunwind-for-musl.patch => 0005-Prefer-libgcc_eh-over-libunwind-on-musl.patch} (67%)
 delete mode 100644 srcpkgs/rust/patches/0006-Fix-zero-sized-aggregate-ABI-on-powerpc.patch
 rename srcpkgs/rust/patches/{0007-test-use-extern-for-plugins-Don-t-assume-multilib.patch => 0006-test-use-extern-for-plugins-Don-t-assume-multilib.patch} (86%)
 rename srcpkgs/rust/patches/{0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch => 0007-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch} (84%)
 rename srcpkgs/rust/patches/{0009-Ignore-broken-and-non-applicable-tests.patch => 0008-Ignore-broken-and-non-applicable-tests.patch} (95%)
 rename srcpkgs/rust/patches/{0010-Link-stage2-tools-dynamically-to-libstd.patch => 0009-Link-stage2-tools-dynamically-to-libstd.patch} (71%)
 rename srcpkgs/rust/patches/{0011-Move-debugger-scripts-to-usr-share-rust.patch => 0010-Move-debugger-scripts-to-usr-share-rust.patch} (89%)
 rename srcpkgs/rust/patches/{0012-Dynamically-link-libc-on-musl-by-default.patch => 0011-Dynamically-link-libc-on-musl-by-default.patch} (87%)
 rename srcpkgs/rust/patches/{0013-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch => 0012-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch} (84%)
 rename srcpkgs/rust/patches/{0014-round-result-of-highest-as-f64-.log-2.0.patch => 0013-round-result-of-highest-as-f64-.log-2.0.patch} (87%)
 create mode 100644 srcpkgs/rust/patches/0014-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch
 rename srcpkgs/rust/patches/{0016-Use-ELFv2-ABI-on-all-powerpc64-targets.patch => 0015-Use-ELFv2-ABI-on-all-powerpc64-targets.patch} (65%)
 delete mode 100644 srcpkgs/rust/patches/0015-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch
 create mode 100644 srcpkgs/rust/patches/497f879b1e24c369362bcd821959ffabc50a8a31.patch
 create mode 100644 srcpkgs/rust/patches/a94fa896cc92d5e0678376cf5aa8b64af0899732.patch
 create mode 100644 srcpkgs/rust/patches/need-ssp_nonshared.patch

diff --git a/srcpkgs/rust/patches/0001-Fix-LLVM-build.patch b/srcpkgs/rust/patches/0001-Fix-LLVM-build.patch
index ab0b2fb1bb8..0da829af1da 100644
--- a/srcpkgs/rust/patches/0001-Fix-LLVM-build.patch
+++ b/srcpkgs/rust/patches/0001-Fix-LLVM-build.patch
@@ -1,26 +1,26 @@
-From b10e30c5f8a71f0efd871d0e5114f44d04a879fe Mon Sep 17 00:00:00 2001
+From 4443eca0d6b3ba599832b2f73a5350fdd0c90d10 Mon Sep 17 00:00:00 2001
 From: Samuel Holland <samuel@sholland.org>
 Date: Fri, 8 Sep 2017 00:04:29 -0500
-Subject: [PATCH 01/16] Fix LLVM build
+Subject: [PATCH 01/15] 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 080bef68..e9b7976d 100644
+index a476d25f..c7e63990 100644
 --- a/src/bootstrap/lib.rs
 +++ b/src/bootstrap/lib.rs
-@@ -752,7 +752,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())
--                           .filter(|s| !s.starts_with("-O") && !s.starts_with("/O"))
-+                           .filter(|s| !s.starts_with("-O") && !s.starts_with("/O")
-+                                   && !s.starts_with("-static"))
-                            .collect::<Vec<String>>();
+@@ -768,7 +768,8 @@ impl Build {
+             .args()
+             .iter()
+             .map(|s| s.to_string_lossy().into_owned())
+-            .filter(|s| !s.starts_with("-O") && !s.starts_with("/O"))
++            .filter(|s| !s.starts_with("-O") && !s.starts_with("/O")
++                    && !s.starts_with("-static"))
+             .collect::<Vec<String>>();
  
          // If we're compiling on macOS then we add a few unconditional flags
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0002-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch b/srcpkgs/rust/patches/0002-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
index b1a871cd69f..7687c35ce87 100644
--- a/srcpkgs/rust/patches/0002-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
+++ b/srcpkgs/rust/patches/0002-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
@@ -1,7 +1,7 @@
-From c4c6747beb14cc96e7ce9d88018cef42533155df Mon Sep 17 00:00:00 2001
+From a78859bb6690e0ad285d1892d7a40796a40ac287 Mon Sep 17 00:00:00 2001
 From: Samuel Holland <samuel@sholland.org>
 Date: Sat, 2 Dec 2017 17:25:44 -0600
-Subject: [PATCH 02/16] Allow rustdoc to work when cross-compiling on musl
+Subject: [PATCH 02/15] Allow rustdoc to work when cross-compiling on musl
 
 musl can't handle foreign-architecture libraries in LD_LIBRARY_PATH.
 ---
@@ -9,7 +9,7 @@ musl can't handle foreign-architecture libraries in LD_LIBRARY_PATH.
  1 file changed, 2 insertions(+), 5 deletions(-)
 
 diff --git a/src/bootstrap/bin/rustdoc.rs b/src/bootstrap/bin/rustdoc.rs
-index 6937fb92..ce787609 100644
+index 04345867..8156d5ec 100644
 --- a/src/bootstrap/bin/rustdoc.rs
 +++ b/src/bootstrap/bin/rustdoc.rs
 @@ -22,9 +22,6 @@ fn main() {
@@ -22,16 +22,16 @@ index 6937fb92..ce787609 100644
      //FIXME(misdreavus): once stdsimd uses cfg(doc) instead of cfg(dox), remove the `--cfg dox`
      //arguments here
      let mut cmd = Command::new(rustdoc);
-@@ -36,7 +33,7 @@ fn main() {
+@@ -35,7 +32,7 @@ fn main() {
+         .arg("dox")
          .arg("--sysroot")
          .arg(&sysroot)
-         .env(bootstrap::util::dylib_path_var(),
--             env::join_paths(&dylib_path).unwrap());
-+             PathBuf::from(libdir.clone()));
+-        .env(bootstrap::util::dylib_path_var(), env::join_paths(&dylib_path).unwrap());
++        .env(bootstrap::util::dylib_path_var(), PathBuf::from(libdir.clone()));
  
      // Force all crates compiled by this compiler to (a) be unstable and (b)
      // allow the `rustc_private` feature to link to other unstable crates
-@@ -87,7 +84,7 @@ fn main() {
+@@ -83,7 +80,7 @@ fn main() {
          eprintln!(
              "rustdoc command: {:?}={:?} {:?}",
              bootstrap::util::dylib_path_var(),
@@ -41,5 +41,5 @@ index 6937fb92..ce787609 100644
          );
          eprintln!("sysroot: {:?}", sysroot);
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0003-Require-static-native-libraries-when-linking-static-.patch b/srcpkgs/rust/patches/0003-Require-static-native-libraries-when-linking-static-.patch
index 0da09ab5e57..fe69b763f3f 100644
--- a/srcpkgs/rust/patches/0003-Require-static-native-libraries-when-linking-static-.patch
+++ b/srcpkgs/rust/patches/0003-Require-static-native-libraries-when-linking-static-.patch
@@ -1,7 +1,7 @@
-From 33aff948106db1150cc7c1f457e74c4dbf95f74a Mon Sep 17 00:00:00 2001
+From baa7ce46f19e3584d70e47c8df28c084e76446da Mon Sep 17 00:00:00 2001
 From: Samuel Holland <samuel@sholland.org>
-Date: Fri, 8 Sep 2017 00:05:18 -0500
-Subject: [PATCH 03/16] Require static native libraries when linking static
+Date: Sun, 3 May 2020 17:48:47 +0200
+Subject: [PATCH 03/15] 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 a2b50ea8..3250ec4d 100644
+index 0dd2f029..f22b4277 100644
 --- a/src/librustc_codegen_ssa/back/link.rs
 +++ b/src/librustc_codegen_ssa/back/link.rs
-@@ -1610,9 +1610,7 @@ fn add_upstream_rust_crates<'a, B: ArchiveBuilder<'a>>(
+@@ -1741,9 +1741,7 @@ fn add_upstream_rust_crates<'a, B: ArchiveBuilder<'a>>(
      }
  }
  
@@ -30,8 +30,8 @@ index a2b50ea8..3250ec4d 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.
-@@ -1659,7 +1657,19 @@ pub fn add_upstream_native_libraries(
-                 continue
+@@ -1792,7 +1790,19 @@ pub fn add_upstream_native_libraries(
+                 continue;
              }
              match lib.kind {
 -                NativeLibraryKind::NativeUnknown => cmd.link_dylib(name),
@@ -52,5 +52,5 @@ index a2b50ea8..3250ec4d 100644
                  NativeLibraryKind::NativeStaticNobundle => {
                      // Link "static-nobundle" native libs only if the crate they originate from
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0004-Remove-nostdlib-and-musl_root-from-musl-targets.patch b/srcpkgs/rust/patches/0004-Remove-nostdlib-and-musl_root-from-musl-targets.patch
index e22b7e08487..06e42fdf1e3 100644
--- a/srcpkgs/rust/patches/0004-Remove-nostdlib-and-musl_root-from-musl-targets.patch
+++ b/srcpkgs/rust/patches/0004-Remove-nostdlib-and-musl_root-from-musl-targets.patch
@@ -1,24 +1,24 @@
-From 06b84a9e3d7514ac23953ad76242710444d2a0c1 Mon Sep 17 00:00:00 2001
+From 4654172e942b5b9250aff70101d54bc880060073 Mon Sep 17 00:00:00 2001
 From: Samuel Holland <samuel@sholland.org>
-Date: Sat, 21 Dec 2019 16:46:22 +0100
-Subject: [PATCH 04/16] Remove -nostdlib and musl_root from musl targets
+Date: Sun, 3 May 2020 17:53:33 +0200
+Subject: [PATCH 04/15] Remove -nostdlib and musl_root from musl targets
 
 ---
  config.toml.example                         |  3 ---
- src/bootstrap/cc_detect.rs                  | 27 +++-----------------
+ src/bootstrap/cc_detect.rs                  | 25 ++----------------
  src/bootstrap/compile.rs                    | 22 +---------------
  src/bootstrap/config.rs                     |  7 ------
  src/bootstrap/configure.py                  | 28 ---------------------
- src/bootstrap/lib.rs                        |  8 ------
- src/bootstrap/sanity.rs                     | 24 ------------------
+ src/bootstrap/lib.rs                        | 10 --------
+ src/bootstrap/sanity.rs                     | 22 ----------------
  src/librustc_target/spec/linux_musl_base.rs | 16 ------------
- 8 files changed, 4 insertions(+), 131 deletions(-)
+ 8 files changed, 3 insertions(+), 130 deletions(-)
 
 diff --git a/config.toml.example b/config.toml.example
-index 5152a6c9..1d411c5c 100644
+index ce21b634..f14a5660 100644
 --- a/config.toml.example
 +++ b/config.toml.example
-@@ -340,9 +340,6 @@
+@@ -352,9 +352,6 @@
  # nightly features
  #channel = "dev"
  
@@ -29,10 +29,10 @@ index 5152a6c9..1d411c5c 100644
  # platforms to ensure that the compiler is usable by default from the build
  # directory (as it links to a number of dynamic libraries). This may not be
 diff --git a/src/bootstrap/cc_detect.rs b/src/bootstrap/cc_detect.rs
-index a4cb81d3..b4247e74 100644
+index a236edf9..54c3cc64 100644
 --- a/src/bootstrap/cc_detect.rs
 +++ b/src/bootstrap/cc_detect.rs
-@@ -86,7 +86,7 @@ pub fn find(build: &mut Build) {
+@@ -97,7 +97,7 @@ pub fn find(build: &mut Build) {
          if let Some(cc) = config.and_then(|c| c.cc.as_ref()) {
              cfg.compiler(cc);
          } else {
@@ -41,7 +41,7 @@ index a4cb81d3..b4247e74 100644
          }
  
          let compiler = cfg.get_compiler();
-@@ -109,7 +109,7 @@ pub fn find(build: &mut Build) {
+@@ -125,7 +125,7 @@ pub fn find(build: &mut Build) {
              cfg.compiler(cxx);
              true
          } else if build.hosts.contains(&target) || build.build == target {
@@ -50,17 +50,15 @@ index a4cb81d3..b4247e74 100644
              true
          } else {
              false
-@@ -136,8 +136,7 @@ pub fn find(build: &mut Build) {
- fn set_compiler(cfg: &mut cc::Build,
-                 compiler: Language,
-                 target: Interned<String>,
--                config: Option<&Target>,
--                build: &Build) {
-+                config: Option<&Target>) {
+@@ -154,7 +154,6 @@ fn set_compiler(
+     compiler: Language,
+     target: Interned<String>,
+     config: Option<&Target>,
+-    build: &Build,
+ ) {
      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
-@@ -177,26 +176,6 @@ fn set_compiler(cfg: &mut cc::Build,
+@@ -196,26 +195,6 @@ fn set_compiler(
              }
          }
  
@@ -88,10 +86,10 @@ index a4cb81d3..b4247e74 100644
      }
  }
 diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
-index 831053bc..3e49d459 100644
+index 65a00db3..01fd2cf3 100644
 --- a/src/bootstrap/compile.rs
 +++ b/src/bootstrap/compile.rs
-@@ -130,18 +130,7 @@ fn copy_third_party_objects(builder: &Builder<'_>, compiler: &Compiler, target:
+@@ -125,18 +125,7 @@ fn copy_third_party_objects(
          target_deps.push(target);
      };
  
@@ -111,7 +109,7 @@ index 831053bc..3e49d459 100644
          let srcdir = builder.wasi_root(target).unwrap().join("lib/wasm32-wasi");
          copy_and_stamp(&srcdir, "crt1.o");
      }
-@@ -227,15 +216,6 @@ pub fn std_cargo(builder: &Builder<'_>,
+@@ -213,15 +202,6 @@ pub fn std_cargo(builder: &Builder<'_>, target: Interned<String>, cargo: &mut Ca
              .arg("--manifest-path")
              .arg(builder.src.join("src/libtest/Cargo.toml"));
  
@@ -128,10 +126,10 @@ index 831053bc..3e49d459 100644
              if let Some(p) = builder.wasi_root(target) {
                  let root = format!("native={}/lib/wasm32-wasi", p.to_str().unwrap());
 diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs
-index 5f2ef01b..c291d3a0 100644
+index 56164b74..8c46334a 100644
 --- a/src/bootstrap/config.rs
 +++ b/src/bootstrap/config.rs
-@@ -130,8 +130,6 @@ pub struct Config {
+@@ -134,8 +134,6 @@ pub struct Config {
      pub print_step_timings: bool,
      pub missing_tools: bool,
  
@@ -140,7 +138,7 @@ index 5f2ef01b..c291d3a0 100644
      pub prefix: Option<PathBuf>,
      pub sysconfdir: Option<PathBuf>,
      pub datadir: Option<PathBuf>,
-@@ -166,7 +164,6 @@ pub struct Target {
+@@ -171,7 +169,6 @@ pub struct Target {
      pub linker: Option<PathBuf>,
      pub ndk: Option<PathBuf>,
      pub crt_static: Option<bool>,
@@ -148,7 +146,7 @@ index 5f2ef01b..c291d3a0 100644
      pub wasi_root: Option<PathBuf>,
      pub qemu_rootfs: Option<PathBuf>,
      pub no_std: bool,
-@@ -306,7 +303,6 @@ struct Rust {
+@@ -322,7 +319,6 @@ struct Rust {
      parallel_compiler: Option<bool>,
      default_linker: Option<String>,
      channel: Option<String>,
@@ -156,15 +154,15 @@ index 5f2ef01b..c291d3a0 100644
      rpath: Option<bool>,
      verbose_tests: Option<bool>,
      optimize_tests: Option<bool>,
-@@ -340,7 +336,6 @@ struct TomlTarget {
+@@ -359,7 +355,6 @@ struct TomlTarget {
      llvm_filecheck: Option<String>,
      android_ndk: Option<String>,
      crt_static: Option<bool>,
 -    musl_root: Option<String>,
      wasi_root: Option<String>,
      qemu_rootfs: Option<String>,
- }
-@@ -559,7 +554,6 @@ impl Config {
+     no_std: Option<bool>,
+@@ -585,7 +580,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();
@@ -172,19 +170,19 @@ index 5f2ef01b..c291d3a0 100644
              config.save_toolstates = rust.save_toolstates.clone().map(PathBuf::from);
              set(&mut config.deny_warnings, flags.deny_warnings.or(rust.deny_warnings));
              set(&mut config.backtrace_on_ice, rust.backtrace_on_ice);
-@@ -595,7 +589,6 @@ impl Config {
+@@ -625,7 +619,6 @@ impl Config {
                  target.ranlib = cfg.ranlib.clone().map(PathBuf::from);
                  target.linker = cfg.linker.clone().map(PathBuf::from);
-                 target.crt_static = cfg.crt_static.clone();
+                 target.crt_static = cfg.crt_static;
 -                target.musl_root = cfg.musl_root.clone().map(PathBuf::from);
                  target.wasi_root = cfg.wasi_root.clone().map(PathBuf::from);
                  target.qemu_rootfs = cfg.qemu_rootfs.clone().map(PathBuf::from);
  
 diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py
-index bb6041d7..73f3781c 100755
+index 2a46c563..025928b9 100755
 --- a/src/bootstrap/configure.py
 +++ b/src/bootstrap/configure.py
-@@ -109,34 +109,6 @@ v("aarch64-linux-android-ndk", "target.aarch64-linux-android.android-ndk",
+@@ -110,34 +110,6 @@ v("aarch64-linux-android-ndk", "target.aarch64-linux-android.android-ndk",
    "aarch64-linux-android NDK standalone path")
  v("x86_64-linux-android-ndk", "target.x86_64-linux-android.android-ndk",
    "x86_64-linux-android NDK standalone path")
@@ -220,29 +218,31 @@ index bb6041d7..73f3781c 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 e9b7976d..c4203e83 100644
+index c7e63990..77bbb2cd 100644
 --- a/src/bootstrap/lib.rs
 +++ b/src/bootstrap/lib.rs
-@@ -827,14 +827,6 @@ impl Build {
+@@ -845,16 +845,6 @@ impl Build {
          }
      }
  
 -    /// Returns the "musl root" for this `target`, if defined
 -    fn musl_root(&self, target: Interned<String>) -> Option<&Path> {
--        self.config.target_config.get(&target)
+-        self.config
+-            .target_config
+-            .get(&target)
 -            .and_then(|t| t.musl_root.as_ref())
--            .or(self.config.musl_root.as_ref())
+-            .or_else(|| self.config.musl_root.as_ref())
 -            .map(|p| &**p)
 -    }
 -
      /// Returns the sysroot for the wasi target, if defined
      fn wasi_root(&self, target: Interned<String>) -> Option<&Path> {
-         self.config.target_config.get(&target)
+         self.config.target_config.get(&target).and_then(|t| t.wasi_root.as_ref()).map(|p| &**p)
 diff --git a/src/bootstrap/sanity.rs b/src/bootstrap/sanity.rs
-index bffe748f..3b109548 100644
+index 530e74da..8ec9f046 100644
 --- a/src/bootstrap/sanity.rs
 +++ b/src/bootstrap/sanity.rs
-@@ -187,30 +187,6 @@ pub fn check(build: &mut Build) {
+@@ -201,28 +201,6 @@ pub fn check(build: &mut Build) {
              }
          }
  
@@ -251,22 +251,20 @@ index bffe748f..3b109548 100644
 -            // If this is a native target (host is also musl) and no musl-root is given,
 -            // fall back to the system toolchain in /usr before giving up
 -            if build.musl_root(*target).is_none() && build.config.build == *target {
--                let target = build.config.target_config.entry(target.clone())
--                    .or_default();
+-                let target = build.config.target_config.entry(target.clone()).or_default();
 -                target.musl_root = Some("/usr".into());
 -            }
 -            match build.musl_root(*target) {
 -                Some(root) => {
 -                    if fs::metadata(root.join("lib/libc.a")).is_err() {
--                        panic!("couldn't find libc.a in musl dir: {}",
--                               root.join("lib").display());
+-                        panic!("couldn't find libc.a in musl dir: {}", root.join("lib").display());
 -                    }
 -                }
--                None => {
--                    panic!("when targeting MUSL either the rust.musl-root \
+-                None => panic!(
+-                    "when targeting MUSL either the rust.musl-root \
 -                            option or the target.$TARGET.musl-root option must \
--                            be specified in config.toml")
--                }
+-                            be specified in config.toml"
+-                ),
 -            }
 -        }
 -
@@ -307,5 +305,5 @@ index e294e639..58ae91a9 100644
      base.crt_static_default = true;
      // These targets allow the user to choose between static and dynamic linking.
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0005-Prefer-libgcc_eh-over-libunwind-for-musl.patch b/srcpkgs/rust/patches/0005-Prefer-libgcc_eh-over-libunwind-on-musl.patch
similarity index 67%
rename from srcpkgs/rust/patches/0005-Prefer-libgcc_eh-over-libunwind-for-musl.patch
rename to srcpkgs/rust/patches/0005-Prefer-libgcc_eh-over-libunwind-on-musl.patch
index a738e8c4bc1..0f65179eb40 100644
--- a/srcpkgs/rust/patches/0005-Prefer-libgcc_eh-over-libunwind-for-musl.patch
+++ b/srcpkgs/rust/patches/0005-Prefer-libgcc_eh-over-libunwind-on-musl.patch
@@ -1,25 +1,24 @@
-From 6c6ccb3928deffd97a75ef2d9417aae467cd7031 Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Sat, 21 Dec 2019 16:49:07 +0100
-Subject: [PATCH 05/16] Prefer libgcc_eh over libunwind for musl
+From a640bce17d908a0691d53f22e5257353f694d9b6 Mon Sep 17 00:00:00 2001
+From: q66 <daniel@octaforge.org>
+Date: Sun, 3 May 2020 17:55:50 +0200
+Subject: [PATCH 05/15] Prefer libgcc_eh over libunwind on musl
 
-+ @q66 changes to smaeul's original patch for Void's musl setup
 ---
- src/libunwind/build.rs | 17 ++---------------
+ src/libunwind/build.rs | 16 ++--------------
  src/libunwind/lib.rs   |  2 +-
- 2 files changed, 3 insertions(+), 16 deletions(-)
+ 2 files changed, 3 insertions(+), 15 deletions(-)
 
 diff --git a/src/libunwind/build.rs b/src/libunwind/build.rs
-index b8db16f8..0c69b9d2 100644
+index a24808b3..a1250889 100644
 --- a/src/libunwind/build.rs
 +++ b/src/libunwind/build.rs
-@@ -5,15 +5,11 @@ fn main() {
+@@ -5,15 +5,12 @@ fn main() {
      let target = env::var("TARGET").expect("TARGET was not set");
  
-     if cfg!(feature = "llvm-libunwind") &&
--        ((target.contains("linux") && !target.contains("musl")) ||
--         target.contains("fuchsia")) {
-+        (target.contains("linux") || target.contains("fuchsia")) {
+     if cfg!(feature = "llvm-libunwind")
+-        && ((target.contains("linux") && !target.contains("musl")) || target.contains("fuchsia"))
++        && (target.contains("linux") || target.contains("fuchsia"))
+     {
          // Build the unwinding from libunwind C/C++ source code.
          llvm_libunwind::compile();
      } else if target.contains("linux") {
@@ -31,7 +30,7 @@ index b8db16f8..0c69b9d2 100644
              println!("cargo:rustc-link-lib=gcc_s");
          }
      } else if target.contains("freebsd") {
-@@ -105,15 +101,6 @@ mod llvm_libunwind {
+@@ -105,15 +102,6 @@ mod llvm_libunwind {
              cfg.file(root.join("src").join(src));
          }
  
@@ -48,18 +47,18 @@ index b8db16f8..0c69b9d2 100644
      }
  }
 diff --git a/src/libunwind/lib.rs b/src/libunwind/lib.rs
-index 8d916447..6d653d41 100644
+index 18d41be7..17f73d69 100644
 --- a/src/libunwind/lib.rs
 +++ b/src/libunwind/lib.rs
-@@ -21,7 +21,7 @@ cfg_if::cfg_if! {
+@@ -19,7 +19,7 @@ cfg_if::cfg_if! {
  }
  
  #[cfg(target_env = "musl")]
 -#[link(name = "unwind", kind = "static", cfg(target_feature = "crt-static"))]
 +#[link(name = "gcc_eh", cfg(target_feature = "crt-static"))]
  #[link(name = "gcc_s", cfg(not(target_feature = "crt-static")))]
- extern {}
+ extern "C" {}
  
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0006-Fix-zero-sized-aggregate-ABI-on-powerpc.patch b/srcpkgs/rust/patches/0006-Fix-zero-sized-aggregate-ABI-on-powerpc.patch
deleted file mode 100644
index fded751ef39..00000000000
--- a/srcpkgs/rust/patches/0006-Fix-zero-sized-aggregate-ABI-on-powerpc.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From d54189d6441d59ba623b561438e3ce0664ab2101 Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Sat, 21 Dec 2019 16:55:07 +0100
-Subject: [PATCH 06/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 c7278dc4..2e5ea499 100644
---- a/src/librustc/ty/layout.rs
-+++ b/src/librustc/ty/layout.rs
-@@ -2576,12 +2576,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,
-@@ -2650,11 +2649,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;
-                 }
-             }
--- 
-2.25.0
-
diff --git a/srcpkgs/rust/patches/0007-test-use-extern-for-plugins-Don-t-assume-multilib.patch b/srcpkgs/rust/patches/0006-test-use-extern-for-plugins-Don-t-assume-multilib.patch
similarity index 86%
rename from srcpkgs/rust/patches/0007-test-use-extern-for-plugins-Don-t-assume-multilib.patch
rename to srcpkgs/rust/patches/0006-test-use-extern-for-plugins-Don-t-assume-multilib.patch
index 05bfa3a75c3..c80fe155224 100644
--- a/srcpkgs/rust/patches/0007-test-use-extern-for-plugins-Don-t-assume-multilib.patch
+++ b/srcpkgs/rust/patches/0006-test-use-extern-for-plugins-Don-t-assume-multilib.patch
@@ -1,7 +1,7 @@
-From 07274f2e91b0d91102dcb5397783295d7a27b8b2 Mon Sep 17 00:00:00 2001
+From e44838dabefa1a62578895b4465717f7be8a7a86 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/16] test/use-extern-for-plugins: Don't assume multilib
+Subject: [PATCH 06/15] test/use-extern-for-plugins: Don't assume multilib
 
 ---
  src/test/run-make-fulldeps/use-extern-for-plugins/Makefile | 7 +------
@@ -26,5 +26,5 @@ index 838b1a27..94fa9f6d 100644
  all:
  	$(RUSTC) foo.rs -C extra-filename=-host
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch b/srcpkgs/rust/patches/0007-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
similarity index 84%
rename from srcpkgs/rust/patches/0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
rename to srcpkgs/rust/patches/0007-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
index b4bc17df027..8a9986f6411 100644
--- a/srcpkgs/rust/patches/0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
+++ b/srcpkgs/rust/patches/0007-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
@@ -1,7 +1,7 @@
-From d1ac85fbff21dc1d808308cc6f5a90b0cc562f2f Mon Sep 17 00:00:00 2001
+From cde014a1108b7d1cea85100cad48b12297267405 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/16] test/sysroot-crates-are-unstable: Fix test when rpath
+Subject: [PATCH 07/15] test/sysroot-crates-are-unstable: Fix test when rpath
  is disabled
 
 Without this environment var, the test can't run rustc to find
@@ -21,5 +21,5 @@ index a35174b3..9e770706 100644
 -	python2.7 test.py
 +	env '$(HOST_RPATH_ENV)' python2.7 test.py
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0009-Ignore-broken-and-non-applicable-tests.patch b/srcpkgs/rust/patches/0008-Ignore-broken-and-non-applicable-tests.patch
similarity index 95%
rename from srcpkgs/rust/patches/0009-Ignore-broken-and-non-applicable-tests.patch
rename to srcpkgs/rust/patches/0008-Ignore-broken-and-non-applicable-tests.patch
index 187003cf38b..f9d64723903 100644
--- a/srcpkgs/rust/patches/0009-Ignore-broken-and-non-applicable-tests.patch
+++ b/srcpkgs/rust/patches/0008-Ignore-broken-and-non-applicable-tests.patch
@@ -1,7 +1,7 @@
-From 6cbefd6ad105c833052919319db3564966572ceb Mon Sep 17 00:00:00 2001
+From c63745a2777648d530898bae5af9d25266472b05 Mon Sep 17 00:00:00 2001
 From: Samuel Holland <samuel@sholland.org>
 Date: Sat, 21 Dec 2019 17:00:40 +0100
-Subject: [PATCH 09/16] Ignore broken and non-applicable tests
+Subject: [PATCH 08/15] 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)
@@ -62,7 +62,7 @@ index 9e770706..6d92ec5c 100644
  
  all:
 diff --git a/src/test/ui/env-funky-keys.rs b/src/test/ui/env-funky-keys.rs
-index 4faceb53..09764dc3 100644
+index c5c824ac..f3fe047a 100644
 --- a/src/test/ui/env-funky-keys.rs
 +++ b/src/test/ui/env-funky-keys.rs
 @@ -1,6 +1,7 @@
@@ -87,5 +87,5 @@ index b28f742a..3ee4ccce 100644
  // Test that the simd_bitmask intrinsic produces correct results.
  
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0010-Link-stage2-tools-dynamically-to-libstd.patch b/srcpkgs/rust/patches/0009-Link-stage2-tools-dynamically-to-libstd.patch
similarity index 71%
rename from srcpkgs/rust/patches/0010-Link-stage2-tools-dynamically-to-libstd.patch
rename to srcpkgs/rust/patches/0009-Link-stage2-tools-dynamically-to-libstd.patch
index b63e27ebb42..40f896bb980 100644
--- a/srcpkgs/rust/patches/0010-Link-stage2-tools-dynamically-to-libstd.patch
+++ b/srcpkgs/rust/patches/0009-Link-stage2-tools-dynamically-to-libstd.patch
@@ -1,7 +1,7 @@
-From cdb82589b4be62c11186e4645a5fd358f5c55421 Mon Sep 17 00:00:00 2001
+From f5dad49f112151bb0ee74570e971bd475cbec128 Mon Sep 17 00:00:00 2001
 From: q66 <daniel@octaforge.org>
-Date: Sat, 21 Dec 2019 17:01:59 +0100
-Subject: [PATCH 10/16] Link stage2 tools dynamically to libstd
+Date: Sun, 3 May 2020 18:00:09 +0200
+Subject: [PATCH 09/15] Link stage2 tools dynamically to libstd
 
 Replaces an older patch by Samuel Holland. The RUSTC_NO_PREFER_DYNAMIC
 env var was removed and replaced with the following logic in builder.rs.
@@ -14,10 +14,10 @@ be statically linked for convenience.
  1 file changed, 2 insertions(+)
 
 diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
-index 8b0ad169..4bc13ac2 100644
+index eb0199fd..0ec7cbd8 100644
 --- a/src/bootstrap/builder.rs
 +++ b/src/bootstrap/builder.rs
-@@ -1228,6 +1228,8 @@ impl<'a> Builder<'a> {
+@@ -1236,6 +1236,8 @@ impl<'a> Builder<'a> {
          // linking all deps statically into the dylib.
          if let Mode::Std | Mode::Rustc | Mode::Codegen = mode {
              rustflags.arg("-Cprefer-dynamic");
@@ -25,7 +25,7 @@ index 8b0ad169..4bc13ac2 100644
 +            rustflags.arg("-Cprefer-dynamic");
          }
  
-         Cargo {
+         // When building incrementally we default to a lower ThinLTO import limit
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0011-Move-debugger-scripts-to-usr-share-rust.patch b/srcpkgs/rust/patches/0010-Move-debugger-scripts-to-usr-share-rust.patch
similarity index 89%
rename from srcpkgs/rust/patches/0011-Move-debugger-scripts-to-usr-share-rust.patch
rename to srcpkgs/rust/patches/0010-Move-debugger-scripts-to-usr-share-rust.patch
index 51ac2cdf4d7..a48c6ff1c4a 100644
--- a/srcpkgs/rust/patches/0011-Move-debugger-scripts-to-usr-share-rust.patch
+++ b/srcpkgs/rust/patches/0010-Move-debugger-scripts-to-usr-share-rust.patch
@@ -1,7 +1,7 @@
-From be61ad716d24f7fb0ee52b234cbf922d09bc686a Mon Sep 17 00:00:00 2001
+From 9b0c14783127e195d7bd54ca2c0c498a46714964 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/16] Move debugger scripts to /usr/share/rust
+Subject: [PATCH 10/15] Move debugger scripts to /usr/share/rust
 
 ---
  src/bootstrap/dist.rs | 2 +-
@@ -10,10 +10,10 @@ Subject: [PATCH 11/16] 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 02533944..375f2413 100644
+index 8215211e..05a173b4 100644
 --- a/src/bootstrap/dist.rs
 +++ b/src/bootstrap/dist.rs
-@@ -593,7 +593,7 @@ impl Step for DebuggerScripts {
+@@ -603,7 +603,7 @@ impl Step for DebuggerScripts {
      fn run(self, builder: &Builder<'_>) {
          let host = self.host;
          let sysroot = self.sysroot;
@@ -49,5 +49,5 @@ index 7b9b40e6..e471db36 100755
  category_enable="type category enable Rust"
  
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0012-Dynamically-link-libc-on-musl-by-default.patch b/srcpkgs/rust/patches/0011-Dynamically-link-libc-on-musl-by-default.patch
similarity index 87%
rename from srcpkgs/rust/patches/0012-Dynamically-link-libc-on-musl-by-default.patch
rename to srcpkgs/rust/patches/0011-Dynamically-link-libc-on-musl-by-default.patch
index 370e0709ebe..0492242be10 100644
--- a/srcpkgs/rust/patches/0012-Dynamically-link-libc-on-musl-by-default.patch
+++ b/srcpkgs/rust/patches/0011-Dynamically-link-libc-on-musl-by-default.patch
@@ -1,7 +1,7 @@
-From f277b9c07cd6d096fad370a76c6dfdfb03aa3d1e Mon Sep 17 00:00:00 2001
+From d72ad9c226b4ed225c23d88ec5dbe6ba321b37ad Mon Sep 17 00:00:00 2001
 From: q66 <daniel@octaforge.org>
 Date: Sat, 21 Dec 2019 17:04:13 +0100
-Subject: [PATCH 12/16] Dynamically link libc on musl by default
+Subject: [PATCH 11/15] Dynamically link libc on musl by default
 
 ---
  src/librustc_target/spec/linux_musl_base.rs | 3 +--
@@ -22,5 +22,5 @@ index 58ae91a9..1fae72d6 100644
      base.crt_static_respected = true;
  
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0013-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch b/srcpkgs/rust/patches/0012-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch
similarity index 84%
rename from srcpkgs/rust/patches/0013-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch
rename to srcpkgs/rust/patches/0012-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch
index b4cb7addfca..e0b567c419e 100644
--- a/srcpkgs/rust/patches/0013-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch
+++ b/srcpkgs/rust/patches/0012-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch
@@ -1,7 +1,7 @@
-From 191b56a4e8c307e531a446f8cceb4ecc732beace Mon Sep 17 00:00:00 2001
+From e363a0e0ff7ffc8bd83f72ec1a20d289996b6370 Mon Sep 17 00:00:00 2001
 From: q66 <daniel@octaforge.org>
-Date: Sat, 21 Dec 2019 17:04:55 +0100
-Subject: [PATCH 13/16] Fix dynamic linkage of musl libc for the libc crate
+Date: Sun, 3 May 2020 18:02:03 +0200
+Subject: [PATCH 12/15] Fix dynamic linkage of musl libc for the libc crate
 
 ---
  vendor/libc/src/lib.rs      | 1 +
@@ -9,7 +9,7 @@ Subject: [PATCH 13/16] Fix dynamic linkage of musl libc for the libc crate
  2 files changed, 4 insertions(+), 3 deletions(-)
 
 diff --git a/vendor/libc/src/lib.rs b/vendor/libc/src/lib.rs
-index 3255303e..bfbd2d7a 100644
+index 0b1496af..7f7e85a7 100644
 --- a/vendor/libc/src/lib.rs
 +++ b/vendor/libc/src/lib.rs
 @@ -33,6 +33,7 @@
@@ -18,8 +18,8 @@ index 3255303e..bfbd2d7a 100644
  #![cfg_attr(feature = "rustc-dep-of-std", no_core)]
 +#![cfg_attr(feature = "rustc-dep-of-std", feature(static_nobundle))]
  #![cfg_attr(target_os = "redox", feature(static_nobundle))]
+ #![cfg_attr(libc_const_extern_fn, feature(const_extern_fn))]
  
- #[macro_use]
 diff --git a/vendor/libc/src/unix/mod.rs b/vendor/libc/src/unix/mod.rs
 index 238da24b..ffb05ee7 100644
 --- a/vendor/libc/src/unix/mod.rs
@@ -40,5 +40,5 @@ index 238da24b..ffb05ee7 100644
      } else if #[cfg(target_os = "emscripten")] {
          #[link(name = "c")]
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0014-round-result-of-highest-as-f64-.log-2.0.patch b/srcpkgs/rust/patches/0013-round-result-of-highest-as-f64-.log-2.0.patch
similarity index 87%
rename from srcpkgs/rust/patches/0014-round-result-of-highest-as-f64-.log-2.0.patch
rename to srcpkgs/rust/patches/0013-round-result-of-highest-as-f64-.log-2.0.patch
index 2fab5da83b2..46fac863858 100644
--- a/srcpkgs/rust/patches/0014-round-result-of-highest-as-f64-.log-2.0.patch
+++ b/srcpkgs/rust/patches/0013-round-result-of-highest-as-f64-.log-2.0.patch
@@ -1,7 +1,7 @@
-From a5843bb05ebd94b8acaa7a011c1db7abdc112e5c Mon Sep 17 00:00:00 2001
+From d74af8923022dd369315ada0a06e467dffd127cf Mon Sep 17 00:00:00 2001
 From: Michael Hudson-Doyle <michael.hudson@canonical.com>
 Date: Wed, 13 Mar 2019 15:55:30 +1300
-Subject: [PATCH 14/16] round result of (highest as f64).log(2.0)
+Subject: [PATCH 13/15] round result of (highest as f64).log(2.0)
 
 Even though (1024f64).log(2.0) has an exact, representable, value, with
 rustc 1.32 on i386 it comes out as +9.999999999999999985 with
@@ -25,5 +25,5 @@ index 9c9f237c..153031a2 100644
      let uints = (0..(highest + 1))
          .chain((first2..64).map(|i| 2u64.pow(i)))
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0014-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch b/srcpkgs/rust/patches/0014-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch
new file mode 100644
index 00000000000..fb01e60fa5e
--- /dev/null
+++ b/srcpkgs/rust/patches/0014-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch
@@ -0,0 +1,31 @@
+From 07efbc3bdd67de4e13b0f3f4df853a9de0800ec3 Mon Sep 17 00:00:00 2001
+From: q66 <daniel@octaforge.org>
+Date: Sun, 3 May 2020 18:05:22 +0200
+Subject: [PATCH 14/15] Void: fix linkage against host/target LLVM in cross
+ setups
+
+---
+ src/librustc_llvm/build.rs | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/librustc_llvm/build.rs b/src/librustc_llvm/build.rs
+index 9b4f03b3..d0167838 100644
+--- a/src/librustc_llvm/build.rs
++++ b/src/librustc_llvm/build.rs
+@@ -217,9 +217,11 @@ fn main() {
+     for lib in output(&mut cmd).split_whitespace() {
+         if is_crossed {
+             if lib.starts_with("-LIBPATH:") {
+-                println!("cargo:rustc-link-search=native={}", lib[9..].replace(&host, &target));
++                println!("cargo:rustc-link-search=native={}{}",
++                         env::var("XBPS_CROSS_BASE").unwrap(), &lib[9..]);
+             } else if lib.starts_with("-L") {
+-                println!("cargo:rustc-link-search=native={}", lib[2..].replace(&host, &target));
++                println!("cargo:rustc-link-search=native={}{}",
++                         env::var("XBPS_CROSS_BASE").unwrap(), &lib[2..]);
+             }
+         } else if lib.starts_with("-LIBPATH:") {
+             println!("cargo:rustc-link-search=native={}", &lib[9..]);
+-- 
+2.26.2
+
diff --git a/srcpkgs/rust/patches/0016-Use-ELFv2-ABI-on-all-powerpc64-targets.patch b/srcpkgs/rust/patches/0015-Use-ELFv2-ABI-on-all-powerpc64-targets.patch
similarity index 65%
rename from srcpkgs/rust/patches/0016-Use-ELFv2-ABI-on-all-powerpc64-targets.patch
rename to srcpkgs/rust/patches/0015-Use-ELFv2-ABI-on-all-powerpc64-targets.patch
index 94bad4b8795..bb9269e43bb 100644
--- a/srcpkgs/rust/patches/0016-Use-ELFv2-ABI-on-all-powerpc64-targets.patch
+++ b/srcpkgs/rust/patches/0015-Use-ELFv2-ABI-on-all-powerpc64-targets.patch
@@ -1,36 +1,43 @@
-From 923d16b37c381d73ce0f88403256b26af3edf1bd Mon Sep 17 00:00:00 2001
+From c6b54a373e74a1e4ce64f349b5b69105f2bc1a49 Mon Sep 17 00:00:00 2001
 From: q66 <daniel@octaforge.org>
-Date: Sat, 21 Dec 2019 17:06:55 +0100
-Subject: [PATCH 16/16] Use ELFv2 ABI on all powerpc64 targets
+Date: Sun, 3 May 2020 18:08:09 +0200
+Subject: [PATCH 15/15] Use ELFv2 ABI on all powerpc64 targets
 
 This patches librustc_target so that ELFv2 is used everywhere, matching our
 LLVM. While this is not perfect (it does not allow rustc to compile legacy
 binaries), rustc never requests specific ABI from llvm in the first place,
 so at least match the environment we have.
 ---
- src/librustc_target/abi/call/powerpc64.rs               | 2 +-
+ src/librustc_target/abi/call/powerpc64.rs               | 9 +--------
  src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs | 6 +-----
- 2 files changed, 2 insertions(+), 6 deletions(-)
+ 2 files changed, 2 insertions(+), 13 deletions(-)
 
 diff --git a/src/librustc_target/abi/call/powerpc64.rs b/src/librustc_target/abi/call/powerpc64.rs
-index fe459480..997593b9 100644
+index 93c4e97d..96b02486 100644
 --- a/src/librustc_target/abi/call/powerpc64.rs
 +++ b/src/librustc_target/abi/call/powerpc64.rs
-@@ -117,7 +117,7 @@ pub fn compute_abi_info<'a, Ty, C>(cx: &C, fn_abi: &mut FnAbi<'a, Ty>)
-     where Ty: TyLayoutMethods<'a, C> + Copy,
-           C: LayoutOf<Ty = Ty, TyLayout = TyLayout<'a, Ty>> + HasDataLayout + HasTargetSpec
+@@ -119,14 +119,7 @@ where
+     Ty: TyLayoutMethods<'a, C> + Copy,
+     C: LayoutOf<Ty = Ty, TyLayout = TyLayout<'a, Ty>> + HasDataLayout + HasTargetSpec,
  {
 -    let abi = if cx.target_spec().target_env == "musl" {
-+    let abi = if cx.target_spec().target_env == "musl" || cx.target_spec().target_env == "gnu" {
-         ELFv2
-     } else {
-         match cx.data_layout().endian {
+-        ELFv2
+-    } else {
+-        match cx.data_layout().endian {
+-            Endian::Big => ELFv1,
+-            Endian::Little => ELFv2,
+-        }
+-    };
++    let abi = ELFv2;
+ 
+     if !fn_abi.ret.is_ignore() {
+         classify_ret(cx, &mut fn_abi.ret, abi);
 diff --git a/src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs b/src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs
-index 89e68ab3..77659cdd 100644
+index 5306d905..c63eed85 100644
 --- a/src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs
 +++ b/src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs
 @@ -1,4 +1,4 @@
--use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult, RelroLevel};
+-use crate::spec::{LinkerFlavor, RelroLevel, Target, TargetOptions, TargetResult};
 +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
  
  pub fn target() -> TargetResult {
@@ -47,5 +54,5 @@ index 89e68ab3..77659cdd 100644
          llvm_target: "powerpc64-unknown-linux-gnu".to_string(),
          target_endian: "big".to_string(),
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0015-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch b/srcpkgs/rust/patches/0015-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch
deleted file mode 100644
index 1d10ac2f1f3..00000000000
--- a/srcpkgs/rust/patches/0015-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From e83770856411e2ff780551143fc6c26a8552741e Mon Sep 17 00:00:00 2001
-From: q66 <daniel@octaforge.org>
-Date: Sat, 21 Dec 2019 17:06:17 +0100
-Subject: [PATCH 15/16] Void: fix linkage against host/target LLVM in cross
- setups
-
----
- src/librustc_llvm/build.rs | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/librustc_llvm/build.rs b/src/librustc_llvm/build.rs
-index c5d5f066..91799142 100644
---- a/src/librustc_llvm/build.rs
-+++ b/src/librustc_llvm/build.rs
-@@ -225,8 +225,8 @@ fn main() {
-             println!("cargo:rustc-link-search=native={}", &lib[9..]);
-         } else if is_crossed {
-             if lib.starts_with("-L") {
--                println!("cargo:rustc-link-search=native={}",
--                         lib[2..].replace(&host, &target));
-+                println!("cargo:rustc-link-search=native={}{}",
-+                         env::var("XBPS_CROSS_BASE").unwrap(), &lib[2..]);
-             }
-         } else if lib.starts_with("-l") {
-             println!("cargo:rustc-link-lib={}", &lib[2..]);
--- 
-2.25.0
-
diff --git a/srcpkgs/rust/patches/497f879b1e24c369362bcd821959ffabc50a8a31.patch b/srcpkgs/rust/patches/497f879b1e24c369362bcd821959ffabc50a8a31.patch
new file mode 100644
index 00000000000..7432cd705de
--- /dev/null
+++ b/srcpkgs/rust/patches/497f879b1e24c369362bcd821959ffabc50a8a31.patch
@@ -0,0 +1,28 @@
+Upstream: Yes
+From 497f879b1e24c369362bcd821959ffabc50a8a31 Mon Sep 17 00:00:00 2001
+From: Nikita Popov <nikita.ppv@gmail.com>
+Date: Mon, 2 Mar 2020 22:37:55 +0100
+Subject: [PATCH] Update CreateMemSet() usage for LLVM 10
+
+---
+ src/rustllvm/RustWrapper.cpp | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp
+index 25cfee3373dc4..799adb418822d 100644
+--- a/src/rustllvm/RustWrapper.cpp
++++ b/src/rustllvm/RustWrapper.cpp
+@@ -1333,8 +1333,13 @@ extern "C" LLVMValueRef LLVMRustBuildMemSet(LLVMBuilderRef B,
+                                             LLVMValueRef Dst, unsigned DstAlign,
+                                             LLVMValueRef Val,
+                                             LLVMValueRef Size, bool IsVolatile) {
++#if LLVM_VERSION_GE(10, 0)
++  return wrap(unwrap(B)->CreateMemSet(
++      unwrap(Dst), unwrap(Val), unwrap(Size), MaybeAlign(DstAlign), IsVolatile));
++#else
+   return wrap(unwrap(B)->CreateMemSet(
+       unwrap(Dst), unwrap(Val), unwrap(Size), DstAlign, IsVolatile));
++#endif
+ }
+ 
+ extern "C" LLVMValueRef
diff --git a/srcpkgs/rust/patches/a94fa896cc92d5e0678376cf5aa8b64af0899732.patch b/srcpkgs/rust/patches/a94fa896cc92d5e0678376cf5aa8b64af0899732.patch
new file mode 100644
index 00000000000..16f05f5fb85
--- /dev/null
+++ b/srcpkgs/rust/patches/a94fa896cc92d5e0678376cf5aa8b64af0899732.patch
@@ -0,0 +1,28 @@
+Reason: Fixes LLVM10
+Upstream: Yes
+From a94fa896cc92d5e0678376cf5aa8b64af0899732 Mon Sep 17 00:00:00 2001
+From: Nikita Popov <nikita.ppv@gmail.com>
+Date: Tue, 4 Feb 2020 20:35:50 +0100
+Subject: [PATCH] Fix timeTraceProfilerInitialize for LLVM 10
+
+---
+ src/rustllvm/PassWrapper.cpp | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp
+index 90d24d20737db..9e8614e3b6d34 100644
+--- a/src/rustllvm/PassWrapper.cpp
++++ b/src/rustllvm/PassWrapper.cpp
+@@ -67,7 +67,11 @@ extern "C" void LLVMInitializePasses() {
+ }
+ 
+ extern "C" void LLVMTimeTraceProfilerInitialize() {
+-#if LLVM_VERSION_GE(9, 0)
++#if LLVM_VERSION_GE(10, 0)
++  timeTraceProfilerInitialize(
++      /* TimeTraceGranularity */ 0,
++      /* ProcName */ "rustc");
++#elif LLVM_VERSION_GE(9, 0)
+   timeTraceProfilerInitialize();
+ #endif
+ }
diff --git a/srcpkgs/rust/patches/need-ssp_nonshared.patch b/srcpkgs/rust/patches/need-ssp_nonshared.patch
new file mode 100644
index 00000000000..2a852400abf
--- /dev/null
+++ b/srcpkgs/rust/patches/need-ssp_nonshared.patch
@@ -0,0 +1,11 @@
+--- rustc-1.41.0-src/src/libstd/build.rs.orig	2020-02-08 17:05:40.390387794 +0200
++++ rustc-1.41.0-src/src/libstd/build.rs	2020-02-08 17:09:46.844426452 +0200
+@@ -11,6 +11,8 @@
+             println!("cargo:rustc-link-lib=dl");
+             println!("cargo:rustc-link-lib=rt");
+             println!("cargo:rustc-link-lib=pthread");
++        } else {
++            println!("cargo:rustc-link-lib=ssp_nonshared");
+         }
+     } else if target.contains("freebsd") {
+         println!("cargo:rustc-link-lib=execinfo");
diff --git a/srcpkgs/rust/template b/srcpkgs/rust/template
index 0215eeaf6c5..db7d479eaa8 100644
--- a/srcpkgs/rust/template
+++ b/srcpkgs/rust/template
@@ -4,31 +4,32 @@
 # Permission to use rust and cargo trademark is granted.
 # See: https://github.com/rust-lang/core-team/issues/4
 pkgname=rust
-version=1.41.1
-revision=2
-_rust_dist_version=1.40.0
-_cargo_dist_version=0.41.0
+version=1.43.1
+revision=1
+_rust_dist_version=1.43.1
+_cargo_dist_version=0.44.0
 # Always make sure custom distfiles used for bootstrap are
 # uploaded to https://alpha.de.repo.voidlinux.org/distfiles/
 wrksrc="rustc-${version}-src"
 hostmakedepends="cmake curl pkg-config python3 tar"
-makedepends="libffi-devel ncurses-devel libxml2-devel zlib-devel llvm9"
+makedepends="libffi-devel ncurses-devel libxml2-devel zlib-devel llvm10"
 depends="rust-std"
 short_desc="Safe, concurrent, practical systems language"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="MIT, Apache-2.0"
 homepage="https://www.rust-lang.org/"
 distfiles="https://static.rust-lang.org/dist/rustc-${version}-src.tar.gz"
-checksum=38c93d016e6d3e083aa15e8f65511d3b4983072c0218a529f5ee94dd1de84573
+checksum=cde177b4a8c687da96f20de27630a1eb55c9d146a15e4c900d5c31cd3c3ac41d
 lib32disabled=yes
 patch_args="-Np1"
 
-build_options="static_llvm"
+build_options="bindist"
+desc_option_bindist="Generate tarballs for bootstrap"
 
 _bootstrap_dir="stage0-bootstrap"
 
 if [ "$CROSS_BUILD" ]; then
-	hostmakedepends+=" cargo llvm9"
+	hostmakedepends+=" cargo llvm10"
 	# These are required for building the buildhost's stage0/1
 	hostmakedepends+=" libffi-devel libxml2-devel ncurses-devel zlib-devel"
 else
@@ -50,57 +51,57 @@ else
 	case "$XBPS_MACHINE" in
 		i686)
 			checksum+="
-			 257e4789043098a5e3b4fa85ea988019f37d640a10f83d39ada00fb23e057b8a
-			 beab29565d12a6b9db4ef471c34d4c034295760095f7edc3f7b6c51fc08589a0
-			 c48bc132f4025ff39b1b6dc52aef9d406c3f926ce05fe92d943ceab7a5fd6058"
+			 831169907f910358bb30659193efac1d60ecc03161ef8fd08ea7ba9b04d3a760
+			 934fbb7ef1337ad0a10d57bc69f2d5fa44b086e59963d3378959023e8286085a
+			 c7b4045b2001be2e97b0b08dfaee02097aea0e8a9983b42585d733cfa1e69683"
 			;;
 		x86_64)
 			checksum+="
-			 b1c00618b7a98156e88b14682508a503284f85748eab23de749a20dcc8847111
-			 5a0b14a51f51b0194f70a2023749d9cb49c3b2e11f0d4c8232960b91fad336ac
-			 9b6ae643fa240c5ecbc1dc390f4020b6a683f25bac6f7437ebd4b9d32a8d0b6c"
+			 c8f3ac271f20cae5259fe01f91e6906d9ef435b1fd1836daaefb3b176ba00e29
+			 e6ebb6a7ae80c297eac1bbab50864c030886b35b790220ced100be5e697688aa
+			 b0b97b21aae588dd7c73508dcd14ae094f45d5c5b33299859adde1b2e241271c"
 			;;
 		x86_64-musl)
 			checksum+="
-			 769b9e31557fcc0ea2a661f88b679d3dbd62b537807c7b3c75ac6816a1be4fa3
-			 c647bb7f399b3d18e345b2dab1fb073470582a9298e83d8648f6661544df7279
-			 848646326474392bdac70a5bfa06efda4c36e2bbbf088f07456f98c7575844e1"
+			 28d73b5f899d671453b40df5c42f1d6b99d2488bed725a7fbe08c432d32647ad
+			 423e2b86f31d6a9c692941f04b88a6b69a33a04a61bfe8ccad42fe370e6a8cac
+			 ba6da59754bc113eb61bcfdb384ef3b458a16fe212124252830d83968480a07b"
 			;;
 		ppc64le)
 			checksum+="
-			 aa07a07ad272de825da8c18ad8dc4143a25bd28e5538d68c3bced53f060432b4
-			 4eb3141fb6c3d3e101b5d4493664c9a01d4bb9eebdf4b96f5c26a81188c2452d
-			 7705f21d938a72ba6f01818661b2dea29183209940a335f18d1761e1e03d3710"
+			 8fd21a9eac7e27a5f7af9d9357455d1ff5aef01d84b4025a773caaae6e0a6db7
+			 235bdaf836a0bd139257d6cc0566e0c3d4d1e07c04304ed9a8d200299aaa4a48
+			 4f90cd6cbcf9e9d6ba11830e093092e4e6c3d156ffde2e729933869b7a039ff9"
 			;;
 		ppc64le-musl)
 			checksum+="
-			 2c8ffeaa23d8ae0e1776af068bd92ba5cd15973696956a2b58c215a940721e67
-			 c40f696c8afdcaafec50ddc29b9d8c836efa01b681e8ca48d09fcf79576ee039
-			 0fbe481d284a14b84cc63ccb50caeb248200f238d2c3e449c2b8a8bf49c951ce"
+			 2c32096c0f1b3a756cc29d6ecaf89296148a7a99d43baa0141bee490b353b502
+			 fa87695bdede026b031010716fafbe2890cbff00acc3042fd372dd7cc5eb46a7
+			 a85e8c9714a8bb7c17cd23993c677f51d9e0d6f5e85ab10f53ec1639b19bbbd4"
 			;;
 		ppc64)
 			checksum+="
-			 0f4d02f2d21d8f4b23829502130c89599f2315bb9adcee4f1b5109ee68a187ab
-			 8edd65b1f53485caa134d1625131e76f7ca072366cc5df3e2761a39f52f7e83f
-			 23a7967b0c1c762cdbea4f850cacbb462e386977203c0d5ff060275c526d80d7"
+			 4aa250cd14553ae3a438cd7a7290a79b899d1fbec9fc60985bbce070b500883e
+			 2cd6e88be42db44338c18fa6e3170ffea679ee73825826112cdbf6dd9ed0619a
+			 983e2fbec9c4bfe66bab37ad64cdd5b47918378e421d9bf639e938f120650199"
 			;;
 		ppc64-musl)
 			checksum+="
-			 4645a4bb0d78da07c8dba1edc2769382a94dc3d8fbdd48e105a5c8dd20170e21
-			 0dbf82f8c24140f17fda36811861c9c3aa361f2256c5274a11eb4a1f183c7f3a
-			 d5a808fdb50068a14d6578f052c9e21ae7881d4ecdcf9e098c5e2c2b1ae65786"
+			 f3c4fb775e63248914fece31199312dd2f69660f10b696ebbc56d41d4bc4ac2c
+			 c3d580c71e5a716056347513588d4445bdb8225e2ee5d9f2cf87c5bb4357bcb1
+			 f974893d1cac6c799345bece08c7f796eb50e1a77c4b9bc2a6451d161a57c660"
 			;;
 		ppc)
 			checksum+="
-			 40121c3a6ec199338e7139e03e917a93290b7623334740d4d25cd1c8092f3de1
-			 c2b17cfe8b25d23b348b40e5802a4e369f691abe6ddbd4372df0d660eb100398
-			 295030192cf5b7e1fce75845a1961619a5f701185400ad816cf950d4e18f0646"
+			 109d6af5d05cfbde5a476d07cf8b3093a974b0c76922bf8cd1046c5e11f5caaa
+			 a90152808c82f863f3c14647ebfbb6ae66d065ea4577be1036f6dc229c1e7e89
+			 48f4419300fe758ebe024e6449a5ca1dff07803047a815b3d3909170baa7adcc"
 			;;
 		ppc-musl)
 			checksum+="
-			 c5b743370ce140e95d413b20734d26ac22697b99455262cef801883f5c732019
-			 8061486273c602ac29c3e98aaa3a6d1114d16b9973e051f127e922232fef2270
-			 91cc5d6f0192f68d5053fb460dd8347b28cb29b4a63a6e648d6b754795b5c4e8"
+			 3d5211d6c5cf241b3d3dba343c027d05ff04765e2dd4175168095a86e7c9de22
+			 04a5cdb4f18ccae3eb9059c84adf7a7778484e89c8404ba67cde814019ec5b57
+			 bbb93a757e75d09cb5f6d6dd837e32212acd8888426406352eccf52f329386f1"
 			;;
 	esac
 fi
@@ -127,7 +128,7 @@ _clear_vendor_checksums() {
 
 post_patch() {
 	rm -rf src/llvm-project
-	if [ "$build_option_static_llvm" ]; then
+	if [ "$build_option_bindist" ]; then
 		for x in ${FILESDIR}/patches/static-llvm/*.patch; do
 			msg_normal "Applying patch $x\n"
 			patch -sNp1 -i ${x}
@@ -167,7 +168,11 @@ do_configure() {
 	# if true, the binaries will be built with rpath, so the binaries will be
 	# usable directly from the build directory, this is not desirable for
 	# packaging but is useful when building bootstrap binaries
-	_use_rpath="false"
+	if [ "$build_option_bindist" ]; then
+		_use_rpath="true"
+	else
+		_use_rpath="false"
+	fi
 
 	cat > config.toml <<- EOF
 		[build]
@@ -232,7 +237,7 @@ do_configure() {
 # for it during stage1. Otherwise it attemps to use CFLAGS, which are the CFLAGS
 # of the cross host.
 do_build() {
-	if [ ! "$build_option_static_llvm" ]; then
+	if [ ! "$build_option_bindist" ]; then
 		export LLVM_LINK_SHARED=1
 	fi
 	export RUST_BACKTRACE=1
@@ -268,6 +273,15 @@ do_check() {
 }
 
 do_install() {
+	if [ "$build_option_bindist" ]; then
+		mkdir -p ${XBPS_SRCDISTDIR}/distfiles
+		install -m 0644 \
+			build/dist/rustc-${version}-${RUST_TARGET}.tar.xz \
+			build/dist/rust-std-${version}-${RUST_TARGET}.tar.xz \
+			${XBPS_SRCDISTDIR}/distfiles
+		exit 1
+	fi
+
 	vmkdir usr
 	tar xf build/dist/rustc-${version}-${RUST_TARGET}.tar.gz \
 	 -C "$DESTDIR/usr" --strip-components=2 --exclude=manifest.in

From 786a3d2b6d7fbe0b5fdc966c94eaac21881ebef5 Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
Date: Sun, 24 May 2020 18:46:11 +0200
Subject: [PATCH 2/2] rust: nocross for now

[ci skip]
---
 srcpkgs/rust/template | 1 +
 1 file changed, 1 insertion(+)

diff --git a/srcpkgs/rust/template b/srcpkgs/rust/template
index db7d479eaa8..5407f35c205 100644
--- a/srcpkgs/rust/template
+++ b/srcpkgs/rust/template
@@ -22,6 +22,7 @@ distfiles="https://static.rust-lang.org/dist/rustc-${version}-src.tar.gz"
 checksum=cde177b4a8c687da96f20de27630a1eb55c9d146a15e4c900d5c31cd3c3ac41d
 lib32disabled=yes
 patch_args="-Np1"
+nocross=yes
 
 build_options="bindist"
 desc_option_bindist="Generate tarballs for bootstrap"

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PR PATCH] [Updated] rust 1.43.1
  2020-05-24 16:50 [PR PATCH] rust 1.43.1 q66
@ 2020-05-24 17:34 ` q66
  2020-05-24 19:55 ` [PR PATCH] [Merged]: " q66
  1 sibling, 0 replies; 3+ messages in thread
From: q66 @ 2020-05-24 17:34 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 836 bytes --]

There is an updated pull request by q66 against master on the void-packages repository

https://github.com/void-ppc/void-packages rust1431
https://github.com/void-linux/void-packages/pull/22268

rust 1.43.1
This updates rust to 1.43.1. Cargo update has already been done previously.

Changes:

- New option `bindist` which creates bootstrap tarballs in `/host/sources/distfiles`, with the appropriate options set (rpath, static llvm)
- Removed standalone `static_llvm`
- LLVM 10

TODO:

- [x] Test `ppc64le`
- [ ] Test `ppc64le-musl`, `ppc64`, `ppc64-musl`, `ppc`, `ppc-musl`
- [ ] Test other architectures
- [ ] Test firefox
- [ ] Upload bootstrap tarballs
- [ ] Update checksums for non-ppc arches (currently still at 1.43.0)


A patch file from https://github.com/void-linux/void-packages/pull/22268.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rust1431-22268.patch --]
[-- Type: text/x-diff, Size: 57613 bytes --]

From d1a18015bd637984f58a556f526d07d75cc00080 Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
Date: Sun, 3 May 2020 18:12:41 +0200
Subject: [PATCH 1/2] rust: update to 1.43.1, switch to llvm10

Also remove option static_llvm and add option bindist, which
helps simplify building bootstrap tarballs.
---
 .../rust/patches/0001-Fix-LLVM-build.patch    |  24 ++---
 ...to-work-when-cross-compiling-on-musl.patch |  18 ++--
 ...ative-libraries-when-linking-static-.patch |  16 +--
 ...dlib-and-musl_root-from-musl-targets.patch | 100 +++++++++---------
 ...er-libgcc_eh-over-libunwind-on-musl.patch} |  35 +++---
 ...-zero-sized-aggregate-ABI-on-powerpc.patch |  62 -----------
 ...n-for-plugins-Don-t-assume-multilib.patch} |   6 +-
 ...es-are-unstable-Fix-test-when-rpath.patch} |   6 +-
 ...ore-broken-and-non-applicable-tests.patch} |   8 +-
 ...-stage2-tools-dynamically-to-libstd.patch} |  14 +--
 ...-debugger-scripts-to-usr-share-rust.patch} |  10 +-
 ...ically-link-libc-on-musl-by-default.patch} |   6 +-
 ...age-of-musl-libc-for-the-libc-crate.patch} |  12 +--
 ...d-result-of-highest-as-f64-.log-2.0.patch} |   6 +-
 ...-against-host-target-LLVM-in-cross-s.patch |  31 ++++++
 ...-ELFv2-ABI-on-all-powerpc64-targets.patch} |  39 ++++---
 ...-against-host-target-LLVM-in-cross-s.patch |  28 -----
 ...879b1e24c369362bcd821959ffabc50a8a31.patch |  28 +++++
 ...a896cc92d5e0678376cf5aa8b64af0899732.patch |  28 +++++
 srcpkgs/rust/patches/need-ssp_nonshared.patch |  11 ++
 srcpkgs/rust/template                         |  90 +++++++++-------
 21 files changed, 302 insertions(+), 276 deletions(-)
 rename srcpkgs/rust/patches/{0005-Prefer-libgcc_eh-over-libunwind-for-musl.patch => 0005-Prefer-libgcc_eh-over-libunwind-on-musl.patch} (67%)
 delete mode 100644 srcpkgs/rust/patches/0006-Fix-zero-sized-aggregate-ABI-on-powerpc.patch
 rename srcpkgs/rust/patches/{0007-test-use-extern-for-plugins-Don-t-assume-multilib.patch => 0006-test-use-extern-for-plugins-Don-t-assume-multilib.patch} (86%)
 rename srcpkgs/rust/patches/{0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch => 0007-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch} (84%)
 rename srcpkgs/rust/patches/{0009-Ignore-broken-and-non-applicable-tests.patch => 0008-Ignore-broken-and-non-applicable-tests.patch} (95%)
 rename srcpkgs/rust/patches/{0010-Link-stage2-tools-dynamically-to-libstd.patch => 0009-Link-stage2-tools-dynamically-to-libstd.patch} (71%)
 rename srcpkgs/rust/patches/{0011-Move-debugger-scripts-to-usr-share-rust.patch => 0010-Move-debugger-scripts-to-usr-share-rust.patch} (89%)
 rename srcpkgs/rust/patches/{0012-Dynamically-link-libc-on-musl-by-default.patch => 0011-Dynamically-link-libc-on-musl-by-default.patch} (87%)
 rename srcpkgs/rust/patches/{0013-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch => 0012-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch} (84%)
 rename srcpkgs/rust/patches/{0014-round-result-of-highest-as-f64-.log-2.0.patch => 0013-round-result-of-highest-as-f64-.log-2.0.patch} (87%)
 create mode 100644 srcpkgs/rust/patches/0014-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch
 rename srcpkgs/rust/patches/{0016-Use-ELFv2-ABI-on-all-powerpc64-targets.patch => 0015-Use-ELFv2-ABI-on-all-powerpc64-targets.patch} (65%)
 delete mode 100644 srcpkgs/rust/patches/0015-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch
 create mode 100644 srcpkgs/rust/patches/497f879b1e24c369362bcd821959ffabc50a8a31.patch
 create mode 100644 srcpkgs/rust/patches/a94fa896cc92d5e0678376cf5aa8b64af0899732.patch
 create mode 100644 srcpkgs/rust/patches/need-ssp_nonshared.patch

diff --git a/srcpkgs/rust/patches/0001-Fix-LLVM-build.patch b/srcpkgs/rust/patches/0001-Fix-LLVM-build.patch
index ab0b2fb1bb8..0da829af1da 100644
--- a/srcpkgs/rust/patches/0001-Fix-LLVM-build.patch
+++ b/srcpkgs/rust/patches/0001-Fix-LLVM-build.patch
@@ -1,26 +1,26 @@
-From b10e30c5f8a71f0efd871d0e5114f44d04a879fe Mon Sep 17 00:00:00 2001
+From 4443eca0d6b3ba599832b2f73a5350fdd0c90d10 Mon Sep 17 00:00:00 2001
 From: Samuel Holland <samuel@sholland.org>
 Date: Fri, 8 Sep 2017 00:04:29 -0500
-Subject: [PATCH 01/16] Fix LLVM build
+Subject: [PATCH 01/15] 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 080bef68..e9b7976d 100644
+index a476d25f..c7e63990 100644
 --- a/src/bootstrap/lib.rs
 +++ b/src/bootstrap/lib.rs
-@@ -752,7 +752,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())
--                           .filter(|s| !s.starts_with("-O") && !s.starts_with("/O"))
-+                           .filter(|s| !s.starts_with("-O") && !s.starts_with("/O")
-+                                   && !s.starts_with("-static"))
-                            .collect::<Vec<String>>();
+@@ -768,7 +768,8 @@ impl Build {
+             .args()
+             .iter()
+             .map(|s| s.to_string_lossy().into_owned())
+-            .filter(|s| !s.starts_with("-O") && !s.starts_with("/O"))
++            .filter(|s| !s.starts_with("-O") && !s.starts_with("/O")
++                    && !s.starts_with("-static"))
+             .collect::<Vec<String>>();
  
          // If we're compiling on macOS then we add a few unconditional flags
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0002-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch b/srcpkgs/rust/patches/0002-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
index b1a871cd69f..7687c35ce87 100644
--- a/srcpkgs/rust/patches/0002-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
+++ b/srcpkgs/rust/patches/0002-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
@@ -1,7 +1,7 @@
-From c4c6747beb14cc96e7ce9d88018cef42533155df Mon Sep 17 00:00:00 2001
+From a78859bb6690e0ad285d1892d7a40796a40ac287 Mon Sep 17 00:00:00 2001
 From: Samuel Holland <samuel@sholland.org>
 Date: Sat, 2 Dec 2017 17:25:44 -0600
-Subject: [PATCH 02/16] Allow rustdoc to work when cross-compiling on musl
+Subject: [PATCH 02/15] Allow rustdoc to work when cross-compiling on musl
 
 musl can't handle foreign-architecture libraries in LD_LIBRARY_PATH.
 ---
@@ -9,7 +9,7 @@ musl can't handle foreign-architecture libraries in LD_LIBRARY_PATH.
  1 file changed, 2 insertions(+), 5 deletions(-)
 
 diff --git a/src/bootstrap/bin/rustdoc.rs b/src/bootstrap/bin/rustdoc.rs
-index 6937fb92..ce787609 100644
+index 04345867..8156d5ec 100644
 --- a/src/bootstrap/bin/rustdoc.rs
 +++ b/src/bootstrap/bin/rustdoc.rs
 @@ -22,9 +22,6 @@ fn main() {
@@ -22,16 +22,16 @@ index 6937fb92..ce787609 100644
      //FIXME(misdreavus): once stdsimd uses cfg(doc) instead of cfg(dox), remove the `--cfg dox`
      //arguments here
      let mut cmd = Command::new(rustdoc);
-@@ -36,7 +33,7 @@ fn main() {
+@@ -35,7 +32,7 @@ fn main() {
+         .arg("dox")
          .arg("--sysroot")
          .arg(&sysroot)
-         .env(bootstrap::util::dylib_path_var(),
--             env::join_paths(&dylib_path).unwrap());
-+             PathBuf::from(libdir.clone()));
+-        .env(bootstrap::util::dylib_path_var(), env::join_paths(&dylib_path).unwrap());
++        .env(bootstrap::util::dylib_path_var(), PathBuf::from(libdir.clone()));
  
      // Force all crates compiled by this compiler to (a) be unstable and (b)
      // allow the `rustc_private` feature to link to other unstable crates
-@@ -87,7 +84,7 @@ fn main() {
+@@ -83,7 +80,7 @@ fn main() {
          eprintln!(
              "rustdoc command: {:?}={:?} {:?}",
              bootstrap::util::dylib_path_var(),
@@ -41,5 +41,5 @@ index 6937fb92..ce787609 100644
          );
          eprintln!("sysroot: {:?}", sysroot);
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0003-Require-static-native-libraries-when-linking-static-.patch b/srcpkgs/rust/patches/0003-Require-static-native-libraries-when-linking-static-.patch
index 0da09ab5e57..fe69b763f3f 100644
--- a/srcpkgs/rust/patches/0003-Require-static-native-libraries-when-linking-static-.patch
+++ b/srcpkgs/rust/patches/0003-Require-static-native-libraries-when-linking-static-.patch
@@ -1,7 +1,7 @@
-From 33aff948106db1150cc7c1f457e74c4dbf95f74a Mon Sep 17 00:00:00 2001
+From baa7ce46f19e3584d70e47c8df28c084e76446da Mon Sep 17 00:00:00 2001
 From: Samuel Holland <samuel@sholland.org>
-Date: Fri, 8 Sep 2017 00:05:18 -0500
-Subject: [PATCH 03/16] Require static native libraries when linking static
+Date: Sun, 3 May 2020 17:48:47 +0200
+Subject: [PATCH 03/15] 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 a2b50ea8..3250ec4d 100644
+index 0dd2f029..f22b4277 100644
 --- a/src/librustc_codegen_ssa/back/link.rs
 +++ b/src/librustc_codegen_ssa/back/link.rs
-@@ -1610,9 +1610,7 @@ fn add_upstream_rust_crates<'a, B: ArchiveBuilder<'a>>(
+@@ -1741,9 +1741,7 @@ fn add_upstream_rust_crates<'a, B: ArchiveBuilder<'a>>(
      }
  }
  
@@ -30,8 +30,8 @@ index a2b50ea8..3250ec4d 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.
-@@ -1659,7 +1657,19 @@ pub fn add_upstream_native_libraries(
-                 continue
+@@ -1792,7 +1790,19 @@ pub fn add_upstream_native_libraries(
+                 continue;
              }
              match lib.kind {
 -                NativeLibraryKind::NativeUnknown => cmd.link_dylib(name),
@@ -52,5 +52,5 @@ index a2b50ea8..3250ec4d 100644
                  NativeLibraryKind::NativeStaticNobundle => {
                      // Link "static-nobundle" native libs only if the crate they originate from
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0004-Remove-nostdlib-and-musl_root-from-musl-targets.patch b/srcpkgs/rust/patches/0004-Remove-nostdlib-and-musl_root-from-musl-targets.patch
index e22b7e08487..06e42fdf1e3 100644
--- a/srcpkgs/rust/patches/0004-Remove-nostdlib-and-musl_root-from-musl-targets.patch
+++ b/srcpkgs/rust/patches/0004-Remove-nostdlib-and-musl_root-from-musl-targets.patch
@@ -1,24 +1,24 @@
-From 06b84a9e3d7514ac23953ad76242710444d2a0c1 Mon Sep 17 00:00:00 2001
+From 4654172e942b5b9250aff70101d54bc880060073 Mon Sep 17 00:00:00 2001
 From: Samuel Holland <samuel@sholland.org>
-Date: Sat, 21 Dec 2019 16:46:22 +0100
-Subject: [PATCH 04/16] Remove -nostdlib and musl_root from musl targets
+Date: Sun, 3 May 2020 17:53:33 +0200
+Subject: [PATCH 04/15] Remove -nostdlib and musl_root from musl targets
 
 ---
  config.toml.example                         |  3 ---
- src/bootstrap/cc_detect.rs                  | 27 +++-----------------
+ src/bootstrap/cc_detect.rs                  | 25 ++----------------
  src/bootstrap/compile.rs                    | 22 +---------------
  src/bootstrap/config.rs                     |  7 ------
  src/bootstrap/configure.py                  | 28 ---------------------
- src/bootstrap/lib.rs                        |  8 ------
- src/bootstrap/sanity.rs                     | 24 ------------------
+ src/bootstrap/lib.rs                        | 10 --------
+ src/bootstrap/sanity.rs                     | 22 ----------------
  src/librustc_target/spec/linux_musl_base.rs | 16 ------------
- 8 files changed, 4 insertions(+), 131 deletions(-)
+ 8 files changed, 3 insertions(+), 130 deletions(-)
 
 diff --git a/config.toml.example b/config.toml.example
-index 5152a6c9..1d411c5c 100644
+index ce21b634..f14a5660 100644
 --- a/config.toml.example
 +++ b/config.toml.example
-@@ -340,9 +340,6 @@
+@@ -352,9 +352,6 @@
  # nightly features
  #channel = "dev"
  
@@ -29,10 +29,10 @@ index 5152a6c9..1d411c5c 100644
  # platforms to ensure that the compiler is usable by default from the build
  # directory (as it links to a number of dynamic libraries). This may not be
 diff --git a/src/bootstrap/cc_detect.rs b/src/bootstrap/cc_detect.rs
-index a4cb81d3..b4247e74 100644
+index a236edf9..54c3cc64 100644
 --- a/src/bootstrap/cc_detect.rs
 +++ b/src/bootstrap/cc_detect.rs
-@@ -86,7 +86,7 @@ pub fn find(build: &mut Build) {
+@@ -97,7 +97,7 @@ pub fn find(build: &mut Build) {
          if let Some(cc) = config.and_then(|c| c.cc.as_ref()) {
              cfg.compiler(cc);
          } else {
@@ -41,7 +41,7 @@ index a4cb81d3..b4247e74 100644
          }
  
          let compiler = cfg.get_compiler();
-@@ -109,7 +109,7 @@ pub fn find(build: &mut Build) {
+@@ -125,7 +125,7 @@ pub fn find(build: &mut Build) {
              cfg.compiler(cxx);
              true
          } else if build.hosts.contains(&target) || build.build == target {
@@ -50,17 +50,15 @@ index a4cb81d3..b4247e74 100644
              true
          } else {
              false
-@@ -136,8 +136,7 @@ pub fn find(build: &mut Build) {
- fn set_compiler(cfg: &mut cc::Build,
-                 compiler: Language,
-                 target: Interned<String>,
--                config: Option<&Target>,
--                build: &Build) {
-+                config: Option<&Target>) {
+@@ -154,7 +154,6 @@ fn set_compiler(
+     compiler: Language,
+     target: Interned<String>,
+     config: Option<&Target>,
+-    build: &Build,
+ ) {
      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
-@@ -177,26 +176,6 @@ fn set_compiler(cfg: &mut cc::Build,
+@@ -196,26 +195,6 @@ fn set_compiler(
              }
          }
  
@@ -88,10 +86,10 @@ index a4cb81d3..b4247e74 100644
      }
  }
 diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
-index 831053bc..3e49d459 100644
+index 65a00db3..01fd2cf3 100644
 --- a/src/bootstrap/compile.rs
 +++ b/src/bootstrap/compile.rs
-@@ -130,18 +130,7 @@ fn copy_third_party_objects(builder: &Builder<'_>, compiler: &Compiler, target:
+@@ -125,18 +125,7 @@ fn copy_third_party_objects(
          target_deps.push(target);
      };
  
@@ -111,7 +109,7 @@ index 831053bc..3e49d459 100644
          let srcdir = builder.wasi_root(target).unwrap().join("lib/wasm32-wasi");
          copy_and_stamp(&srcdir, "crt1.o");
      }
-@@ -227,15 +216,6 @@ pub fn std_cargo(builder: &Builder<'_>,
+@@ -213,15 +202,6 @@ pub fn std_cargo(builder: &Builder<'_>, target: Interned<String>, cargo: &mut Ca
              .arg("--manifest-path")
              .arg(builder.src.join("src/libtest/Cargo.toml"));
  
@@ -128,10 +126,10 @@ index 831053bc..3e49d459 100644
              if let Some(p) = builder.wasi_root(target) {
                  let root = format!("native={}/lib/wasm32-wasi", p.to_str().unwrap());
 diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs
-index 5f2ef01b..c291d3a0 100644
+index 56164b74..8c46334a 100644
 --- a/src/bootstrap/config.rs
 +++ b/src/bootstrap/config.rs
-@@ -130,8 +130,6 @@ pub struct Config {
+@@ -134,8 +134,6 @@ pub struct Config {
      pub print_step_timings: bool,
      pub missing_tools: bool,
  
@@ -140,7 +138,7 @@ index 5f2ef01b..c291d3a0 100644
      pub prefix: Option<PathBuf>,
      pub sysconfdir: Option<PathBuf>,
      pub datadir: Option<PathBuf>,
-@@ -166,7 +164,6 @@ pub struct Target {
+@@ -171,7 +169,6 @@ pub struct Target {
      pub linker: Option<PathBuf>,
      pub ndk: Option<PathBuf>,
      pub crt_static: Option<bool>,
@@ -148,7 +146,7 @@ index 5f2ef01b..c291d3a0 100644
      pub wasi_root: Option<PathBuf>,
      pub qemu_rootfs: Option<PathBuf>,
      pub no_std: bool,
-@@ -306,7 +303,6 @@ struct Rust {
+@@ -322,7 +319,6 @@ struct Rust {
      parallel_compiler: Option<bool>,
      default_linker: Option<String>,
      channel: Option<String>,
@@ -156,15 +154,15 @@ index 5f2ef01b..c291d3a0 100644
      rpath: Option<bool>,
      verbose_tests: Option<bool>,
      optimize_tests: Option<bool>,
-@@ -340,7 +336,6 @@ struct TomlTarget {
+@@ -359,7 +355,6 @@ struct TomlTarget {
      llvm_filecheck: Option<String>,
      android_ndk: Option<String>,
      crt_static: Option<bool>,
 -    musl_root: Option<String>,
      wasi_root: Option<String>,
      qemu_rootfs: Option<String>,
- }
-@@ -559,7 +554,6 @@ impl Config {
+     no_std: Option<bool>,
+@@ -585,7 +580,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();
@@ -172,19 +170,19 @@ index 5f2ef01b..c291d3a0 100644
              config.save_toolstates = rust.save_toolstates.clone().map(PathBuf::from);
              set(&mut config.deny_warnings, flags.deny_warnings.or(rust.deny_warnings));
              set(&mut config.backtrace_on_ice, rust.backtrace_on_ice);
-@@ -595,7 +589,6 @@ impl Config {
+@@ -625,7 +619,6 @@ impl Config {
                  target.ranlib = cfg.ranlib.clone().map(PathBuf::from);
                  target.linker = cfg.linker.clone().map(PathBuf::from);
-                 target.crt_static = cfg.crt_static.clone();
+                 target.crt_static = cfg.crt_static;
 -                target.musl_root = cfg.musl_root.clone().map(PathBuf::from);
                  target.wasi_root = cfg.wasi_root.clone().map(PathBuf::from);
                  target.qemu_rootfs = cfg.qemu_rootfs.clone().map(PathBuf::from);
  
 diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py
-index bb6041d7..73f3781c 100755
+index 2a46c563..025928b9 100755
 --- a/src/bootstrap/configure.py
 +++ b/src/bootstrap/configure.py
-@@ -109,34 +109,6 @@ v("aarch64-linux-android-ndk", "target.aarch64-linux-android.android-ndk",
+@@ -110,34 +110,6 @@ v("aarch64-linux-android-ndk", "target.aarch64-linux-android.android-ndk",
    "aarch64-linux-android NDK standalone path")
  v("x86_64-linux-android-ndk", "target.x86_64-linux-android.android-ndk",
    "x86_64-linux-android NDK standalone path")
@@ -220,29 +218,31 @@ index bb6041d7..73f3781c 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 e9b7976d..c4203e83 100644
+index c7e63990..77bbb2cd 100644
 --- a/src/bootstrap/lib.rs
 +++ b/src/bootstrap/lib.rs
-@@ -827,14 +827,6 @@ impl Build {
+@@ -845,16 +845,6 @@ impl Build {
          }
      }
  
 -    /// Returns the "musl root" for this `target`, if defined
 -    fn musl_root(&self, target: Interned<String>) -> Option<&Path> {
--        self.config.target_config.get(&target)
+-        self.config
+-            .target_config
+-            .get(&target)
 -            .and_then(|t| t.musl_root.as_ref())
--            .or(self.config.musl_root.as_ref())
+-            .or_else(|| self.config.musl_root.as_ref())
 -            .map(|p| &**p)
 -    }
 -
      /// Returns the sysroot for the wasi target, if defined
      fn wasi_root(&self, target: Interned<String>) -> Option<&Path> {
-         self.config.target_config.get(&target)
+         self.config.target_config.get(&target).and_then(|t| t.wasi_root.as_ref()).map(|p| &**p)
 diff --git a/src/bootstrap/sanity.rs b/src/bootstrap/sanity.rs
-index bffe748f..3b109548 100644
+index 530e74da..8ec9f046 100644
 --- a/src/bootstrap/sanity.rs
 +++ b/src/bootstrap/sanity.rs
-@@ -187,30 +187,6 @@ pub fn check(build: &mut Build) {
+@@ -201,28 +201,6 @@ pub fn check(build: &mut Build) {
              }
          }
  
@@ -251,22 +251,20 @@ index bffe748f..3b109548 100644
 -            // If this is a native target (host is also musl) and no musl-root is given,
 -            // fall back to the system toolchain in /usr before giving up
 -            if build.musl_root(*target).is_none() && build.config.build == *target {
--                let target = build.config.target_config.entry(target.clone())
--                    .or_default();
+-                let target = build.config.target_config.entry(target.clone()).or_default();
 -                target.musl_root = Some("/usr".into());
 -            }
 -            match build.musl_root(*target) {
 -                Some(root) => {
 -                    if fs::metadata(root.join("lib/libc.a")).is_err() {
--                        panic!("couldn't find libc.a in musl dir: {}",
--                               root.join("lib").display());
+-                        panic!("couldn't find libc.a in musl dir: {}", root.join("lib").display());
 -                    }
 -                }
--                None => {
--                    panic!("when targeting MUSL either the rust.musl-root \
+-                None => panic!(
+-                    "when targeting MUSL either the rust.musl-root \
 -                            option or the target.$TARGET.musl-root option must \
--                            be specified in config.toml")
--                }
+-                            be specified in config.toml"
+-                ),
 -            }
 -        }
 -
@@ -307,5 +305,5 @@ index e294e639..58ae91a9 100644
      base.crt_static_default = true;
      // These targets allow the user to choose between static and dynamic linking.
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0005-Prefer-libgcc_eh-over-libunwind-for-musl.patch b/srcpkgs/rust/patches/0005-Prefer-libgcc_eh-over-libunwind-on-musl.patch
similarity index 67%
rename from srcpkgs/rust/patches/0005-Prefer-libgcc_eh-over-libunwind-for-musl.patch
rename to srcpkgs/rust/patches/0005-Prefer-libgcc_eh-over-libunwind-on-musl.patch
index a738e8c4bc1..0f65179eb40 100644
--- a/srcpkgs/rust/patches/0005-Prefer-libgcc_eh-over-libunwind-for-musl.patch
+++ b/srcpkgs/rust/patches/0005-Prefer-libgcc_eh-over-libunwind-on-musl.patch
@@ -1,25 +1,24 @@
-From 6c6ccb3928deffd97a75ef2d9417aae467cd7031 Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Sat, 21 Dec 2019 16:49:07 +0100
-Subject: [PATCH 05/16] Prefer libgcc_eh over libunwind for musl
+From a640bce17d908a0691d53f22e5257353f694d9b6 Mon Sep 17 00:00:00 2001
+From: q66 <daniel@octaforge.org>
+Date: Sun, 3 May 2020 17:55:50 +0200
+Subject: [PATCH 05/15] Prefer libgcc_eh over libunwind on musl
 
-+ @q66 changes to smaeul's original patch for Void's musl setup
 ---
- src/libunwind/build.rs | 17 ++---------------
+ src/libunwind/build.rs | 16 ++--------------
  src/libunwind/lib.rs   |  2 +-
- 2 files changed, 3 insertions(+), 16 deletions(-)
+ 2 files changed, 3 insertions(+), 15 deletions(-)
 
 diff --git a/src/libunwind/build.rs b/src/libunwind/build.rs
-index b8db16f8..0c69b9d2 100644
+index a24808b3..a1250889 100644
 --- a/src/libunwind/build.rs
 +++ b/src/libunwind/build.rs
-@@ -5,15 +5,11 @@ fn main() {
+@@ -5,15 +5,12 @@ fn main() {
      let target = env::var("TARGET").expect("TARGET was not set");
  
-     if cfg!(feature = "llvm-libunwind") &&
--        ((target.contains("linux") && !target.contains("musl")) ||
--         target.contains("fuchsia")) {
-+        (target.contains("linux") || target.contains("fuchsia")) {
+     if cfg!(feature = "llvm-libunwind")
+-        && ((target.contains("linux") && !target.contains("musl")) || target.contains("fuchsia"))
++        && (target.contains("linux") || target.contains("fuchsia"))
+     {
          // Build the unwinding from libunwind C/C++ source code.
          llvm_libunwind::compile();
      } else if target.contains("linux") {
@@ -31,7 +30,7 @@ index b8db16f8..0c69b9d2 100644
              println!("cargo:rustc-link-lib=gcc_s");
          }
      } else if target.contains("freebsd") {
-@@ -105,15 +101,6 @@ mod llvm_libunwind {
+@@ -105,15 +102,6 @@ mod llvm_libunwind {
              cfg.file(root.join("src").join(src));
          }
  
@@ -48,18 +47,18 @@ index b8db16f8..0c69b9d2 100644
      }
  }
 diff --git a/src/libunwind/lib.rs b/src/libunwind/lib.rs
-index 8d916447..6d653d41 100644
+index 18d41be7..17f73d69 100644
 --- a/src/libunwind/lib.rs
 +++ b/src/libunwind/lib.rs
-@@ -21,7 +21,7 @@ cfg_if::cfg_if! {
+@@ -19,7 +19,7 @@ cfg_if::cfg_if! {
  }
  
  #[cfg(target_env = "musl")]
 -#[link(name = "unwind", kind = "static", cfg(target_feature = "crt-static"))]
 +#[link(name = "gcc_eh", cfg(target_feature = "crt-static"))]
  #[link(name = "gcc_s", cfg(not(target_feature = "crt-static")))]
- extern {}
+ extern "C" {}
  
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0006-Fix-zero-sized-aggregate-ABI-on-powerpc.patch b/srcpkgs/rust/patches/0006-Fix-zero-sized-aggregate-ABI-on-powerpc.patch
deleted file mode 100644
index fded751ef39..00000000000
--- a/srcpkgs/rust/patches/0006-Fix-zero-sized-aggregate-ABI-on-powerpc.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From d54189d6441d59ba623b561438e3ce0664ab2101 Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Sat, 21 Dec 2019 16:55:07 +0100
-Subject: [PATCH 06/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 c7278dc4..2e5ea499 100644
---- a/src/librustc/ty/layout.rs
-+++ b/src/librustc/ty/layout.rs
-@@ -2576,12 +2576,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,
-@@ -2650,11 +2649,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;
-                 }
-             }
--- 
-2.25.0
-
diff --git a/srcpkgs/rust/patches/0007-test-use-extern-for-plugins-Don-t-assume-multilib.patch b/srcpkgs/rust/patches/0006-test-use-extern-for-plugins-Don-t-assume-multilib.patch
similarity index 86%
rename from srcpkgs/rust/patches/0007-test-use-extern-for-plugins-Don-t-assume-multilib.patch
rename to srcpkgs/rust/patches/0006-test-use-extern-for-plugins-Don-t-assume-multilib.patch
index 05bfa3a75c3..c80fe155224 100644
--- a/srcpkgs/rust/patches/0007-test-use-extern-for-plugins-Don-t-assume-multilib.patch
+++ b/srcpkgs/rust/patches/0006-test-use-extern-for-plugins-Don-t-assume-multilib.patch
@@ -1,7 +1,7 @@
-From 07274f2e91b0d91102dcb5397783295d7a27b8b2 Mon Sep 17 00:00:00 2001
+From e44838dabefa1a62578895b4465717f7be8a7a86 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/16] test/use-extern-for-plugins: Don't assume multilib
+Subject: [PATCH 06/15] test/use-extern-for-plugins: Don't assume multilib
 
 ---
  src/test/run-make-fulldeps/use-extern-for-plugins/Makefile | 7 +------
@@ -26,5 +26,5 @@ index 838b1a27..94fa9f6d 100644
  all:
  	$(RUSTC) foo.rs -C extra-filename=-host
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch b/srcpkgs/rust/patches/0007-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
similarity index 84%
rename from srcpkgs/rust/patches/0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
rename to srcpkgs/rust/patches/0007-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
index b4bc17df027..8a9986f6411 100644
--- a/srcpkgs/rust/patches/0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
+++ b/srcpkgs/rust/patches/0007-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
@@ -1,7 +1,7 @@
-From d1ac85fbff21dc1d808308cc6f5a90b0cc562f2f Mon Sep 17 00:00:00 2001
+From cde014a1108b7d1cea85100cad48b12297267405 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/16] test/sysroot-crates-are-unstable: Fix test when rpath
+Subject: [PATCH 07/15] test/sysroot-crates-are-unstable: Fix test when rpath
  is disabled
 
 Without this environment var, the test can't run rustc to find
@@ -21,5 +21,5 @@ index a35174b3..9e770706 100644
 -	python2.7 test.py
 +	env '$(HOST_RPATH_ENV)' python2.7 test.py
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0009-Ignore-broken-and-non-applicable-tests.patch b/srcpkgs/rust/patches/0008-Ignore-broken-and-non-applicable-tests.patch
similarity index 95%
rename from srcpkgs/rust/patches/0009-Ignore-broken-and-non-applicable-tests.patch
rename to srcpkgs/rust/patches/0008-Ignore-broken-and-non-applicable-tests.patch
index 187003cf38b..f9d64723903 100644
--- a/srcpkgs/rust/patches/0009-Ignore-broken-and-non-applicable-tests.patch
+++ b/srcpkgs/rust/patches/0008-Ignore-broken-and-non-applicable-tests.patch
@@ -1,7 +1,7 @@
-From 6cbefd6ad105c833052919319db3564966572ceb Mon Sep 17 00:00:00 2001
+From c63745a2777648d530898bae5af9d25266472b05 Mon Sep 17 00:00:00 2001
 From: Samuel Holland <samuel@sholland.org>
 Date: Sat, 21 Dec 2019 17:00:40 +0100
-Subject: [PATCH 09/16] Ignore broken and non-applicable tests
+Subject: [PATCH 08/15] 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)
@@ -62,7 +62,7 @@ index 9e770706..6d92ec5c 100644
  
  all:
 diff --git a/src/test/ui/env-funky-keys.rs b/src/test/ui/env-funky-keys.rs
-index 4faceb53..09764dc3 100644
+index c5c824ac..f3fe047a 100644
 --- a/src/test/ui/env-funky-keys.rs
 +++ b/src/test/ui/env-funky-keys.rs
 @@ -1,6 +1,7 @@
@@ -87,5 +87,5 @@ index b28f742a..3ee4ccce 100644
  // Test that the simd_bitmask intrinsic produces correct results.
  
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0010-Link-stage2-tools-dynamically-to-libstd.patch b/srcpkgs/rust/patches/0009-Link-stage2-tools-dynamically-to-libstd.patch
similarity index 71%
rename from srcpkgs/rust/patches/0010-Link-stage2-tools-dynamically-to-libstd.patch
rename to srcpkgs/rust/patches/0009-Link-stage2-tools-dynamically-to-libstd.patch
index b63e27ebb42..40f896bb980 100644
--- a/srcpkgs/rust/patches/0010-Link-stage2-tools-dynamically-to-libstd.patch
+++ b/srcpkgs/rust/patches/0009-Link-stage2-tools-dynamically-to-libstd.patch
@@ -1,7 +1,7 @@
-From cdb82589b4be62c11186e4645a5fd358f5c55421 Mon Sep 17 00:00:00 2001
+From f5dad49f112151bb0ee74570e971bd475cbec128 Mon Sep 17 00:00:00 2001
 From: q66 <daniel@octaforge.org>
-Date: Sat, 21 Dec 2019 17:01:59 +0100
-Subject: [PATCH 10/16] Link stage2 tools dynamically to libstd
+Date: Sun, 3 May 2020 18:00:09 +0200
+Subject: [PATCH 09/15] Link stage2 tools dynamically to libstd
 
 Replaces an older patch by Samuel Holland. The RUSTC_NO_PREFER_DYNAMIC
 env var was removed and replaced with the following logic in builder.rs.
@@ -14,10 +14,10 @@ be statically linked for convenience.
  1 file changed, 2 insertions(+)
 
 diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
-index 8b0ad169..4bc13ac2 100644
+index eb0199fd..0ec7cbd8 100644
 --- a/src/bootstrap/builder.rs
 +++ b/src/bootstrap/builder.rs
-@@ -1228,6 +1228,8 @@ impl<'a> Builder<'a> {
+@@ -1236,6 +1236,8 @@ impl<'a> Builder<'a> {
          // linking all deps statically into the dylib.
          if let Mode::Std | Mode::Rustc | Mode::Codegen = mode {
              rustflags.arg("-Cprefer-dynamic");
@@ -25,7 +25,7 @@ index 8b0ad169..4bc13ac2 100644
 +            rustflags.arg("-Cprefer-dynamic");
          }
  
-         Cargo {
+         // When building incrementally we default to a lower ThinLTO import limit
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0011-Move-debugger-scripts-to-usr-share-rust.patch b/srcpkgs/rust/patches/0010-Move-debugger-scripts-to-usr-share-rust.patch
similarity index 89%
rename from srcpkgs/rust/patches/0011-Move-debugger-scripts-to-usr-share-rust.patch
rename to srcpkgs/rust/patches/0010-Move-debugger-scripts-to-usr-share-rust.patch
index 51ac2cdf4d7..a48c6ff1c4a 100644
--- a/srcpkgs/rust/patches/0011-Move-debugger-scripts-to-usr-share-rust.patch
+++ b/srcpkgs/rust/patches/0010-Move-debugger-scripts-to-usr-share-rust.patch
@@ -1,7 +1,7 @@
-From be61ad716d24f7fb0ee52b234cbf922d09bc686a Mon Sep 17 00:00:00 2001
+From 9b0c14783127e195d7bd54ca2c0c498a46714964 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/16] Move debugger scripts to /usr/share/rust
+Subject: [PATCH 10/15] Move debugger scripts to /usr/share/rust
 
 ---
  src/bootstrap/dist.rs | 2 +-
@@ -10,10 +10,10 @@ Subject: [PATCH 11/16] 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 02533944..375f2413 100644
+index 8215211e..05a173b4 100644
 --- a/src/bootstrap/dist.rs
 +++ b/src/bootstrap/dist.rs
-@@ -593,7 +593,7 @@ impl Step for DebuggerScripts {
+@@ -603,7 +603,7 @@ impl Step for DebuggerScripts {
      fn run(self, builder: &Builder<'_>) {
          let host = self.host;
          let sysroot = self.sysroot;
@@ -49,5 +49,5 @@ index 7b9b40e6..e471db36 100755
  category_enable="type category enable Rust"
  
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0012-Dynamically-link-libc-on-musl-by-default.patch b/srcpkgs/rust/patches/0011-Dynamically-link-libc-on-musl-by-default.patch
similarity index 87%
rename from srcpkgs/rust/patches/0012-Dynamically-link-libc-on-musl-by-default.patch
rename to srcpkgs/rust/patches/0011-Dynamically-link-libc-on-musl-by-default.patch
index 370e0709ebe..0492242be10 100644
--- a/srcpkgs/rust/patches/0012-Dynamically-link-libc-on-musl-by-default.patch
+++ b/srcpkgs/rust/patches/0011-Dynamically-link-libc-on-musl-by-default.patch
@@ -1,7 +1,7 @@
-From f277b9c07cd6d096fad370a76c6dfdfb03aa3d1e Mon Sep 17 00:00:00 2001
+From d72ad9c226b4ed225c23d88ec5dbe6ba321b37ad Mon Sep 17 00:00:00 2001
 From: q66 <daniel@octaforge.org>
 Date: Sat, 21 Dec 2019 17:04:13 +0100
-Subject: [PATCH 12/16] Dynamically link libc on musl by default
+Subject: [PATCH 11/15] Dynamically link libc on musl by default
 
 ---
  src/librustc_target/spec/linux_musl_base.rs | 3 +--
@@ -22,5 +22,5 @@ index 58ae91a9..1fae72d6 100644
      base.crt_static_respected = true;
  
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0013-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch b/srcpkgs/rust/patches/0012-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch
similarity index 84%
rename from srcpkgs/rust/patches/0013-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch
rename to srcpkgs/rust/patches/0012-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch
index b4cb7addfca..e0b567c419e 100644
--- a/srcpkgs/rust/patches/0013-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch
+++ b/srcpkgs/rust/patches/0012-Fix-dynamic-linkage-of-musl-libc-for-the-libc-crate.patch
@@ -1,7 +1,7 @@
-From 191b56a4e8c307e531a446f8cceb4ecc732beace Mon Sep 17 00:00:00 2001
+From e363a0e0ff7ffc8bd83f72ec1a20d289996b6370 Mon Sep 17 00:00:00 2001
 From: q66 <daniel@octaforge.org>
-Date: Sat, 21 Dec 2019 17:04:55 +0100
-Subject: [PATCH 13/16] Fix dynamic linkage of musl libc for the libc crate
+Date: Sun, 3 May 2020 18:02:03 +0200
+Subject: [PATCH 12/15] Fix dynamic linkage of musl libc for the libc crate
 
 ---
  vendor/libc/src/lib.rs      | 1 +
@@ -9,7 +9,7 @@ Subject: [PATCH 13/16] Fix dynamic linkage of musl libc for the libc crate
  2 files changed, 4 insertions(+), 3 deletions(-)
 
 diff --git a/vendor/libc/src/lib.rs b/vendor/libc/src/lib.rs
-index 3255303e..bfbd2d7a 100644
+index 0b1496af..7f7e85a7 100644
 --- a/vendor/libc/src/lib.rs
 +++ b/vendor/libc/src/lib.rs
 @@ -33,6 +33,7 @@
@@ -18,8 +18,8 @@ index 3255303e..bfbd2d7a 100644
  #![cfg_attr(feature = "rustc-dep-of-std", no_core)]
 +#![cfg_attr(feature = "rustc-dep-of-std", feature(static_nobundle))]
  #![cfg_attr(target_os = "redox", feature(static_nobundle))]
+ #![cfg_attr(libc_const_extern_fn, feature(const_extern_fn))]
  
- #[macro_use]
 diff --git a/vendor/libc/src/unix/mod.rs b/vendor/libc/src/unix/mod.rs
 index 238da24b..ffb05ee7 100644
 --- a/vendor/libc/src/unix/mod.rs
@@ -40,5 +40,5 @@ index 238da24b..ffb05ee7 100644
      } else if #[cfg(target_os = "emscripten")] {
          #[link(name = "c")]
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0014-round-result-of-highest-as-f64-.log-2.0.patch b/srcpkgs/rust/patches/0013-round-result-of-highest-as-f64-.log-2.0.patch
similarity index 87%
rename from srcpkgs/rust/patches/0014-round-result-of-highest-as-f64-.log-2.0.patch
rename to srcpkgs/rust/patches/0013-round-result-of-highest-as-f64-.log-2.0.patch
index 2fab5da83b2..46fac863858 100644
--- a/srcpkgs/rust/patches/0014-round-result-of-highest-as-f64-.log-2.0.patch
+++ b/srcpkgs/rust/patches/0013-round-result-of-highest-as-f64-.log-2.0.patch
@@ -1,7 +1,7 @@
-From a5843bb05ebd94b8acaa7a011c1db7abdc112e5c Mon Sep 17 00:00:00 2001
+From d74af8923022dd369315ada0a06e467dffd127cf Mon Sep 17 00:00:00 2001
 From: Michael Hudson-Doyle <michael.hudson@canonical.com>
 Date: Wed, 13 Mar 2019 15:55:30 +1300
-Subject: [PATCH 14/16] round result of (highest as f64).log(2.0)
+Subject: [PATCH 13/15] round result of (highest as f64).log(2.0)
 
 Even though (1024f64).log(2.0) has an exact, representable, value, with
 rustc 1.32 on i386 it comes out as +9.999999999999999985 with
@@ -25,5 +25,5 @@ index 9c9f237c..153031a2 100644
      let uints = (0..(highest + 1))
          .chain((first2..64).map(|i| 2u64.pow(i)))
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0014-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch b/srcpkgs/rust/patches/0014-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch
new file mode 100644
index 00000000000..fb01e60fa5e
--- /dev/null
+++ b/srcpkgs/rust/patches/0014-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch
@@ -0,0 +1,31 @@
+From 07efbc3bdd67de4e13b0f3f4df853a9de0800ec3 Mon Sep 17 00:00:00 2001
+From: q66 <daniel@octaforge.org>
+Date: Sun, 3 May 2020 18:05:22 +0200
+Subject: [PATCH 14/15] Void: fix linkage against host/target LLVM in cross
+ setups
+
+---
+ src/librustc_llvm/build.rs | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/librustc_llvm/build.rs b/src/librustc_llvm/build.rs
+index 9b4f03b3..d0167838 100644
+--- a/src/librustc_llvm/build.rs
++++ b/src/librustc_llvm/build.rs
+@@ -217,9 +217,11 @@ fn main() {
+     for lib in output(&mut cmd).split_whitespace() {
+         if is_crossed {
+             if lib.starts_with("-LIBPATH:") {
+-                println!("cargo:rustc-link-search=native={}", lib[9..].replace(&host, &target));
++                println!("cargo:rustc-link-search=native={}{}",
++                         env::var("XBPS_CROSS_BASE").unwrap(), &lib[9..]);
+             } else if lib.starts_with("-L") {
+-                println!("cargo:rustc-link-search=native={}", lib[2..].replace(&host, &target));
++                println!("cargo:rustc-link-search=native={}{}",
++                         env::var("XBPS_CROSS_BASE").unwrap(), &lib[2..]);
+             }
+         } else if lib.starts_with("-LIBPATH:") {
+             println!("cargo:rustc-link-search=native={}", &lib[9..]);
+-- 
+2.26.2
+
diff --git a/srcpkgs/rust/patches/0016-Use-ELFv2-ABI-on-all-powerpc64-targets.patch b/srcpkgs/rust/patches/0015-Use-ELFv2-ABI-on-all-powerpc64-targets.patch
similarity index 65%
rename from srcpkgs/rust/patches/0016-Use-ELFv2-ABI-on-all-powerpc64-targets.patch
rename to srcpkgs/rust/patches/0015-Use-ELFv2-ABI-on-all-powerpc64-targets.patch
index 94bad4b8795..bb9269e43bb 100644
--- a/srcpkgs/rust/patches/0016-Use-ELFv2-ABI-on-all-powerpc64-targets.patch
+++ b/srcpkgs/rust/patches/0015-Use-ELFv2-ABI-on-all-powerpc64-targets.patch
@@ -1,36 +1,43 @@
-From 923d16b37c381d73ce0f88403256b26af3edf1bd Mon Sep 17 00:00:00 2001
+From c6b54a373e74a1e4ce64f349b5b69105f2bc1a49 Mon Sep 17 00:00:00 2001
 From: q66 <daniel@octaforge.org>
-Date: Sat, 21 Dec 2019 17:06:55 +0100
-Subject: [PATCH 16/16] Use ELFv2 ABI on all powerpc64 targets
+Date: Sun, 3 May 2020 18:08:09 +0200
+Subject: [PATCH 15/15] Use ELFv2 ABI on all powerpc64 targets
 
 This patches librustc_target so that ELFv2 is used everywhere, matching our
 LLVM. While this is not perfect (it does not allow rustc to compile legacy
 binaries), rustc never requests specific ABI from llvm in the first place,
 so at least match the environment we have.
 ---
- src/librustc_target/abi/call/powerpc64.rs               | 2 +-
+ src/librustc_target/abi/call/powerpc64.rs               | 9 +--------
  src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs | 6 +-----
- 2 files changed, 2 insertions(+), 6 deletions(-)
+ 2 files changed, 2 insertions(+), 13 deletions(-)
 
 diff --git a/src/librustc_target/abi/call/powerpc64.rs b/src/librustc_target/abi/call/powerpc64.rs
-index fe459480..997593b9 100644
+index 93c4e97d..96b02486 100644
 --- a/src/librustc_target/abi/call/powerpc64.rs
 +++ b/src/librustc_target/abi/call/powerpc64.rs
-@@ -117,7 +117,7 @@ pub fn compute_abi_info<'a, Ty, C>(cx: &C, fn_abi: &mut FnAbi<'a, Ty>)
-     where Ty: TyLayoutMethods<'a, C> + Copy,
-           C: LayoutOf<Ty = Ty, TyLayout = TyLayout<'a, Ty>> + HasDataLayout + HasTargetSpec
+@@ -119,14 +119,7 @@ where
+     Ty: TyLayoutMethods<'a, C> + Copy,
+     C: LayoutOf<Ty = Ty, TyLayout = TyLayout<'a, Ty>> + HasDataLayout + HasTargetSpec,
  {
 -    let abi = if cx.target_spec().target_env == "musl" {
-+    let abi = if cx.target_spec().target_env == "musl" || cx.target_spec().target_env == "gnu" {
-         ELFv2
-     } else {
-         match cx.data_layout().endian {
+-        ELFv2
+-    } else {
+-        match cx.data_layout().endian {
+-            Endian::Big => ELFv1,
+-            Endian::Little => ELFv2,
+-        }
+-    };
++    let abi = ELFv2;
+ 
+     if !fn_abi.ret.is_ignore() {
+         classify_ret(cx, &mut fn_abi.ret, abi);
 diff --git a/src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs b/src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs
-index 89e68ab3..77659cdd 100644
+index 5306d905..c63eed85 100644
 --- a/src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs
 +++ b/src/librustc_target/spec/powerpc64_unknown_linux_gnu.rs
 @@ -1,4 +1,4 @@
--use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult, RelroLevel};
+-use crate::spec::{LinkerFlavor, RelroLevel, Target, TargetOptions, TargetResult};
 +use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
  
  pub fn target() -> TargetResult {
@@ -47,5 +54,5 @@ index 89e68ab3..77659cdd 100644
          llvm_target: "powerpc64-unknown-linux-gnu".to_string(),
          target_endian: "big".to_string(),
 -- 
-2.25.0
+2.26.2
 
diff --git a/srcpkgs/rust/patches/0015-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch b/srcpkgs/rust/patches/0015-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch
deleted file mode 100644
index 1d10ac2f1f3..00000000000
--- a/srcpkgs/rust/patches/0015-Void-fix-linkage-against-host-target-LLVM-in-cross-s.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From e83770856411e2ff780551143fc6c26a8552741e Mon Sep 17 00:00:00 2001
-From: q66 <daniel@octaforge.org>
-Date: Sat, 21 Dec 2019 17:06:17 +0100
-Subject: [PATCH 15/16] Void: fix linkage against host/target LLVM in cross
- setups
-
----
- src/librustc_llvm/build.rs | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/librustc_llvm/build.rs b/src/librustc_llvm/build.rs
-index c5d5f066..91799142 100644
---- a/src/librustc_llvm/build.rs
-+++ b/src/librustc_llvm/build.rs
-@@ -225,8 +225,8 @@ fn main() {
-             println!("cargo:rustc-link-search=native={}", &lib[9..]);
-         } else if is_crossed {
-             if lib.starts_with("-L") {
--                println!("cargo:rustc-link-search=native={}",
--                         lib[2..].replace(&host, &target));
-+                println!("cargo:rustc-link-search=native={}{}",
-+                         env::var("XBPS_CROSS_BASE").unwrap(), &lib[2..]);
-             }
-         } else if lib.starts_with("-l") {
-             println!("cargo:rustc-link-lib={}", &lib[2..]);
--- 
-2.25.0
-
diff --git a/srcpkgs/rust/patches/497f879b1e24c369362bcd821959ffabc50a8a31.patch b/srcpkgs/rust/patches/497f879b1e24c369362bcd821959ffabc50a8a31.patch
new file mode 100644
index 00000000000..7432cd705de
--- /dev/null
+++ b/srcpkgs/rust/patches/497f879b1e24c369362bcd821959ffabc50a8a31.patch
@@ -0,0 +1,28 @@
+Upstream: Yes
+From 497f879b1e24c369362bcd821959ffabc50a8a31 Mon Sep 17 00:00:00 2001
+From: Nikita Popov <nikita.ppv@gmail.com>
+Date: Mon, 2 Mar 2020 22:37:55 +0100
+Subject: [PATCH] Update CreateMemSet() usage for LLVM 10
+
+---
+ src/rustllvm/RustWrapper.cpp | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp
+index 25cfee3373dc4..799adb418822d 100644
+--- a/src/rustllvm/RustWrapper.cpp
++++ b/src/rustllvm/RustWrapper.cpp
+@@ -1333,8 +1333,13 @@ extern "C" LLVMValueRef LLVMRustBuildMemSet(LLVMBuilderRef B,
+                                             LLVMValueRef Dst, unsigned DstAlign,
+                                             LLVMValueRef Val,
+                                             LLVMValueRef Size, bool IsVolatile) {
++#if LLVM_VERSION_GE(10, 0)
++  return wrap(unwrap(B)->CreateMemSet(
++      unwrap(Dst), unwrap(Val), unwrap(Size), MaybeAlign(DstAlign), IsVolatile));
++#else
+   return wrap(unwrap(B)->CreateMemSet(
+       unwrap(Dst), unwrap(Val), unwrap(Size), DstAlign, IsVolatile));
++#endif
+ }
+ 
+ extern "C" LLVMValueRef
diff --git a/srcpkgs/rust/patches/a94fa896cc92d5e0678376cf5aa8b64af0899732.patch b/srcpkgs/rust/patches/a94fa896cc92d5e0678376cf5aa8b64af0899732.patch
new file mode 100644
index 00000000000..16f05f5fb85
--- /dev/null
+++ b/srcpkgs/rust/patches/a94fa896cc92d5e0678376cf5aa8b64af0899732.patch
@@ -0,0 +1,28 @@
+Reason: Fixes LLVM10
+Upstream: Yes
+From a94fa896cc92d5e0678376cf5aa8b64af0899732 Mon Sep 17 00:00:00 2001
+From: Nikita Popov <nikita.ppv@gmail.com>
+Date: Tue, 4 Feb 2020 20:35:50 +0100
+Subject: [PATCH] Fix timeTraceProfilerInitialize for LLVM 10
+
+---
+ src/rustllvm/PassWrapper.cpp | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp
+index 90d24d20737db..9e8614e3b6d34 100644
+--- a/src/rustllvm/PassWrapper.cpp
++++ b/src/rustllvm/PassWrapper.cpp
+@@ -67,7 +67,11 @@ extern "C" void LLVMInitializePasses() {
+ }
+ 
+ extern "C" void LLVMTimeTraceProfilerInitialize() {
+-#if LLVM_VERSION_GE(9, 0)
++#if LLVM_VERSION_GE(10, 0)
++  timeTraceProfilerInitialize(
++      /* TimeTraceGranularity */ 0,
++      /* ProcName */ "rustc");
++#elif LLVM_VERSION_GE(9, 0)
+   timeTraceProfilerInitialize();
+ #endif
+ }
diff --git a/srcpkgs/rust/patches/need-ssp_nonshared.patch b/srcpkgs/rust/patches/need-ssp_nonshared.patch
new file mode 100644
index 00000000000..2a852400abf
--- /dev/null
+++ b/srcpkgs/rust/patches/need-ssp_nonshared.patch
@@ -0,0 +1,11 @@
+--- rustc-1.41.0-src/src/libstd/build.rs.orig	2020-02-08 17:05:40.390387794 +0200
++++ rustc-1.41.0-src/src/libstd/build.rs	2020-02-08 17:09:46.844426452 +0200
+@@ -11,6 +11,8 @@
+             println!("cargo:rustc-link-lib=dl");
+             println!("cargo:rustc-link-lib=rt");
+             println!("cargo:rustc-link-lib=pthread");
++        } else {
++            println!("cargo:rustc-link-lib=ssp_nonshared");
+         }
+     } else if target.contains("freebsd") {
+         println!("cargo:rustc-link-lib=execinfo");
diff --git a/srcpkgs/rust/template b/srcpkgs/rust/template
index 0215eeaf6c5..c9d72f57d99 100644
--- a/srcpkgs/rust/template
+++ b/srcpkgs/rust/template
@@ -4,31 +4,32 @@
 # Permission to use rust and cargo trademark is granted.
 # See: https://github.com/rust-lang/core-team/issues/4
 pkgname=rust
-version=1.41.1
-revision=2
-_rust_dist_version=1.40.0
-_cargo_dist_version=0.41.0
+version=1.43.1
+revision=1
+_rust_dist_version=1.43.1
+_cargo_dist_version=0.44.0
 # Always make sure custom distfiles used for bootstrap are
 # uploaded to https://alpha.de.repo.voidlinux.org/distfiles/
 wrksrc="rustc-${version}-src"
 hostmakedepends="cmake curl pkg-config python3 tar"
-makedepends="libffi-devel ncurses-devel libxml2-devel zlib-devel llvm9"
+makedepends="libffi-devel ncurses-devel libxml2-devel zlib-devel llvm10"
 depends="rust-std"
 short_desc="Safe, concurrent, practical systems language"
 maintainer="Enno Boland <gottox@voidlinux.org>"
 license="MIT, Apache-2.0"
 homepage="https://www.rust-lang.org/"
 distfiles="https://static.rust-lang.org/dist/rustc-${version}-src.tar.gz"
-checksum=38c93d016e6d3e083aa15e8f65511d3b4983072c0218a529f5ee94dd1de84573
+checksum=cde177b4a8c687da96f20de27630a1eb55c9d146a15e4c900d5c31cd3c3ac41d
 lib32disabled=yes
 patch_args="-Np1"
 
-build_options="static_llvm"
+build_options="bindist"
+desc_option_bindist="Generate tarballs for bootstrap"
 
 _bootstrap_dir="stage0-bootstrap"
 
 if [ "$CROSS_BUILD" ]; then
-	hostmakedepends+=" cargo llvm9"
+	hostmakedepends+=" cargo llvm10"
 	# These are required for building the buildhost's stage0/1
 	hostmakedepends+=" libffi-devel libxml2-devel ncurses-devel zlib-devel"
 else
@@ -50,57 +51,57 @@ else
 	case "$XBPS_MACHINE" in
 		i686)
 			checksum+="
-			 257e4789043098a5e3b4fa85ea988019f37d640a10f83d39ada00fb23e057b8a
-			 beab29565d12a6b9db4ef471c34d4c034295760095f7edc3f7b6c51fc08589a0
-			 c48bc132f4025ff39b1b6dc52aef9d406c3f926ce05fe92d943ceab7a5fd6058"
+			 b415a406443cafa85e426d56d02fb52231b8d78ad1fec33b79b757d8ef4ed64c
+			 9913d3e21efc13445e3b71f6e1103c63b130544e1f28a99a0bb642276ebca985
+			 c7b4045b2001be2e97b0b08dfaee02097aea0e8a9983b42585d733cfa1e69683"
 			;;
 		x86_64)
 			checksum+="
-			 b1c00618b7a98156e88b14682508a503284f85748eab23de749a20dcc8847111
-			 5a0b14a51f51b0194f70a2023749d9cb49c3b2e11f0d4c8232960b91fad336ac
-			 9b6ae643fa240c5ecbc1dc390f4020b6a683f25bac6f7437ebd4b9d32a8d0b6c"
+			 a18b89572ff2e55eb9e0428efcdb60eacd82fe28c4d825d169b0ffc9e3c55ceb
+			 dabc62db53c2e7ffeba2824d4c52a938486b04c01a93ecba00c5d529868f6cfc
+			 84ba23058542691dae8157beec6a7679a420643eb6a708134bb1dfb01cbdebea"
 			;;
 		x86_64-musl)
 			checksum+="
-			 769b9e31557fcc0ea2a661f88b679d3dbd62b537807c7b3c75ac6816a1be4fa3
-			 c647bb7f399b3d18e345b2dab1fb073470582a9298e83d8648f6661544df7279
-			 848646326474392bdac70a5bfa06efda4c36e2bbbf088f07456f98c7575844e1"
+			 be982dc01b5c86a3f2b0b99a2ca0e13b3cea698ee6f1db9fa024de5c8b35a75d
+			 f3b55147ff6e01448699eaf0875d7956ea38eeef42a19cda9d555e814470e823
+			 653cb60214d6f1000c9a7775111dccd093c0118e7f7bf5f2f1f53a7e5e2420b3"
 			;;
 		ppc64le)
 			checksum+="
-			 aa07a07ad272de825da8c18ad8dc4143a25bd28e5538d68c3bced53f060432b4
-			 4eb3141fb6c3d3e101b5d4493664c9a01d4bb9eebdf4b96f5c26a81188c2452d
-			 7705f21d938a72ba6f01818661b2dea29183209940a335f18d1761e1e03d3710"
+			 8fd21a9eac7e27a5f7af9d9357455d1ff5aef01d84b4025a773caaae6e0a6db7
+			 235bdaf836a0bd139257d6cc0566e0c3d4d1e07c04304ed9a8d200299aaa4a48
+			 4f90cd6cbcf9e9d6ba11830e093092e4e6c3d156ffde2e729933869b7a039ff9"
 			;;
 		ppc64le-musl)
 			checksum+="
-			 2c8ffeaa23d8ae0e1776af068bd92ba5cd15973696956a2b58c215a940721e67
-			 c40f696c8afdcaafec50ddc29b9d8c836efa01b681e8ca48d09fcf79576ee039
-			 0fbe481d284a14b84cc63ccb50caeb248200f238d2c3e449c2b8a8bf49c951ce"
+			 2c32096c0f1b3a756cc29d6ecaf89296148a7a99d43baa0141bee490b353b502
+			 fa87695bdede026b031010716fafbe2890cbff00acc3042fd372dd7cc5eb46a7
+			 a85e8c9714a8bb7c17cd23993c677f51d9e0d6f5e85ab10f53ec1639b19bbbd4"
 			;;
 		ppc64)
 			checksum+="
-			 0f4d02f2d21d8f4b23829502130c89599f2315bb9adcee4f1b5109ee68a187ab
-			 8edd65b1f53485caa134d1625131e76f7ca072366cc5df3e2761a39f52f7e83f
-			 23a7967b0c1c762cdbea4f850cacbb462e386977203c0d5ff060275c526d80d7"
+			 4aa250cd14553ae3a438cd7a7290a79b899d1fbec9fc60985bbce070b500883e
+			 2cd6e88be42db44338c18fa6e3170ffea679ee73825826112cdbf6dd9ed0619a
+			 983e2fbec9c4bfe66bab37ad64cdd5b47918378e421d9bf639e938f120650199"
 			;;
 		ppc64-musl)
 			checksum+="
-			 4645a4bb0d78da07c8dba1edc2769382a94dc3d8fbdd48e105a5c8dd20170e21
-			 0dbf82f8c24140f17fda36811861c9c3aa361f2256c5274a11eb4a1f183c7f3a
-			 d5a808fdb50068a14d6578f052c9e21ae7881d4ecdcf9e098c5e2c2b1ae65786"
+			 f3c4fb775e63248914fece31199312dd2f69660f10b696ebbc56d41d4bc4ac2c
+			 c3d580c71e5a716056347513588d4445bdb8225e2ee5d9f2cf87c5bb4357bcb1
+			 f974893d1cac6c799345bece08c7f796eb50e1a77c4b9bc2a6451d161a57c660"
 			;;
 		ppc)
 			checksum+="
-			 40121c3a6ec199338e7139e03e917a93290b7623334740d4d25cd1c8092f3de1
-			 c2b17cfe8b25d23b348b40e5802a4e369f691abe6ddbd4372df0d660eb100398
-			 295030192cf5b7e1fce75845a1961619a5f701185400ad816cf950d4e18f0646"
+			 109d6af5d05cfbde5a476d07cf8b3093a974b0c76922bf8cd1046c5e11f5caaa
+			 a90152808c82f863f3c14647ebfbb6ae66d065ea4577be1036f6dc229c1e7e89
+			 48f4419300fe758ebe024e6449a5ca1dff07803047a815b3d3909170baa7adcc"
 			;;
 		ppc-musl)
 			checksum+="
-			 c5b743370ce140e95d413b20734d26ac22697b99455262cef801883f5c732019
-			 8061486273c602ac29c3e98aaa3a6d1114d16b9973e051f127e922232fef2270
-			 91cc5d6f0192f68d5053fb460dd8347b28cb29b4a63a6e648d6b754795b5c4e8"
+			 3d5211d6c5cf241b3d3dba343c027d05ff04765e2dd4175168095a86e7c9de22
+			 04a5cdb4f18ccae3eb9059c84adf7a7778484e89c8404ba67cde814019ec5b57
+			 bbb93a757e75d09cb5f6d6dd837e32212acd8888426406352eccf52f329386f1"
 			;;
 	esac
 fi
@@ -127,7 +128,7 @@ _clear_vendor_checksums() {
 
 post_patch() {
 	rm -rf src/llvm-project
-	if [ "$build_option_static_llvm" ]; then
+	if [ "$build_option_bindist" ]; then
 		for x in ${FILESDIR}/patches/static-llvm/*.patch; do
 			msg_normal "Applying patch $x\n"
 			patch -sNp1 -i ${x}
@@ -167,7 +168,11 @@ do_configure() {
 	# if true, the binaries will be built with rpath, so the binaries will be
 	# usable directly from the build directory, this is not desirable for
 	# packaging but is useful when building bootstrap binaries
-	_use_rpath="false"
+	if [ "$build_option_bindist" ]; then
+		_use_rpath="true"
+	else
+		_use_rpath="false"
+	fi
 
 	cat > config.toml <<- EOF
 		[build]
@@ -232,7 +237,7 @@ do_configure() {
 # for it during stage1. Otherwise it attemps to use CFLAGS, which are the CFLAGS
 # of the cross host.
 do_build() {
-	if [ ! "$build_option_static_llvm" ]; then
+	if [ ! "$build_option_bindist" ]; then
 		export LLVM_LINK_SHARED=1
 	fi
 	export RUST_BACKTRACE=1
@@ -268,6 +273,15 @@ do_check() {
 }
 
 do_install() {
+	if [ "$build_option_bindist" ]; then
+		mkdir -p ${XBPS_SRCDISTDIR}/distfiles
+		install -m 0644 \
+			build/dist/rustc-${version}-${RUST_TARGET}.tar.xz \
+			build/dist/rust-std-${version}-${RUST_TARGET}.tar.xz \
+			${XBPS_SRCDISTDIR}/distfiles
+		exit 1
+	fi
+
 	vmkdir usr
 	tar xf build/dist/rustc-${version}-${RUST_TARGET}.tar.gz \
 	 -C "$DESTDIR/usr" --strip-components=2 --exclude=manifest.in

From 60106938855bcdfd47956388041ad1a4dcb0d601 Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
Date: Sun, 24 May 2020 18:46:11 +0200
Subject: [PATCH 2/2] rust: nocross for now

[ci skip]
---
 srcpkgs/rust/template | 1 +
 1 file changed, 1 insertion(+)

diff --git a/srcpkgs/rust/template b/srcpkgs/rust/template
index c9d72f57d99..c41aca61d57 100644
--- a/srcpkgs/rust/template
+++ b/srcpkgs/rust/template
@@ -22,6 +22,7 @@ distfiles="https://static.rust-lang.org/dist/rustc-${version}-src.tar.gz"
 checksum=cde177b4a8c687da96f20de27630a1eb55c9d146a15e4c900d5c31cd3c3ac41d
 lib32disabled=yes
 patch_args="-Np1"
+nocross=yes
 
 build_options="bindist"
 desc_option_bindist="Generate tarballs for bootstrap"

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PR PATCH] [Merged]: rust 1.43.1
  2020-05-24 16:50 [PR PATCH] rust 1.43.1 q66
  2020-05-24 17:34 ` [PR PATCH] [Updated] " q66
@ 2020-05-24 19:55 ` q66
  1 sibling, 0 replies; 3+ messages in thread
From: q66 @ 2020-05-24 19:55 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 682 bytes --]

There's a merged pull request on the void-packages repository

rust 1.43.1
https://github.com/void-linux/void-packages/pull/22268

Description:
This updates rust to 1.43.1. Cargo update has already been done previously.

Changes:

- New option `bindist` which creates bootstrap tarballs in `/host/sources/distfiles`, with the appropriate options set (rpath, static llvm)
- Removed standalone `static_llvm`
- LLVM 10

TODO:

- [x] Test `ppc64le`
- [x] Test `ppc64le-musl`, `ppc64`, `ppc64-musl`, `ppc`, `ppc-musl`
- [x] Test other architectures
- [x] Test firefox
- [ ] Upload bootstrap tarballs
- [x] Update checksums for non-ppc arches (currently still at 1.43.0)


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-05-24 19:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-24 16:50 [PR PATCH] rust 1.43.1 q66
2020-05-24 17:34 ` [PR PATCH] [Updated] " q66
2020-05-24 19:55 ` [PR PATCH] [Merged]: " q66

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).