From 3212aa76cb0d2c0a16376e7fecdf0e54243518bc Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Wed, 16 May 2018 10:28:26 -0700 Subject: [PATCH 1/2] Add rust#50789 to fix same-version bootstrap We don't need to rebuild for this patch now, but it will correct the FTBFS that Koschei is currently reporting. --- ...-built-in-stage0-have-unique-metadat.patch | 40 +++++++++++++++++++ rust.spec | 4 ++ 2 files changed, 44 insertions(+) create mode 100644 0001-Ensure-libraries-built-in-stage0-have-unique-metadat.patch diff --git a/0001-Ensure-libraries-built-in-stage0-have-unique-metadat.patch b/0001-Ensure-libraries-built-in-stage0-have-unique-metadat.patch new file mode 100644 index 0000000..38a4402 --- /dev/null +++ b/0001-Ensure-libraries-built-in-stage0-have-unique-metadat.patch @@ -0,0 +1,40 @@ +From e8e5eb58c0d6890f73ea01354e18f51b1a6697f8 Mon Sep 17 00:00:00 2001 +From: Josh Stone +Date: Tue, 15 May 2018 17:48:02 -0700 +Subject: [PATCH] Ensure libraries built in stage0 have unique metadata + +Issue #50786 shows a case with local rebuild where the libraries built +by stage0 had the same suffix as stage0's own, and were accidentally +loaded by that stage0 rustc when compiling `librustc_trans`. + +Now we set `__CARGO_DEFAULT_LIB_METADATA` to "bootstrap" during stage0, +rather than the release channel like usual, so the library suffix will +always be completely distinct from the stage0 compiler. +--- + src/bootstrap/builder.rs | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs +index 17f19222e6ea..e5824010ef2c 100644 +--- a/src/bootstrap/builder.rs ++++ b/src/bootstrap/builder.rs +@@ -592,7 +592,15 @@ impl<'a> Builder<'a> { + + // FIXME: Temporary fix for https://github.com/rust-lang/cargo/issues/3005 + // Force cargo to output binaries with disambiguating hashes in the name +- cargo.env("__CARGO_DEFAULT_LIB_METADATA", &self.config.channel); ++ let metadata = if compiler.stage == 0 { ++ // Treat stage0 like special channel, whether it's a normal prior- ++ // release rustc or a local rebuild with the same version, so we ++ // never mix these libraries by accident. ++ "bootstrap" ++ } else { ++ &self.config.channel ++ }; ++ cargo.env("__CARGO_DEFAULT_LIB_METADATA", &metadata); + + let stage; + if compiler.stage == 0 && self.local_rebuild { +-- +2.17.0 + diff --git a/rust.spec b/rust.spec index 8056f30..dffd331 100644 --- a/rust.spec +++ b/rust.spec @@ -72,6 +72,9 @@ Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz # https://github.com/rust-lang/rust/pull/49959 Patch1: pull-49959.patch +# https://github.com/rust-lang/rust/pull/50789/ +Patch2: 0001-Ensure-libraries-built-in-stage0-have-unique-metadat.patch + # Get the Rust triple for any arch. %{lua: function rust_triple(arch) local abi = "gnu" @@ -372,6 +375,7 @@ test -f '%{local_rust_root}/bin/rustc' %setup -q -n %{rustc_package} %patch1 -p1 +%patch2 -p1 %if "%{python}" == "python3" sed -i.try-py3 -e '/try python2.7/i try python3 "$@"' ./configure From 225f76f4c73df96ded4ec35dc84b43335e6956c7 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Tue, 29 May 2018 11:39:30 -0700 Subject: [PATCH 2/2] Update to 1.26.1. --- .gitignore | 1 + rust.spec | 13 +++++++++---- sources | 2 +- sources-bootstrap | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 8e6f3fc..1572f08 100644 --- a/.gitignore +++ b/.gitignore @@ -122,3 +122,4 @@ /rust-1.25.0-powerpc64-unknown-linux-gnu.tar.xz /rust-1.25.0-s390x-unknown-linux-gnu.tar.xz /rust-1.25.0-x86_64-unknown-linux-gnu.tar.xz +/rustc-1.26.1-src.tar.xz diff --git a/rust.spec b/rust.spec index dffd331..c397e96 100644 --- a/rust.spec +++ b/rust.spec @@ -47,14 +47,16 @@ %endif # Some sub-packages are versioned independently of the rust compiler and runtime itself. -%global rustc_version 1.26.0 -%global cargo_version %{rustc_version} -%global rustfmt_version 0.4.1 +# 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.26.1 +%global cargo_version 1.26.0 +%global rustfmt_version 0.4.2 %global rls_version 0.126.0 Name: rust Version: %{rustc_version} -Release: 1%{?dist} +Release: 2%{?dist} Summary: The Rust Programming Language License: (ASL 2.0 or MIT) and (BSD and MIT) # ^ written as: (rust itself) and (bundled libraries) @@ -646,6 +648,9 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* %changelog +* Tue May 29 2018 Josh Stone - 1.26.1-2 +- Update to 1.26.1. + * Thu May 10 2018 Josh Stone - 1.26.0-1 - Update to 1.26.0. diff --git a/sources b/sources index 122a20b..65f7575 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rustc-1.26.0-src.tar.xz) = 563b910ecf4b2a0d798a1201177f733333e64efad49e5aceec5adc66a8c6903df391c9afc0fdd8284348c08082e0c4de1e5cb68efe6797594de43ca93e4ad7a2 +SHA512 (rustc-1.26.1-src.tar.xz) = 219b8d4dbc1aa087422d8227de8a6be10c0579fd9d1aae83af0a0305baf2c3a72222c6bdca8635c550b5b754d08a7a5b03b81b8b28019b23250327be1c7f8b00 diff --git a/sources-bootstrap b/sources-bootstrap index 353015a..6ce4a13 100644 --- a/sources-bootstrap +++ b/sources-bootstrap @@ -1,4 +1,4 @@ -SHA512 (rustc-1.26.0-src.tar.xz) = 563b910ecf4b2a0d798a1201177f733333e64efad49e5aceec5adc66a8c6903df391c9afc0fdd8284348c08082e0c4de1e5cb68efe6797594de43ca93e4ad7a2 +SHA512 (rustc-1.26.1-src.tar.xz) = 219b8d4dbc1aa087422d8227de8a6be10c0579fd9d1aae83af0a0305baf2c3a72222c6bdca8635c550b5b754d08a7a5b03b81b8b28019b23250327be1c7f8b00 SHA512 (rust-1.25.0-aarch64-unknown-linux-gnu.tar.xz) = 404ecd4dc1e49fba41d7ade947877f621aa762e43eb5a8f604823fe297e8023f095cd449610240ed235723baaac96064eb38445794e27708edcdbca998d939e3 SHA512 (rust-1.25.0-armv7-unknown-linux-gnueabihf.tar.xz) = 63bf72c6011f9ccb052496d09d1ecc37d5c2ec8260ade2ef9b7bca6fb0dc8b77f5d27eb77c1136cef6f986f2fec90577399b0f9c57e757838904ab4030f93f6d SHA512 (rust-1.25.0-i686-unknown-linux-gnu.tar.xz) = 75ad5cb5e00fabc24aaa46236cc6f2193a7543fd0944c0717c11a56d9c420d20463ad683558d86f5d42abacfb89d15f9cabf404c912a5e24a28e6716c8003e8f