转换LFS仓库为普通仓库

This commit is contained in:
Jiayi Yin 2025-05-18 20:25:44 +00:00
commit f201fe1d32
17 changed files with 1347 additions and 0 deletions

View File

@ -0,0 +1,147 @@
From c15469a7fec811d1a4f69ff26e18c6f383df41d2 Mon Sep 17 00:00:00 2001
From: Alex Crichton <alex@alexcrichton.com>
Date: Fri, 6 Sep 2024 09:21:33 -0700
Subject: [PATCH] Fix enabling wasm-component-ld to match other tools
It was [pointed out recently][comment] that enabling `wasm-component-ld`
as a host tool is different from other host tools. This commit refactors
the logic to match by deduplicating selection of when to build other
tools and then using the same logic for `wasm-component-ld`.
[comment]: https://github.com/rust-lang/rust/pull/127866#issuecomment-2333434720
---
src/bootstrap/src/core/build_steps/compile.rs | 2 +-
src/bootstrap/src/core/build_steps/dist.rs | 2 +-
src/bootstrap/src/core/build_steps/tool.rs | 38 +++----------------
src/bootstrap/src/lib.rs | 17 +++++----
4 files changed, 17 insertions(+), 42 deletions(-)
diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs
index 1936c91ef83c..102c9fd25543 100644
--- a/src/bootstrap/src/core/build_steps/compile.rs
+++ b/src/bootstrap/src/core/build_steps/compile.rs
@@ -1912,7 +1912,7 @@ fn run(self, builder: &Builder<'_>) -> Compiler {
// delegates to the `rust-lld` binary for linking and then runs
// logic to create the final binary. This is used by the
// `wasm32-wasip2` target of Rust.
- if builder.build_wasm_component_ld() {
+ if builder.tool_enabled("wasm-component-ld") {
let wasm_component_ld_exe =
builder.ensure(crate::core::build_steps::tool::WasmComponentLd {
compiler: build_compiler,
diff --git a/src/bootstrap/src/core/build_steps/dist.rs b/src/bootstrap/src/core/build_steps/dist.rs
index 4957de2e1b79..ccb5656d6716 100644
--- a/src/bootstrap/src/core/build_steps/dist.rs
+++ b/src/bootstrap/src/core/build_steps/dist.rs
@@ -473,7 +473,7 @@ fn prepare_image(builder: &Builder<'_>, compiler: Compiler, image: &Path) {
);
}
}
- if builder.build_wasm_component_ld() {
+ if builder.tool_enabled("wasm-component-ld") {
let src_dir = builder.sysroot_libdir(compiler, host).parent().unwrap().join("bin");
let ld = exe("wasm-component-ld", compiler.host);
builder.copy_link(&src_dir.join(&ld), &dst_dir.join(&ld));
diff --git a/src/bootstrap/src/core/build_steps/tool.rs b/src/bootstrap/src/core/build_steps/tool.rs
index 3a1eb43b801f..3c2d791c2090 100644
--- a/src/bootstrap/src/core/build_steps/tool.rs
+++ b/src/bootstrap/src/core/build_steps/tool.rs
@@ -693,14 +693,7 @@ impl Step for Cargo {
fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
let builder = run.builder;
- run.path("src/tools/cargo").default_condition(
- builder.config.extended
- && builder.config.tools.as_ref().map_or(
- true,
- // If `tools` is set, search list for this tool.
- |tools| tools.iter().any(|tool| tool == "cargo"),
- ),
- )
+ run.path("src/tools/cargo").default_condition(builder.tool_enabled("cargo"))
}
fn make_run(run: RunConfig<'_>) {
@@ -772,14 +765,7 @@ impl Step for RustAnalyzer {
fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
let builder = run.builder;
- run.path("src/tools/rust-analyzer").default_condition(
- builder.config.extended
- && builder
- .config
- .tools
- .as_ref()
- .map_or(true, |tools| tools.iter().any(|tool| tool == "rust-analyzer")),
- )
+ run.path("src/tools/rust-analyzer").default_condition(builder.tool_enabled("rust-analyzer"))
}
fn make_run(run: RunConfig<'_>) {
@@ -821,12 +807,8 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
run.path("src/tools/rust-analyzer")
.path("src/tools/rust-analyzer/crates/proc-macro-srv-cli")
.default_condition(
- builder.config.extended
- && builder.config.tools.as_ref().map_or(true, |tools| {
- tools.iter().any(|tool| {
- tool == "rust-analyzer" || tool == "rust-analyzer-proc-macro-srv"
- })
- }),
+ builder.tool_enabled("rust-analyzer")
+ || builder.tool_enabled("rust-analyzer-proc-macro-srv"),
)
}
@@ -874,16 +856,8 @@ impl Step for LlvmBitcodeLinker {
fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
let builder = run.builder;
- run.path("src/tools/llvm-bitcode-linker").default_condition(
- builder.config.extended
- && builder
- .config
- .tools
- .as_ref()
- .map_or(builder.build.unstable_features(), |tools| {
- tools.iter().any(|tool| tool == "llvm-bitcode-linker")
- }),
- )
+ run.path("src/tools/llvm-bitcode-linker")
+ .default_condition(builder.tool_enabled("llvm-bitcode-linker"))
}
fn make_run(run: RunConfig<'_>) {
diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs
index c76ce3409562..780024e307ed 100644
--- a/src/bootstrap/src/lib.rs
+++ b/src/bootstrap/src/lib.rs
@@ -1407,16 +1407,17 @@ fn default_wasi_runner(&self) -> Option<String> {
None
}
- /// Returns whether it's requested that `wasm-component-ld` is built as part
- /// of the sysroot. This is done either with the `extended` key in
- /// `config.toml` or with the `tools` set.
- fn build_wasm_component_ld(&self) -> bool {
- if self.config.extended {
- return true;
+ /// Returns whether the specified tool is configured as part of this build.
+ ///
+ /// This requires that both the `extended` key is set and the `tools` key is
+ /// either unset or specifically contains the specified tool.
+ fn tool_enabled(&self, tool: &str) -> bool {
+ if !self.config.extended {
+ return false;
}
match &self.config.tools {
- Some(set) => set.contains("wasm-component-ld"),
- None => false,
+ Some(set) => set.contains(tool),
+ None => true,
}
}
--
2.46.0

View File

@ -0,0 +1,80 @@
From 3d8c6d095581e8d7585f3772cfd16f6367f3c008 Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Fri, 16 Aug 2024 10:12:58 -0700
Subject: [PATCH] Use lld provided by system
---
compiler/rustc_target/src/spec/base/wasm.rs | 3 +--
.../src/spec/targets/aarch64_unknown_none_softfloat.rs | 2 +-
compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs | 1 +
compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs | 2 +-
compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs | 1 +
5 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/compiler/rustc_target/src/spec/base/wasm.rs b/compiler/rustc_target/src/spec/base/wasm.rs
index f237391016e7..08bcd9699b4a 100644
--- a/compiler/rustc_target/src/spec/base/wasm.rs
+++ b/compiler/rustc_target/src/spec/base/wasm.rs
@@ -85,8 +85,7 @@ macro_rules! args {
// arguments just yet
limit_rdylib_exports: false,
- // we use the LLD shipped with the Rust toolchain by default
- linker: Some("rust-lld".into()),
+ linker: Some("lld".into()),
linker_flavor: LinkerFlavor::WasmLld(Cc::No),
pre_link_args,
diff --git a/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs b/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs
index 222d5651b521..4b780bc8a8e7 100644
--- a/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs
+++ b/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs
@@ -14,7 +14,7 @@ pub fn target() -> Target {
let opts = TargetOptions {
abi: "softfloat".into(),
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
- linker: Some("rust-lld".into()),
+ linker: Some("lld".into()),
features: "+v8a,+strict-align,-neon,-fp-armv8".into(),
relocation_model: RelocModel::Static,
disable_redzone: true,
diff --git a/compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs b/compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs
index 429303170b6b..19d4ec53f6d8 100644
--- a/compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs
+++ b/compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs
@@ -9,6 +9,7 @@ pub fn target() -> Target {
base.max_atomic_width = Some(128);
base.add_pre_link_args(LinkerFlavor::Msvc(Lld::No), &["/machine:arm64"]);
base.features = "+v8a".into();
+ base.linker = Some("lld".into());
Target {
llvm_target: "aarch64-unknown-windows".into(),
diff --git a/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs b/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs
index 549706998d46..b7e9158ddef5 100644
--- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs
+++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs
@@ -17,7 +17,7 @@ pub fn target() -> Target {
static_position_independent_executables: true,
relro_level: RelroLevel::Full,
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
- linker: Some("rust-lld".into()),
+ linker: Some("lld".into()),
features: "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2,+soft-float".into(),
supported_sanitizers: SanitizerSet::KCFI | SanitizerSet::KERNELADDRESS,
disable_redzone: true,
diff --git a/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs b/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs
index 6da1fcca58c8..c84ae44576d4 100644
--- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs
+++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs
@@ -16,6 +16,7 @@ pub fn target() -> Target {
base.plt_by_default = false;
base.max_atomic_width = Some(64);
base.entry_abi = Conv::X86_64Win64;
+ base.linker = Some("lld".into());
// We disable MMX and SSE for now, even though UEFI allows using them. Problem is, you have to
// enable these CPU features explicitly before their first use, otherwise their instructions
--
2.46.0

View File

@ -0,0 +1,162 @@
From 85c7f9262e9d4fbfdaa5d7bc22a85eb5300fcca0 Mon Sep 17 00:00:00 2001
From: jcf <chunfu.jian@shingroup.cn>
Date: Wed, 12 Jun 2024 09:14:32 +0000
Subject: [PATCH] add support for ppc64le
---
compiler/rustc_target/src/spec/mod.rs | 2 ++
.../spec/targets/ppc64le_unknown_freebsd.rs | 23 +++++++++++++++++++
.../spec/targets/ppc64le_unknown_linux_gnu.rs | 23 +++++++++++++++++++
.../targets/ppc64le_unknown_linux_musl.rs | 23 +++++++++++++++++++
src/bootstrap/configure.py | 2 ++
vendor/openssl-src-111.28.1+1.1.1w/src/lib.rs | 3 +++
vendor/target-lexicon-0.12.15/src/targets.rs | 3 +++
7 files changed, 79 insertions(+)
create mode 100644 compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs
create mode 100644 compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs
create mode 100644 compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs
diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
index 291a761..e6e80a1 100644
--- a/compiler/rustc_target/src/spec/mod.rs
+++ b/compiler/rustc_target/src/spec/mod.rs
@@ -1513,6 +1513,8 @@ supported_targets! {
("powerpc64-unknown-linux-musl", powerpc64_unknown_linux_musl),
("powerpc64le-unknown-linux-gnu", powerpc64le_unknown_linux_gnu),
("powerpc64le-unknown-linux-musl", powerpc64le_unknown_linux_musl),
+ ("ppc64le-unknown-linux-gnu", ppc64le_unknown_linux_gnu),
+ ("ppc64le-unknown-linux-musl", ppc64le_unknown_linux_musl),
("s390x-unknown-linux-gnu", s390x_unknown_linux_gnu),
("s390x-unknown-linux-musl", s390x_unknown_linux_musl),
("sparc-unknown-linux-gnu", sparc_unknown_linux_gnu),
diff --git a/compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs
new file mode 100644
index 0000000..615bb67
--- /dev/null
+++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs
@@ -0,0 +1,23 @@
+use crate::spec::{base, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
+
+pub fn target() -> Target {
+ let mut base = base::freebsd::opts();
+ base.cpu = "ppc64le".into();
+ base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
+ base.max_atomic_width = Some(64);
+ base.stack_probes = StackProbeType::Inline;
+
+ Target {
+ llvm_target: "ppc64le-unknown-freebsd".into(),
+ metadata: crate::spec::TargetMetadata {
+ description: None,
+ tier: None,
+ host_tools: None,
+ std: None,
+ },
+ pointer_width: 64,
+ data_layout: "e-m:e-Fn32-i64:64-n32:64".into(),
+ arch: "powerpc64".into(),
+ options: TargetOptions { mcount: "_mcount".into(), ..base },
+ }
+}
diff --git a/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs
new file mode 100644
index 0000000..5ff45e2
--- /dev/null
+++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs
@@ -0,0 +1,23 @@
+use crate::spec::{base, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
+
+pub fn target() -> Target {
+ let mut base = base::linux_gnu::opts();
+ base.cpu = "ppc64le".into();
+ base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
+ base.max_atomic_width = Some(64);
+ base.stack_probes = StackProbeType::Inline;
+
+ Target {
+ llvm_target: "ppc64le-unknown-linux-gnu".into(),
+ metadata: crate::spec::TargetMetadata {
+ description: None,
+ tier: None,
+ host_tools: None,
+ std: None,
+ },
+ pointer_width: 64,
+ data_layout: "e-m:e-Fn32-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
+ arch: "powerpc64".into(),
+ options: TargetOptions { mcount: "_mcount".into(), ..base },
+ }
+}
diff --git a/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs
new file mode 100644
index 0000000..2b612e7
--- /dev/null
+++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs
@@ -0,0 +1,23 @@
+use crate::spec::{base, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
+
+pub fn target() -> Target {
+ let mut base = base::linux_musl::opts();
+ base.cpu = "ppc64le".into();
+ base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
+ base.max_atomic_width = Some(64);
+ base.stack_probes = StackProbeType::Inline;
+
+ Target {
+ llvm_target: "ppc64le-unknown-linux-musl".into(),
+ metadata: crate::spec::TargetMetadata {
+ description: None,
+ tier: None,
+ host_tools: None,
+ std: None,
+ },
+ pointer_width: 64,
+ data_layout: "e-m:e-Fn32-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
+ arch: "powerpc64".into(),
+ options: TargetOptions { mcount: "_mcount".into(), ..base },
+ }
+}
diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py
index 768aac9..155f21e 100755
--- a/src/bootstrap/configure.py
+++ b/src/bootstrap/configure.py
@@ -127,6 +127,8 @@ v("musl-root-mips64", "target.mips64-unknown-linux-muslabi64.musl-root",
"mips64-unknown-linux-muslabi64 install directory")
v("musl-root-mips64el", "target.mips64el-unknown-linux-muslabi64.musl-root",
"mips64el-unknown-linux-muslabi64 install directory")
+v("musl-root-ppc64le", "target.ppc64le-unknown-linux-musl.musl-root",
+ "ppc64le-unknown-linux-musl install directory")
v("musl-root-riscv32gc", "target.riscv32gc-unknown-linux-musl.musl-root",
"riscv32gc-unknown-linux-musl install directory")
v("musl-root-riscv64gc", "target.riscv64gc-unknown-linux-musl.musl-root",
diff --git a/vendor/openssl-src-111.28.2+1.1.1w/src/lib.rs b/vendor/openssl-src-111.28.2+1.1.1w/src/lib.rs
index 1264742..14427a7 100644
--- a/vendor/openssl-src-111.28.2+1.1.1w/src/lib.rs
+++ b/vendor/openssl-src-111.28.2+1.1.1w/src/lib.rs
@@ -282,6 +282,9 @@ impl Build {
"powerpc64le-unknown-freebsd" => "BSD-generic64",
"powerpc64le-unknown-linux-gnu" => "linux-ppc64le",
"powerpc64le-unknown-linux-musl" => "linux-ppc64le",
+ "ppc64le-unknown-freebsd" => "BSD-generic64",
+ "ppc64le-unknown-linux-gnu" => "linux-ppc64le",
+ "ppc64le-unknown-linux-musl" => "linux-ppc64le",
"riscv64gc-unknown-linux-gnu" => "linux-generic64",
"s390x-unknown-linux-gnu" => "linux64-s390x",
"s390x-unknown-linux-musl" => "linux64-s390x",
diff --git a/vendor/target-lexicon-0.12.15/src/targets.rs b/vendor/target-lexicon-0.12.15/src/targets.rs
index d14a7607b..f64e49568 100644
--- a/vendor/target-lexicon-0.12.15/src/targets.rs
+++ b/vendor/target-lexicon-0.12.15/src/targets.rs
@@ -1692,6 +1692,9 @@ mod tests {
"powerpc64le-unknown-freebsd",
"powerpc64le-unknown-linux-gnu",
"powerpc64le-unknown-linux-musl",
+ "ppc64le-unknown-freebsd",
+ "ppc64le-unknown-linux-gnu",
+ "ppc64le-unknown-linux-musl",
"powerpc64-unknown-freebsd",
"powerpc64-unknown-linux-gnu",
"powerpc64-unknown-linux-musl",
--
2.44.0

View File

@ -0,0 +1,11 @@
--- a/vendor/compiler_builtins-0.1.123/configure.rs
+++ b/vendor/compiler_builtins-0.1.123/configure.rs
@@ -72,6 +72,8 @@ pub fn configure_f16_f128(target: &Target) {
"sparc" | "sparcv9" => (true, false),
// `f16` miscompiles <https://github.com/llvm/llvm-project/issues/96438>
"wasm32" | "wasm64" => (false, true),
+ "loongarch64" => (false, true),
+ "riscv64" | "riscv64gc" => (false, true),
// Most everything else works as of LLVM 19
_ => (true, true),
};

5
cargo-config Normal file
View File

@ -0,0 +1,5 @@
[source.crates-io]
replace-with = 'ustc'
[source.ustc]
registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"

5
cargo-config.csh Normal file
View File

@ -0,0 +1,5 @@
# Copy cargo config from skel if it is not exist
if ( ! -e "$HOME/.cargo/config.toml" ) then
mkdir -p $HOME/.cargo
cp -f /etc/skel/.cargo/config.toml $HOME/.cargo
endif

5
cargo-config.sh Normal file
View File

@ -0,0 +1,5 @@
# Copy cargo config from skel if it is not exist
if [ ! -f "$HOME/.cargo/config.toml" ] ; then
mkdir -p $HOME/.cargo
cp -f /etc/skel/.cargo/config.toml $HOME/.cargo
fi

Binary file not shown.

Binary file not shown.

Binary file not shown.

86
rust-key.gpg.ascii Normal file
View File

@ -0,0 +1,86 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
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
Mve696B5tlHyc1KxjHR6w9GRsh4=
=5FXw
-----END PGP PUBLIC KEY BLOCK-----

761
rust.spec Normal file
View File

@ -0,0 +1,761 @@
%global bootstrap_rust 1.82.0
%global bootstrap_cargo 1.82.0
%global bootstrap_channel 1.82.0
%global bootstrap_date 2024-10-17
%global bootstrap_arches x86_64 aarch64 riscv64
%bcond_with llvm_static
%ifarch x86_64 aarch64 riscv64
%bcond_with bundled_llvm
%else
%bcond_without bundled_llvm
%endif
%bcond_without bundled_libgit2
%bcond_with disabled_libssh2
%bcond_without lldb
%bcond_without analyzer
# disable rust-lld (enabled by default on x86 since 1.80.0 via pull/124129) for
# building with system llvm (17.0.6)
# https://github.com/rust-lang/rust/issues/131291
%ifarch %{ix86} x86_64
%bcond_with rust_lld
%endif
%ifnarch riscv64 loongarch64
%bcond_without musl_target
%endif
Name: rust
Version: 1.82.0
Release: 11
Summary: The Rust Programming Language
License: Apache-2.0 OR MIT
URL: https://www.rust-lang.org
Source0: https://static.rust-lang.org/dist/rustc-%{version}-src.tar.xz
Source1: https://static.rust-lang.org/dist/rustc-%{version}-src.tar.xz.asc
Source2: https://static.rust-lang.org/rust-key.gpg.ascii
# SOURCE3-5: use local mirror for speed up
Source3: cargo-config
Source4: cargo-config.sh
Source5: cargo-config.csh
Patch0000: rustc-1.82.0-disable-libssh2.patch
# By default, rust tries to use "rust-lld" as a linker for some targets.
Patch0001: 0001-Use-lld-provided-by-system.patch
# Set a substitute-path in rust-gdb for standard library sources.
Patch0002: rustc-1.70.0-rust-gdb-substitute-path.patch
Patch0003: 0001-add-support-for-ppc64le.patch
# https://github.com/rust-lang/rust/pull/130034 (from 1.83)
Patch0004: 0001-Fix-enabling-wasm-component-ld-to-match-other-tools.patch
Patch0005: 0001-fix-build-error-for-loongarch64.patch
%{lua: function rust_triple(arch)
local abi = "gnu"
if arch == "armv7hl" then
arch = "armv7"
abi = "gnueabihf"
elseif arch == "ppc64" then
arch = "powerpc64"
elseif arch == "ppc64le" then
arch = "powerpc64le"
elseif arch == "riscv64" then
arch = "riscv64gc"
elseif arch == "loongarch64" then
arch = "loongarch64"
end
return arch.."-unknown-linux-"..abi
end}
%{lua: function rust_musl_triple(arch)
local abi = "musl"
if arch == "riscv64" then
arch = "riscv64gc"
end
return arch.."-unknown-linux-"..abi
end}
%{lua: function rust_musl_root(arch)
if arch == "riscv64" then
arch = "riscv64gc"
end
return "--musl-root-"..arch
end}
%global rust_triple %{lua: print(rust_triple(rpm.expand("%{_target_cpu}")))}
%global rust_musl_triple %{lua: print(rust_musl_triple(rpm.expand("%{_target_cpu}")))}
%global rust_musl_root %{lua: print(rust_musl_root(rpm.expand("%{_target_cpu}")))}
%if %defined bootstrap_arches
%{lua: do
local bootstrap_arches = {}
for arch in string.gmatch(rpm.expand("%{bootstrap_arches}"), "%S+") do
table.insert(bootstrap_arches, arch)
end
local base = rpm.expand("https://static.rust-lang.org/dist/%{bootstrap_date}"
.."/rust-%{bootstrap_channel}")
local target_arch = rpm.expand("%{_target_cpu}")
for i, arch in ipairs(bootstrap_arches) do
print(string.format("Source%d: %s-%s.tar.xz\n",
i+5, base, rust_triple(arch)))
if arch == target_arch then
rpm.define("bootstrap_source "..i+5)
end
end
end}
%endif
%ifarch %{bootstrap_arches}
%global bootstrap_root rust-%{bootstrap_channel}-%{rust_triple}
%global local_rust_root %{_builddir}/%{bootstrap_root}/usr
Provides: bundled(%{name}-bootstrap) = %{bootstrap_rust}
%else
BuildRequires: cargo >= %{bootstrap_cargo}
BuildRequires: (%{name} >= %{bootstrap_rust} with %{name} <= %{version})
%global local_rust_root %{_prefix}
%endif
%if %{with musl_target}
BuildRequires: make gcc gcc-c++ ncurses-devel curl curl-devel musl-libc-static musl-gcc pkgconfig(libcurl) pkgconfig(liblzma)
%else
BuildRequires: make gcc gcc-c++ ncurses-devel curl curl-devel pkgconfig(libcurl) pkgconfig(liblzma)
%endif
BuildRequires: pkgconfig(openssl) pkgconfig(zlib) pkgconfig(libssh2) >= 1.6.0 gnupg2 wget
%global python python3
BuildRequires: %{python}
%if %with bundled_llvm
BuildRequires: cmake3 >= 3.13.4
Provides: bundled(llvm) = 19.1.1
%else
BuildRequires: cmake >= 2.8.11
%if %defined llvm
%global llvm_root %{_libdir}/%{llvm}
%else
# default llvm is decent enough on riscv64
%ifarch x86_64 aarch64 riscv64
%global llvm llvm-toolset-18-llvm
%global llvm_root /opt/openEuler/llvm-toolset-18/root%{_prefix}
%global clang_maj_ver 18
%else
%global llvm llvm
%global llvm_root %{_prefix}
%global clang_maj_ver 17
%endif
%endif
# Minimum external LLVM for rust 1.82
BuildRequires: %{llvm} >= 17.0.0
BuildRequires: %{llvm}-devel >= 17.0.0
%if %with llvm_static
BuildRequires: %{llvm}-static libffi-devel
%endif
%endif
BuildRequires: procps-ng
BuildRequires: ninja-build
%ifarch x86_64 aarch64 riscv64
BuildRequires: llvm-toolset-18-compiler-rt
BuildRequires: llvm-toolset-18-clang
%else
BuildRequires: compiler-rt
BuildRequires: clang
%endif
Provides: rustc = %{version}-%{release}
Provides: rustc%{?_isa} = %{version}-%{release}
Requires: %{name}-std-static%{?_isa} = %{version}-%{release}
Requires: /usr/bin/cc
%global _privatelibs lib(.*-[[:xdigit:]]{16}*|rustc.*)[.]so.*
%global __provides_exclude ^(%{_privatelibs})$
%global __requires_exclude ^(%{_privatelibs})$
%global __provides_exclude_from ^(%{_docdir}|%{rustlibdir}/src)/.*$
%global __requires_exclude_from ^(%{_docdir}|%{rustlibdir}/src)/.*$
%global _find_debuginfo_opts --keep-section .rustc
%global rustflags -Clink-arg=-Wl,-z,relro,-z,now
%if %{without bundled_llvm}
%if "%{llvm_root}" == "%{_prefix}" || 0%{?scl:1}
%global llvm_has_filecheck 1
%endif
%endif
%global musl_root %{_prefix}/musl
# The 'analysis' component is removed since Rust 1.69.0
# ref: https://github.com/rust-lang/rust/pull/101841
Obsoletes: %{name}-analysis < 1.69.0~
%description
Rust is a systems programming language that runs blazingly fast, prevents
segfaults, and guarantees thread safety.
This package includes the Rust compiler and documentation generator.
%package std-static
Summary: Standard library for Rust
%description std-static
This package includes the standard libraries for building applications
written in Rust.
%package debugger-common
Summary: Common debugger pretty printers for Rust
BuildArch: noarch
%description debugger-common
This package includes the common functionality for %{name}-gdb and %{name}-lldb.
%package gdb
Summary: GDB pretty printers for Rust
BuildArch: noarch
Requires: gdb %{name}-debugger-common = %{version}-%{release}
%description gdb
This package includes the rust-gdb script, which allows easier debugging of Rust
programs.
%package lldb
Summary: LLDB pretty printers for Rust
BuildArch: noarch
Requires: lldb %{python}-lldb
Requires: %{name}-debugger-common = %{version}-%{release}
%description lldb
This package includes the rust-lldb script, which allows easier debugging of Rust
programs.
%package -n cargo
Summary: Rust's package manager and build tool
%if %with bundled_libgit2
Provides: bundled(libgit2) = 1.1.0
%endif
BuildRequires: git
Requires: rust
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.
%package -n rustfmt
Summary: Tool to find and fix Rust formatting issues
Requires: cargo
# /usr/bin/rustfmt is dynamically linked against internal rustc libs
Requires: %{name}%{?_isa} = %{version}-%{release}
Obsoletes: rustfmt-preview < 1.0.0
Provides: rustfmt-preview = %{version}-%{release}
Conflicts: rustfmt-preview < 1.0.0
%description -n rustfmt
A tool for formatting Rust code according to style guidelines.
%if %{with analyzer}
%package analyzer
Summary:Rust implementation of the Language Server Protocol
Requires: %{name}-src
# RLS is no longer available as of Rust 1.65, but we're including the stub
# binary that implements LSP just enough to recommend rust-analyzer.
Obsoletes: rls < 1.65.0~
Obsoletes: rls-preview < 1.31.6
Requires: %{name} = %{version}-%{release}
%description analyzer
rust-analyzer is an implementation of Language Server Protocol for the Rust
programming language. It provides features like completion and goto definition
for many code editors, including VS Code, Emacs and Vim.
%endif
%package -n clippy
Summary: Lints to catch common mistakes and improve your Rust code
Requires: cargo %{name}%{?_isa} = %{version}-%{release}
Obsoletes: clippy-preview <= 0.0.212
Provides: clippy-preview = %{version}-%{release}
Conflicts: clippy-preview <= 0.0.212
%description -n clippy
A collection of lints to catch common mistakes and improve your Rust code.
%package src
Summary: Sources for the Rust standard library
BuildArch: noarch
%description src
This package includes source files for the Rust standard library. It may be
useful as a reference for code completion tools in various editors.
%package help
Summary: Help documents for rust
Provides: %{name}-doc = %{version}-%{release} %{name}-cargo-doc = %{version}-%{release}
Obsoletes: %{name}-doc < %{version}-%{release} %{name}-cargo-doc < %{version}-%{release}
%description help
Man pages and other related help documents for rust.
%prep
# download source0 and gpg check
#wget -qO %{SOURCE0} https://user-repo.openeuler.openatom.cn/lfs-tar/rust/rustc-%{version}-src.tar.xz
gpg --import %{SOURCE2}
gpg --verify %{SOURCE1} %{SOURCE0}
%ifarch %{bootstrap_arches}
#wget -qO %{_sourcedir}/%{bootstrap_root}.tar.xz https://user-repo.openeuler.openatom.cn/lfs-tar/rust/%{bootstrap_root}.tar.xz
%setup -q -n %{bootstrap_root} -T -b %{bootstrap_source}
./install.sh --components=cargo,rustc,rust-std-%{rust_triple} \
--prefix=%{local_rust_root} --disable-ldconfig
test -f '%{local_rust_root}/bin/cargo'
test -f '%{local_rust_root}/bin/rustc'
%endif
%setup -q -n rustc-%{version}-src
%if %with disabled_libssh2
%patch -P 0000 -p1
%endif
%if "%{python}" != "python3"
sed -i.try-python -e '/^try python3 /i try "%{python}" "$@"' ./configure
%endif
%patch -P 0001 -p1
%patch -P 0002 -p1
%patch -P 0003 -p1
%patch -P 0004 -p1
%patch -P 0005 -p1
rm -rf vendor/curl-sys*/curl/
rm -rf vendor/jemalloc-sys/jemalloc/
rm -rf vendor/libffi-sys*/libffi/
rm -rf vendor/libssh2-sys*/libssh2/
rm -rf vendor/libz-sys*/src/zlib{,-ng}/
rm -rf vendor/lzma-sys*/xz-*/
rm -rf vendor/openssl-src*/openssl/
%if %without bundled_libgit2
rm -rf vendor/libgit2-sys*/libgit2/
%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/src/core/build_steps/tool.rs
%if %{without bundled_llvm} && %{with llvm_static}
sed -i.ffi -e '$a #[link(name = "ffi")] extern {}' \
src/librustc_llvm/lib.rs
%endif
find vendor -name .cargo-checksum.json \
-exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+'
find -name '*.rs' -type f -perm /111 -exec chmod -v -x '{}' '+'
%global rust_env RUSTFLAGS="%{rustflags}"
%if 0%{?cmake_path:1}
%global rust_env %{rust_env} PATH="%{cmake_path}:$PATH"
%endif
%if %without bundled_libgit2
%global rust_env %{rust_env} LIBGIT2_SYS_USE_PKG_CONFIG=1
%endif
%if %without disabled_libssh2
%global rust_env %{rust_env} LIBSSH2_SYS_USE_PKG_CONFIG=1
%endif
%build
export %{rust_env}
%global common_libdir %{_prefix}/lib
%global rustlibdir %{common_libdir}/rustlib
%ifarch %{arm} %{ix86} s390x
%define enable_debuginfo --debuginfo-level=0 --debuginfo-level-std=2
%else
%define enable_debuginfo --debuginfo-level=1
%endif
%ifnarch %{power64}
%define codegen_units_std --set rust.codegen-units-std=1
%endif
ncpus=$(/usr/bin/getconf _NPROCESSORS_ONLN)
%if %{with bundled_llvm}
max_cpus=$(( ($(free -g | awk '/^Mem:/{print $2}') + 1) / 4 ))
%else
max_cpus=$(( ($(free -g | awk '/^Mem:/{print $2}') + 1) / 2 ))
%endif
if [ "$max_cpus" -ge 1 -a "$max_cpus" -lt "$ncpus" ]; then
ncpus="$max_cpus"
fi
# Find the compiler-rt library for the Rust profiler_builtins crate.
# But there are two versions in openEuler. Why?
# We don't have macros.clang so we need clang version here
# This is for avoiding rpm syntax error
%ifarch ppc64le
%global _arch powerpc64le
%endif
%if %{?clang_maj_ver} >= 17
# This is the new one, used on openEuler 24.03 LTS or later
%define profiler %(echo %{llvm_root}/%{_lib}/clang/%{clang_maj_ver}/lib/%{_arch}-%{_vendor}-linux-gnu/libclang_rt.profile.a)
%else
# This is used before openEuler 23.09
%global clang_full_ver %%(clang --version | awk '/clang version/{print $3}')
%define profiler %(echo %{_prefix}/%{_lib}/clang/%{clang_full_ver}/lib/libclang_rt.profile-%{_arch}.a)
%endif
test -r "%{profiler}"
%configure --disable-option-checking \
--docdir=%{_pkgdocdir} \
--libdir=%{common_libdir} \
%{?with_musl_target:%{rust_musl_root}=%{musl_root}} \
--build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple}%{?with_musl_target:,%{rust_musl_triple}} \
--set target.%{rust_triple}.profiler="%{profiler}" \
%{!?with_rust_lld: --set rust.lld=false} \
--python=%{python} \
--local-rust-root=%{local_rust_root} \
%{!?with_bundled_llvm: --llvm-root=%{llvm_root} \
%{!?llvm_has_filecheck: --disable-codegen-tests} \
%{!?with_llvm_static: --enable-llvm-link-shared } } \
--disable-rpath \
%{enable_debuginfo} \
--enable-extended \
--tools=cargo,clippy,%{?with_analyzer:rls,rust-analyzer,}rustfmt,src \
--enable-vendor \
--enable-verbose-tests \
%{?codegen_units_std} \
--release-channel=stable
%ifarch loongarch64
%{python} ./x.py build -j "$((($ncpus + 3) / 4))" --stage 2
%else
%{python} ./x.py build -j "$ncpus" --stage 2
%endif
%{python} ./x.py doc --stage 2
%install
export %{rust_env}
DESTDIR=%{buildroot} %{python} ./x.py install
# Some of the components duplicate-install binaries, leaving backups we don't want
rm -f %{buildroot}%{_bindir}/*.old
%if "%{_libdir}" != "%{common_libdir}"
mkdir -p %{buildroot}%{_libdir}
find %{buildroot}%{common_libdir} -maxdepth 1 -type f -name '*.so' \
-exec mv -v -t %{buildroot}%{_libdir} '{}' '+'
%endif
find %{buildroot}%{_libdir} -maxdepth 1 -type f -name '*.so' \
-exec chmod -v +x '{}' '+'
(cd "%{buildroot}%{rustlibdir}/%{rust_triple}/lib" &&
find ../../../../%{_lib} -maxdepth 1 -name '*.so' |
while read lib; do
if [ -f "${lib##*/}" ]; then
# make sure they're actually identical!
cmp "$lib" "${lib##*/}"
ln -v -f -s -t . "$lib"
fi
done)
find %{buildroot}%{rustlibdir} -maxdepth 1 -type f -exec rm -v '{}' '+'
find %{buildroot}%{rustlibdir} -type f -name '*.orig' -exec rm -v '{}' '+'
find %{buildroot}%{rustlibdir}/src -type f -name '*.py' -exec rm -v '{}' '+'
rm -f %{buildroot}%{_pkgdocdir}/README.md
rm -f %{buildroot}%{_pkgdocdir}/COPYRIGHT
rm -f %{buildroot}%{_pkgdocdir}/LICENSE
rm -f %{buildroot}%{_pkgdocdir}/LICENSE-APACHE
rm -f %{buildroot}%{_pkgdocdir}/LICENSE-MIT
rm -f %{buildroot}%{_pkgdocdir}/LICENSE-THIRD-PARTY
rm -f %{buildroot}%{_pkgdocdir}/*.old
find %{buildroot}%{_pkgdocdir}/html -empty -delete
find %{buildroot}%{_pkgdocdir}/html -type f -exec chmod -x '{}' '+'
mkdir -p %{buildroot}%{_datadir}/cargo/registry
mkdir -p %{buildroot}%{_docdir}/cargo
ln -sT ../rust/html/cargo/ %{buildroot}%{_docdir}/cargo/html
# install default config for cargo mirror
install -m 0644 -D -p %{SOURCE3} %{buildroot}%{_sysconfdir}/skel/.cargo/config.toml
install -m 0644 -D -p %{SOURCE4} %{buildroot}%{_sysconfdir}/profile.d/cargo-config.sh
install -m 0644 -D -p %{SOURCE5} %{buildroot}%{_sysconfdir}/profile.d/cargo-config.csh
%if %{with analyzer}
# The rls stub doesn't have an install target, but we can just copy it.
%{__install} -t %{buildroot}%{_bindir} build/%{rust_triple}/stage2-tools-bin/rls
%endif
%if %without lldb
rm -f %{buildroot}%{_bindir}/rust-lldb
rm -f %{buildroot}%{rustlibdir}/etc/lldb_*
%endif
rm -f %{buildroot}%{rustlibdir}/%{rust_triple}/bin/rust-ll*
%check
export %{rust_env}
%{python} ./x.py test --no-fail-fast --stage 2 || :
%ifarch aarch64
# https://github.com/rust-lang/rust/issues/123733
%define cargo_test_skip --test-args "--skip panic_abort_doc_tests"
%endif
%{python} ./x.py test --no-fail-fast --stage 2 cargo %{?cargo_test_skip} || :
%{python} ./x.py test --no-fail-fast --stage 2 clippy || :
%if %{with analyzer}
%{python} ./x.py test --no-fail-fast --stage 2 rust-analyzer || :
%endif
%{python} ./x.py test --no-fail-fast --stage 2 rustfmt || :
%ldconfig_scriptlets
%files
%license COPYRIGHT LICENSE-APACHE LICENSE-MIT
%license %{_pkgdocdir}/html/*.txt
%doc README.md
%{_bindir}/rustc
%{_bindir}/rustdoc
%{_libdir}/*.so
%dir %{rustlibdir}
%dir %{rustlibdir}/%{rust_triple}
%dir %{rustlibdir}/%{rust_triple}/lib
%if %{with analyzer}
%{_libexecdir}/rust-analyzer-proc-macro-srv
%endif
%{rustlibdir}/%{rust_triple}/lib/*.so
%if %{with musl_target}
%dir %{rustlibdir}/%{rust_musl_triple}
%dir %{rustlibdir}/%{rust_musl_triple}/lib
%endif
%files std-static
%dir %{rustlibdir}
%dir %{rustlibdir}/%{rust_triple}
%dir %{rustlibdir}/%{rust_triple}/lib
%{rustlibdir}/%{rust_triple}/lib/*.rlib
%if %{with musl_target}
%dir %{rustlibdir}/%{rust_musl_triple}
%dir %{rustlibdir}/%{rust_musl_triple}/lib
%{rustlibdir}/%{rust_musl_triple}/lib/*.rlib
%{rustlibdir}/%{rust_musl_triple}/lib/self-contained/*.o
%{rustlibdir}/%{rust_musl_triple}/lib/self-contained/libunwind.a
%{rustlibdir}/%{rust_musl_triple}/lib/self-contained/libc.a
%endif
%files debugger-common
%dir %{rustlibdir}
%dir %{rustlibdir}/etc
%{rustlibdir}/etc/rust_*.py*
%files gdb
%{_bindir}/rust-gdb
%{rustlibdir}/etc/gdb_*
%exclude %{_bindir}/rust-gdbgui
%if %with lldb
%files lldb
%{_bindir}/rust-lldb
%{rustlibdir}/etc/lldb_*
%endif
%files -n cargo
%license src/tools/cargo/LICENSE-APACHE src/tools/cargo/LICENSE-MIT src/tools/cargo/LICENSE-THIRD-PARTY
%doc src/tools/cargo/README.md
%config(noreplace) %{_sysconfdir}/skel/.cargo/config.toml
%{_sysconfdir}/profile.d/cargo-config.*
%{_bindir}/cargo
%{_sysconfdir}/bash_completion.d/cargo
%{_datadir}/zsh/site-functions/_cargo
%dir %{_datadir}/cargo
%dir %{_datadir}/cargo/registry
%files -n rustfmt
%{_bindir}/rustfmt
%{_bindir}/cargo-fmt
%doc src/tools/rustfmt/{README,CHANGELOG,Configurations}.md
%license src/tools/rustfmt/LICENSE-{APACHE,MIT}
%if %{with analyzer}
%files analyzer
%{_bindir}/rls
%{_bindir}/rust-analyzer
%doc src/tools/rust-analyzer/README.md
%license src/tools/rust-analyzer/LICENSE-{APACHE,MIT}
%endif
%files -n clippy
%{_bindir}/cargo-clippy
%{_bindir}/clippy-driver
%doc src/tools/clippy/{README.md,CHANGELOG.md}
%license src/tools/clippy/LICENSE-{APACHE,MIT}
%files src
%dir %{rustlibdir}
%{rustlibdir}/src
%files help
%dir %{_pkgdocdir}
%docdir %{_pkgdocdir}
%{_pkgdocdir}/html
%dir %{_docdir}/cargo
%docdir %{_docdir}/cargo
%{_docdir}/cargo/html
%{_mandir}/man1/rustc.1*
%{_mandir}/man1/rustdoc.1*
%{_mandir}/man1/cargo*.1*
%changelog
* Wed May 07 2025 wangkai <13474090681@163.com> - 1.82.0-11
- Include all sources in the source package
* Wed Feb 26 2025 laokz <zhangkai@iscas.ac.cn> - 1.82.0-10
- Switch to unbundled llvm for riscv64 building
* Wed Jan 15 2025 wangkai <13474090681@163.com> - 1.82.0-9
- Switch to unbundled llvm for x86_64 aarch64 building
* Fri Jan 03 2025 laokz <zhangkai@iscas.ac.cn> - 1.82.0-8
- fix the error out of memory for riscv64
* Fri Dec 20 2024 Wenlong Zhang <zhangwenlong@loongson.cn> - 1.82.0-7
- fix the error out of memory for loongarch64
* Sun Dec 08 2024 misaka00251 <liuxin@iscas.ac.cn> - 1.82.0-6
- Fix rpm macros
* Fri Dec 06 2024 jchzhou <zhoujiacheng@iscas.ac.cn> - 1.82.0-5
- Add a switch for the musl target & disable it for loongarch64 & riscv64
* Fri Nov 22 2024 Wenl4ng <wenlang1@h-partners.com> - 1.82.0-4
- use lfs-server
* Fri Nov 22 2024 Wenlong Zhang<zhangwenlong@loongson.cn> - 1.82.0-3
- fix build error for loongarch64
* Wed Nov 13 2024 jchzhou <zhoujiacheng@iscas.ac.cn> - 1.82.0-2
- Switch to bundled llvm for building, halve the 'max_cpus' in this case
* Wed Oct 23 2024 jchzhou <zhoujiacheng@iscas.ac.cn> - 1.82.0-1
- Update to 1.82.0
* Tue Oct 22 2024 zhangwenlong <zhangwenlong@loongson.cn> - 1.80.0-2
- disable musl for loongarch64
* Wed Aug 07 2024 wangkai <13474090681@163.com> - 1.80.0-1
- Update to 1.80.0
* Wed Jul 24 2024 wangkai <13474090681@163.com> - 1.79.0-3
- Switch to bootstrap compilation
* Thu Jul 18 2024 jchzhou <zhoujiacheng@iscas.ac.cn> - 1.79.0-2
- Drop obsolete patch for riscv64 (rust-lang/rust#123612 landed in 1.79.0)
* Wed Jun 19 2024 wangkai <13474090681@163.com> - 1.79.0-1
- Update to 1.79.0
* Tue May 07 2024 wangkai <13474090681@163.com> - 1.78.0-1
- Update to 1.78.0
* Thu Jun 13 2024 jianchunfu <chunfu.jian@shingroup.cn> - 1.77.0-5
- spec: Add support for ppc64le
* Wed Jun 05 2024 Wenlong Zhang <zhangwenlong@loongson.cn> - 1.77.0-4
- disable musl for loongarch64
* Mon Apr 22 2024 panchenbo <panchenbo@kylinsec.com.cn> - 1.77.0-3
- Modify openEuler to vendor
* Thu Apr 11 2024 misaka00251 <liuxin@iscas.ac.cn> - 1.77.0-2
- Enable profiler builtin
* Wed Apr 03 2024 wangkai <13474090681@163.com> - 1.77.0-1
- Update to 1.77.0
* Tue Feb 20 2024 wangkai <13474090681@163.com> - 1.76.0-1
- Update to 1.76.0
* Sat Feb 17 2024 wangkai <13474090681@163.com> - 1.75.0-2
- Fix CVE-2024-24575,CVE-2024-24577
* Wed Jan 10 2024 wangkai <13474090681@163.com> - 1.75.0-1
- Update to 1.75.0
* Fri Nov 24 2023 wangkai <13474090681@163.com> - 1.74.0-1
- Update to 1.74.0
* Mon Nov 13 2023 wangkai <13474090681@163.com> - 1.73.0-2
- Remove git lfs tar and change to user-repo
- Add gpg verification to Source0
* Mon Oct 09 2023 wangkai <13474090681@163.com> - 1.73.0-1
- Update to 1.73.0
* Mon Aug 28 2023 jchzhou <zhoujiacheng@iscas.ac.cn> - 1.72.0-1
- Update to 1.72.0
* Mon Aug 7 2023 Funda Wang <fundawang@yeah.net> - 1.71.1-1
- New version 1.71.1
* Sun Jul 30 2023 Funda Wang <fundawang@yeah.net> - 1.71.0-3
- Fix release channel name
* Sun Jul 30 2023 Funda Wang <fundawang@yeah.net> - 1.71.0-2
- Use local mirror for speed up
* Fri Jul 28 2023 jchzhou <zhoujiacheng@iscas.ac.cn> - 1.71.0-1
- Update to 1.71.0
* Tue Jul 18 2023 xu_ping <707078654@qq.com> - 1.70.0-2
- Use llvm package instead of llvm15
* Mon Jun 05 2023 jchzhou <zhoujiacheng@iscas.ac.cn> - 1.70.0-1
- Update to 1.70.0
- Fix rotten patch
* Mon Apr 24 2023 jchzhou <zhoujiacheng@iscas.ac.cn> - 1.69.0-2
- Add riscv64 specific changes
* Mon Apr 24 2023 jchzhou <zhoujiacheng@iscas.ac.cn> - 1.69.0-1
- Update to 1.69.0
- Obsolete the removed rust-analysis subpackage
- Switch to xz tarball to save space
* Wed Mar 22 2023 wangkai <wangkai385@h-partners.com> - 1.68.0-1
- Update to 1.68.0
* Tue Feb 28 2023 wangkai <wangkai385@h-partners.com> - 1.67.1-1
- Update to 1.67.1
* Tue Apr 19 2022 Liu Zixian <liuzixian4@huawei.com> - 1.60.0-1
- Update to 1.60.0
* Mon Feb 28 2022 Liu Zixian <liuzixian4@huawei.com> - 1.59.0-1
- Update to 1.59.0
* Sun Feb 27 2022 Liu Zixian <liuzixian4@huawei.com> - 1.58.1-1
- Update to 1.58.1
* Wed Feb 09 2022 Li Zheng <lizheng135@huawei.com> - 1.57.0-2
- Fix build error
* Sat Jan 22 2022 Liu Zixian <liuzixian4@huawei.com> - 1.57.0-1
- Update to 1.57.0
* Sat Dec 18 2021 sdlzx <hdu_sdlzx@163.com> - 1.56.0-1
- Update to 1.56.0
* Wed Dec 15 2021 sdlzx <hdu_sdlzx@163.com> - 1.55.0-1
- Update to 1.55.0
* Thu Oct 14 2021 sdlzx <hdu_sdlzx@163.com> - 1.54.0-1
- Update to 1.54.0
* Fri Oct 08 2021 donglongtao <donglongtao@huawei.com> - 1.53.0-2
- Update debuginfo-level config
* Sat Oct 02 2021 sdlzx <hdu_sdlzx@163.com> - 1.53.0-1
- Update to 1.53.0
* Tue Sep 28 2021 sdlzx <hdu_sdlzx@163.com> - 1.52.1-1
- Update to 1.52.1
* Fri Sep 17 2021 donglongtao <donglongtao@huawei.com> - 1.51.0-10
- Fix rustdoc install very slow
* Tue Aug 24 2021 caodongxia <caodongxia@huawei.com> - 1.51.0-9
- Fix rustdoc error info
* Wed Aug 18 2021 yaoxin <yaoxin30@huawei.com> - 1.51.0-8
- Fix CVE-2021-29922
* Wed Aug 04 2021 chenyanpanHW <chenyanpan@huawei.com> - 1.51.0-7
- DESC: delete BuildRequires gdb
* Thu Jul 08 2021 Jiajie Li <lijiajie11@huawei.com> - 1.51.0-6
- Add build require of ninja and llvm
* Thu Jul 01 2021 Jiajie Li <lijiajie11@huawei.com> - 1.51.0-5
- Add support for musl target
* Thu Jun 24 2021 sunguoshuai <sunguoshuai@huawei.com> - 1.51.0-4
- fix a println wrong format
* Thu Jun 24 2021 sunguoshuai <sunguoshuai@huawei.com> - 1.51.0-3
- cargo help clippy should have description to user
* Wed Jun 23 2021 sunguoshuai <sunguoshuai@huawei.com> - 1.51.0-2
- clippy-driver usage should user friendly
* Fri May 07 2021 wangyue <wangyue92@huawei.com> - 1.51.0-1
- Update to 1.51.0
* Mon Nov 30 2020 Jeffery.Gao <gaojianxing@huawei.com> - 1.45.2-2
- fix upgrade error
* Mon Sep 21 2020 Jeffery.Gao <gaojianxing@huawei.com> - 1.45.2-1
- Update to 1.45.2
* Fri Apr 17 2020 zhujunhao <zhujunhao8@huawei.com> - 1.29.1-4
- add llvm in rust
* Thu Dec 5 2019 wutao <wutao61@huawei.com> - 1.29.1-3
- Package init

4
rust.yaml Normal file
View File

@ -0,0 +1,4 @@
version_control: github
src_repo: rust-lang/rust
tag_prefix: ^
seperator: .

View File

@ -0,0 +1,21 @@
diff --git a/src/etc/rust-gdb b/src/etc/rust-gdb
index 9abed30ea6f7..e4bf55df3688 100755
--- a/src/etc/rust-gdb
+++ b/src/etc/rust-gdb
@@ -13,8 +13,6 @@ fi
# Find out where the pretty printer Python module is
RUSTC_SYSROOT="$("$RUSTC" --print=sysroot)"
GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/lib/rustlib/etc"
-# Get the commit hash for path remapping
-RUSTC_COMMIT_HASH="$("$RUSTC" -vV | sed -n 's/commit-hash: \([a-zA-Z0-9_]*\)/\1/p')"
# Run GDB with the additional arguments that load the pretty printers
# Set the environment variable `RUST_GDB` to overwrite the call to a
@@ -23,6 +21,6 @@ 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 /rustc/$RUSTC_COMMIT_HASH $RUSTC_SYSROOT/lib/rustlib/src/rust" \
+ -iex "set substitute-path @BUILDDIR@ $RUSTC_SYSROOT/lib/rustlib/src/rust" \
"$@"

View File

@ -0,0 +1,44 @@
diff -up rustc-beta-src/src/tools/cargo/Cargo.lock.orig rustc-beta-src/src/tools/cargo/Cargo.lock
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2024-09-06 10:36:55.743405666 -0700
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2024-09-06 10:36:55.745405652 -0700
@@ -2156,7 +2156,6 @@ checksum = "10472326a8a6477c3c20a64547b0
dependencies = [
"cc",
"libc",
- "libssh2-sys",
"libz-sys",
"openssl-sys",
"pkg-config",
@@ -2197,20 +2196,6 @@ dependencies = [
"pkg-config",
"vcpkg",
]
-
-[[package]]
-name = "libssh2-sys"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee"
-dependencies = [
- "cc",
- "libc",
- "libz-sys",
- "openssl-sys",
- "pkg-config",
- "vcpkg",
-]
[[package]]
name = "libz-sys"
diff -up rustc-beta-src/src/tools/cargo/Cargo.toml.orig rustc-beta-src/src/tools/cargo/Cargo.toml
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2024-09-06 10:36:55.746405645 -0700
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2024-09-06 10:37:13.849280464 -0700
@@ -44,7 +44,7 @@ curl = "0.4.46"
curl-sys = "0.4.73"
filetime = "0.2.23"
flate2 = { version = "1.0.30", default-features = false, features = ["zlib"] }
-git2 = "0.19.0"
+git2 = { version = "0.19.0", default-features = false, features = ["https"] }
git2-curl = "0.20.0"
gix = { version = "0.64.0", default-features = false, features = ["blocking-http-transport-curl", "progress-tree", "parallel", "dirwalk"] }
glob = "0.3.1"

BIN
rustc-1.82.0-src.tar.xz Normal file

Binary file not shown.

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
wsFcBAABCgAQBQJnETfJCRCFq5bm+hvl/gAASrIP/R3fPIF8QTLm3MxtYYYESIUz
BbTUeC3NCuasXFLY7lPPazlgMTvtuRxn4qpTliwtGKtCDWtr1LdzwzFCw2zrW72g
wA/HHvpq16z3Qkk6kjW27c+QQVatAmBtpydehHo3V4QeMs1piMEbGT7cnyN/cW+u
o4YoBdfRMDKV13n516QhBDI7+LzF/Tz1P7RYYnXhSFQ4DwZZBdZni5udaELI8I2R
bhFwe0AC/msClq+Wo5u8I5qfmzUf4hj+zVCUeWt8srk434DkgEX+5lz4jkQH1WLv
HMZXyfx0xwynOe00teZKy6X8lD9KgF0EgbKEjntPbXlGiLWSRpFFvkPpz6DNQ0Hy
QiVqebi7skwO+SK/Go45SAnIH4y/nlMMx0RAtivDtk53VNU68wju5dXJ5KiWCWyc
vWZROmT5SdYFtaEGtiQyS4vhXKZ0mbTDX0LjxogLf+eW4wyRk91zzUxkpZ69SuSG
cR6AblMjvcjCfwgbSNkA4zg5V3OKs4WmuEyeO4Q/EMCO6+USjzwjqOB5L1NSFUkL
8z0qC70x68PR7d7mXgnqui4zISrYeXYe9nVRkwNwNFWFWBNUtW/LUGD/v6ee9CWD
0cYmInsUFM8DxtqJH0rsfd78qjrQwEtoReTrwO1fs9E5L3kCqZm5tNxp6A2vgCr/
PIc5UHGVeUxQWc1bYNha
=IXFx
-----END PGP SIGNATURE-----