From 0257e648e1cd81ee797ee19c1b11a77071dbcdcb Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Jan 11 2021 17:00:14 +0000 Subject: import rust-1.46.0-1.module+el8.3.1+8474+3a54a5ce --- diff --git a/.gitignore b/.gitignore index 7697c38..f20f754 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/rustc-1.44.1-src.tar.xz +SOURCES/rustc-1.46.0-src.tar.xz diff --git a/.rust.metadata b/.rust.metadata index f36f70f..8d87924 100644 --- a/.rust.metadata +++ b/.rust.metadata @@ -1 +1 @@ -a5276687cf61f884177aed3c7230f166bc87a9f0 SOURCES/rustc-1.44.1-src.tar.xz +7fe631f9d8eb27a1443db17431b8922ca97cffe5 SOURCES/rustc-1.46.0-src.tar.xz diff --git a/SOURCES/0001-Fix-jobserver_exists-test-on-single-cpu-systems.patch b/SOURCES/0001-Fix-jobserver_exists-test-on-single-cpu-systems.patch new file mode 100644 index 0000000..1650679 --- /dev/null +++ b/SOURCES/0001-Fix-jobserver_exists-test-on-single-cpu-systems.patch @@ -0,0 +1,29 @@ +From 02fc16aece46abcd23d2ade2d969497f07fe26ab Mon Sep 17 00:00:00 2001 +From: Alex Crichton +Date: Fri, 7 Aug 2020 12:50:25 -0700 +Subject: [PATCH] Fix jobserver_exists test on single-cpu systems + +Closes #8595 +--- + tests/testsuite/jobserver.rs | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/tests/testsuite/jobserver.rs b/tests/testsuite/jobserver.rs +index 9e91c956cd75..16518ee2c614 100644 +--- a/tests/testsuite/jobserver.rs ++++ b/tests/testsuite/jobserver.rs +@@ -51,7 +51,10 @@ fn jobserver_exists() { + .file("src/lib.rs", "") + .build(); + +- p.cargo("build").run(); ++ // Explicitly use `-j2` to ensure that there's eventually going to be a ++ // token to read from `valdiate` above, since running the build script ++ // itself consumes a token. ++ p.cargo("build -j2").run(); + } + + #[cargo_test] +-- +2.26.2 + diff --git a/SOURCES/0002-Fix-LTO-with-doctests.patch b/SOURCES/0002-Fix-LTO-with-doctests.patch new file mode 100644 index 0000000..e251c11 --- /dev/null +++ b/SOURCES/0002-Fix-LTO-with-doctests.patch @@ -0,0 +1,133 @@ +From 2c9deaabf99dab9998f6ddbbe496d19ff7ce31f0 Mon Sep 17 00:00:00 2001 +From: Fabio Valentini +Date: Fri, 28 Aug 2020 21:56:45 +0200 +Subject: [PATCH 2/2] Fix LTO with doctests + +--- + .../src/cargo/core/compiler/context/mod.rs | 3 +- + .../cargo/src/cargo/core/compiler/mod.rs | 59 +++++---------- + src/tools/cargo/src/cargo/core/profiles.rs | 7 +- + src/tools/cargo/tests/testsuite/lto.rs | 71 ++++++++++++++++--- + 4 files changed, 85 insertions(+), 55 deletions(-) + +diff --git a/src/tools/cargo/src/cargo/core/compiler/context/mod.rs b/src/tools/cargo/src/cargo/core/compiler/context/mod.rs +index 52b954dd1..82831f423 100644 +--- a/src/tools/cargo/src/cargo/core/compiler/context/mod.rs ++++ b/src/tools/cargo/src/cargo/core/compiler/context/mod.rs +@@ -210,7 +210,8 @@ impl<'a, 'cfg> Context<'a, 'cfg> { + // Collect information for `rustdoc --test`. + if unit.mode.is_doc_test() { + let mut unstable_opts = false; +- let args = compiler::extern_args(&self, unit, &mut unstable_opts)?; ++ let mut args = compiler::extern_args(&self, unit, &mut unstable_opts)?; ++ args.extend(compiler::lto_args(&self, unit)); + self.compilation.to_doc_test.push(compilation::Doctest { + unit: unit.clone(), + args, +diff --git a/src/tools/cargo/src/cargo/core/compiler/mod.rs b/src/tools/cargo/src/cargo/core/compiler/mod.rs +index 9399c5042..47d2b9bb4 100644 +--- a/src/tools/cargo/src/cargo/core/compiler/mod.rs ++++ b/src/tools/cargo/src/cargo/core/compiler/mod.rs +@@ -783,49 +783,9 @@ fn build_base_args( + cmd.arg("-C").arg(format!("panic={}", panic)); + } + +- match cx.lto[unit] { +- lto::Lto::Run(None) => { +- cmd.arg("-C").arg("lto"); +- } +- lto::Lto::Run(Some(s)) => { +- cmd.arg("-C").arg(format!("lto={}", s)); +- } +- lto::Lto::Off => { +- cmd.arg("-C").arg("lto=off"); +- } +- lto::Lto::ObjectAndBitcode => {} // this is rustc's default +- lto::Lto::OnlyBitcode => { +- // Note that this compiler flag, like the one below, is just an +- // optimization in terms of build time. If we don't pass it then +- // both object code and bitcode will show up. This is lagely just +- // compat until the feature lands on stable and we can remove the +- // conditional branch. +- if cx +- .bcx +- .target_data +- .info(CompileKind::Host) +- .supports_embed_bitcode +- .unwrap() +- { +- cmd.arg("-Clinker-plugin-lto"); +- } +- } +- lto::Lto::OnlyObject => { +- if cx +- .bcx +- .target_data +- .info(CompileKind::Host) +- .supports_embed_bitcode +- .unwrap() +- { +- cmd.arg("-Cembed-bitcode=no"); +- } +- } +- } ++ cmd.args(<o_args(cx, unit)); + + if let Some(n) = codegen_units { +- // There are some restrictions with LTO and codegen-units, so we +- // only add codegen units when LTO is not used. + cmd.arg("-C").arg(&format!("codegen-units={}", n)); + } + +@@ -952,6 +912,23 @@ fn build_base_args( + Ok(()) + } + ++fn lto_args(cx: &Context<'_, '_>, unit: &Unit) -> Vec { ++ let mut result = Vec::new(); ++ let mut push = |arg: &str| { ++ result.push(OsString::from("-C")); ++ result.push(OsString::from(arg)); ++ }; ++ match cx.lto[unit] { ++ lto::Lto::Run(None) => push("lto"), ++ lto::Lto::Run(Some(s)) => push(&format!("lto={}", s)), ++ lto::Lto::Off => push("lto=off"), ++ lto::Lto::ObjectAndBitcode => {} // this is rustc's default ++ lto::Lto::OnlyBitcode => push("linker-plugin-lto"), ++ lto::Lto::OnlyObject => push("embed-bitcode=no"), ++ } ++ result ++} ++ + fn build_deps_args( + cmd: &mut ProcessBuilder, + cx: &mut Context<'_, '_>, +diff --git a/src/tools/cargo/src/cargo/core/profiles.rs b/src/tools/cargo/src/cargo/core/profiles.rs +index 6a28bd261..ca0c2e417 100644 +--- a/src/tools/cargo/src/cargo/core/profiles.rs ++++ b/src/tools/cargo/src/cargo/core/profiles.rs +@@ -302,7 +302,7 @@ impl Profiles { + }; + + match mode { +- CompileMode::Test | CompileMode::Bench => { ++ CompileMode::Test | CompileMode::Bench | CompileMode::Doctest => { + if release { + ( + InternedString::new("bench"), +@@ -315,10 +315,7 @@ impl Profiles { + ) + } + } +- CompileMode::Build +- | CompileMode::Check { .. } +- | CompileMode::Doctest +- | CompileMode::RunCustomBuild => { ++ CompileMode::Build | CompileMode::Check { .. } | CompileMode::RunCustomBuild => { + // Note: `RunCustomBuild` doesn't normally use this code path. + // `build_unit_profiles` normally ensures that it selects the + // ancestor's profile. However, `cargo clean -p` can hit this +-- +2.26.2 + diff --git a/SOURCES/rust-pr71782-Use-a-non-existent-test-path.patch b/SOURCES/rust-pr71782-Use-a-non-existent-test-path.patch deleted file mode 100644 index 463cb61..0000000 --- a/SOURCES/rust-pr71782-Use-a-non-existent-test-path.patch +++ /dev/null @@ -1,56 +0,0 @@ -From fbd3fbdb24563a9d8fd3651f6bdc90bbbbd81d3e Mon Sep 17 00:00:00 2001 -From: Josh Stone -Date: Fri, 1 May 2020 16:50:10 -0700 -Subject: [PATCH] Use a non-existent test path instead of clobbering /dev/null - ---- - src/test/ui/non-ice-error-on-worker-io-fail.rs | 10 +++++++--- - src/test/ui/non-ice-error-on-worker-io-fail.stderr | 2 +- - 2 files changed, 8 insertions(+), 4 deletions(-) - -diff --git a/src/test/ui/non-ice-error-on-worker-io-fail.rs b/src/test/ui/non-ice-error-on-worker-io-fail.rs -index 8af17742850d..30779fc65c0f 100644 ---- a/src/test/ui/non-ice-error-on-worker-io-fail.rs -+++ b/src/test/ui/non-ice-error-on-worker-io-fail.rs -@@ -4,8 +4,12 @@ - // - // An attempt to `-o` into a directory we cannot write into should indeed - // be an error; but not an ICE. -+// -+// However, some folks run tests as root, which can write `/dev/` and end -+// up clobbering `/dev/null`. Instead we'll use a non-existent path, which -+// also used to ICE, but even root can't magically write there. - --// compile-flags: -o /dev/null -+// compile-flags: -o /does-not-exist/output - - // The error-pattern check occurs *before* normalization, and the error patterns - // are wildly different between build environments. So this is a cop-out (and we -@@ -15,10 +19,10 @@ - // error-pattern: error - - // On Mac OS X, we get an error like the below --// normalize-stderr-test "failed to write bytecode to /dev/null.non_ice_error_on_worker_io_fail.*" -> "io error modifying /dev/" -+// normalize-stderr-test "failed to write bytecode to /does-not-exist/output.non_ice_error_on_worker_io_fail.*" -> "io error modifying /does-not-exist/" - - // On Linux, we get an error like the below --// normalize-stderr-test "couldn't create a temp dir.*" -> "io error modifying /dev/" -+// normalize-stderr-test "couldn't create a temp dir.*" -> "io error modifying /does-not-exist/" - - // ignore-tidy-linelength - // ignore-windows - this is a unix-specific test -diff --git a/src/test/ui/non-ice-error-on-worker-io-fail.stderr b/src/test/ui/non-ice-error-on-worker-io-fail.stderr -index f732abc52b71..edadecf273a7 100644 ---- a/src/test/ui/non-ice-error-on-worker-io-fail.stderr -+++ b/src/test/ui/non-ice-error-on-worker-io-fail.stderr -@@ -1,6 +1,6 @@ - warning: ignoring --out-dir flag due to -o flag - --error: io error modifying /dev/ -+error: io error modifying /does-not-exist/ - - error: aborting due to previous error; 1 warning emitted - --- -2.26.2 - diff --git a/SOURCES/rustc-1.45.0-disable-http2.patch b/SOURCES/rustc-1.45.0-disable-http2.patch new file mode 100644 index 0000000..875b22a --- /dev/null +++ b/SOURCES/rustc-1.45.0-disable-http2.patch @@ -0,0 +1,66 @@ +--- rustc-1.45.0-src/Cargo.lock.orig 2020-07-13 09:27:24.000000000 -0700 ++++ rustc-1.45.0-src/Cargo.lock 2020-07-16 12:12:32.253903599 -0700 +@@ -896,7 +896,6 @@ + dependencies = [ + "cc", + "libc", +- "libnghttp2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", +@@ -1875,16 +1874,6 @@ + ] + + [[package]] +-name = "libnghttp2-sys" +-version = "0.1.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "02254d44f4435dd79e695f2c2b83cd06a47919adea30216ceaf0c57ca0a72463" +-dependencies = [ +- "cc", +- "libc", +-] +- +-[[package]] + name = "libz-sys" + version = "1.0.25" + source = "registry+https://github.com/rust-lang/crates.io-index" +--- rustc-1.45.0-src/src/tools/cargo/Cargo.toml.orig 2020-07-13 09:27:49.000000000 -0700 ++++ rustc-1.45.0-src/src/tools/cargo/Cargo.toml 2020-07-16 12:12:32.253903599 -0700 +@@ -25,7 +25,7 @@ + crates-io = { path = "crates/crates-io", version = "0.31.1" } + crossbeam-utils = "0.7" + crypto-hash = "0.3.1" +-curl = { version = "0.4.23", features = ["http2"] } ++curl = { version = "0.4.23", features = [] } + curl-sys = "0.4.22" + env_logger = "0.7.0" + pretty_env_logger = { version = "0.4", optional = true } +--- rustc-1.45.0-src/src/tools/cargo/src/cargo/core/package.rs.orig 2020-07-13 09:27:49.000000000 -0700 ++++ rustc-1.45.0-src/src/tools/cargo/src/cargo/core/package.rs 2020-07-16 12:12:32.253903599 -0700 +@@ -393,14 +393,8 @@ + // Also note that pipelining is disabled as curl authors have indicated + // that it's buggy, and we've empirically seen that it's buggy with HTTP + // proxies. +- let mut multi = Multi::new(); +- let multiplexing = config.http_config()?.multiplexing.unwrap_or(true); +- multi +- .pipelining(false, multiplexing) +- .chain_err(|| "failed to enable multiplexing/pipelining in curl")?; +- +- // let's not flood crates.io with connections +- multi.set_max_host_connections(2)?; ++ let multi = Multi::new(); ++ let multiplexing = false; + + Ok(PackageSet { + packages: package_ids +@@ -563,7 +557,7 @@ + macro_rules! try_old_curl { + ($e:expr, $msg:expr) => { + let result = $e; +- if cfg!(target_os = "macos") { ++ if cfg!(any(target_os = "linux", target_os = "macos")) { + if let Err(e) = result { + warn!("ignoring libcurl {} error: {}", $msg, e); + } diff --git a/SOURCES/rustc-1.45.0-no-default-pie.patch b/SOURCES/rustc-1.45.0-no-default-pie.patch new file mode 100644 index 0000000..726df24 --- /dev/null +++ b/SOURCES/rustc-1.45.0-no-default-pie.patch @@ -0,0 +1,20 @@ +diff --git a/src/librustc_codegen_ssa/back/link.rs b/src/librustc_codegen_ssa/back/link.rs +index dcce1d45298c..5c11f7276f26 100644 +--- a/src/librustc_codegen_ssa/back/link.rs ++++ b/src/librustc_codegen_ssa/back/link.rs +@@ -1184,10 +1184,12 @@ fn exec_linker( + } + + fn link_output_kind(sess: &Session, crate_type: CrateType) -> LinkOutputKind { +- let kind = match (crate_type, sess.crt_static(Some(crate_type)), sess.relocation_model()) { +- (CrateType::Executable, false, RelocModel::Pic) => LinkOutputKind::DynamicPicExe, ++ // Only use PIE if explicity specified. ++ let explicit_pic = matches!(sess.opts.cg.relocation_model, Some(RelocModel::Pic)); ++ let kind = match (crate_type, sess.crt_static(Some(crate_type)), explicit_pic) { ++ (CrateType::Executable, false, true) => LinkOutputKind::DynamicPicExe, + (CrateType::Executable, false, _) => LinkOutputKind::DynamicNoPicExe, +- (CrateType::Executable, true, RelocModel::Pic) => LinkOutputKind::StaticPicExe, ++ (CrateType::Executable, true, true) => LinkOutputKind::StaticPicExe, + (CrateType::Executable, true, _) => LinkOutputKind::StaticNoPicExe, + (_, true, _) => LinkOutputKind::StaticDylib, + (_, false, _) => LinkOutputKind::DynamicDylib, diff --git a/SPECS/rust.spec b/SPECS/rust.spec index c64d4e0..f5da281 100644 --- a/SPECS/rust.spec +++ b/SPECS/rust.spec @@ -10,10 +10,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.43.1 -%global bootstrap_cargo 1.43.1 -%global bootstrap_channel 1.43.1 -%global bootstrap_date 2020-05-07 +%global bootstrap_rust 1.45.2 +%global bootstrap_cargo 1.45.2 +%global bootstrap_channel 1.45.2 +%global bootstrap_date 2020-08-03 # Only the specified arches will use bootstrap binaries. #global bootstrap_arches %%{rust_arches} @@ -22,34 +22,38 @@ %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 7.0+. -%if 0%{?rhel} && 0%{?rhel} <= 6 && !0%{?epel} -%bcond_without bundled_llvm -%else +# is insufficient. Rust currently requires LLVM 8.0+. %bcond_with bundled_llvm -%endif -# libgit2-sys expects to use its bundled library, which is sometimes just a -# snapshot of libgit2's master branch. This can mean the FFI declarations -# won't match our released libgit2.so, e.g. having changed struct fields. -# So, tread carefully if you toggle this... +# Requires stable libgit2 1.0 +%if 0%{?fedora} >= 32 +%bcond_with bundled_libgit2 +%else %bcond_without bundled_libgit2 +%endif %if 0%{?rhel} +# Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) %bcond_without disabled_libssh2 %else -%bcond_with bundled_libssh2 +%bcond_with disabled_libssh2 %endif -# LLDB isn't available everywhere... -%if !0%{?rhel} || 0%{?rhel} > 7 -%bcond_without lldb +%if 0%{?rhel} && 0%{?rhel} < 8 +%bcond_with curl_http2 %else +%bcond_without curl_http2 +%endif + +# LLDB isn't available everywhere... +%if 0%{?rhel} && 0%{?rhel} < 8 %bcond_with lldb +%else +%bcond_without lldb %endif Name: rust -Version: 1.44.1 +Version: 1.46.0 Release: 1%{?dist} Summary: The Rust Programming Language License: (ASL 2.0 or MIT) and (BSD and MIT) @@ -64,11 +68,24 @@ ExclusiveArch: %{rust_arches} %endif Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz -# https://github.com/rust-lang/rust/pull/71782 -Patch1: rust-pr71782-Use-a-non-existent-test-path.patch +# https://github.com/rust-lang/cargo/pull/8598 +Patch1: 0001-Fix-jobserver_exists-test-on-single-cpu-systems.patch +# https://github.com/rust-lang/cargo/pull/8657 (backported) +Patch2: 0002-Fix-LTO-with-doctests.patch + +### RHEL-specific patches below ### + +# Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) +Patch100: rustc-1.42.0-disable-libssh2.patch + +# libcurl on RHEL7 doesn't have http2, but since cargo requests it, curl-sys +# will try to build it statically -- instead we turn off the feature. +Patch101: rustc-1.45.0-disable-http2.patch + +# kernel rh1410097 causes too-small stacks for PIE. +# (affects RHEL6 kernels when building for RHEL7) +Patch102: rustc-1.45.0-no-default-pie.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) @@ -80,6 +97,8 @@ Patch10: rustc-1.42.0-disable-libssh2.patch arch = "powerpc64" elseif arch == "ppc64le" then arch = "powerpc64le" + elseif arch == "riscv64" then + arch = "riscv64gc" end return arch.."-unknown-linux-"..abi end} @@ -113,11 +132,11 @@ end} Provides: bundled(%{name}-bootstrap) = %{bootstrap_rust} %else BuildRequires: cargo >= %{bootstrap_cargo} -%if 0%{?fedora} >= 27 || 0%{?rhel} > 7 -BuildRequires: (%{name} >= %{bootstrap_rust} with %{name} <= %{version}) -%else +%if 0%{?rhel} && 0%{?rhel} < 8 BuildRequires: %{name} >= %{bootstrap_rust} BuildConflicts: %{name} > %{version} +%else +BuildRequires: (%{name} >= %{bootstrap_rust} with %{name} <= %{version}) %endif %global local_rust_root %{_prefix} %endif @@ -127,6 +146,8 @@ BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: ncurses-devel BuildRequires: curl +# explicit curl-devel to avoid httpd24-curl (rhbz1540167) +BuildRequires: curl-devel BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(liblzma) BuildRequires: pkgconfig(openssl) @@ -141,23 +162,15 @@ BuildRequires: pkgconfig(libgit2) >= 1.0.0 BuildRequires: pkgconfig(libssh2) >= 1.6.0 %endif -%if 0%{?rhel} -%if 0%{?rhel} <= 7 -%global python python2 -%else -%global python /usr/libexec/platform-python -%endif -%else %global python python3 -%endif BuildRequires: %{python} %if %with bundled_llvm BuildRequires: cmake3 >= 3.4.3 -Provides: bundled(llvm) = 9.0.1 +Provides: bundled(llvm) = 10.0.1 %else BuildRequires: cmake >= 2.8.11 -%if 0%{?epel} +%if 0%{?epel} == 7 %global llvm llvm9.0 %endif %if %defined llvm @@ -203,14 +216,14 @@ Requires: /usr/bin/cc # 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 -# support custom-derive plugins like #[proc_macro_derive(Foo)]. But eu-strip is -# very eager by default, so we have to limit it to -g, only debugging symbols. -%if 0%{?fedora} >= 27 || 0%{?rhel} > 7 -# Newer find-debuginfo.sh supports --keep-section, which is preferable. rhbz1465997 -%global _find_debuginfo_opts --keep-section .rustc -%else +# support custom-derive plugins like #[proc_macro_derive(Foo)]. +%if 0%{?rhel} && 0%{?rhel} < 8 +# eu-strip is very eager by default, so we have to limit it to -g, only debugging symbols. %global _find_debuginfo_opts -g %undefine _include_minidebuginfo +%else +# Newer find-debuginfo.sh supports --keep-section, which is preferable. rhbz1465997 +%global _find_debuginfo_opts --keep-section .rustc %endif # Use hardening ldflags. @@ -262,11 +275,7 @@ programs. Summary: LLDB pretty printers for Rust BuildArch: noarch Requires: lldb -%if 0%{?fedora} >= 31 || 0%{?rhel} > 7 -Requires: python3-lldb -%else -Requires: python2-lldb -%endif +Requires: %{python}-lldb Requires: %{name}-debugger-common = %{version}-%{release} %description lldb @@ -402,14 +411,25 @@ test -f '%{local_rust_root}/bin/rustc' %setup -q -n %{rustc_package} -%patch1 -p1 +%patch1 -p1 -d src/tools/cargo +%patch2 -p1 %if %with disabled_libssh2 -%patch10 -p1 +%patch100 -p1 +%endif + +%if %without curl_http2 +%patch101 -p1 +rm -rf vendor/libnghttp2-sys/ +%endif + +%if 0%{?rhel} && 0%{?rhel} < 8 +%patch102 -p1 -b .no-pie %endif -%if "%{python}" != "python2" -sed -i.try-py3 -e '/try python2.7/i try %{python} "$@"' ./configure +%if "%{python}" != "python3" +# Use our preferred python first +sed -i.try-python -e '/^try python3 /i try "%{python}" "$@"' ./configure %endif %if %without bundled_llvm @@ -440,7 +460,7 @@ 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} -%if %{with bundled_llvm} && 0%{?epel} +%if %{with bundled_llvm} && 0%{?epel} == 7 mkdir -p cmake-bin ln -s /usr/bin/cmake3 cmake-bin/cmake %global cmake_path $PWD/cmake-bin @@ -492,7 +512,7 @@ export LIBSSH2_SYS_USE_PKG_CONFIG=1 %ifarch %{arm} %{ix86} s390x # full debuginfo is exhausting memory; just do libstd for now # https://github.com/rust-lang/rust/issues/45854 -%if (0%{?fedora} && 0%{?fedora} < 27) || (0%{?rhel} && 0%{?rhel} <= 7) +%if 0%{?rhel} && 0%{?rhel} < 8 # Older rpmbuild didn't work with partial debuginfo coverage. %global debug_package %{nil} %define enable_debuginfo --debuginfo-level=0 @@ -510,6 +530,14 @@ 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} \ @@ -521,12 +549,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" --stage 2 %{python} ./x.py doc @@ -628,7 +657,6 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* %dir %{rustlibdir}/%{rust_triple} %dir %{rustlibdir}/%{rust_triple}/lib %{rustlibdir}/%{rust_triple}/lib/*.so -%exclude %{_bindir}/*miri %files std-static @@ -641,7 +669,7 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* %files debugger-common %dir %{rustlibdir} %dir %{rustlibdir}/etc -%{rustlibdir}/etc/debugger_*.py* +%{rustlibdir}/etc/rust_*.py* %files gdb @@ -720,6 +748,15 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* %changelog +* Wed Oct 14 2020 Josh Stone - 1.46.0-1 +- Update to 1.46.0. + +* Tue Aug 04 2020 Josh Stone - 1.45.2-1 +- Update to 1.45.2. + +* 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.