diff --git a/.gitignore b/.gitignore index 1c16ae6..f487e25 100644 --- a/.gitignore +++ b/.gitignore @@ -244,3 +244,11 @@ /rust-1.39.0-powerpc64-unknown-linux-gnu.tar.xz /rust-1.39.0-s390x-unknown-linux-gnu.tar.xz /rust-1.39.0-x86_64-unknown-linux-gnu.tar.xz +/rustc-1.41.0-src.tar.xz +/rust-1.40.0-aarch64-unknown-linux-gnu.tar.xz +/rust-1.40.0-armv7-unknown-linux-gnueabihf.tar.xz +/rust-1.40.0-i686-unknown-linux-gnu.tar.xz +/rust-1.40.0-powerpc64le-unknown-linux-gnu.tar.xz +/rust-1.40.0-powerpc64-unknown-linux-gnu.tar.xz +/rust-1.40.0-s390x-unknown-linux-gnu.tar.xz +/rust-1.40.0-x86_64-unknown-linux-gnu.tar.xz diff --git a/0001-Fix-compiletest-fallout-from-stage0-bump.patch b/0001-Fix-compiletest-fallout-from-stage0-bump.patch new file mode 100644 index 0000000..dfffce9 --- /dev/null +++ b/0001-Fix-compiletest-fallout-from-stage0-bump.patch @@ -0,0 +1,24 @@ +From 241d2e765dc7401e642812e43b75dbc3950f2c98 Mon Sep 17 00:00:00 2001 +From: Mark Rousskov +Date: Wed, 18 Dec 2019 13:28:14 -0500 +Subject: [PATCH] Fix compiletest fallout from stage0 bump + +--- + src/tools/compiletest/src/main.rs | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/tools/compiletest/src/main.rs b/src/tools/compiletest/src/main.rs +index 15f8abd75d59..32965bbb292d 100644 +--- a/src/tools/compiletest/src/main.rs ++++ b/src/tools/compiletest/src/main.rs +@@ -569,6 +569,7 @@ pub fn test_opts(config: &Config) -> test::TestOpts { + list: false, + options: test::Options::new(), + time_options: None, ++ force_run_in_process: false, + } + } + +-- +2.24.1 + diff --git a/0001-Update-the-barrier-cache-during-ARM-EHABI-unwinding.patch b/0001-Update-the-barrier-cache-during-ARM-EHABI-unwinding.patch new file mode 100644 index 0000000..82d928d --- /dev/null +++ b/0001-Update-the-barrier-cache-during-ARM-EHABI-unwinding.patch @@ -0,0 +1,52 @@ +From b6fd4598c5367e78b5841fd99412484f0e86fc21 Mon Sep 17 00:00:00 2001 +From: Amanieu d'Antras +Date: Wed, 1 Jan 2020 17:11:45 +0100 +Subject: [PATCH] Update the barrier cache during ARM EHABI unwinding + +--- + src/libpanic_unwind/gcc.rs | 8 +++++++- + src/libunwind/libunwind.rs | 2 ++ + 2 files changed, 9 insertions(+), 1 deletion(-) + +diff --git a/src/libpanic_unwind/gcc.rs b/src/libpanic_unwind/gcc.rs +index 4f572fe21b30..328d0d4ce7be 100644 +--- a/src/libpanic_unwind/gcc.rs ++++ b/src/libpanic_unwind/gcc.rs +@@ -187,7 +187,13 @@ cfg_if::cfg_if! { + match eh_action { + EHAction::None | + EHAction::Cleanup(_) => return continue_unwind(exception_object, context), +- EHAction::Catch(_) => return uw::_URC_HANDLER_FOUND, ++ EHAction::Catch(_) => { ++ // EHABI requires the personality routine to update the ++ // SP value in the barrier cache of the exception object. ++ (*exception_object).private[5] = ++ uw::_Unwind_GetGR(context, uw::UNWIND_SP_REG); ++ return uw::_URC_HANDLER_FOUND; ++ } + EHAction::Terminate => return uw::_URC_FAILURE, + } + } else { +diff --git a/src/libunwind/libunwind.rs b/src/libunwind/libunwind.rs +index 0b39503c0d03..30658ce328d8 100644 +--- a/src/libunwind/libunwind.rs ++++ b/src/libunwind/libunwind.rs +@@ -23,6 +23,7 @@ pub type _Unwind_Word = uintptr_t; + pub type _Unwind_Ptr = uintptr_t; + pub type _Unwind_Trace_Fn = extern "C" fn(ctx: *mut _Unwind_Context, arg: *mut c_void) + -> _Unwind_Reason_Code; ++ + #[cfg(target_arch = "x86")] + pub const unwinder_private_data_size: usize = 5; + +@@ -151,6 +152,7 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm + use _Unwind_VRS_DataRepresentation::*; + + pub const UNWIND_POINTER_REG: c_int = 12; ++ pub const UNWIND_SP_REG: c_int = 13; + pub const UNWIND_IP_REG: c_int = 15; + + #[cfg_attr(all(feature = "llvm-libunwind", +-- +2.24.1 + diff --git a/rust-issue-67242-ignore-arm-foreign-exceptions.patch b/rust-issue-67242-ignore-arm-foreign-exceptions.patch deleted file mode 100644 index 127c435..0000000 --- a/rust-issue-67242-ignore-arm-foreign-exceptions.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- rustc-beta-src/src/test/run-make-fulldeps/foreign-exceptions/Makefile.orig 2019-12-07 18:36:56.000000000 -0800 -+++ rustc-beta-src/src/test/run-make-fulldeps/foreign-exceptions/Makefile 2019-12-12 15:49:24.655515206 -0800 -@@ -1,3 +1,7 @@ -+# ignore-arm -+# ignore-armeb -+# https://github.com/rust-lang/rust/issues/67242 -+ - -include ../tools.mk - - all: foo diff --git a/rust-pr57840-llvm7-debuginfo-variants.patch b/rust-pr57840-llvm7-debuginfo-variants.patch index 71996bc..b1fd427 100644 --- a/rust-pr57840-llvm7-debuginfo-variants.patch +++ b/rust-pr57840-llvm7-debuginfo-variants.patch @@ -29,4 +29,4 @@ index 6deedd0b5ea3..9f63038c3623 100644 + || llvm_util::get_major_version() < 8; } - // Describes the members of an enum value: An enum is described as a union of + // FIXME(eddyb) maybe precompute this? Right now it's computed once diff --git a/rust-pr66317-bindir-relative.patch b/rust-pr66317-bindir-relative.patch deleted file mode 100644 index 71d3b0c..0000000 --- a/rust-pr66317-bindir-relative.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs -index 2748903f2d47..10d02d6db829 100644 ---- a/src/bootstrap/builder.rs -+++ b/src/bootstrap/builder.rs -@@ -1231,7 +1231,8 @@ impl<'a> Builder<'a> { - cargo.arg("--frozen"); - } - -- cargo.env("RUSTC_INSTALL_BINDIR", &self.config.bindir); -+ // Try to use a sysroot-relative bindir, in case it was configured absolutely. -+ cargo.env("RUSTC_INSTALL_BINDIR", self.config.bindir_relative()); - - self.ci_env.force_coloring_in_ci(&mut cargo); - -diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs -index d1bdfa0a7676..0c03b95c7b25 100644 ---- a/src/bootstrap/config.rs -+++ b/src/bootstrap/config.rs -@@ -647,6 +647,20 @@ impl Config { - config - } - -+ /// Try to find the relative path of `bindir`, otherwise return it in full. -+ pub fn bindir_relative(&self) -> &Path { -+ let bindir = &self.bindir; -+ if bindir.is_absolute() { -+ // Try to make it relative to the prefix. -+ if let Some(prefix) = &self.prefix { -+ if let Ok(stripped) = bindir.strip_prefix(prefix) { -+ return stripped; -+ } -+ } -+ } -+ bindir -+ } -+ - /// Try to find the relative path of `libdir`. - pub fn libdir_relative(&self) -> Option<&Path> { - let libdir = self.libdir.as_ref()?; diff --git a/rust-pr68019-in-tree-compiletest.patch b/rust-pr68019-in-tree-compiletest.patch new file mode 100644 index 0000000..a0b28bf --- /dev/null +++ b/rust-pr68019-in-tree-compiletest.patch @@ -0,0 +1,97 @@ +From ed8e55fe8d732d8a87343441db3bfbb974f043df Mon Sep 17 00:00:00 2001 +From: Josh Stone +Date: Wed, 8 Jan 2020 09:44:45 -0800 +Subject: [PATCH 1/2] Remove obsolete llvm_tools flag + +--- + src/bootstrap/tool.rs | 12 +----------- + 1 file changed, 1 insertion(+), 11 deletions(-) + +diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs +index 815498047fd5..f785a0989a36 100644 +--- a/src/bootstrap/tool.rs ++++ b/src/bootstrap/tool.rs +@@ -293,7 +293,6 @@ fn rustbook_features() -> Vec { + macro_rules! bootstrap_tool { + ($( + $name:ident, $path:expr, $tool_name:expr +- $(,llvm_tools = $llvm:expr)* + $(,is_external_tool = $external:expr)* + $(,features = $features:expr)* + ; +@@ -305,15 +304,6 @@ macro_rules! bootstrap_tool { + )+ + } + +- impl Tool { +- /// Whether this tool requires LLVM to run +- pub fn uses_llvm_tools(&self) -> bool { +- match self { +- $(Tool::$name => false $(|| $llvm)*,)+ +- } +- } +- } +- + impl<'a> Builder<'a> { + pub fn tool_exe(&self, tool: Tool) -> PathBuf { + match tool { +@@ -381,7 +371,7 @@ bootstrap_tool!( + Tidy, "src/tools/tidy", "tidy"; + Linkchecker, "src/tools/linkchecker", "linkchecker"; + CargoTest, "src/tools/cargotest", "cargotest"; +- Compiletest, "src/tools/compiletest", "compiletest", llvm_tools = true; ++ Compiletest, "src/tools/compiletest", "compiletest"; + BuildManifest, "src/tools/build-manifest", "build-manifest"; + RemoteTestClient, "src/tools/remote-test-client", "remote-test-client"; + RustInstaller, "src/tools/rust-installer", "fabricate", is_external_tool = true; +-- +2.24.1 + + +From cc4688d66d75e149a0136f701045cbf7ee672725 Mon Sep 17 00:00:00 2001 +From: Josh Stone +Date: Wed, 8 Jan 2020 10:04:18 -0800 +Subject: [PATCH 2/2] Build compiletest with in-tree libtest + +--- + src/bootstrap/tool.rs | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs +index f785a0989a36..73a4dda74e88 100644 +--- a/src/bootstrap/tool.rs ++++ b/src/bootstrap/tool.rs +@@ -294,6 +294,7 @@ macro_rules! bootstrap_tool { + ($( + $name:ident, $path:expr, $tool_name:expr + $(,is_external_tool = $external:expr)* ++ $(,is_unstable_tool = $unstable:expr)* + $(,features = $features:expr)* + ; + )+) => { +@@ -344,7 +345,12 @@ macro_rules! bootstrap_tool { + compiler: self.compiler, + target: self.target, + tool: $tool_name, +- mode: Mode::ToolBootstrap, ++ mode: if false $(|| $unstable)* { ++ // use in-tree libraries for unstable features ++ Mode::ToolStd ++ } else { ++ Mode::ToolBootstrap ++ }, + path: $path, + is_optional_tool: false, + source_type: if false $(|| $external)* { +@@ -371,7 +377,7 @@ bootstrap_tool!( + Tidy, "src/tools/tidy", "tidy"; + Linkchecker, "src/tools/linkchecker", "linkchecker"; + CargoTest, "src/tools/cargotest", "cargotest"; +- Compiletest, "src/tools/compiletest", "compiletest"; ++ Compiletest, "src/tools/compiletest", "compiletest", is_unstable_tool = true; + BuildManifest, "src/tools/build-manifest", "build-manifest"; + RemoteTestClient, "src/tools/remote-test-client", "remote-test-client"; + RustInstaller, "src/tools/rust-installer", "fabricate", is_external_tool = true; +-- +2.24.1 + diff --git a/rust.spec b/rust.spec index bf7c6c6..df8ea14 100644 --- a/rust.spec +++ b/rust.spec @@ -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.39.0 -%global bootstrap_cargo 1.39.0 -%global bootstrap_channel 1.39.0 -%global bootstrap_date 2019-11-07 +%global bootstrap_rust 1.40.0 +%global bootstrap_cargo 1.40.0 +%global bootstrap_channel 1.40.0 +%global bootstrap_date 2019-12-19 # Only the specified arches will use bootstrap binaries. #global bootstrap_arches %%{rust_arches} @@ -21,7 +21,7 @@ %bcond_with llvm_static # We can also choose to just use Rust's bundled LLVM, in case the system LLVM -# is insufficient. Rust currently requires LLVM 6.0+. +# is insufficient. Rust currently requires LLVM 7.0+. %if 0%{?rhel} && !0%{?epel} %bcond_without bundled_llvm %else @@ -48,7 +48,7 @@ %endif Name: rust -Version: 1.40.0 +Version: 1.41.0 Release: 1%{?dist} Summary: The Rust Programming Language License: (ASL 2.0 or MIT) and (BSD and MIT) @@ -67,13 +67,15 @@ Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz # We do have the necessary fix in our LLVM 7. Patch1: rust-pr57840-llvm7-debuginfo-variants.patch -# Fix the bindir used by rustdoc to find rustc -# https://github.com/rust-lang/rust/pull/66317 -Patch2: rust-pr66317-bindir-relative.patch +# Fix compiletest with newer (local-rebuild) libtest +# https://github.com/rust-lang/rust/commit/241d2e765dc7401e642812e43b75dbc3950f2c98 +Patch2: 0001-Fix-compiletest-fallout-from-stage0-bump.patch +# https://github.com/rust-lang/rust/pull/68019 +Patch3: rust-pr68019-in-tree-compiletest.patch -# ARM loops when C++ tries to catch and rethrow a Rust exception -# https://github.com/rust-lang/rust/issues/67242 -Patch3: rust-issue-67242-ignore-arm-foreign-exceptions.patch +# Fix ARM unwinding for foreign-exceptions +# https://github.com/rust-lang/rust/pull/67779 +Patch4: 0001-Update-the-barrier-cache-during-ARM-EHABI-unwinding.patch # Get the Rust triple for any arch. %{lua: function rust_triple(arch) @@ -155,7 +157,7 @@ BuildRequires: %{python} %if %with bundled_llvm BuildRequires: cmake3 >= 3.4.3 -Provides: bundled(llvm) = 8.0.0 +Provides: bundled(llvm) = 9.0.0 %else BuildRequires: cmake >= 2.8.11 %if 0%{?epel} @@ -167,7 +169,7 @@ BuildRequires: cmake >= 2.8.11 %global llvm llvm %global llvm_root %{_prefix} %endif -BuildRequires: %{llvm}-devel >= 6.0 +BuildRequires: %{llvm}-devel >= 7.0 %if %with llvm_static BuildRequires: %{llvm}-static BuildRequires: libffi-devel @@ -407,6 +409,7 @@ test -f '%{local_rust_root}/bin/rustc' %patch1 -p1 -R %patch2 -p1 %patch3 -p1 +%patch4 -p1 %if "%{python}" == "python3" sed -i.try-py3 -e '/try python2.7/i try python3 "$@"' ./configure @@ -620,7 +623,6 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* %dir %{rustlibdir}/%{rust_triple} %dir %{rustlibdir}/%{rust_triple}/lib %{rustlibdir}/%{rust_triple}/lib/*.so -%{rustlibdir}/%{rust_triple}/codegen-backends/ %exclude %{_bindir}/*miri @@ -713,6 +715,16 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* %changelog +* Thu Jan 30 2020 Josh Stone - 1.41.0-1 +- Update to 1.41.0. + +* Thu Jan 16 2020 Josh Stone - 1.40.0-3 +- Build compiletest with in-tree libtest + +* Tue Jan 07 2020 Josh Stone - 1.40.0-2 +- Fix compiletest with newer (local-rebuild) libtest +- Fix ARM EHABI unwinding + * Thu Dec 19 2019 Josh Stone - 1.40.0-1 - Update to 1.40.0. diff --git a/sources b/sources index f2f74e3..cbe64cc 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rustc-1.40.0-src.tar.xz) = b5ac3079acefb62d3c985b77f624d7fb68de23a59396fed9ccb292db61641c064f3146ee54d3cf59067b17ebfaadd14a6b2b466def60316bb5b13ba3aef01e1f +SHA512 (rustc-1.41.0-src.tar.xz) = 0e30fe53b77860085bea0f1f60315eb835b00dd796c5d1b98ed44fe6fc27336dfb064908c86e1669a9cbe81c9ca1495e1c259a8a268bef23b23805a719cef0dd diff --git a/sources-bootstrap b/sources-bootstrap index b6006b2..ae403f7 100644 --- a/sources-bootstrap +++ b/sources-bootstrap @@ -1,8 +1,8 @@ -SHA512 (rustc-1.40.0-src.tar.xz) = b5ac3079acefb62d3c985b77f624d7fb68de23a59396fed9ccb292db61641c064f3146ee54d3cf59067b17ebfaadd14a6b2b466def60316bb5b13ba3aef01e1f -SHA512 (rust-1.39.0-aarch64-unknown-linux-gnu.tar.xz) = ad37a8454acb8985a5c2b42d7f8bc4212651a16fb5af6b4314dd97faa47de79893f2f74b516af89cd7e77ef3db64247c4764585eb0a17ac328c9cba5e5b9c407 -SHA512 (rust-1.39.0-armv7-unknown-linux-gnueabihf.tar.xz) = db2b001a5587e2d5c8cdcb53c974f2332e76f58e362cba55fc971d7244754f1fa0b7e708ad7e73e7250652b442f06929dc1e8981536d7d76850b45ade275d406 -SHA512 (rust-1.39.0-i686-unknown-linux-gnu.tar.xz) = 930546e79c0b1105eb0604ae33ccdbd8b00b56e56d069f19f0d802093a052fd3f940eaf1390cdecd79833b0c70457ebfee2ce3b9674fff72df1367076584394a -SHA512 (rust-1.39.0-powerpc64le-unknown-linux-gnu.tar.xz) = e15585150370514e580e171faa749218aeef04ce0493f5ad3928a0cb6cd0bddbf7c75ba8ed0783a2c954bbd7166e0445b4c33be4ab48479b0104f032b3d4b0af -SHA512 (rust-1.39.0-powerpc64-unknown-linux-gnu.tar.xz) = ff99ad6b120631346af8afac092f8b620e50fb8e118ef1e0ff5668103c01f4b9f082fae72e31a767be35d0647fd9fecc7e6b7b215bb1906e06b20bf3e2685619 -SHA512 (rust-1.39.0-s390x-unknown-linux-gnu.tar.xz) = d2b588f802d4fbe153dbd88cb745d34d1f5434cb3134cc9e091ebfb336a48b4c886cd80311cf92b5e1c6a16374302853a67e8a0576b02a89dbcf61d27919a045 -SHA512 (rust-1.39.0-x86_64-unknown-linux-gnu.tar.xz) = 02ca6c821877379d8bd0bcc38281a87e6f86bdbae1270da19e41336cc3a812d9c11c1e976655c192c39153f92cda90ddbd7b4b0bcb4f6787d6d354d2be827a8a +SHA512 (rustc-1.41.0-src.tar.xz) = 0e30fe53b77860085bea0f1f60315eb835b00dd796c5d1b98ed44fe6fc27336dfb064908c86e1669a9cbe81c9ca1495e1c259a8a268bef23b23805a719cef0dd +SHA512 (rust-1.40.0-aarch64-unknown-linux-gnu.tar.xz) = f601e4251e08a6d66edb0489b6ab840b57622b506547e81036e6dfe08eb71005a22a2777a0b8b2d07a6f88286d58f513482b863116311a6f43c7284769af6e7f +SHA512 (rust-1.40.0-armv7-unknown-linux-gnueabihf.tar.xz) = d3345946c5a3d5cb3d7fca4d3200710704d64547ebfa4ab11c45ea1a18ca3c49b429783d499845f31dcb150abe2f6836fe203fd9d7aa53e0475b940da5549492 +SHA512 (rust-1.40.0-i686-unknown-linux-gnu.tar.xz) = d727149afbbc3b2709360dd6080ff301e781aaa94459c1348d3e35382bc9c7ad65c4d70f9bfc7b44ac92ddaf89e3aab92b75b9d184eba86916da25bd629592b6 +SHA512 (rust-1.40.0-powerpc64le-unknown-linux-gnu.tar.xz) = 8b82f3bacc503aa23cfa7a6cd6232e34b734becffbbe02df9f766878d526d24d7409d8c104f39fa791c0f7a8b3fa61f6b8a528e89e8ab94d6a131b2d0ac11f0f +SHA512 (rust-1.40.0-powerpc64-unknown-linux-gnu.tar.xz) = eae2e0ba3a6a9ba07945112c17962ca3c77737fa187759e674e78f626777da85a5ee6107168fe2866b5beb1ecf2e655652cb7d9b51867b247d76e174dfb103ce +SHA512 (rust-1.40.0-s390x-unknown-linux-gnu.tar.xz) = e71d3a1d85975653b6d972a4854c9e53be7f2d093a601145261c97f7917f869399fbc6322a04f63b782a5a28b91c3be40041a8c77367d19dec8d0e857cbbef14 +SHA512 (rust-1.40.0-x86_64-unknown-linux-gnu.tar.xz) = 11a2ad1d8b9e91cbe9ee6a1954d46ac75eeaa83f0c2425a8ad70d191727b02e86ead33d6464222effca6f5134c31a165801a854aa57bdb5f12944d605de3c1d1