import rust-1.62.1-1.el9

This commit is contained in:
CentOS Sources 2022-11-15 01:42:52 -05:00 committed by Stepan Oksanichenko
parent 26aaf75c38
commit 230e879723
9 changed files with 304 additions and 130 deletions

4
.gitignore vendored
View File

@ -1,2 +1,2 @@
SOURCES/rustc-1.58.1-src.tar.xz SOURCES/rustc-1.62.1-src.tar.xz
SOURCES/wasi-libc-ad5133410f66b93a2381db5b542aad5e0964db96.tar.gz SOURCES/wasi-libc-9886d3d6200fcc3726329966860fc058707406cd.tar.gz

View File

@ -1,2 +1,2 @@
783cb359829e7ea508deae659837f9bb360e46c8 SOURCES/rustc-1.58.1-src.tar.xz a7e0c2aa676d343f5980d37fd50ffaed9a35d458 SOURCES/rustc-1.62.1-src.tar.xz
b8865d1192852214d6d9b0a0957d4b36c16832aa SOURCES/wasi-libc-ad5133410f66b93a2381db5b542aad5e0964db96.tar.gz 22625595caa645e86282b79b5564abb40250d244 SOURCES/wasi-libc-9886d3d6200fcc3726329966860fc058707406cd.tar.gz

View File

@ -1,4 +1,4 @@
From 9ac837c237568a6c1c5f0e979fcce208cd9c926a Mon Sep 17 00:00:00 2001 From b521511174b1a08dddfac243604d649b71cc7386 Mon Sep 17 00:00:00 2001
From: Ivan Mironov <mironov.ivan@gmail.com> From: Ivan Mironov <mironov.ivan@gmail.com>
Date: Sun, 8 Dec 2019 17:23:08 +0500 Date: Sun, 8 Dec 2019 17:23:08 +0500
Subject: [PATCH] Use lld provided by system for wasm Subject: [PATCH] Use lld provided by system for wasm
@ -8,7 +8,7 @@ Subject: [PATCH] Use lld provided by system for wasm
1 file changed, 1 insertion(+), 2 deletions(-) 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/compiler/rustc_target/src/spec/wasm_base.rs b/compiler/rustc_target/src/spec/wasm_base.rs diff --git a/compiler/rustc_target/src/spec/wasm_base.rs b/compiler/rustc_target/src/spec/wasm_base.rs
index 4c954a1e567c..15c4f1bda5eb 100644 index de7b7374af31..eebbe616e9b6 100644
--- a/compiler/rustc_target/src/spec/wasm_base.rs --- a/compiler/rustc_target/src/spec/wasm_base.rs
+++ b/compiler/rustc_target/src/spec/wasm_base.rs +++ b/compiler/rustc_target/src/spec/wasm_base.rs
@@ -99,8 +99,7 @@ pub fn options() -> TargetOptions { @@ -99,8 +99,7 @@ pub fn options() -> TargetOptions {
@ -16,11 +16,11 @@ index 4c954a1e567c..15c4f1bda5eb 100644
limit_rdylib_exports: false, limit_rdylib_exports: false,
- // we use the LLD shipped with the Rust toolchain by default - // we use the LLD shipped with the Rust toolchain by default
- linker: Some("rust-lld".to_owned()), - linker: Some("rust-lld".into()),
+ linker: Some("lld".to_owned()), + linker: Some("lld".into()),
lld_flavor: LldFlavor::Wasm, lld_flavor: LldFlavor::Wasm,
linker_is_gnu: false, linker_is_gnu: false,
-- --
2.31.1 2.35.1

View File

@ -0,0 +1,51 @@
# Explicitly use bindir tools, in case others are in the PATH,
# like the rustup shims in a user's ~/.cargo/bin/.
#
# Since cargo 1.31, install only uses $CARGO_HOME/config, ignoring $PWD.
# https://github.com/rust-lang/cargo/issues/6397
# But we can set CARGO_HOME locally, which is a good idea anyway to make sure
# it never writes to ~/.cargo during rpmbuild.
%__cargo %{_bindir}/env CARGO_HOME=.cargo %{_bindir}/cargo
%__rustc %{_bindir}/rustc
%__rustdoc %{_bindir}/rustdoc
# Enable optimization, debuginfo, and link hardening.
%__global_rustflags -Copt-level=3 -Cdebuginfo=2 -Clink-arg=-Wl,-z,relro,-z,now
%__global_rustflags_toml [%{lua:
for arg in string.gmatch(rpm.expand("%{__global_rustflags}"), "%S+") do
print('"' .. arg .. '", ')
end}]
%cargo_prep(V:) (\
%{__mkdir} -p .cargo \
cat > .cargo/config << EOF \
[build]\
rustc = "%{__rustc}"\
rustdoc = "%{__rustdoc}"\
rustflags = %{__global_rustflags_toml}\
\
[install]\
root = "%{buildroot}%{_prefix}"\
\
[term]\
verbose = true\
EOF\
%if 0%{-V:1}\
%{__tar} -xoaf %{S:%{-V*}}\
cat >> .cargo/config << EOF \
\
[source.crates-io]\
replace-with = "vendored-sources"\
\
[source.vendored-sources]\
directory = "./vendor"\
EOF\
%endif\
)
%cargo_build %__cargo build --release %{?_smp_mflags}
%cargo_test %__cargo test --release %{?_smp_mflags} --no-fail-fast
%cargo_install %__cargo install --no-track --path .

View File

@ -1,66 +0,0 @@
--- rustc-1.58.0-src/Cargo.lock.orig 2022-01-11 16:13:10.125323813 -0800
+++ rustc-1.58.0-src/Cargo.lock 2022-01-11 16:22:54.313011908 -0800
@@ -909,7 +909,6 @@
dependencies = [
"cc",
"libc",
- "libnghttp2-sys",
"libz-sys",
"openssl-sys",
"pkg-config",
@@ -1927,16 +1926,6 @@
checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a"
[[package]]
-name = "libnghttp2-sys"
-version = "0.1.4+1.41.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03624ec6df166e79e139a2310ca213283d6b3c30810c54844f307086d4488df1"
-dependencies = [
- "cc",
- "libc",
-]
-
-[[package]]
name = "libz-sys"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
--- rustc-1.58.0-src/src/tools/cargo/Cargo.toml.orig 2022-01-11 16:13:10.127323771 -0800
+++ rustc-1.58.0-src/src/tools/cargo/Cargo.toml 2022-01-11 16:14:50.721203730 -0800
@@ -22,7 +22,7 @@
cargo-util = { path = "crates/cargo-util", version = "0.1.1" }
crates-io = { path = "crates/crates-io", version = "0.33.0" }
crossbeam-utils = "0.8"
-curl = { version = "0.4.41", features = ["http2"] }
+curl = { version = "0.4.41", features = [] }
curl-sys = "0.4.50"
env_logger = "0.9.0"
pretty_env_logger = { version = "0.4", optional = true }
--- rustc-1.58.0-src/src/tools/cargo/src/cargo/core/package.rs.orig 2022-01-11 03:18:44.000000000 -0800
+++ rustc-1.58.0-src/src/tools/cargo/src/cargo/core/package.rs 2022-01-11 16:13:10.127323771 -0800
@@ -419,14 +419,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)
- .with_context(|| "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
@@ -655,7 +649,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);
}

View File

@ -1,6 +1,6 @@
--- rustc-1.56.0-src/Cargo.lock.orig 2021-10-18 02:52:36.000000000 -0700 --- rustc-1.59.0-src/Cargo.lock.orig 2022-02-21 18:48:37.000000000 -0800
+++ rustc-1.56.0-src/Cargo.lock 2021-10-19 18:00:47.999793566 -0700 +++ rustc-1.59.0-src/Cargo.lock 2022-02-22 10:16:10.381962862 -0800
@@ -1895,7 +1895,6 @@ @@ -1935,7 +1935,6 @@
dependencies = [ dependencies = [
"cc", "cc",
"libc", "libc",
@ -8,14 +8,14 @@
"libz-sys", "libz-sys",
"openssl-sys", "openssl-sys",
"pkg-config", "pkg-config",
@@ -1918,20 +1917,6 @@ @@ -1968,20 +1967,6 @@
] ]
[[package]] [[package]]
-name = "libssh2-sys" -name = "libssh2-sys"
-version = "0.2.19" -version = "0.2.23"
-source = "registry+https://github.com/rust-lang/crates.io-index" -source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca46220853ba1c512fc82826d0834d87b06bcd3c2a42241b7de72f3d2fe17056" -checksum = "b094a36eb4b8b8c8a7b4b8ae43b2944502be3e59cd87687595cf6b0a71b3f4ca"
-dependencies = [ -dependencies = [
- "cc", - "cc",
- "libc", - "libc",
@ -29,9 +29,9 @@
name = "libz-sys" name = "libz-sys"
version = "1.1.3" version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
--- rustc-1.56.0-src/vendor/git2/Cargo.toml.orig 2021-10-18 04:05:54.000000000 -0700 --- rustc-1.59.0-src/vendor/git2/Cargo.toml.orig 2022-02-21 20:14:37.000000000 -0800
+++ rustc-1.56.0-src/vendor/git2/Cargo.toml 2021-10-19 17:57:37.960500359 -0700 +++ rustc-1.59.0-src/vendor/git2/Cargo.toml 2022-02-22 10:12:23.021772490 -0800
@@ -52,7 +52,7 @@ @@ -51,7 +51,7 @@
version = "0.1.39" version = "0.1.39"
[features] [features]

View File

@ -0,0 +1,18 @@
--- rustc-1.61.0-src/src/etc/rust-gdb.orig 2022-05-17 18:29:36.000000000 -0700
+++ rustc-1.61.0-src/src/etc/rust-gdb 2022-05-18 11:18:13.732709661 -0700
@@ -14,6 +14,9 @@ fi
RUSTC_SYSROOT="$("$RUSTC" --print=sysroot)"
GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/lib/rustlib/etc"
+RUST_STD_BUILD="@BUILDDIR@/library/"
+RUST_STD_SRC="$RUSTC_SYSROOT/lib/rustlib/src/rust/library/"
+
# Run GDB with the additional arguments that load the pretty printers
# Set the environment variable `RUST_GDB` to overwrite the call to a
# different/specific command (defaults to `gdb`).
@@ -21,4 +24,5 @@ RUST_GDB="${RUST_GDB:-gdb}"
PYTHONPATH="$PYTHONPATH:$GDB_PYTHON_MODULE_DIRECTORY" exec ${RUST_GDB} \
--directory="$GDB_PYTHON_MODULE_DIRECTORY" \
-iex "add-auto-load-safe-path $GDB_PYTHON_MODULE_DIRECTORY" \
+ -iex "set substitute-path $RUST_STD_BUILD $RUST_STD_SRC" \
"$@"

View File

@ -0,0 +1,90 @@
--- rustc-beta-src/Cargo.lock.orig 2022-06-22 14:03:26.309745526 -0700
+++ rustc-beta-src/Cargo.lock 2022-06-22 14:03:26.310745506 -0700
@@ -990,7 +990,6 @@
dependencies = [
"cc",
"libc",
- "libnghttp2-sys",
"libz-sys",
"openssl-sys",
"pkg-config",
@@ -2101,16 +2100,6 @@
checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a"
[[package]]
-name = "libnghttp2-sys"
-version = "0.1.4+1.41.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03624ec6df166e79e139a2310ca213283d6b3c30810c54844f307086d4488df1"
-dependencies = [
- "cc",
- "libc",
-]
-
-[[package]]
name = "libz-sys"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2022-06-22 14:03:26.310745506 -0700
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2022-06-22 14:04:22.058596881 -0700
@@ -22,7 +22,7 @@
cargo-util = { path = "crates/cargo-util", version = "0.1.3" }
crates-io = { path = "crates/crates-io", version = "0.34.0" }
crossbeam-utils = "0.8"
-curl = { version = "0.4.41", features = ["http2"] }
+curl = { version = "0.4.41", features = [] }
curl-sys = "0.4.50"
env_logger = "0.9.0"
pretty_env_logger = { version = "0.4", optional = true }
--- rustc-beta-src/src/tools/cargo/src/cargo/sources/registry/http_remote.rs.orig 2022-06-13 07:34:54.000000000 -0700
+++ rustc-beta-src/src/tools/cargo/src/cargo/sources/registry/http_remote.rs 2022-06-22 14:03:26.311745485 -0700
@@ -183,16 +183,8 @@
}
self.fetch_started = true;
- // We've enabled the `http2` feature of `curl` in Cargo, so treat
- // failures here as fatal as it would indicate a build-time problem.
- self.multiplexing = self.config.http_config()?.multiplexing.unwrap_or(true);
-
- self.multi
- .pipelining(false, self.multiplexing)
- .with_context(|| "failed to enable multiplexing/pipelining in curl")?;
-
- // let's not flood the server with connections
- self.multi.set_max_host_connections(2)?;
+ // Multiplexing is disabled because the system libcurl doesn't support it.
+ self.multiplexing = false;
self.config
.shell()
--- rustc-beta-src/src/tools/cargo/src/cargo/core/package.rs.orig 2022-06-13 07:34:54.000000000 -0700
+++ rustc-beta-src/src/tools/cargo/src/cargo/core/package.rs 2022-06-22 14:03:26.311745485 -0700
@@ -403,16 +403,9 @@
sources: SourceMap<'cfg>,
config: &'cfg Config,
) -> CargoResult<PackageSet<'cfg>> {
- // We've enabled the `http2` feature of `curl` in Cargo, so treat
- // failures here as fatal as it would indicate a build-time problem.
- let mut multi = Multi::new();
- let multiplexing = config.http_config()?.multiplexing.unwrap_or(true);
- multi
- .pipelining(false, multiplexing)
- .with_context(|| "failed to enable multiplexing/pipelining in curl")?;
-
- // let's not flood crates.io with connections
- multi.set_max_host_connections(2)?;
+ // Multiplexing is disabled because the system libcurl doesn't support it.
+ let multi = Multi::new();
+ let multiplexing = false;
Ok(PackageSet {
packages: package_ids
@@ -658,7 +651,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);
}

View File

@ -6,15 +6,17 @@
%{!?channel: %global channel stable} %{!?channel: %global channel stable}
# To bootstrap from scratch, set the channel and date from src/stage0.json # To bootstrap from scratch, set the channel and date from src/stage0.json
# e.g. 1.10.0 wants rustc: 1.9.0-2016-05-24 # e.g. 1.59.0 wants rustc: 1.58.0-2022-01-13
# or nightly wants some beta-YYYY-MM-DD # or nightly wants some beta-YYYY-MM-DD
# Note that cargo matches the program version here, not its crate version. %global bootstrap_version 1.61.0
%global bootstrap_rust 1.57.0 %global bootstrap_channel 1.61.0
%global bootstrap_cargo 1.57.0 %global bootstrap_date 2022-05-19
%global bootstrap_channel 1.57.0
%global bootstrap_date 2021-12-02
# Only the specified arches will use bootstrap binaries. # Only the specified arches will use bootstrap binaries.
# NOTE: Those binaries used to be uploaded with every new release, but that was
# a waste of lookaside cache space when they're most often unused.
# Run "spectool -g rust.spec" after changing this and then "fedpkg upload" to
# add them to sources. Remember to remove them again after the bootstrap build!
#global bootstrap_arches %%{rust_arches} #global bootstrap_arches %%{rust_arches}
# Define a space-separated list of targets to ship rust-std-static-$triple for # Define a space-separated list of targets to ship rust-std-static-$triple for
@ -31,8 +33,9 @@
# We need CRT files for *-wasi targets, at least as new as the commit in # We need CRT files for *-wasi targets, at least as new as the commit in
# src/ci/docker/host-x86_64/dist-various-2/build-wasi-toolchain.sh # src/ci/docker/host-x86_64/dist-various-2/build-wasi-toolchain.sh
# (updated per https://github.com/rust-lang/rust/pull/96907)
%global wasi_libc_url https://github.com/WebAssembly/wasi-libc %global wasi_libc_url https://github.com/WebAssembly/wasi-libc
%global wasi_libc_commit ad5133410f66b93a2381db5b542aad5e0964db96 %global wasi_libc_commit 9886d3d6200fcc3726329966860fc058707406cd
%global wasi_libc_name wasi-libc-%{wasi_libc_commit} %global wasi_libc_name wasi-libc-%{wasi_libc_commit}
%global wasi_libc_source %{wasi_libc_url}/archive/%{wasi_libc_commit}/%{wasi_libc_name}.tar.gz %global wasi_libc_source %{wasi_libc_url}/archive/%{wasi_libc_commit}/%{wasi_libc_name}.tar.gz
%global wasi_libc_dir %{_builddir}/%{wasi_libc_name} %global wasi_libc_dir %{_builddir}/%{wasi_libc_name}
@ -43,13 +46,15 @@
# We can also choose to just use Rust's bundled LLVM, in case the system LLVM # We can also choose to just use Rust's bundled LLVM, in case the system LLVM
# is insufficient. Rust currently requires LLVM 12.0+. # is insufficient. Rust currently requires LLVM 12.0+.
%global min_llvm_version 12.0.0 %global min_llvm_version 12.0.0
%global bundled_llvm_version 13.0.0 %global bundled_llvm_version 14.0.4
%bcond_with bundled_llvm %bcond_with bundled_llvm
# Requires stable libgit2 1.3 # Requires stable libgit2 1.4, and not the next minor soname change.
%global min_libgit2_version 1.3.0 # This needs to be consistent with the bindings in vendor/libgit2-sys.
%global bundled_libgit2_version 1.3.0 %global min_libgit2_version 1.4.0
%if 0%{?fedora} >= 36 %global next_libgit2_version 1.5.0~
%global bundled_libgit2_version 1.4.2
%if 0%{?fedora} >= 99
%bcond_with bundled_libgit2 %bcond_with bundled_libgit2
%else %else
%bcond_without bundled_libgit2 %bcond_without bundled_libgit2
@ -78,7 +83,7 @@
%endif %endif
Name: rust Name: rust
Version: 1.58.1 Version: 1.62.1
Release: 1%{?dist} Release: 1%{?dist}
Summary: The Rust Programming Language Summary: The Rust Programming Language
License: (ASL 2.0 or MIT) and (BSD and MIT) License: (ASL 2.0 or MIT) and (BSD and MIT)
@ -98,14 +103,20 @@ Source1: %{wasi_libc_source}
# By default, rust tries to use "rust-lld" as a linker for WebAssembly. # By default, rust tries to use "rust-lld" as a linker for WebAssembly.
Patch1: 0001-Use-lld-provided-by-system-for-wasm.patch Patch1: 0001-Use-lld-provided-by-system-for-wasm.patch
# Set a substitute-path in rust-gdb for standard library sources.
Patch2: rustc-1.61.0-rust-gdb-substitute-path.patch
### RHEL-specific patches below ### ### RHEL-specific patches below ###
# Simple rpm macros for rust-toolset (as opposed to full rust-packaging)
Source100: macros.rust-toolset
# Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) # Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949)
Patch100: rustc-1.56.0-disable-libssh2.patch Patch100: rustc-1.59.0-disable-libssh2.patch
# libcurl on RHEL7 doesn't have http2, but since cargo requests it, curl-sys # 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. # will try to build it statically -- instead we turn off the feature.
Patch101: rustc-1.58.0-disable-http2.patch Patch101: rustc-1.62.0-disable-http2.patch
# kernel rh1410097 causes too-small stacks for PIE. # kernel rh1410097 causes too-small stacks for PIE.
# (affects RHEL6 kernels when building for RHEL7) # (affects RHEL6 kernels when building for RHEL7)
@ -138,31 +149,35 @@ end}
for arch in string.gmatch(rpm.expand("%{bootstrap_arches}"), "%S+") do for arch in string.gmatch(rpm.expand("%{bootstrap_arches}"), "%S+") do
table.insert(bootstrap_arches, arch) table.insert(bootstrap_arches, arch)
end end
local base = rpm.expand("https://static.rust-lang.org/dist/%{bootstrap_date}" local base = rpm.expand("https://static.rust-lang.org/dist/%{bootstrap_date}")
.."/rust-%{bootstrap_channel}") local channel = rpm.expand("%{bootstrap_channel}")
local target_arch = rpm.expand("%{_target_cpu}") local target_arch = rpm.expand("%{_target_cpu}")
for i, arch in ipairs(bootstrap_arches) do for i, arch in ipairs(bootstrap_arches) do
i = 100 + i i = 1000 + i * 3
print(string.format("Source%d: %s-%s.tar.xz\n", local suffix = channel.."-"..rust_triple(arch)
i, base, rust_triple(arch))) print(string.format("Source%d: %s/cargo-%s.tar.xz\n", i, base, suffix))
print(string.format("Source%d: %s/rustc-%s.tar.xz\n", i+1, base, suffix))
print(string.format("Source%d: %s/rust-std-%s.tar.xz\n", i+2, base, suffix))
if arch == target_arch then if arch == target_arch then
rpm.define("bootstrap_source "..i) rpm.define("bootstrap_source_cargo "..i)
rpm.define("bootstrap_source_rustc "..i+1)
rpm.define("bootstrap_source_std "..i+2)
rpm.define("bootstrap_suffix "..suffix)
end end
end end
end} end}
%endif %endif
%ifarch %{bootstrap_arches} %ifarch %{bootstrap_arches}
%global bootstrap_root rust-%{bootstrap_channel}-%{rust_triple} %global local_rust_root %{_builddir}/rust-%{bootstrap_suffix}
%global local_rust_root %{_builddir}/%{bootstrap_root}/usr Provides: bundled(%{name}-bootstrap) = %{bootstrap_version}
Provides: bundled(%{name}-bootstrap) = %{bootstrap_rust}
%else %else
BuildRequires: cargo >= %{bootstrap_cargo} BuildRequires: cargo >= %{bootstrap_version}
%if 0%{?rhel} && 0%{?rhel} < 8 %if 0%{?rhel} && 0%{?rhel} < 8
BuildRequires: %{name} >= %{bootstrap_rust} BuildRequires: %{name} >= %{bootstrap_version}
BuildConflicts: %{name} > %{version} BuildConflicts: %{name} > %{version}
%else %else
BuildRequires: (%{name} >= %{bootstrap_rust} with %{name} <= %{version}) BuildRequires: (%{name} >= %{bootstrap_version} with %{name} <= %{version})
%endif %endif
%global local_rust_root %{_prefix} %global local_rust_root %{_prefix}
%endif %endif
@ -179,7 +194,7 @@ BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(zlib)
%if %{without bundled_libgit2} %if %{without bundled_libgit2}
BuildRequires: pkgconfig(libgit2) >= %{min_libgit2_version} BuildRequires: (pkgconfig(libgit2) >= %{min_libgit2_version} with pkgconfig(libgit2) < %{next_libgit2_version})
%endif %endif
%if %{without disabled_libssh2} %if %{without disabled_libssh2}
@ -221,6 +236,9 @@ BuildRequires: procps-ng
# debuginfo-gdb tests need gdb # debuginfo-gdb tests need gdb
BuildRequires: gdb BuildRequires: gdb
# For src/test/run-make/static-pie
BuildRequires: glibc-static
# Virtual provides for folks who attempt "dnf install rustc" # Virtual provides for folks who attempt "dnf install rustc"
Provides: rustc = %{version}-%{release} Provides: rustc = %{version}-%{release}
Provides: rustc%{?_isa} = %{version}-%{release} Provides: rustc%{?_isa} = %{version}-%{release}
@ -281,16 +299,21 @@ BuildRequires: %{devtoolset_name}-gcc-c++
%if %defined mingw_targets %if %defined mingw_targets
BuildRequires: mingw32-filesystem >= 95 BuildRequires: mingw32-filesystem >= 95
BuildRequires: mingw64-filesystem >= 95 BuildRequires: mingw64-filesystem >= 95
BuildRequires: mingw32-crt
BuildRequires: mingw64-crt
BuildRequires: mingw32-gcc BuildRequires: mingw32-gcc
BuildRequires: mingw64-gcc BuildRequires: mingw64-gcc
BuildRequires: mingw32-winpthreads-static
BuildRequires: mingw64-winpthreads-static
%endif %endif
%if %defined wasm_targets %if %defined wasm_targets
BuildRequires: clang BuildRequires: clang
BuildRequires: lld
# brp-strip-static-archive breaks the archive index for wasm # brp-strip-static-archive breaks the archive index for wasm
%global __os_install_post \ %global __os_install_post \
%__os_install_post \ %__os_install_post \
find '%{buildroot}%{rustlibdir}' -type f -path '*/wasm*/lib/*.rlib' -print -exec '%{llvm_root}/bin/llvm-ranlib' '{}' ';' \ find '%{buildroot}%{rustlibdir}'/wasm*/lib -type f -regex '.*\\.\\(a\\|rlib\\)' -print -exec '%{llvm_root}/bin/llvm-ranlib' '{}' ';' \
%{nil} %{nil}
%endif %endif
@ -515,12 +538,30 @@ feature for the Rust standard library. The RLS (Rust Language Server) uses this
data to provide information about the Rust standard library. data to provide information about the Rust standard library.
%if 0%{?rhel} && 0%{?rhel} >= 8
%package toolset
Summary: Rust Toolset
Requires: rust%{?_isa} = %{version}-%{release}
Requires: cargo%{?_isa} = %{version}-%{release}
%description toolset
This is the metapackage for Rust Toolset, bringing in the Rust compiler,
the Cargo package manager, and a few convenience macros for rpm builds.
%endif
%prep %prep
%ifarch %{bootstrap_arches} %ifarch %{bootstrap_arches}
%setup -q -n %{bootstrap_root} -T -b %{bootstrap_source} rm -rf %{local_rust_root}
./install.sh --components=cargo,rustc,rust-std-%{rust_triple} \ %setup -q -n cargo-%{bootstrap_suffix} -T -b %{bootstrap_source_cargo}
--prefix=%{local_rust_root} --disable-ldconfig ./install.sh --prefix=%{local_rust_root} --disable-ldconfig
%setup -q -n rustc-%{bootstrap_suffix} -T -b %{bootstrap_source_rustc}
./install.sh --prefix=%{local_rust_root} --disable-ldconfig
%setup -q -n rust-std-%{bootstrap_suffix} -T -b %{bootstrap_source_std}
./install.sh --prefix=%{local_rust_root} --disable-ldconfig
test -f '%{local_rust_root}/bin/cargo' test -f '%{local_rust_root}/bin/cargo'
test -f '%{local_rust_root}/bin/rustc' test -f '%{local_rust_root}/bin/rustc'
%endif %endif
@ -532,6 +573,7 @@ test -f '%{local_rust_root}/bin/rustc'
%setup -q -n %{rustc_package} %setup -q -n %{rustc_package}
%patch1 -p1 %patch1 -p1
%patch2 -p1
%if %with disabled_libssh2 %if %with disabled_libssh2
%patch100 -p1 %patch100 -p1
@ -549,6 +591,9 @@ rm -rf vendor/libnghttp2-sys/
# Use our explicit python3 first # Use our explicit python3 first
sed -i.try-python -e '/^try python3 /i try "%{__python3}" "$@"' ./configure sed -i.try-python -e '/^try python3 /i try "%{__python3}" "$@"' ./configure
# Set a substitute-path in rust-gdb for standard library sources.
sed -i.rust-src -e "s#@BUILDDIR@#$PWD#" ./src/etc/rust-gdb
%if %without bundled_llvm %if %without bundled_llvm
rm -rf src/llvm-project/ rm -rf src/llvm-project/
mkdir -p src/llvm-project/libunwind/ mkdir -p src/llvm-project/libunwind/
@ -556,7 +601,8 @@ mkdir -p src/llvm-project/libunwind/
# Remove other unused vendored libraries # Remove other unused vendored libraries
rm -rf vendor/curl-sys/curl/ rm -rf vendor/curl-sys/curl/
rm -rf vendor/jemalloc-sys/jemalloc/ rm -rf vendor/*jemalloc-sys*/jemalloc/
rm -rf vendor/libmimalloc-sys/c_src/mimalloc/
rm -rf vendor/libssh2-sys/libssh2/ rm -rf vendor/libssh2-sys/libssh2/
rm -rf vendor/libz-sys/src/zlib/ rm -rf vendor/libz-sys/src/zlib/
rm -rf vendor/libz-sys/src/zlib-ng/ rm -rf vendor/libz-sys/src/zlib-ng/
@ -634,14 +680,6 @@ if [ "$max_cpus" -ge 1 -a "$max_cpus" -lt "$ncpus" ]; then
ncpus="$max_cpus" ncpus="$max_cpus"
fi fi
%define target_config %{shrink:
--set target.%{rust_triple}.linker=%{__cc}
--set target.%{rust_triple}.cc=%{__cc}
--set target.%{rust_triple}.cxx=%{__cxx}
--set target.%{rust_triple}.ar=%{__ar}
--set target.%{rust_triple}.ranlib=%{__ranlib}
}
%if %defined mingw_targets %if %defined mingw_targets
%{lua: do %{lua: do
local cfg = "" local cfg = ""
@ -650,20 +688,21 @@ fi
triple = triple, triple = triple,
mingw = string.sub(triple, 1, 4) == "i686" and "mingw32" or "mingw64", mingw = string.sub(triple, 1, 4) == "i686" and "mingw32" or "mingw64",
} }
local s = string.gsub([[%{shrink: local s = string.gsub([[
--set target.{{triple}}.linker=%{{{mingw}}_cc} --set target.{{triple}}.linker=%{{{mingw}}_cc}
--set target.{{triple}}.cc=%{{{mingw}}_cc} --set target.{{triple}}.cc=%{{{mingw}}_cc}
--set target.{{triple}}.ar=%{{{mingw}}_ar} --set target.{{triple}}.ar=%{{{mingw}}_ar}
--set target.{{triple}}.ranlib=%{{{mingw}}_ranlib} --set target.{{triple}}.ranlib=%{{{mingw}}_ranlib}
}]], "{{(%w+)}}", subs) ]], "{{(%w+)}}", subs)
cfg = cfg .. " " .. s cfg = cfg .. " " .. s
end end
cfg = string.gsub(cfg, "%s+", " ")
rpm.define("mingw_target_config " .. cfg) rpm.define("mingw_target_config " .. cfg)
end} end}
%endif %endif
%if %defined wasm_targets %if %defined wasm_targets
%make_build --quiet -C %{wasi_libc_dir} %make_build --quiet -C %{wasi_libc_dir} CC=clang AR=llvm-ar NM=llvm-nm
%{lua: do %{lua: do
local wasi_root = rpm.expand("%{wasi_libc_dir}") .. "/sysroot" local wasi_root = rpm.expand("%{wasi_libc_dir}") .. "/sysroot"
local cfg = "" local cfg = ""
@ -679,14 +718,20 @@ end}
%configure --disable-option-checking \ %configure --disable-option-checking \
--libdir=%{common_libdir} \ --libdir=%{common_libdir} \
--build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple} \ --build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple} \
%{target_config} \ --set target.%{rust_triple}.linker=%{__cc} \
--set target.%{rust_triple}.cc=%{__cc} \
--set target.%{rust_triple}.cxx=%{__cxx} \
--set target.%{rust_triple}.ar=%{__ar} \
--set target.%{rust_triple}.ranlib=%{__ranlib} \
%{?mingw_target_config} \ %{?mingw_target_config} \
%{?wasm_target_config} \ %{?wasm_target_config} \
--python=%{__python3} \ --python=%{__python3} \
--local-rust-root=%{local_rust_root} \ --local-rust-root=%{local_rust_root} \
--set build.rustfmt=/bin/true \
%{!?with_bundled_llvm: --llvm-root=%{llvm_root} \ %{!?with_bundled_llvm: --llvm-root=%{llvm_root} \
%{!?llvm_has_filecheck: --disable-codegen-tests} \ %{!?llvm_has_filecheck: --disable-codegen-tests} \
%{!?with_llvm_static: --enable-llvm-link-shared } } \ %{!?with_llvm_static: --enable-llvm-link-shared } } \
--disable-llvm-static-stdcpp \
--disable-rpath \ --disable-rpath \
%{enable_debuginfo} \ %{enable_debuginfo} \
--set rust.codegen-units-std=1 \ --set rust.codegen-units-std=1 \
@ -783,6 +828,11 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*
# We don't want Rust copies of LLVM tools (rust-lld, rust-llvm-dwp) # We don't want Rust copies of LLVM tools (rust-lld, rust-llvm-dwp)
rm -f %{buildroot}%{rustlibdir}/%{rust_triple}/bin/rust-ll* rm -f %{buildroot}%{rustlibdir}/%{rust_triple}/bin/rust-ll*
%if 0%{?rhel} && 0%{?rhel} >= 8
# This allows users to build packages using Rust Toolset.
%{__install} -D -m 644 %{S:100} %{buildroot}%{rpmmacrodir}/macros.rust-toolset
%endif
%check %check
%{export_rust_env} %{export_rust_env}
@ -793,6 +843,13 @@ env RUSTC=%{buildroot}%{_bindir}/rustc \
LD_LIBRARY_PATH="%{buildroot}%{_libdir}:$LD_LIBRARY_PATH" \ LD_LIBRARY_PATH="%{buildroot}%{_libdir}:$LD_LIBRARY_PATH" \
%{buildroot}%{_bindir}/cargo run --manifest-path build/hello-world/Cargo.toml %{buildroot}%{_bindir}/cargo run --manifest-path build/hello-world/Cargo.toml
# Try a build sanity-check for other targets
for triple in %{?mingw_targets} %{?wasm_targets}; do
env RUSTC=%{buildroot}%{_bindir}/rustc \
LD_LIBRARY_PATH="%{buildroot}%{_libdir}:$LD_LIBRARY_PATH" \
%{buildroot}%{_bindir}/cargo build --manifest-path build/hello-world/Cargo.toml --target=$triple
done
# The results are not stable on koji, so mask errors and just log it. # The results are not stable on koji, so mask errors and just log it.
# Some of the larger test artifacts are manually cleaned to save space. # Some of the larger test artifacts are manually cleaned to save space.
%{__python3} ./x.py test --no-fail-fast --stage 2 || : %{__python3} ./x.py test --no-fail-fast --stage 2 || :
@ -916,7 +973,6 @@ end}
%{_docdir}/%{name}/html/*.js %{_docdir}/%{name}/html/*.js
%{_docdir}/%{name}/html/*.png %{_docdir}/%{name}/html/*.png
%{_docdir}/%{name}/html/*.svg %{_docdir}/%{name}/html/*.svg
%{_docdir}/%{name}/html/*.woff
%{_docdir}/%{name}/html/*.woff2 %{_docdir}/%{name}/html/*.woff2
%license %{_docdir}/%{name}/html/*.txt %license %{_docdir}/%{name}/html/*.txt
%license %{_docdir}/%{name}/html/*.md %license %{_docdir}/%{name}/html/*.md
@ -969,7 +1025,32 @@ end}
%{rustlibdir}/%{rust_triple}/analysis/ %{rustlibdir}/%{rust_triple}/analysis/
%if 0%{?rhel} && 0%{?rhel} >= 8
%files toolset
%{rpmmacrodir}/macros.rust-toolset
%endif
%changelog %changelog
* Tue Jul 19 2022 Josh Stone <jistone@redhat.com> - 1.62.1-1
- Update to 1.62.1.
* Wed Jul 13 2022 Josh Stone <jistone@redhat.com> - 1.62.0-2
- Prevent unsound coercions from functions with opaque return types.
* Thu Jun 30 2022 Josh Stone <jistone@redhat.com> - 1.62.0-1
- Update to 1.62.0.
* Fri Jun 03 2022 Josh Stone <jistone@redhat.com> - 1.61.0-1
- Update to 1.61.0.
- Add rust-toolset as a subpackage.
* Wed Apr 20 2022 Josh Stone <jistone@redhat.com> - 1.60.0-1
- Update to 1.60.0.
* Tue Apr 19 2022 Josh Stone <jistone@redhat.com> - 1.59.0-1
- Update to 1.59.0.
* Thu Jan 20 2022 Josh Stone <jistone@redhat.com> - 1.58.1-1 * Thu Jan 20 2022 Josh Stone <jistone@redhat.com> - 1.58.1-1
- Update to 1.58.1. - Update to 1.58.1.