From a46c97548e39a4997ee9a72cf2e4bb7540a579fa Mon Sep 17 00:00:00 2001 From: Pablo Greco Date: Dec 05 2020 14:59:35 +0000 Subject: Import 1.45.0 from stream --- diff --git a/.gitignore b/.gitignore index ffea49d..f04a2ff 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -SOURCES/rustc-1.35.0-src.tar.xz -SOURCES/rust-1.34.2-armv7-unknown-linux-gnueabihf.tar.xz +SOURCES/rustc-1.45.0-src.tar.xz diff --git a/.rust.metadata b/.rust.metadata index 23d2bd2..3cc07c5 100644 --- a/.rust.metadata +++ b/.rust.metadata @@ -1,2 +1 @@ -50cece3a9a40909c1042344e380e50681365e808 SOURCES/rustc-1.35.0-src.tar.xz -cc2292bb7a184b300bdb0dd161afc81c56cceb75 SOURCES/rust-1.34.2-armv7-unknown-linux-gnueabihf.tar.xz +7447f361432a8c569eb5b5ab85b784a898dd61d2 SOURCES/rustc-1.45.0-src.tar.xz diff --git a/SOURCES/0001-Limit-internalization-in-LLVM-8-ThinLTO.patch b/SOURCES/0001-Limit-internalization-in-LLVM-8-ThinLTO.patch deleted file mode 100644 index 3c09947..0000000 --- a/SOURCES/0001-Limit-internalization-in-LLVM-8-ThinLTO.patch +++ /dev/null @@ -1,29 +0,0 @@ -From b4131e297e18fde119f6f461b3e622218166b009 Mon Sep 17 00:00:00 2001 -From: Josh Stone -Date: Fri, 26 Apr 2019 08:58:14 -0700 -Subject: [PATCH] Limit internalization in LLVM 8 ThinLTO - ---- - src/rustllvm/PassWrapper.cpp | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp -index 319c66a21f17..0ebef82d3768 100644 ---- a/src/rustllvm/PassWrapper.cpp -+++ b/src/rustllvm/PassWrapper.cpp -@@ -873,8 +873,11 @@ LLVMRustCreateThinLTOData(LLVMRustThinLTOModule *modules, - return PrevailingType::Unknown; - }; - #if LLVM_VERSION_GE(8, 0) -+ // We don't have a complete picture in our use of ThinLTO, just our immediate -+ // crate, so we need `ImportEnabled = false` to limit internalization. -+ // Otherwise, we sometimes lose `static` values -- see #60184. - computeDeadSymbolsWithConstProp(Ret->Index, Ret->GUIDPreservedSymbols, -- deadIsPrevailing, /* ImportEnabled = */ true); -+ deadIsPrevailing, /* ImportEnabled = */ false); - #else - computeDeadSymbols(Ret->Index, Ret->GUIDPreservedSymbols, deadIsPrevailing); - #endif --- -2.20.1 - diff --git a/SOURCES/0001-bump-bootstrap-fix-compiletest-wrt.-exclude_should_p.patch b/SOURCES/0001-bump-bootstrap-fix-compiletest-wrt.-exclude_should_p.patch deleted file mode 100644 index 7ab3801..0000000 --- a/SOURCES/0001-bump-bootstrap-fix-compiletest-wrt.-exclude_should_p.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 26e9a81c487f63c734bb7ac1739cdae2da2cb9b1 Mon Sep 17 00:00:00 2001 -From: Mazdak Farrokhzad -Date: Mon, 15 Apr 2019 04:05:37 +0200 -Subject: [PATCH] bump bootstrap; fix compiletest wrt. exclude_should_panic - ---- - 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 9e3c49119dea..431fd7969be0 100644 ---- a/src/tools/compiletest/src/main.rs -+++ b/src/tools/compiletest/src/main.rs -@@ -523,6 +523,7 @@ pub fn run_tests(config: &Config) { - - pub fn test_opts(config: &Config) -> test::TestOpts { - test::TestOpts { -+ exclude_should_panic: false, - filter: config.filter.clone(), - filter_exact: config.filter_exact, - run_ignored: if config.run_ignored { --- -2.21.0 - diff --git a/SOURCES/rust-pr57840-llvm7-debuginfo-variants.patch b/SOURCES/rust-pr57840-llvm7-debuginfo-variants.patch deleted file mode 100644 index 71996bc..0000000 --- a/SOURCES/rust-pr57840-llvm7-debuginfo-variants.patch +++ /dev/null @@ -1,32 +0,0 @@ -commit ab998a2eeb2bcdc69ce70c814af97f0d1302a404 (from d17f62d857c70508efbf60be41135880bcd2e062) -Merge: d17f62d857c7 9452a8dfa3ba -Author: Mazdak Farrokhzad -Date: Thu Jan 24 00:20:00 2019 +0100 - - Rollup merge of #57840 - tromey:fix-issue-57762, r=nikic - - Fix issue 57762 - - against a stock LLVM 7. LLVM 7 was released without a necessary fix - for a bug in the DWARF discriminant code. - - This patch changes rustc to use the fallback mode on (non-Rust) LLVM 7. - - Closes #57762 - -diff --git a/src/librustc_codegen_llvm/debuginfo/metadata.rs b/src/librustc_codegen_llvm/debuginfo/metadata.rs -index 6deedd0b5ea3..9f63038c3623 100644 ---- a/src/librustc_codegen_llvm/debuginfo/metadata.rs -+++ b/src/librustc_codegen_llvm/debuginfo/metadata.rs -@@ -1164,7 +1164,10 @@ fn use_enum_fallback(cx: &CodegenCx) -> bool { - // On MSVC we have to use the fallback mode, because LLVM doesn't - // lower variant parts to PDB. - return cx.sess().target.target.options.is_like_msvc -- || llvm_util::get_major_version() < 7; -+ // LLVM version 7 did not release with an important bug fix; -+ // but the required patch is in the LLVM 8. Rust LLVM reports -+ // 8 as well. -+ || llvm_util::get_major_version() < 8; - } - - // Describes the members of an enum value: An enum is described as a union of diff --git a/SOURCES/rust-pr61085-fix-ICE-with-incorrect-turbofish.patch b/SOURCES/rust-pr61085-fix-ICE-with-incorrect-turbofish.patch deleted file mode 100644 index 9929aaa..0000000 --- a/SOURCES/rust-pr61085-fix-ICE-with-incorrect-turbofish.patch +++ /dev/null @@ -1,229 +0,0 @@ -From 476732995c2f5dc08e20eb8f9f03c628a48f5f41 Mon Sep 17 00:00:00 2001 -From: Oliver Scherer -Date: Thu, 23 May 2019 17:05:48 +0200 -Subject: [PATCH 1/3] WIP - ---- - src/librustc_typeck/check/mod.rs | 22 +++++++++++----------- - src/test/run-pass/issue-60989.rs | 4 ++++ - 2 files changed, 15 insertions(+), 11 deletions(-) - create mode 100644 src/test/run-pass/issue-60989.rs - -diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs -index 313ed19b945d..088729f12b1e 100644 ---- a/src/librustc_typeck/check/mod.rs -+++ b/src/librustc_typeck/check/mod.rs -@@ -5396,17 +5396,6 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { - - let tcx = self.tcx; - -- match def { -- Def::Local(nid) | Def::Upvar(nid, ..) => { -- let hid = self.tcx.hir().node_to_hir_id(nid); -- let ty = self.local_ty(span, hid).decl_ty; -- let ty = self.normalize_associated_types_in(span, &ty); -- self.write_ty(hir_id, ty); -- return (ty, def); -- } -- _ => {} -- } -- - let (def, def_id, ty) = self.rewrite_self_ctor(def, span); - let path_segs = AstConv::def_ids_for_path_segments(self, segments, self_ty, def); - -@@ -5469,6 +5458,17 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { - user_self_ty = None; - } - -+ match def { -+ Def::Local(nid) | Def::Upvar(nid, ..) => { -+ let hid = self.tcx.hir().node_to_hir_id(nid); -+ let ty = self.local_ty(span, hid).decl_ty; -+ let ty = self.normalize_associated_types_in(span, &ty); -+ self.write_ty(hir_id, ty); -+ return (ty, def); -+ } -+ _ => {} -+ } -+ - // Now we have to compare the types that the user *actually* - // provided against the types that were *expected*. If the user - // did not provide any types, then we want to substitute inference -diff --git a/src/test/run-pass/issue-60989.rs b/src/test/run-pass/issue-60989.rs -new file mode 100644 -index 000000000000..efaa74da3baa ---- /dev/null -+++ b/src/test/run-pass/issue-60989.rs -@@ -0,0 +1,4 @@ -+fn main() { -+ let c1 = (); -+ c1::<()>; -+} --- -2.21.0 - - -From 97f204e6ae43bfe0fed64221d709a194bef728a4 Mon Sep 17 00:00:00 2001 -From: Oliver Scherer -Date: Thu, 23 May 2019 17:21:32 +0200 -Subject: [PATCH 2/3] Make regression test a compile-fail test - ---- - src/test/{run-pass => compile-fail}/issue-60989.rs | 0 - 1 file changed, 0 insertions(+), 0 deletions(-) - rename src/test/{run-pass => compile-fail}/issue-60989.rs (100%) - -diff --git a/src/test/run-pass/issue-60989.rs b/src/test/compile-fail/issue-60989.rs -similarity index 100% -rename from src/test/run-pass/issue-60989.rs -rename to src/test/compile-fail/issue-60989.rs --- -2.21.0 - - -From 6e81f8205a6d47648d086d26e96bf05e962e3715 Mon Sep 17 00:00:00 2001 -From: Eduard-Mihai Burtescu -Date: Thu, 23 May 2019 19:23:00 +0300 -Subject: [PATCH 3/3] rustc_typeck: don't produce a `DefId` or `Ty` from - `rewrite_self_ctor`, only a `Def`. - ---- - src/librustc_typeck/check/mod.rs | 30 ++++++++++++++++++---------- - src/test/compile-fail/issue-60989.rs | 4 ---- - src/test/ui/issue-60989.rs | 18 +++++++++++++++++ - src/test/ui/issue-60989.stderr | 15 ++++++++++++++ - 4 files changed, 52 insertions(+), 15 deletions(-) - delete mode 100644 src/test/compile-fail/issue-60989.rs - create mode 100644 src/test/ui/issue-60989.rs - create mode 100644 src/test/ui/issue-60989.stderr - -diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs -index 088729f12b1e..b6adcdbf35e9 100644 ---- a/src/librustc_typeck/check/mod.rs -+++ b/src/librustc_typeck/check/mod.rs -@@ -5330,7 +5330,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { - } - - // Rewrite `SelfCtor` to `Ctor` -- pub fn rewrite_self_ctor(&self, def: Def, span: Span) -> (Def, DefId, Ty<'tcx>) { -+ pub fn rewrite_self_ctor(&self, def: Def, span: Span) -> Def { - let tcx = self.tcx; - if let Def::SelfCtor(impl_def_id) = def { - let ty = self.impl_self_ty(span, impl_def_id).ty; -@@ -5340,8 +5340,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { - Some(adt_def) if adt_def.has_ctor() => { - let variant = adt_def.non_enum_variant(); - let ctor_def_id = variant.ctor_def_id.unwrap(); -- let def = Def::Ctor(ctor_def_id, CtorOf::Struct, variant.ctor_kind); -- (def, ctor_def_id, tcx.type_of(ctor_def_id)) -+ Def::Ctor(ctor_def_id, CtorOf::Struct, variant.ctor_kind) - } - _ => { - let mut err = tcx.sess.struct_span_err(span, -@@ -5364,16 +5363,11 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { - } - err.emit(); - -- (def, impl_def_id, tcx.types.err) -+ def - } - } - } else { -- let def_id = def.def_id(); -- -- // The things we are substituting into the type should not contain -- // escaping late-bound regions, and nor should the base type scheme. -- let ty = tcx.type_of(def_id); -- (def, def_id, ty) -+ def - } - } - -@@ -5396,7 +5390,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { - - let tcx = self.tcx; - -- let (def, def_id, ty) = self.rewrite_self_ctor(def, span); -+ let def = self.rewrite_self_ctor(def, span); - let path_segs = AstConv::def_ids_for_path_segments(self, segments, self_ty, def); - - let mut user_self_ty = None; -@@ -5501,6 +5495,20 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { - tcx.generics_of(*def_id).has_self - }).unwrap_or(false); - -+ let (def_id, ty) = if let Def::SelfCtor(impl_def_id) = def { -+ // NOTE(eddyb) an error has already been emitted by `rewrite_self_ctor`, -+ // avoid using the wrong type here. This isn't in `rewrite_self_ctor` -+ // itself because that runs too early (see #60989). -+ (impl_def_id, tcx.types.err) -+ } else { -+ let def_id = def.def_id(); -+ -+ // The things we are substituting into the type should not contain -+ // escaping late-bound regions, and nor should the base type scheme. -+ let ty = tcx.type_of(def_id); -+ (def_id, ty) -+ }; -+ - let substs = AstConv::create_substs_for_generic_args( - tcx, - def_id, -diff --git a/src/test/compile-fail/issue-60989.rs b/src/test/compile-fail/issue-60989.rs -deleted file mode 100644 -index efaa74da3baa..000000000000 ---- a/src/test/compile-fail/issue-60989.rs -+++ /dev/null -@@ -1,4 +0,0 @@ --fn main() { -- let c1 = (); -- c1::<()>; --} -diff --git a/src/test/ui/issue-60989.rs b/src/test/ui/issue-60989.rs -new file mode 100644 -index 000000000000..930e98bedce8 ---- /dev/null -+++ b/src/test/ui/issue-60989.rs -@@ -0,0 +1,18 @@ -+struct A {} -+struct B {} -+ -+impl From for B { -+ fn from(a: A) -> B { -+ B{} -+ } -+} -+ -+fn main() { -+ let c1 = (); -+ c1::<()>; -+ //~^ ERROR type arguments are not allowed for this type -+ -+ let c1 = A {}; -+ c1::>; -+ //~^ ERROR type arguments are not allowed for this type -+} -diff --git a/src/test/ui/issue-60989.stderr b/src/test/ui/issue-60989.stderr -new file mode 100644 -index 000000000000..55a0b9626df7 ---- /dev/null -+++ b/src/test/ui/issue-60989.stderr -@@ -0,0 +1,15 @@ -+error[E0109]: type arguments are not allowed for this type -+ --> $DIR/issue-60989.rs:12:10 -+ | -+LL | c1::<()>; -+ | ^^ type argument not allowed -+ -+error[E0109]: type arguments are not allowed for this type -+ --> $DIR/issue-60989.rs:16:10 -+ | -+LL | c1::>; -+ | ^^^^^^^ type argument not allowed -+ -+error: aborting due to 2 previous errors -+ -+For more information about this error, try `rustc --explain E0109`. --- -2.21.0 - diff --git a/SOURCES/rustc-1.42.0-disable-libssh2.patch b/SOURCES/rustc-1.42.0-disable-libssh2.patch new file mode 100644 index 0000000..770ad34 --- /dev/null +++ b/SOURCES/rustc-1.42.0-disable-libssh2.patch @@ -0,0 +1,42 @@ +--- rustc-1.42.0-src/Cargo.lock.orig 2020-03-09 15:11:17.000000000 -0700 ++++ rustc-1.42.0-src/Cargo.lock 2020-04-02 16:39:22.268896227 -0700 +@@ -1796,7 +1796,6 @@ + dependencies = [ + "cc", + "libc", +- "libssh2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", +@@ -1813,20 +1812,6 @@ + ] + + [[package]] +-name = "libssh2-sys" +-version = "0.2.14" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "36aa6e813339d3a063292b77091dfbbb6152ff9006a459895fa5bebed7d34f10" +-dependencies = [ +- "cc", +- "libc", +- "libz-sys", +- "openssl-sys", +- "pkg-config", +- "vcpkg", +-] +- +-[[package]] + name = "libz-sys" + version = "1.0.25" + source = "registry+https://github.com/rust-lang/crates.io-index" +--- rustc-1.42.0-src/vendor/git2/Cargo.toml.orig 2020-03-09 17:00:19.000000000 -0700 ++++ rustc-1.42.0-src/vendor/git2/Cargo.toml 2020-04-02 16:38:46.163664007 -0700 +@@ -55,7 +55,7 @@ + version = "0.1.39" + + [features] +-default = ["ssh", "https", "ssh_key_from_memory"] ++default = ["https"] + https = ["libgit2-sys/https", "openssl-sys", "openssl-probe"] + ssh = ["libgit2-sys/ssh"] + ssh_key_from_memory = ["libgit2-sys/ssh_key_from_memory"] diff --git a/SPECS/rust.spec b/SPECS/rust.spec index f3b4857..0334473 100644 --- a/SPECS/rust.spec +++ b/SPECS/rust.spec @@ -1,7 +1,7 @@ # Only x86_64 and i686 are Tier 1 platforms at this time. # https://forge.rust-lang.org/platform-support.html #global rust_arches x86_64 i686 armv7hl aarch64 ppc64 ppc64le s390x -%global rust_arches x86_64 i686 armv7hl aarch64 ppc64le s390x +%global rust_arches x86_64 i686 aarch64 ppc64le s390x # The channel can be stable, beta, or nightly %{!?channel: %global channel stable} @@ -10,19 +10,19 @@ # 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.34.0 -%global bootstrap_cargo 1.34.0 -%global bootstrap_channel 1.34.2 -%global bootstrap_date 2019-05-14 +%global bootstrap_rust 1.44.0 +%global bootstrap_cargo 1.44.0 +%global bootstrap_channel 1.44.0 +%global bootstrap_date 2020-06-04 # Only the specified arches will use bootstrap binaries. -%global bootstrap_arches armv7hl +#global bootstrap_arches %%{rust_arches} # Using llvm-static may be helpful as an opt-in, e.g. to aid LLVM rebases. %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 5.0+. +# is insufficient. Rust currently requires LLVM 8.0+. %if 0%{?rhel} && 0%{?rhel} <= 6 && !0%{?epel} %bcond_without bundled_llvm %else @@ -36,26 +36,21 @@ %bcond_without bundled_libgit2 %if 0%{?rhel} -%bcond_without bundled_libssh2 +%bcond_without disabled_libssh2 %else %bcond_with bundled_libssh2 %endif -# LLDB only works on some architectures -%ifarch %{arm} aarch64 %{ix86} x86_64 # LLDB isn't available everywhere... %if !0%{?rhel} || 0%{?rhel} > 7 %bcond_without lldb %else %bcond_with lldb %endif -%else -%bcond_with lldb -%endif Name: rust -Version: 1.35.0 -Release: 0%{?dist}.0.0.bootstrap +Version: 1.45.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) @@ -69,18 +64,8 @@ ExclusiveArch: %{rust_arches} %endif Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz -# Revert https://github.com/rust-lang/rust/pull/57840 -# We do have the necessary fix in our LLVM 7. -Patch1: rust-pr57840-llvm7-debuginfo-variants.patch - -# https://github.com/rust-lang/rust/pull/60313 -Patch2: 0001-Limit-internalization-in-LLVM-8-ThinLTO.patch - -# https://github.com/rust-lang/rust/pull/61085 -Patch3: rust-pr61085-fix-ICE-with-incorrect-turbofish.patch - -# https://github.com/rust-lang/rust/pull/59974/commits/26e9a81c487f63c734bb7ac1739cdae2da2cb9b1 -Patch4: 0001-bump-bootstrap-fix-compiletest-wrt.-exclude_should_p.patch +# Disable cargo->libgit2->libssh2, as it's not approved for FIPS (rhbz1732949) +Patch10: rustc-1.42.0-disable-libssh2.patch # Get the Rust triple for any arch. %{lua: function rust_triple(arch) @@ -145,10 +130,10 @@ BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(zlib) %if %without bundled_libgit2 -BuildRequires: pkgconfig(libgit2) >= 0.27 +BuildRequires: pkgconfig(libgit2) >= 1.0.0 %endif -%if %without bundled_libssh2 +%if %{without disabled_libssh2} && %{without bundled_libssh2} # needs libssh2_userauth_publickey_frommemory BuildRequires: pkgconfig(libssh2) >= 1.6.0 %endif @@ -166,11 +151,11 @@ BuildRequires: %{python} %if %with bundled_llvm BuildRequires: cmake3 >= 3.4.3 -Provides: bundled(llvm) = 8.0.0~svn +Provides: bundled(llvm) = 10.0.1 %else BuildRequires: cmake >= 2.8.11 %if 0%{?epel} -%global llvm llvm7.0 +%global llvm llvm9.0 %endif %if %defined llvm %global llvm_root %{_libdir}/%{llvm} @@ -178,7 +163,7 @@ BuildRequires: cmake >= 2.8.11 %global llvm llvm %global llvm_root %{_prefix} %endif -BuildRequires: %{llvm}-devel >= 6.0 +BuildRequires: %{llvm}-devel >= 8.0 %if %with llvm_static BuildRequires: %{llvm}-static BuildRequires: libffi-devel @@ -192,8 +177,7 @@ BuildRequires: procps-ng BuildRequires: gdb # TODO: work on unbundling these! -Provides: bundled(libbacktrace) = 8.1.0 -Provides: bundled(miniz) = 2.0.7 +Provides: bundled(libbacktrace) = 1.0.20200219 # Virtual provides for folks who attempt "dnf install rustc" Provides: rustc = %{version}-%{release} @@ -273,12 +257,13 @@ programs. %package lldb Summary: LLDB pretty printers for Rust - -# It could be noarch, but lldb has limited availability -#BuildArch: noarch - +BuildArch: noarch Requires: lldb +%if 0%{?fedora} >= 31 || 0%{?rhel} > 7 Requires: python3-lldb +%else +Requires: python2-lldb +%endif Requires: %{name}-debugger-common = %{version}-%{release} %description lldb @@ -303,16 +288,21 @@ its standard library. %package -n cargo Summary: Rust's package manager and build tool %if %with bundled_libgit2 -Provides: bundled(libgit2) = 0.27 +Provides: bundled(libgit2) = 1.0.0 %endif %if %with bundled_libssh2 -Provides: bundled(libssh2) = 1.8.1~dev +Provides: bundled(libssh2) = 1.9.0~dev %endif # For tests: BuildRequires: git # Cargo is not much use without Rust Requires: rust +# "cargo vendor" is a builtin command starting with 1.37. The Obsoletes and +# Provides are mostly relevant to RHEL, but harmless to have on Fedora/etc. too +Obsoletes: cargo-vendor <= 0.1.23 +Provides: cargo-vendor = %{version}-%{release} + %description -n cargo Cargo is a tool that allows Rust projects to declare their various dependencies and ensure that you'll always get a repeatable build. @@ -344,10 +334,10 @@ A tool for formatting Rust code according to style guidelines. %package -n rls Summary: Rust Language Server for IDE integration %if %with bundled_libgit2 -Provides: bundled(libgit2) = 0.27 +Provides: bundled(libgit2) = 1.0.0 %endif %if %with bundled_libssh2 -Provides: bundled(libssh2) = 1.8.1~dev +Provides: bundled(libssh2) = 1.9.0~dev %endif Requires: rust-analysis # /usr/bin/rls is dynamically linked against internal rustc libs @@ -409,10 +399,9 @@ test -f '%{local_rust_root}/bin/rustc' %setup -q -n %{rustc_package} -%patch1 -p1 -R -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 +%if %with disabled_libssh2 +%patch10 -p1 +%endif %if "%{python}" != "python2" sed -i.try-py3 -e '/try python2.7/i try %{python} "$@"' ./configure @@ -422,8 +411,26 @@ sed -i.try-py3 -e '/try python2.7/i try %{python} "$@"' ./configure rm -rf src/llvm-project/ %endif -# We never enable emscripten. -rm -rf src/llvm-emscripten/ +# Remove other unused vendored libraries +rm -rf vendor/curl-sys/curl/ +rm -rf vendor/jemalloc-sys/jemalloc/ +rm -rf vendor/libz-sys/src/zlib/ +rm -rf vendor/lzma-sys/xz-*/ +rm -rf vendor/openssl-src/openssl/ + +%if %without bundled_libgit2 +rm -rf vendor/libgit2-sys/libgit2/ +%endif + +%if %without bundled_libssh2 +rm -rf vendor/libssh2-sys/libssh2/ +%endif +%if %with disabled_libssh2 +rm -rf vendor/libssh2-sys/ +%endif + +# This only affects the transient rust-installer, but let it use our dynamic xz-libs +sed -i.lzma -e '/LZMA_API_STATIC/d' src/bootstrap/tool.rs # rename bundled license for packaging cp -a vendor/backtrace-sys/src/libbacktrace/LICENSE{,-libbacktrace} @@ -447,8 +454,17 @@ sed -i.ffi -e '$a #[link(name = "ffi")] extern {}' \ find vendor -name .cargo-checksum.json \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' +# Sometimes Rust sources start with #![...] attributes, and "smart" editors think +# it's a shebang and make them executable. Then brp-mangle-shebangs gets upset... +find -name '*.rs' -type f -perm /111 -exec chmod -v -x '{}' '+' + %build +# This package fails to build with LTO due to undefined symbols. LTO +# was disabled in OpenSuSE as well, but with no real explanation why +# beyond the undefined symbols. It really should be investigated further. +# Disable LTO +%define _lto_cflags %{nil} %if %without bundled_libgit2 # convince libgit2-sys to use the distro libgit2 @@ -474,12 +490,12 @@ export LIBSSH2_SYS_USE_PKG_CONFIG=1 %if (0%{?fedora} && 0%{?fedora} < 27) || (0%{?rhel} && 0%{?rhel} <= 7) # Older rpmbuild didn't work with partial debuginfo coverage. %global debug_package %{nil} -%define enable_debuginfo --disable-debuginfo --disable-debuginfo-only-std --disable-debuginfo-tools --disable-debuginfo-lines +%define enable_debuginfo --debuginfo-level=0 %else -%define enable_debuginfo --enable-debuginfo --enable-debuginfo-only-std --disable-debuginfo-tools --disable-debuginfo-lines +%define enable_debuginfo --debuginfo-level=0 --debuginfo-level-std=2 %endif %else -%define enable_debuginfo --enable-debuginfo --disable-debuginfo-only-std --enable-debuginfo-tools --disable-debuginfo-lines +%define enable_debuginfo --debuginfo-level=2 %endif # We want the best optimization for std, but it caused problems for rpm-ostree @@ -489,9 +505,18 @@ export LIBSSH2_SYS_USE_PKG_CONFIG=1 %define codegen_units_std --set rust.codegen-units-std=1 %endif +# Some builders have relatively little memory for their CPU count. +# At least 2GB per CPU is a good rule of thumb for building rustc. +ncpus=$(/usr/bin/getconf _NPROCESSORS_ONLN) +max_cpus=$(( ($(free -g | awk '/^Mem:/{print $2}') + 1) / 2 )) +if [ "$max_cpus" -ge 1 -a "$max_cpus" -lt "$ncpus" ]; then + ncpus="$max_cpus" +fi + %configure --disable-option-checking \ --libdir=%{common_libdir} \ --build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple} \ + --python=%{python} \ --local-rust-root=%{local_rust_root} \ %{!?with_bundled_llvm: --llvm-root=%{llvm_root} \ %{!?llvm_has_filecheck: --disable-codegen-tests} \ @@ -499,12 +524,13 @@ export LIBSSH2_SYS_USE_PKG_CONFIG=1 --disable-rpath \ %{enable_debuginfo} \ --enable-extended \ + --tools=analysis,cargo,clippy,rls,rustfmt,src \ --enable-vendor \ --enable-verbose-tests \ %{?codegen_units_std} \ --release-channel=%{channel} -%{python} ./x.py build +%{python} ./x.py build -j "$ncpus" %{python} ./x.py doc @@ -531,9 +557,11 @@ find %{buildroot}%{_libdir} -maxdepth 1 -type f -name '*.so' \ (cd "%{buildroot}%{rustlibdir}/%{rust_triple}/lib" && find ../../../../%{_lib} -maxdepth 1 -name '*.so' | while read lib; do - # make sure they're actually identical! - cmp "$lib" "${lib##*/}" - ln -v -f -s -t . "$lib" + if [ -f "${lib##*/}" ]; then + # make sure they're actually identical! + cmp "$lib" "${lib##*/}" + ln -v -f -s -t . "$lib" + fi done) # Remove installer artifacts (manifests, uninstall scripts, etc.) @@ -604,8 +632,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 %files std-static @@ -647,6 +673,7 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* %{_docdir}/%{name}/html/*.svg %{_docdir}/%{name}/html/*.woff %license %{_docdir}/%{name}/html/*.txt +%license %{_docdir}/%{name}/html/*.md %files -n cargo @@ -696,6 +723,49 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* %changelog +* Thu Jul 16 2020 Josh Stone - 1.45.0-1 +- Update to 1.45.0. + +* Tue Jul 14 2020 Josh Stone - 1.44.1-1 +- Update to 1.44.1. + +* Thu May 07 2020 Josh Stone - 1.43.1-1 +- Update to 1.43.1. + +* Thu Apr 23 2020 Josh Stone - 1.43.0-1 +- Update to 1.43.0. + +* Thu Mar 12 2020 Josh Stone - 1.42.0-1 +- Update to 1.42.0. + +* Thu Feb 27 2020 Josh Stone - 1.41.1-1 +- Update to 1.41.1. + +* Thu Jan 30 2020 Josh Stone - 1.41.0-1 +- Update to 1.41.0. + +* Thu Jan 16 2020 Josh Stone - 1.40.0-1 +- Update to 1.40.0. +- Fix compiletest with newer (local-rebuild) libtest +- Build compiletest with in-tree libtest +- Fix ARM EHABI unwinding + +* 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. + +* Thu Sep 26 2019 Josh Stone - 1.38.0-1 +- Update to 1.38.0. + +* Thu Aug 15 2019 Josh Stone - 1.37.0-1 +- Update to 1.37.0. +- Disable libssh2 (git+ssh support). + +* Thu Jul 04 2019 Josh Stone - 1.36.0-1 +- Update to 1.36.0. + * Wed May 29 2019 Josh Stone - 1.35.0-2 - Fix compiletest for rebuild testing.