Merge branch 'master' into f28

This commit is contained in:
Josh Stone 2019-01-17 15:34:22 -08:00
commit a5304b7cfe
7 changed files with 172 additions and 170 deletions

8
.gitignore vendored
View File

@ -170,3 +170,11 @@
/rust-1.30.0-s390x-unknown-linux-gnu.tar.xz
/rust-1.30.0-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.31.1-src.tar.xz
/rustc-1.32.0-src.tar.xz
/rust-1.31.1-aarch64-unknown-linux-gnu.tar.xz
/rust-1.31.1-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.31.1-i686-unknown-linux-gnu.tar.xz
/rust-1.31.1-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.31.1-powerpc64-unknown-linux-gnu.tar.xz
/rust-1.31.1-s390x-unknown-linux-gnu.tar.xz
/rust-1.31.1-x86_64-unknown-linux-gnu.tar.xz

View File

@ -1,118 +0,0 @@
From f107514aef0b25b0d959941df1e45b18a478151b Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Fri, 30 Nov 2018 15:33:40 -0800
Subject: [PATCH] Deal with EINTR in net timeout tests
We've seen sporadic QE failures in the timeout tests on this assertion:
assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut);
So there's an error, but not either of the expected kinds. Adding a
format to show the kind revealed `ErrorKind::Interrupted` (`EINTR`).
For the cases that were using `read`, we can just use `read_exact` to
keep trying after interruption. For those using `recv_from`, we have to
manually loop until we get a non-interrupted result.
---
src/libstd/net/tcp.rs | 10 ++++++----
src/libstd/net/udp.rs | 20 ++++++++++++++++----
src/libstd/sys/unix/ext/net.rs | 10 ++++++----
3 files changed, 28 insertions(+), 12 deletions(-)
diff --git a/src/libstd/net/tcp.rs b/src/libstd/net/tcp.rs
index ad212a547579..be797803233a 100644
--- a/src/libstd/net/tcp.rs
+++ b/src/libstd/net/tcp.rs
@@ -1548,8 +1548,9 @@ mod tests {
let mut buf = [0; 10];
let start = Instant::now();
- let kind = stream.read(&mut buf).err().expect("expected error").kind();
- assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut);
+ let kind = stream.read_exact(&mut buf).err().expect("expected error").kind();
+ assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut,
+ "unexpected_error: {:?}", kind);
assert!(start.elapsed() > Duration::from_millis(400));
drop(listener);
}
@@ -1570,8 +1571,9 @@ mod tests {
assert_eq!(b"hello world", &buf[..]);
let start = Instant::now();
- let kind = stream.read(&mut buf).err().expect("expected error").kind();
- assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut);
+ let kind = stream.read_exact(&mut buf).err().expect("expected error").kind();
+ assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut,
+ "unexpected_error: {:?}", kind);
assert!(start.elapsed() > Duration::from_millis(400));
drop(listener);
}
diff --git a/src/libstd/net/udp.rs b/src/libstd/net/udp.rs
index 0ebe3284b4f0..fc68abae05a0 100644
--- a/src/libstd/net/udp.rs
+++ b/src/libstd/net/udp.rs
@@ -1030,8 +1030,14 @@ mod tests {
let mut buf = [0; 10];
let start = Instant::now();
- let kind = stream.recv_from(&mut buf).err().expect("expected error").kind();
- assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut);
+ loop {
+ let kind = stream.recv_from(&mut buf).err().expect("expected error").kind();
+ if kind != ErrorKind::Interrupted {
+ assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut,
+ "unexpected_error: {:?}", kind);
+ break;
+ }
+ }
assert!(start.elapsed() > Duration::from_millis(400));
}
@@ -1049,8 +1055,14 @@ mod tests {
assert_eq!(b"hello world", &buf[..]);
let start = Instant::now();
- let kind = stream.recv_from(&mut buf).err().expect("expected error").kind();
- assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut);
+ loop {
+ let kind = stream.recv_from(&mut buf).err().expect("expected error").kind();
+ if kind != ErrorKind::Interrupted {
+ assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut,
+ "unexpected_error: {:?}", kind);
+ break;
+ }
+ }
assert!(start.elapsed() > Duration::from_millis(400));
}
diff --git a/src/libstd/sys/unix/ext/net.rs b/src/libstd/sys/unix/ext/net.rs
index 55f43ccd7db4..737437c76b7c 100644
--- a/src/libstd/sys/unix/ext/net.rs
+++ b/src/libstd/sys/unix/ext/net.rs
@@ -1654,8 +1654,9 @@ mod test {
or_panic!(stream.set_read_timeout(Some(Duration::from_millis(1000))));
let mut buf = [0; 10];
- let kind = stream.read(&mut buf).err().expect("expected error").kind();
- assert!(kind == io::ErrorKind::WouldBlock || kind == io::ErrorKind::TimedOut);
+ let kind = stream.read_exact(&mut buf).err().expect("expected error").kind();
+ assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut,
+ "unexpected_error: {:?}", kind);
}
#[test]
@@ -1675,8 +1676,9 @@ mod test {
or_panic!(stream.read(&mut buf));
assert_eq!(b"hello world", &buf[..]);
- let kind = stream.read(&mut buf).err().expect("expected error").kind();
- assert!(kind == io::ErrorKind::WouldBlock || kind == io::ErrorKind::TimedOut);
+ let kind = stream.read_exact(&mut buf).err().expect("expected error").kind();
+ assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut,
+ "unexpected_error: {:?}", kind);
}
// Ensure the `set_read_timeout` and `set_write_timeout` calls return errors
--
2.19.1

View File

@ -0,0 +1,90 @@
From 72cd8aedc2901d6a6b598eadc001cc39040ae487 Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Wed, 12 Dec 2018 16:51:31 -0800
Subject: [PATCH] Try to get the target triple from rustc itself
The prior method was trying to pick the triple out of the sysroot path.
A FIXME comment already notes that this doesn't work with custom
toolchains in rustup. It also fails with distro-installed toolchains,
where the sysroot may simply be `/usr`.
The output of `rustc -Vv` is a more reliable source, as it contains a
line like `host: x86_64-unknown-linux-gnu`. This should be enough to
identify the triple for any `rustc`, but just in case, the path-based
code is kept as a fallback.
---
src/loader.rs | 41 ++++++++++++++++++++++++++++++++++++++---
1 file changed, 38 insertions(+), 3 deletions(-)
diff --git a/src/loader.rs b/src/loader.rs
index 645c95139164..fe92bef1c596 100644
--- a/src/loader.rs
+++ b/src/loader.rs
@@ -108,9 +108,33 @@ impl AnalysisLoader for CargoAnalysisLoader {
}
}
+fn extract_target_triple(sys_root_path: &Path) -> String {
+ // First try to get the triple from the rustc version output,
+ // otherwise fall back on the rustup-style toolchain path.
+ extract_rustc_host_triple()
+ .unwrap_or_else(|| extract_rustup_target_triple(sys_root_path))
+}
+
+fn extract_rustc_host_triple() -> Option<String> {
+ let rustc = env::var("RUSTC").unwrap_or(String::from("rustc"));
+ let verbose_version = Command::new(rustc)
+ .arg("--verbose")
+ .arg("--version")
+ .output()
+ .ok()
+ .and_then(|out| String::from_utf8(out.stdout).ok())?;
+
+ // Extracts the triple from a line like `host: x86_64-unknown-linux-gnu`
+ verbose_version
+ .lines()
+ .find(|line| line.starts_with("host: "))
+ .and_then(|host| host.split_whitespace().nth(1))
+ .map(String::from)
+}
+
// FIXME: This can fail when using a custom toolchain in rustup (often linked to
// `/$rust_repo/build/$target/stage2`)
-fn extract_target_triple(sys_root_path: &Path) -> String {
+fn extract_rustup_target_triple(sys_root_path: &Path) -> String {
// Extracts nightly-x86_64-pc-windows-msvc from
// $HOME/.rustup/toolchains/nightly-x86_64-pc-windows-msvc
let toolchain = sys_root_path
@@ -169,7 +193,7 @@ mod tests {
r#"C:\Users\user\.rustup\toolchains\nightly-x86_64-pc-windows-msvc"#,
);
assert_eq!(
- extract_target_triple(path),
+ extract_rustup_target_triple(path),
String::from("x86_64-pc-windows-msvc")
);
}
@@ -180,8 +204,19 @@ mod tests {
"/home/user/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu",
);
assert_eq!(
- extract_target_triple(path),
+ extract_rustup_target_triple(path),
String::from("x86_64-unknown-linux-gnu")
);
}
+
+ #[test]
+ fn target_triple() {
+ let sys_root_path = sys_root_path();
+ let target_triple = extract_target_triple(&sys_root_path);
+ let target_path = sys_root_path
+ .join("lib")
+ .join("rustlib")
+ .join(&target_triple);
+ assert!(target_path.is_dir(), "{:?} is not a directory!", target_path);
+ }
}
--
2.19.2

View File

@ -0,0 +1,33 @@
From d9ddc39052c91568936427e3dee087b608140cf4 Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Tue, 8 Jan 2019 13:19:50 -0800
Subject: [PATCH] lldb_batchmode.py: try `import _thread` for Python 3
---
src/etc/lldb_batchmode.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/etc/lldb_batchmode.py b/src/etc/lldb_batchmode.py
index 6b4c44806740..537b419b3279 100644
--- a/src/etc/lldb_batchmode.py
+++ b/src/etc/lldb_batchmode.py
@@ -18,10 +18,15 @@ import lldb
import os
import sys
import threading
-import thread
import re
import time
+try:
+ import thread
+except ModuleNotFoundError:
+ # The `thread` module was renamed to `_thread` in Python 3.
+ import _thread as thread
+
# Set this to True for additional output
DEBUG_OUTPUT = False
--
2.20.1

View File

@ -9,10 +9,10 @@
# e.g. 1.10.0 wants rustc: 1.9.0-2016-05-24
# or nightly wants some beta-YYYY-MM-DD
# Note that cargo matches the program version here, not its crate version.
%global bootstrap_rust 1.30.0
%global bootstrap_cargo 1.30.0
%global bootstrap_rust 1.31.1
%global bootstrap_cargo 1.31.0
%global bootstrap_channel %{bootstrap_rust}
%global bootstrap_date 2018-10-25
%global bootstrap_date 2018-12-20
# Only the specified arches will use bootstrap binaries.
#global bootstrap_arches %%{rust_arches}
@ -52,18 +52,9 @@
%bcond_with lldb
%endif
# Some sub-packages are versioned independently of the rust compiler and runtime itself.
# Also beware that if any of these are not changed in a version bump, then the release
# number should still increase, not be reset to 1!
%global rustc_version 1.31.1
%global cargo_version 1.31.0
%global rustfmt_version 1.0.0
%global rls_version 1.31.7
%global clippy_version 0.0.212
Name: rust
Version: %{rustc_version}
Release: 9%{?dist}
Version: 1.32.0
Release: 1%{?dist}
Summary: The Rust Programming Language
License: (ASL 2.0 or MIT) and (BSD and MIT)
# ^ written as: (rust itself) and (bundled libraries)
@ -71,14 +62,17 @@ URL: https://www.rust-lang.org
ExclusiveArch: %{rust_arches}
%if "%{channel}" == "stable"
%global rustc_package rustc-%{rustc_version}-src
%global rustc_package rustc-%{version}-src
%else
%global rustc_package rustc-%{channel}-src
%endif
Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz
# https://github.com/rust-lang/rust/pull/56394
Patch1: 0001-Deal-with-EINTR-in-net-timeout-tests.patch
# https://github.com/rust-dev-tools/rls-analysis/pull/160
Patch1: 0001-Try-to-get-the-target-triple-from-rustc-itself.patch
# https://github.com/rust-lang/rust/pull/57453
Patch2: 0001-lldb_batchmode.py-try-import-_thread-for-Python-3.patch
# Get the Rust triple for any arch.
%{lua: function rust_triple(arch)
@ -124,10 +118,10 @@ Provides: bundled(%{name}-bootstrap) = %{bootstrap_rust}
%else
BuildRequires: cargo >= %{bootstrap_cargo}
%if 0%{?fedora} >= 27
BuildRequires: (%{name} >= %{bootstrap_rust} with %{name} <= %{rustc_version})
BuildRequires: (%{name} >= %{bootstrap_rust} with %{name} <= %{version})
%else
BuildRequires: %{name} >= %{bootstrap_rust}
BuildConflicts: %{name} > %{rustc_version}
BuildConflicts: %{name} > %{version}
%endif
%global local_rust_root %{_prefix}
%endif
@ -190,11 +184,11 @@ Provides: bundled(libbacktrace) = 8.1.0
Provides: bundled(miniz) = 1.16~beta+r1
# Virtual provides for folks who attempt "dnf install rustc"
Provides: rustc = %{rustc_version}-%{release}
Provides: rustc%{?_isa} = %{rustc_version}-%{release}
Provides: rustc = %{version}-%{release}
Provides: rustc%{?_isa} = %{version}-%{release}
# Always require our exact standard library
Requires: %{name}-std-static%{?_isa} = %{rustc_version}-%{release}
Requires: %{name}-std-static%{?_isa} = %{version}-%{release}
# The C compiler is needed at runtime just for linking. Someday rustc might
# invoke the linker directly, and then we'll only need binutils.
@ -260,7 +254,7 @@ This package includes the common functionality for %{name}-gdb and %{name}-lldb.
Summary: GDB pretty printers for Rust
BuildArch: noarch
Requires: gdb
Requires: %{name}-debugger-common = %{rustc_version}-%{release}
Requires: %{name}-debugger-common = %{version}-%{release}
%description gdb
This package includes the rust-gdb script, which allows easier debugging of Rust
@ -277,7 +271,7 @@ Summary: LLDB pretty printers for Rust
Requires: lldb
Requires: python2-lldb
Requires: %{name}-debugger-common = %{rustc_version}-%{release}
Requires: %{name}-debugger-common = %{version}-%{release}
%description lldb
This package includes the rust-lldb script, which allows easier debugging of Rust
@ -300,7 +294,6 @@ its standard library.
%package -n cargo
Summary: Rust's package manager and build tool
Version: %{cargo_version}
%if %with bundled_libgit2
Provides: bundled(libgit2) = 0.27
%endif
@ -319,11 +312,10 @@ and ensure that you'll always get a repeatable build.
%package -n cargo-doc
Summary: Documentation for Cargo
Version: %{cargo_version}
BuildArch: noarch
# Cargo no longer builds its own documentation
# https://github.com/rust-lang/cargo/pull/4904
Requires: rust-doc = %{rustc_version}-%{release}
Requires: rust-doc = %{version}-%{release}
%description -n cargo-doc
This package includes HTML documentation for Cargo.
@ -331,12 +323,11 @@ This package includes HTML documentation for Cargo.
%package -n rustfmt
Summary: Tool to find and fix Rust formatting issues
Version: %{rustfmt_version}
Requires: cargo
# The component/package was rustfmt-preview until Rust 1.31.
Obsoletes: rustfmt-preview < 1.0.0
Provides: rustfmt-preview = %{rustfmt_version}-%{release}
Provides: rustfmt-preview = %{version}-%{release}
%description -n rustfmt
A tool for formatting Rust code according to style guidelines.
@ -344,8 +335,6 @@ A tool for formatting Rust code according to style guidelines.
%package -n rls
Summary: Rust Language Server for IDE integration
Version: %{rls_version}
Provides: rls = %{rls_version}
%if %with bundled_libgit2
Provides: bundled(libgit2) = 0.27
%endif
@ -354,11 +343,11 @@ Provides: bundled(libssh2) = 1.8.1~dev
%endif
Requires: rust-analysis
# /usr/bin/rls is dynamically linked against internal rustc libs
Requires: %{name}%{?_isa} = %{rustc_version}-%{release}
Requires: %{name}%{?_isa} = %{version}-%{release}
# The component/package was rls-preview until Rust 1.31.
Obsoletes: rls-preview < 1.31.6
Provides: rls-preview = %{rls_version}-%{release}
Provides: rls-preview = %{version}-%{release}
%description -n rls
The Rust Language Server provides a server that runs in the background,
@ -369,15 +358,13 @@ reformatting, and code completion, and enables renaming and refactorings.
%package -n clippy
Summary: Lints to catch common mistakes and improve your Rust code
Version: %{clippy_version}
Provides: clippy = %{clippy_version}
Requires: cargo
# /usr/bin/clippy-driver is dynamically linked against internal rustc libs
Requires: %{name}%{?_isa} = %{rustc_version}-%{release}
Requires: %{name}%{?_isa} = %{version}-%{release}
# The component/package was clippy-preview until Rust 1.31.
Obsoletes: clippy-preview <= 0.0.212
Provides: clippy-preview = %{clippy_version}-%{release}
Provides: clippy-preview = %{version}-%{release}
%description -n clippy
A collection of lints to catch common mistakes and improve your Rust code.
@ -394,7 +381,7 @@ useful as a reference for code completion tools in various editors.
%package analysis
Summary: Compiler analysis data for the Rust standard library
Requires: rust-std-static%{?_isa} = %{rustc_version}-%{release}
Requires: rust-std-static%{?_isa} = %{version}-%{release}
%description analysis
This package contains analysis data files produced with rustc's -Zsave-analysis
@ -414,15 +401,15 @@ test -f '%{local_rust_root}/bin/rustc'
%setup -q -n %{rustc_package}
pushd vendor/rls-analysis
%patch1 -p1
popd
%patch2 -p1
%if "%{python}" == "python3"
sed -i.try-py3 -e '/try python2.7/i try python3 "$@"' ./configure
%endif
# We're disabling jemalloc, but rust-src still wants it.
# rm -rf src/jemalloc/
%if %without bundled_llvm
rm -rf src/llvm/
%endif
@ -455,7 +442,7 @@ sed -i.ffi -e '$a #[link(name = "ffi")] extern {}' \
# The configure macro will modify some autoconf-related files, which upsets
# cargo when it tries to verify checksums in those files. If we just truncate
# that file list, cargo won't have anything to complain about.
find src/vendor -name .cargo-checksum.json \
find vendor -name .cargo-checksum.json \
-exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+'
@ -501,7 +488,6 @@ export LIBSSH2_SYS_USE_PKG_CONFIG=1
%{!?with_bundled_llvm: --llvm-root=%{llvm_root} \
%{!?llvm_has_filecheck: --disable-codegen-tests} \
%{!?with_llvm_static: --enable-llvm-link-shared } } \
--disable-jemalloc \
--disable-rpath \
%{enable_debuginfo} \
--enable-extended \
@ -699,6 +685,9 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py*
%changelog
* Thu Jan 17 2019 Josh Stone <jistone@redhat.com> - 1.32.0-1
- Update to 1.32.0.
* Mon Jan 07 2019 Josh Stone <jistone@redhat.com> - 1.31.1-9
- Update to 1.31.1 for RLS fixes.

View File

@ -1 +1 @@
SHA512 (rustc-1.31.1-src.tar.xz) = d6688711452295c41468af214f036499074d82fbeedc3f03560275219c2fae910e623e38e3210176d86f78ba5533ea098da5ff21532c8ad1a5aac132bb74ee02
SHA512 (rustc-1.32.0-src.tar.xz) = 487c405fed6430f62d2d0c38b65f6223b1c5074c7a0d3734dc8b3bb72fca255f5727e49541749569713a0c3e9a67eff574ba5698e8dceca6f0ef20b50f99aa42

View File

@ -1,8 +1,8 @@
SHA512 (rustc-1.31.1-src.tar.xz) = d6688711452295c41468af214f036499074d82fbeedc3f03560275219c2fae910e623e38e3210176d86f78ba5533ea098da5ff21532c8ad1a5aac132bb74ee02
SHA512 (rust-1.30.0-aarch64-unknown-linux-gnu.tar.xz) = 47459ea5a92418fdbfed9517d2ca741d02d8342e87e8b0e191103ff5407e39da917534445008a036cf043f0e8aff15a5d8c1884b0144ce4022f626fcfb5a46c6
SHA512 (rust-1.30.0-armv7-unknown-linux-gnueabihf.tar.xz) = c2849807e1fd37dc175ea4e41345076f5b24944471c191539b625eb59183d899c1f416b99bac8365ead20d2b49ede4254ccf39dc8006e17721a031f11fa42348
SHA512 (rust-1.30.0-i686-unknown-linux-gnu.tar.xz) = 76542f5d1f030696c6fb2aea6d4d7d3cb5739a16b7ce38f85cd7295d8f5ff1f1854266a5d30830898ab2fc06030be10d70f246c1391f241b8d9cba243d9ff992
SHA512 (rust-1.30.0-powerpc64le-unknown-linux-gnu.tar.xz) = 18095b68c6a5a4be32d4ad3413a251fe570c22d2c793852de6247fde5e061fc6d77bbcd812fff7e5bae7361c9588d7e41ef89ad791da678c89763acddc06a88f
SHA512 (rust-1.30.0-powerpc64-unknown-linux-gnu.tar.xz) = 8d371215eb3ba6b2f1fa9cc05ede5dd1cac873c82dde0f508f962cd27a13b15b814a6a9fdbce92b524dcebbb19294cd607c29d2d123cde1daefb61cd57090010
SHA512 (rust-1.30.0-s390x-unknown-linux-gnu.tar.xz) = 19a2f218b3104cfa5e5578365cc9927c818ddf721e4e8eb381bba1bd182fdefd9ad085ba4cbe8248fdbf5b173081ca1a2648b5be5fad62a0a324c3ade7f21ae7
SHA512 (rust-1.30.0-x86_64-unknown-linux-gnu.tar.xz) = 09d272bcc5b062815135d64441162b737078799328418adc4a4734fee69fcb9ad6abcbdc77b399688998481f0453915231b8b6d31b1d4066ac578035272c19f0
SHA512 (rustc-1.32.0-src.tar.xz) = 487c405fed6430f62d2d0c38b65f6223b1c5074c7a0d3734dc8b3bb72fca255f5727e49541749569713a0c3e9a67eff574ba5698e8dceca6f0ef20b50f99aa42
SHA512 (rust-1.31.1-aarch64-unknown-linux-gnu.tar.xz) = c45aebda96a2df0e24efc7dc75cb913f6f92f6214582863367f3556a335d9a5ddf5bb487cb33dee7a48ab1d4dc986bd1fcf32f85b75d07558b1d18d89b26fd30
SHA512 (rust-1.31.1-armv7-unknown-linux-gnueabihf.tar.xz) = 78b1681f44274c9a0bf62c7646c5a2c85164c5f4dd4349a757b512dd82d435a4f2779c4b6653c8c3f66986512438d1b23e4af15defbbe9f489c0119141ef1942
SHA512 (rust-1.31.1-i686-unknown-linux-gnu.tar.xz) = ee2c2bb2c1bb0f6e7f8eaeb4b2f0a8de7f53e8da675ec05cb56cab9bc4faa18b7075f5843226d7f9459e1208cc3fb1b90c65063b4a5a3828b04f8ff3c93ebe39
SHA512 (rust-1.31.1-powerpc64le-unknown-linux-gnu.tar.xz) = e64f586b632b85d07e18c61e5ce18a69404d89e302ecd8b4495e09e2b2f62bd3f32455b3d0d81cfa2d0031c003f23797421587cf6f314ce5b18b12157e1e9a3b
SHA512 (rust-1.31.1-powerpc64-unknown-linux-gnu.tar.xz) = 9a4427735e345d5e8f860ceab497c0ea3efd001c04322f5d2ecf0d5ac76e27feb1a247bb42662446ae39bf52eca75455b01a4c27341d6241406aa6feab1d1d4b
SHA512 (rust-1.31.1-s390x-unknown-linux-gnu.tar.xz) = ce6999f7d27468143a9a288fd1bda9f3ec42475f8b8473518be41358a2144317abf8076ed9527a10db94b5b89cf920f04217ce7a78ec214aa3e073a8419675bc
SHA512 (rust-1.31.1-x86_64-unknown-linux-gnu.tar.xz) = 3bf37bc419acd7820c7e33d7b44e6cba7f3b556ca8880fee2f65b1648596f069e0bc590a3a7acc10c60a0328f83787a172650d9c26cf21aa14782dcd9a97ec3a