diff --git a/.gitignore b/.gitignore index f4b853f..e699ed3 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,11 @@ /rust-1.16.0-powerpc64-unknown-linux-gnu.tar.gz /rust-1.16.0-s390x-unknown-linux-gnu.tar.gz /rust-1.16.0-x86_64-unknown-linux-gnu.tar.gz +/rustc-1.18.0-src.tar.gz +/rust-1.17.0-aarch64-unknown-linux-gnu.tar.gz +/rust-1.17.0-armv7-unknown-linux-gnueabihf.tar.gz +/rust-1.17.0-i686-unknown-linux-gnu.tar.gz +/rust-1.17.0-powerpc64le-unknown-linux-gnu.tar.gz +/rust-1.17.0-powerpc64-unknown-linux-gnu.tar.gz +/rust-1.17.0-s390x-unknown-linux-gnu.tar.gz +/rust-1.17.0-x86_64-unknown-linux-gnu.tar.gz diff --git a/rust-1.18.0-no-fail-fast.patch b/rust-1.18.0-no-fail-fast.patch new file mode 100644 index 0000000..9d23400 --- /dev/null +++ b/rust-1.18.0-no-fail-fast.patch @@ -0,0 +1,368 @@ +From 9d8fc50c4a989c934f9473e28022b86a07556dca Mon Sep 17 00:00:00 2001 +From: Josh Stone +Date: Tue, 6 Jun 2017 12:59:04 -0700 +Subject: [PATCH] rustbuild: Add `./x.py test --no-fail-fast` + +This option forwards to each `cargo test` invocation, and applies the +same logic across all test steps to keep going after failures. At the +end, a brief summary line reports how many commands failed, if any. + +Note that if a test program fails to even start at all, or if an +auxiliary build command related to testing fails, these are still left +to stop everything right away. + +Fixes #40219. +--- + src/bootstrap/check.rs | 53 ++++++++++++++++++++++++++++++++++++++----------- + src/bootstrap/flags.rs | 14 ++++++++++++- + src/bootstrap/lib.rs | 22 +++++++++++++++++++- + src/bootstrap/step.rs | 12 +++++++++-- + src/build_helper/lib.rs | 38 ++++++++++++++++++++++++----------- + 5 files changed, 111 insertions(+), 28 deletions(-) + +diff --git a/src/bootstrap/check.rs b/src/bootstrap/check.rs +index f8f641060c44..f39a7ba61213 100644 +--- a/src/bootstrap/check.rs ++++ b/src/bootstrap/check.rs +@@ -58,6 +58,29 @@ impl fmt::Display for TestKind { + } + } + ++fn try_run(build: &Build, cmd: &mut Command) { ++ if build.flags.cmd.no_fail_fast() { ++ if !build.try_run(cmd) { ++ let failures = build.delayed_failures.get(); ++ build.delayed_failures.set(failures + 1); ++ } ++ } else { ++ build.run(cmd); ++ } ++} ++ ++#[allow(unused)] ++fn try_run_quiet(build: &Build, cmd: &mut Command) { ++ if build.flags.cmd.no_fail_fast() { ++ if !build.try_run_quiet(cmd) { ++ let failures = build.delayed_failures.get(); ++ build.delayed_failures.set(failures + 1); ++ } ++ } else { ++ build.run_quiet(cmd); ++ } ++} ++ + /// Runs the `linkchecker` tool as compiled in `stage` by the `host` compiler. + /// + /// This tool in `src/tools` will verify the validity of all our links in the +@@ -67,8 +90,8 @@ pub fn linkcheck(build: &Build, host: &str) { + let compiler = Compiler::new(0, host); + + let _time = util::timeit(); +- build.run(build.tool_cmd(&compiler, "linkchecker") +- .arg(build.out.join(host).join("doc"))); ++ try_run(build, build.tool_cmd(&compiler, "linkchecker") ++ .arg(build.out.join(host).join("doc"))); + } + + /// Runs the `cargotest` tool as compiled in `stage` by the `host` compiler. +@@ -95,9 +118,9 @@ pub fn cargotest(build: &Build, stage: u32, host: &str) { + let _time = util::timeit(); + let mut cmd = Command::new(build.tool(&Compiler::new(0, host), "cargotest")); + build.prepare_tool_cmd(compiler, &mut cmd); +- build.run(cmd.env("PATH", newpath) +- .arg(&build.cargo) +- .arg(&out_dir)); ++ try_run(build, cmd.env("PATH", newpath) ++ .arg(&build.cargo) ++ .arg(&out_dir)); + } + + /// Runs the `tidy` tool as compiled in `stage` by the `host` compiler. +@@ -113,7 +136,7 @@ pub fn tidy(build: &Build, host: &str) { + if !build.config.vendor { + cmd.arg("--no-vendor"); + } +- build.run(&mut cmd); ++ try_run(build, &mut cmd); + } + + fn testdir(build: &Build, host: &str) -> PathBuf { +@@ -261,7 +284,7 @@ pub fn compiletest(build: &Build, + } + + let _time = util::timeit(); +- build.run(&mut cmd); ++ try_run(build, &mut cmd); + } + + /// Run `rustdoc --test` for all documentation in `src/doc`. +@@ -337,7 +360,7 @@ fn markdown_test(build: &Build, compiler: &Compiler, markdown: &Path) { + } + cmd.arg("--test-args").arg(test_args); + +- build.run(&mut cmd); ++ try_run(build, &mut cmd); + } + + /// Run all unit tests plus documentation tests for an entire crate DAG defined +@@ -388,6 +411,9 @@ pub fn krate(build: &Build, + cargo.arg("--manifest-path") + .arg(build.src.join(path).join("Cargo.toml")) + .arg("--features").arg(features); ++ if test_kind.subcommand() == "test" && build.flags.cmd.no_fail_fast() { ++ cargo.arg("--no-fail-fast"); ++ } + + match krate { + Some(krate) => { +@@ -452,7 +478,7 @@ pub fn krate(build: &Build, + krate_qemu(build, &compiler, target, mode); + } else { + cargo.args(&build.flags.cmd.test_args()); +- build.run(&mut cargo); ++ try_run(build, &mut cargo); + } + } + +@@ -521,7 +547,7 @@ fn krate_emscripten(build: &Build, + if build.config.quiet_tests { + cmd.arg("--quiet"); + } +- build.run(&mut cmd); ++ try_run(build, &mut cmd); + } + } + +@@ -544,7 +570,7 @@ fn krate_qemu(build: &Build, + cmd.arg("--quiet"); + } + cmd.args(&build.flags.cmd.test_args()); +- build.run(&mut cmd); ++ try_run(build, &mut cmd); + } + } + +@@ -671,6 +697,9 @@ pub fn bootstrap(build: &Build) { + .current_dir(build.src.join("src/bootstrap")) + .env("CARGO_TARGET_DIR", build.out.join("bootstrap")) + .env("RUSTC", &build.rustc); ++ if build.flags.cmd.no_fail_fast() { ++ cmd.arg("--no-fail-fast"); ++ } + cmd.arg("--").args(&build.flags.cmd.test_args()); +- build.run(&mut cmd); ++ try_run(build, &mut cmd); + } +diff --git a/src/bootstrap/flags.rs b/src/bootstrap/flags.rs +index a1466d68a135..1ed759d24c54 100644 +--- a/src/bootstrap/flags.rs ++++ b/src/bootstrap/flags.rs +@@ -61,6 +61,7 @@ pub enum Subcommand { + Test { + paths: Vec, + test_args: Vec, ++ no_fail_fast: bool, + }, + Bench { + paths: Vec, +@@ -137,7 +138,10 @@ To learn more about a subcommand, run `./x.py -h`"); + + // Some subcommands get extra options + match subcommand.as_str() { +- "test" => { opts.optmulti("", "test-args", "extra arguments", "ARGS"); }, ++ "test" => { ++ opts.optflag("", "no-fail-fast", "Run all tests regardless of failure"); ++ opts.optmulti("", "test-args", "extra arguments", "ARGS"); ++ }, + "bench" => { opts.optmulti("", "test-args", "extra arguments", "ARGS"); }, + "dist" => { opts.optflag("", "install", "run installer as well"); }, + _ => { }, +@@ -260,6 +264,7 @@ Arguments: + Subcommand::Test { + paths: paths, + test_args: matches.opt_strs("test-args"), ++ no_fail_fast: matches.opt_present("no-fail-fast"), + } + } + "bench" => { +@@ -335,6 +340,13 @@ impl Subcommand { + _ => Vec::new(), + } + } ++ ++ pub fn no_fail_fast(&self) -> bool { ++ match *self { ++ Subcommand::Test { no_fail_fast, .. } => no_fail_fast, ++ _ => false, ++ } ++ } + } + + fn split(s: Vec) -> Vec { +diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs +index 5e046f41673e..d2303c96d201 100644 +--- a/src/bootstrap/lib.rs ++++ b/src/bootstrap/lib.rs +@@ -76,6 +76,7 @@ extern crate num_cpus; + extern crate rustc_serialize; + extern crate toml; + ++use std::cell::Cell; + use std::cmp; + use std::collections::HashMap; + use std::env; +@@ -85,7 +86,7 @@ use std::io::Read; + use std::path::{Component, PathBuf, Path}; + use std::process::Command; + +-use build_helper::{run_silent, run_suppressed, output, mtime}; ++use build_helper::{run_silent, run_suppressed, try_run_silent, try_run_suppressed, output, mtime}; + + use util::{exe, libdir, add_lib_path}; + +@@ -164,6 +165,7 @@ pub struct Build { + crates: HashMap, + is_sudo: bool, + src_is_git: bool, ++ delayed_failures: Cell, + } + + #[derive(Debug)] +@@ -257,6 +259,7 @@ impl Build { + lldb_python_dir: None, + is_sudo: is_sudo, + src_is_git: src_is_git, ++ delayed_failures: Cell::new(0), + } + } + +@@ -847,6 +850,23 @@ impl Build { + run_suppressed(cmd) + } + ++ /// Runs a command, printing out nice contextual information if it fails. ++ /// Exits if the command failed to execute at all, otherwise returns its ++ /// `status.success()`. ++ fn try_run(&self, cmd: &mut Command) -> bool { ++ self.verbose(&format!("running: {:?}", cmd)); ++ try_run_silent(cmd) ++ } ++ ++ /// Runs a command, printing out nice contextual information if it fails. ++ /// Exits if the command failed to execute at all, otherwise returns its ++ /// `status.success()`. ++ #[allow(unused)] ++ fn try_run_quiet(&self, cmd: &mut Command) -> bool { ++ self.verbose(&format!("running: {:?}", cmd)); ++ try_run_suppressed(cmd) ++ } ++ + /// Prints a message if this build is configured in verbose mode. + fn verbose(&self, msg: &str) { + if self.flags.verbose() || self.config.verbose() { +diff --git a/src/bootstrap/step.rs b/src/bootstrap/step.rs +index 17902a39df1e..f0522035127c 100644 +--- a/src/bootstrap/step.rs ++++ b/src/bootstrap/step.rs +@@ -28,6 +28,7 @@ + + use std::collections::{BTreeMap, HashSet, HashMap}; + use std::mem; ++use std::process; + + use check::{self, TestKind}; + use compile; +@@ -1092,8 +1093,8 @@ invalid rule dependency graph detected, was a rule added and maybe typo'd? + let (kind, paths) = match self.build.flags.cmd { + Subcommand::Build { ref paths } => (Kind::Build, &paths[..]), + Subcommand::Doc { ref paths } => (Kind::Doc, &paths[..]), +- Subcommand::Test { ref paths, test_args: _ } => (Kind::Test, &paths[..]), +- Subcommand::Bench { ref paths, test_args: _ } => (Kind::Bench, &paths[..]), ++ Subcommand::Test { ref paths, .. } => (Kind::Test, &paths[..]), ++ Subcommand::Bench { ref paths, .. } => (Kind::Bench, &paths[..]), + Subcommand::Dist { ref paths, install } => { + if install { + return vec![self.sbuild.name("install")] +@@ -1191,6 +1192,13 @@ invalid rule dependency graph detected, was a rule added and maybe typo'd? + self.build.verbose(&format!("executing step {:?}", step)); + (self.rules[step.name].run)(step); + } ++ ++ // Check for postponed failures from `test --no-fail-fast`. ++ let failures = self.build.delayed_failures.get(); ++ if failures > 0 { ++ println!("\n{} command(s) did not execute successfully.\n", failures); ++ process::exit(1); ++ } + } + + /// From the top level targets `steps` generate a topological ordering of +diff --git a/src/build_helper/lib.rs b/src/build_helper/lib.rs +index cb58a916fb79..10b0f19d6274 100644 +--- a/src/build_helper/lib.rs ++++ b/src/build_helper/lib.rs +@@ -42,35 +42,49 @@ pub fn run(cmd: &mut Command) { + } + + pub fn run_silent(cmd: &mut Command) { ++ if !try_run_silent(cmd) { ++ std::process::exit(1); ++ } ++} ++ ++pub fn try_run_silent(cmd: &mut Command) -> bool { + let status = match cmd.status() { + Ok(status) => status, + Err(e) => fail(&format!("failed to execute command: {:?}\nerror: {}", + cmd, e)), + }; + if !status.success() { +- fail(&format!("command did not execute successfully: {:?}\n\ +- expected success, got: {}", +- cmd, +- status)); ++ println!("\n\ncommand did not execute successfully: {:?}\n\ ++ expected success, got: {}\n\n", ++ cmd, ++ status); + } ++ status.success() + } + + pub fn run_suppressed(cmd: &mut Command) { ++ if !try_run_suppressed(cmd) { ++ std::process::exit(1); ++ } ++} ++ ++pub fn try_run_suppressed(cmd: &mut Command) -> bool { + let output = match cmd.output() { + Ok(status) => status, + Err(e) => fail(&format!("failed to execute command: {:?}\nerror: {}", + cmd, e)), + }; + if !output.status.success() { +- fail(&format!("command did not execute successfully: {:?}\n\ +- expected success, got: {}\n\n\ +- stdout ----\n{}\n\ +- stderr ----\n{}\n", +- cmd, +- output.status, +- String::from_utf8_lossy(&output.stdout), +- String::from_utf8_lossy(&output.stderr))); ++ println!("\n\ncommand did not execute successfully: {:?}\n\ ++ expected success, got: {}\n\n\ ++ stdout ----\n{}\n\ ++ stderr ----\n{}\n\n", ++ cmd, ++ output.status, ++ String::from_utf8_lossy(&output.stdout), ++ String::from_utf8_lossy(&output.stderr)); + } ++ output.status.success() + } + + pub fn gnu_target(target: &str) -> String { +-- +2.13.0 + diff --git a/rust.spec b/rust.spec index d105473..18ab4b0 100644 --- a/rust.spec +++ b/rust.spec @@ -8,10 +8,10 @@ # To bootstrap from scratch, set the channel and date from src/stage0.txt # e.g. 1.10.0 wants rustc: 1.9.0-2016-05-24 # or nightly wants some beta-YYYY-MM-DD -%global bootstrap_rust 1.16.0 -%global bootstrap_cargo 0.17.0 +%global bootstrap_rust 1.17.0 +%global bootstrap_cargo 0.18.0 %global bootstrap_channel %{bootstrap_rust} -%global bootstrap_date 2017-03-11 +%global bootstrap_date 2017-04-27 # Only the specified arches will use bootstrap binaries. #global bootstrap_arches %%{rust_arches} @@ -47,7 +47,7 @@ Name: rust -Version: 1.17.0 +Version: 1.18.0 Release: 1%{?dist} Summary: The Rust Programming Language License: (ASL 2.0 or MIT) and (BSD and ISC and MIT) @@ -62,8 +62,12 @@ ExclusiveArch: %{rust_arches} %endif Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.gz +# Don't let configure clobber our debuginfo choice for stable releases. Patch1: rust-1.16.0-configure-no-override.patch +# Backport rust#42363 to run all tests +Patch2: rust-1.18.0-no-fail-fast.patch + # Get the Rust triple for any arch. %{lua: function rust_triple(arch) local abi = "gnu" @@ -103,7 +107,7 @@ end} %ifarch %{bootstrap_arches} %global bootstrap_root rust-%{bootstrap_channel}-%{rust_triple} -%global local_rust_root %{_builddir}/%{bootstrap_root}%{_prefix} +%global local_rust_root %{_builddir}/%{bootstrap_root}/usr Provides: bundled(%{name}-bootstrap) = %{bootstrap_rust} %else BuildRequires: cargo >= %{bootstrap_cargo} @@ -121,11 +125,7 @@ BuildRequires: python2 BuildRequires: curl %if %with bundled_llvm -%if 0%{?epel} BuildRequires: cmake3 -%else -BuildRequires: cmake -%endif Provides: bundled(llvm) = 3.9 %else %if 0%{?fedora} >= 26 || 0%{?epel} @@ -169,14 +169,6 @@ Requires: %{name}-std-static%{?_isa} = %{version}-%{release} # https://github.com/rust-lang/rust/issues/11937 Requires: gcc -%if 0%{?fedora} >= 26 -# Only non-bootstrap builds should require rust-rpm-macros, because that -# requires cargo, which might not exist yet. -%ifnarch %{bootstrap_arches} -Requires: rust-rpm-macros -%endif -%endif - # An LLVM update added the Mips target, which rustc happily uses... # https://bugzilla.redhat.com/show_bug.cgi?id=1422930 Requires: llvm-libs%{?_isa} >= 3.8.1-2 @@ -185,6 +177,8 @@ Requires: llvm-libs%{?_isa} >= 3.8.1-2 %global _privatelibs lib.*-[[:xdigit:]]*[.]so.* %global __provides_exclude ^(%{_privatelibs})$ %global __requires_exclude ^(%{_privatelibs})$ +%global __provides_exclude_from ^%{_docdir}/.*$ +%global __requires_exclude_from ^%{_docdir}/.*$ # While we don't want to encourage dynamic linking to Rust shared libraries, as # there's no stable ABI, we still need the unallocated metadata (.rustc) to @@ -198,7 +192,7 @@ Requires: llvm-libs%{?_isa} >= 3.8.1-2 %if %{without bundled_llvm} && "%{llvm_root}" != "%{_prefix}" # https://github.com/rust-lang/rust/issues/40717 -%global rustflags %{rustflags} -Clink-arg=-L%{llvm_root}/lib +%global library_path $(%{llvm_root}/bin/llvm-config --libdir) %endif %description @@ -271,7 +265,7 @@ its standard library. %ifarch %{bootstrap_arches} %setup -q -n %{bootstrap_root} -T -b %{bootstrap_source} ./install.sh --components=cargo,rustc,rust-std-%{rust_triple} \ - --prefix=./%{_prefix} --disable-ldconfig + --prefix=%{local_rust_root} --disable-ldconfig test -f '%{local_rust_root}/bin/cargo' test -f '%{local_rust_root}/bin/rustc' %endif @@ -310,12 +304,14 @@ sed -i.ffi -e '$a #[link(name = "ffi")] extern {}' \ %endif %patch1 -p1 -b .no-override +%patch2 -p1 -b .no-fail-fast %build %{?cmake_path:export PATH=%{cmake_path}:$PATH} -export RUSTFLAGS="%{rustflags}" +%{?library_path:export LIBRARY_PATH="%{library_path}"} +%{?rustflags:export RUSTFLAGS="%{rustflags}"} # We're going to override --libdir when configuring to get rustlib into a # common path, but we'll fix the shared libraries during install. @@ -339,24 +335,33 @@ export RUSTFLAGS="%{rustflags}" %install %{?cmake_path:export PATH=%{cmake_path}:$PATH} -export RUSTFLAGS="%{rustflags}" +%{?library_path:export LIBRARY_PATH="%{library_path}"} +%{?rustflags:export RUSTFLAGS="%{rustflags}"} DESTDIR=%{buildroot} ./x.py dist --install -# The libdir libraries are identical to those under rustlib/, and we need -# the latter in place to support dynamic linking for compiler plugins, so we'll -# point ldconfig to rustlib/ and remove the former. -%global rust_ldconfig %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf -mkdir -p %{buildroot}$(dirname %{rust_ldconfig}) -echo "%{rustlibdir}/%{rust_triple}/lib" > %{buildroot}%{rust_ldconfig} -rm -v %{buildroot}%{common_libdir}/*.so + +# Make sure the shared libraries are in the proper libdir +%if "%{_libdir}" != "%{common_libdir}" +mkdir -p %{buildroot}%{_libdir} +find %{buildroot}%{common_libdir} -maxdepth 1 -type f -name '*.so' \ + -exec mv -v -t %{buildroot}%{_libdir} '{}' '+' +%endif + +# The shared libraries should be executable for debuginfo extraction. +find %{buildroot}%{_libdir} -maxdepth 1 -type f -name '*.so' \ + -exec chmod -v +x '{}' '+' + +# The libdir libraries are identical to those under rustlib/. It's easier on +# library loading if we keep them in libdir, but we do need them in rustlib/ +# to support dynamic linking for compiler plugins, so we'll symlink. +(cd "%{buildroot}%{rustlibdir}/%{rust_triple}/lib" && + find ../../../../%{_lib} -maxdepth 1 -name '*.so' \ + -exec ln -v -f -s -t . '{}' '+') # Remove installer artifacts (manifests, uninstall scripts, etc.) find %{buildroot}%{rustlibdir} -maxdepth 1 -type f -exec rm -v '{}' '+' -# The shared libraries should be executable for debuginfo extraction. -find %{buildroot}%{rustlibdir}/ -type f -name '*.so' -exec chmod -v +x '{}' '+' - # FIXME: __os_install_post will strip the rlibs # -- should we find a way to preserve debuginfo? @@ -378,10 +383,11 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* %check %{?cmake_path:export PATH=%{cmake_path}:$PATH} -export RUSTFLAGS="%{rustflags}" +%{?library_path:export LIBRARY_PATH="%{library_path}"} +%{?rustflags:export RUSTFLAGS="%{rustflags}"} # The results are not stable on koji, so mask errors and just log it. -./x.py test || : +./x.py test --no-fail-fast || : %post -p /sbin/ldconfig @@ -395,13 +401,13 @@ export RUSTFLAGS="%{rustflags}" %doc README.md %{_bindir}/rustc %{_bindir}/rustdoc +%{_libdir}/*.so %{_mandir}/man1/rustc.1* %{_mandir}/man1/rustdoc.1* %dir %{rustlibdir} %dir %{rustlibdir}/%{rust_triple} %dir %{rustlibdir}/%{rust_triple}/lib %{rustlibdir}/%{rust_triple}/lib/*.so -%{rust_ldconfig} %files std-static @@ -442,6 +448,12 @@ export RUSTFLAGS="%{rustflags}" %changelog +* Thu Jun 08 2017 Josh Stone - 1.18.0-1 +- Update to 1.18.0. + +* Mon May 08 2017 Josh Stone - 1.17.0-2 +- Move shared libraries back to libdir and symlink in rustlib + * Thu Apr 27 2017 Josh Stone - 1.17.0-1 - Update to 1.17.0. diff --git a/sources b/sources index 6c6dc07..22cee91 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rustc-1.17.0-src.tar.gz) = 781799b29d83b4f0f433814bd818df034526db8e7f88c2df51d3b814eacafe8098d4bbe47ace951e1943325b3267b244007cf04f1f11083645b25aeacd40ebb6 +SHA512 (rustc-1.18.0-src.tar.gz) = eff0460b647dfb3490e28d4dec4f9781d31a942f22de75d9bd1ba31591597226b6862ec5132e8b4fcdbcf6e6ffa085ca5dda7ff8260cd82388fc13e8d3b4a2eb diff --git a/sources-bootstrap b/sources-bootstrap index 9faa4b4..b1245a6 100644 --- a/sources-bootstrap +++ b/sources-bootstrap @@ -1,8 +1,8 @@ -SHA512 (rustc-1.17.0-src.tar.gz) = 781799b29d83b4f0f433814bd818df034526db8e7f88c2df51d3b814eacafe8098d4bbe47ace951e1943325b3267b244007cf04f1f11083645b25aeacd40ebb6 -SHA512 (rust-1.16.0-aarch64-unknown-linux-gnu.tar.gz) = 6f1cd5a9884c2a595c43fda7ce283035ebe901510615006163eba3dea757169ca76239b2c64b506d2c396debb01b4bfe8d7b1c5ea9138ba646bb19f5a55b33bc -SHA512 (rust-1.16.0-armv7-unknown-linux-gnueabihf.tar.gz) = 4aead298cec7c25c256da84be22790eb38e527f4478d180ccb7cffaf88736c4f7e762a30deba53e14feda049b1814ccdd91c38a86ce2106d8518de4079740739 -SHA512 (rust-1.16.0-i686-unknown-linux-gnu.tar.gz) = 7a780a107d98c6a8883f95dbb5a5ec95bad52fb1e735afba29b47411b450d464cbc8dfe73d35de1eb18b9a1f9ea727daa1ca9d3042e2a98c67ad570d328e139d -SHA512 (rust-1.16.0-powerpc64le-unknown-linux-gnu.tar.gz) = e1afc94bc6f80eeb6371d7037afd3fdaea189b6d0c2c5b569f6fb5976d7a7d105da57d2cf46b067a418f15083e62418fe6f3d6b40f6e2357d018b692fdb3a1a7 -SHA512 (rust-1.16.0-powerpc64-unknown-linux-gnu.tar.gz) = e93a509a84c433893c7ceb68720bbc30f097afd933178dc513273a32d3c6a37b4e234c11216bf730ac4fa28fc1ce9538b7e0ecde46c165145e72171a2cb7170a -SHA512 (rust-1.16.0-s390x-unknown-linux-gnu.tar.gz) = 45184f2b4d6ed21c90bef96380008d4787effa46986172053b366f7424e22c097577e720c88faa2acfbbb7dd41ed36596bfc691dcd8bf8d96278e34ec75666a2 -SHA512 (rust-1.16.0-x86_64-unknown-linux-gnu.tar.gz) = f3d381c0e47e0af02eb116376422c3e48295c2854c6ad8c03d4c13e662f3cc1fdddf25923f7b3ef358c5cf670ed67d75e2197162434a81d5f9499e6e0e2d1054 +SHA512 (rustc-1.18.0-src.tar.gz) = eff0460b647dfb3490e28d4dec4f9781d31a942f22de75d9bd1ba31591597226b6862ec5132e8b4fcdbcf6e6ffa085ca5dda7ff8260cd82388fc13e8d3b4a2eb +SHA512 (rust-1.17.0-aarch64-unknown-linux-gnu.tar.gz) = 58a44c7c5ddcec2560b48103aedb6718aa944e2058683af69638b6d00d7a76de0ed32c8a0819bf7a4585d01b349b260abdd1b9d4a378e3beaa7fef7872e5deb6 +SHA512 (rust-1.17.0-armv7-unknown-linux-gnueabihf.tar.gz) = e4970d090ab067e73507ea7cbcbf39de84ca2f3e506fffe0d76cabf2fb22e88229fe9d6fec5f025da6f7975ec1e8ffb82c6e5a58d50c1c51718494a19dfdf770 +SHA512 (rust-1.17.0-i686-unknown-linux-gnu.tar.gz) = 32212fdb237cc638fe4ac4aec6b23fe9fec25c9b7329090b89dc6feac2fe7f48999b2bee8155bb345dfe94ef5fda9ea4ca670cb323ad5936046a54c495f52af9 +SHA512 (rust-1.17.0-powerpc64le-unknown-linux-gnu.tar.gz) = 1963b596dd8c5fe3fe836319074246107a982ee6c17d973a681e1bd96870440295b73bed60929fdf445136990d15bf90d96843115db4287ffced07dafa6364d1 +SHA512 (rust-1.17.0-powerpc64-unknown-linux-gnu.tar.gz) = faffdf9e61e525cec9dfe47bee780a95d58c0778eafab2d9f56021f3910e5b6fee358de6af7ef0185c298921b2c010ebf2faa1c271cb4818c7e03f3424aac0ab +SHA512 (rust-1.17.0-s390x-unknown-linux-gnu.tar.gz) = c92cba2b24422e9ce09b1ac1fae2da0ce4d884dddc1b6606c76d8f2e94dc6e46391632dfd005669fe37a7d0c447fddf155e8976a0b3bd4b0c96dd60877ca644e +SHA512 (rust-1.17.0-x86_64-unknown-linux-gnu.tar.gz) = e12afcbc5a4642c908305c843f014d3802705f18d4e98e1a42dcca574dbe22af01ec8479f8c3fee5ddf12c530212118ff6eef5c4a2762ad4da6c2b071f163513