import rust-1.46.0-1.module+el8.3.1+8474+3a54a5ce
This commit is contained in:
parent
a3bf0c9366
commit
a44b8724a1
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/rustc-1.44.1-src.tar.xz
|
||||
SOURCES/rustc-1.46.0-src.tar.xz
|
||||
|
@ -1 +1 @@
|
||||
a5276687cf61f884177aed3c7230f166bc87a9f0 SOURCES/rustc-1.44.1-src.tar.xz
|
||||
7fe631f9d8eb27a1443db17431b8922ca97cffe5 SOURCES/rustc-1.46.0-src.tar.xz
|
||||
|
@ -0,0 +1,29 @@
|
||||
From 02fc16aece46abcd23d2ade2d969497f07fe26ab Mon Sep 17 00:00:00 2001
|
||||
From: Alex Crichton <alex@alexcrichton.com>
|
||||
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
|
||||
|
133
SOURCES/0002-Fix-LTO-with-doctests.patch
Normal file
133
SOURCES/0002-Fix-LTO-with-doctests.patch
Normal file
@ -0,0 +1,133 @@
|
||||
From 2c9deaabf99dab9998f6ddbbe496d19ff7ce31f0 Mon Sep 17 00:00:00 2001
|
||||
From: Fabio Valentini <decathorpe@gmail.com>
|
||||
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<OsString> {
|
||||
+ 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
|
||||
|
@ -1,56 +0,0 @@
|
||||
From fbd3fbdb24563a9d8fd3651f6bdc90bbbbd81d3e Mon Sep 17 00:00:00 2001
|
||||
From: Josh Stone <jistone@redhat.com>
|
||||
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
|
||||
|
66
SOURCES/rustc-1.45.0-disable-http2.patch
Normal file
66
SOURCES/rustc-1.45.0-disable-http2.patch
Normal file
@ -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);
|
||||
}
|
20
SOURCES/rustc-1.45.0-no-default-pie.patch
Normal file
20
SOURCES/rustc-1.45.0-no-default-pie.patch
Normal file
@ -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,
|
149
SPECS/rust.spec
149
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
|
||||
|
||||
# Requires stable libgit2 1.0
|
||||
%if 0%{?fedora} >= 32
|
||||
%bcond_with bundled_libgit2
|
||||
%else
|
||||
%bcond_without bundled_libgit2
|
||||
%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...
|
||||
%bcond_without bundled_libgit2
|
||||
|
||||
%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
|
||||
|
||||
%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} > 7
|
||||
%bcond_without lldb
|
||||
%else
|
||||
%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 "%{python}" != "python2"
|
||||
sed -i.try-py3 -e '/try python2.7/i try %{python} "$@"' ./configure
|
||||
%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}" != "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 <jistone@redhat.com> - 1.46.0-1
|
||||
- Update to 1.46.0.
|
||||
|
||||
* Tue Aug 04 2020 Josh Stone <jistone@redhat.com> - 1.45.2-1
|
||||
- Update to 1.45.2.
|
||||
|
||||
* Thu Jul 16 2020 Josh Stone <jistone@redhat.com> - 1.45.0-1
|
||||
- Update to 1.45.0.
|
||||
|
||||
* Tue Jul 14 2020 Josh Stone <jistone@redhat.com> - 1.44.1-1
|
||||
- Update to 1.44.1.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user