diff --git a/0001-Hopefully-fix-rustdoc-build.patch b/0001-Hopefully-fix-rustdoc-build.patch new file mode 100644 index 0000000..06ca58e --- /dev/null +++ b/0001-Hopefully-fix-rustdoc-build.patch @@ -0,0 +1,38 @@ +From 73369f32621f6a844a80a8513ae3ded901e4a406 Mon Sep 17 00:00:00 2001 +From: Mark Rousskov +Date: Tue, 5 Nov 2019 11:16:46 -0500 +Subject: [PATCH] Hopefully fix rustdoc build + +It's super unclear why this broke when we switched to beta but not +previously -- but at least it's hopefully fixed now. +--- + src/bootstrap/builder.rs | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs +index 2748903f2d47..2edcef203ad2 100644 +--- a/src/bootstrap/builder.rs ++++ b/src/bootstrap/builder.rs +@@ -886,7 +886,18 @@ impl<'a> Builder<'a> { + // things still build right, please do! + match mode { + Mode::Std => metadata.push_str("std"), +- _ => {}, ++ // When we're building rustc tools, they're built with a search path ++ // that contains things built during the rustc build. For example, ++ // bitflags is built during the rustc build, and is a dependency of ++ // rustdoc as well. We're building rustdoc in a different target ++ // directory, though, which means that Cargo will rebuild the ++ // dependency. When we go on to build rustdoc, we'll look for ++ // bitflags, and find two different copies: one built during the ++ // rustc step and one that we just built. This isn't always a ++ // problem, somehow -- not really clear why -- but we know that this ++ // fixes things. ++ Mode::ToolRustc => metadata.push_str("tool-rustc"), ++ _ => {} + } + cargo.env("__CARGO_DEFAULT_LIB_METADATA", &metadata); + +-- +2.23.0 + diff --git a/rust-pr66317-bindir-relative.patch b/rust-pr66317-bindir-relative.patch new file mode 100644 index 0000000..71d3b0c --- /dev/null +++ b/rust-pr66317-bindir-relative.patch @@ -0,0 +1,39 @@ +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.spec b/rust.spec index 6de3a28..5309f63 100644 --- a/rust.spec +++ b/rust.spec @@ -49,7 +49,7 @@ Name: rust Version: 1.39.0 -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) @@ -71,6 +71,14 @@ Patch1: rust-pr57840-llvm7-debuginfo-variants.patch # https://github.com/rust-lang/rust/pull/65474 Patch2: rust-pr65474-split-rustc-dev.patch +# Fix conflicting libraries of rustc tools +# https://github.com/rust-lang/rust/commit/73369f32621f6a844a80a8513ae3ded901e4a406 +Patch3: 0001-Hopefully-fix-rustdoc-build.patch + +# Fix the bindir used by rustdoc to find rustc +# https://github.com/rust-lang/rust/pull/66317 +Patch4: rust-pr66317-bindir-relative.patch + # Get the Rust triple for any arch. %{lua: function rust_triple(arch) local abi = "gnu" @@ -402,6 +410,8 @@ 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 @@ -711,6 +721,9 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* %changelog +* Tue Nov 12 2019 Josh Stone - 1.39.0-2 +- Fix a couple build and test issues with rustdoc. + * Thu Nov 07 2019 Josh Stone - 1.39.0-1 - Update to 1.39.0.