转换LFS仓库为普通仓库
This commit is contained in:
commit
a101c12f0d
53
0001-Use-lld-provided-by-system.patch
Normal file
53
0001-Use-lld-provided-by-system.patch
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
From 61b5cc96337da2121221dd1bcdb63fd36551d065 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Josh Stone <jistone@redhat.com>
|
||||||
|
Date: Wed, 1 Nov 2023 15:21:15 -0700
|
||||||
|
Subject: [PATCH] Use lld provided by system
|
||||||
|
|
||||||
|
---
|
||||||
|
compiler/rustc_target/src/spec/base/wasm.rs | 3 +--
|
||||||
|
compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs | 2 +-
|
||||||
|
compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs | 1 +
|
||||||
|
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/compiler/rustc_target/src/spec/base/wasm.rs b/compiler/rustc_target/src/spec/base/wasm.rs
|
||||||
|
index 87ade9e58cf4..2ddff95febab 100644
|
||||||
|
--- a/compiler/rustc_target/src/spec/base/wasm.rs
|
||||||
|
+++ b/compiler/rustc_target/src/spec/base/wasm.rs
|
||||||
|
@@ -91,8 +91,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/x86_64_unknown_none.rs b/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs
|
||||||
|
index 9aa95a35f8e5..a9172f9441b7 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,-3dnow,-3dnowa,-avx,-avx2,+soft-float"
|
||||||
|
.into(),
|
||||||
|
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 5abfb8162f70..13cb43bda1a4 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.41.0
|
||||||
|
|
||||||
50
CVE-2024-24575.patch
Normal file
50
CVE-2024-24575.patch
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
From c9d31b711e8906cf248566f43142f20b03e20cbf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Edward Thomson <ethomson@edwardthomson.com>
|
||||||
|
Date: Fri, 17 Nov 2023 16:54:47 +0000
|
||||||
|
Subject: [PATCH] revparse: fix parsing bug for trailing `@`
|
||||||
|
|
||||||
|
Origin: https://github.com/libgit2/libgit2/commit/c9d31b711e8906cf248566f43142f20b03e20cbf
|
||||||
|
|
||||||
|
When parsing a revspec that ends with a trailing `@`, explicitly stop
|
||||||
|
parsing. Introduce a sentinel variable to explicitly stop parsing.
|
||||||
|
|
||||||
|
Prior to this, we would set `spec` to `HEAD`, but were looping on the
|
||||||
|
value of `spec[pos]`, so we would continue walking the (new) `spec`
|
||||||
|
at offset `pos`, looking for a NUL. This is obviously an out-of-bounds
|
||||||
|
read.
|
||||||
|
|
||||||
|
Credit to Michael Rodler (@f0rki) and Amazon AWS Security.
|
||||||
|
---
|
||||||
|
vendor/libgit2-sys/libgit2/src/libgit2/revparse.c | 5 ++++-
|
||||||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/vendor/libgit2-sys/libgit2/src/libgit2/revparse.c b/vendor/libgit2-sys/libgit2/src/libgit2/revparse.c
|
||||||
|
index 964afe378da..06d92f82bf2 100644
|
||||||
|
--- a/vendor/libgit2-sys/libgit2/src/libgit2/revparse.c
|
||||||
|
+++ b/vendor/libgit2-sys/libgit2/src/libgit2/revparse.c
|
||||||
|
@@ -701,6 +701,7 @@ static int revparse(
|
||||||
|
git_object *base_rev = NULL;
|
||||||
|
|
||||||
|
bool should_return_reference = true;
|
||||||
|
+ bool parsed = false;
|
||||||
|
|
||||||
|
GIT_ASSERT_ARG(object_out);
|
||||||
|
GIT_ASSERT_ARG(reference_out);
|
||||||
|
@@ -710,7 +711,7 @@ static int revparse(
|
||||||
|
*object_out = NULL;
|
||||||
|
*reference_out = NULL;
|
||||||
|
|
||||||
|
- while (spec[pos]) {
|
||||||
|
+ while (!parsed && spec[pos]) {
|
||||||
|
switch (spec[pos]) {
|
||||||
|
case '^':
|
||||||
|
should_return_reference = false;
|
||||||
|
@@ -817,6 +818,8 @@ static int revparse(
|
||||||
|
break;
|
||||||
|
} else if (spec[pos+1] == '\0') {
|
||||||
|
spec = "HEAD";
|
||||||
|
+ identifier_len = 4;
|
||||||
|
+ parsed = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
/* fall through */
|
||||||
51
CVE-2024-24577.patch
Normal file
51
CVE-2024-24577.patch
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
From eb4c1716cd92bf56f2770653a915d5fc01eab8f3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Edward Thomson <ethomson@edwardthomson.com>
|
||||||
|
Date: Sat, 16 Dec 2023 11:19:07 +0000
|
||||||
|
Subject: [PATCH] index: correct index has_dir_name check
|
||||||
|
|
||||||
|
Origin: https://github.com/libgit2/libgit2/commit/eb4c1716cd92bf56f2770653a915d5fc01eab8f3
|
||||||
|
|
||||||
|
`has_dir_name` is used to check for directory/file collisions,
|
||||||
|
and attempts to determine whether the index contains a file with
|
||||||
|
a directory name that is a proper subset of the new index entry
|
||||||
|
that we're trying to add.
|
||||||
|
|
||||||
|
To determine directory name, the function would walk the path string
|
||||||
|
backwards to identify a `/`, stopping at the end of the string. However,
|
||||||
|
the function assumed that the strings did not start with a `/`. If the
|
||||||
|
paths contain only a single `/` at the beginning of the string, then the
|
||||||
|
function would continue the loop, erroneously, when they should have
|
||||||
|
stopped at the first character.
|
||||||
|
|
||||||
|
Correct the order of the tests to terminate properly.
|
||||||
|
|
||||||
|
Credit to Michael Rodler (@f0rki) and Amazon AWS Security.
|
||||||
|
|
||||||
|
---
|
||||||
|
vendor/libgit2-sys/libgit2/src/libgit2/index.c | 8 ++++++--
|
||||||
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/vendor/libgit2-sys/libgit2/src/libgit2/index.c b/vendor/libgit2-sys/libgit2/src/libgit2/index.c
|
||||||
|
index 7ebe075..7862273 100644
|
||||||
|
--- a/vendor/libgit2-sys/libgit2/src/libgit2/index.c
|
||||||
|
+++ b/vendor/libgit2-sys/libgit2/src/libgit2/index.c
|
||||||
|
@@ -1155,10 +1155,14 @@ static int has_dir_name(git_index *index,
|
||||||
|
size_t len, pos;
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
- if (*--slash == '/')
|
||||||
|
- break;
|
||||||
|
+ slash--;
|
||||||
|
+
|
||||||
|
if (slash <= entry->path)
|
||||||
|
return 0;
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ if (*slash == '/')
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
len = slash - name;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.23.0
|
||||||
|
|
||||||
5
cargo-config
Normal file
5
cargo-config
Normal 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
5
cargo-config.csh
Normal 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
5
cargo-config.sh
Normal 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
|
||||||
296
embed-riscv64-target-abi-in-bc-when-plugin-_-lto-is-used.patch
Normal file
296
embed-riscv64-target-abi-in-bc-when-plugin-_-lto-is-used.patch
Normal file
@ -0,0 +1,296 @@
|
|||||||
|
From a599284dbac82d272aac53a7ace524484b4bb4dc Mon Sep 17 00:00:00 2001
|
||||||
|
From: kxxt <rsworktech@outlook.com>
|
||||||
|
Date: Sun, 28 Jan 2024 18:38:41 +0800
|
||||||
|
Subject: [PATCH] embed riscv64 target abi in bc when plugin-lto is used
|
||||||
|
|
||||||
|
Fixes chromium linking error.
|
||||||
|
|
||||||
|
Related:
|
||||||
|
- https://discourse.llvm.org/t/encode-target-abi-into-llvm-bitcode-for-lto/54116
|
||||||
|
- https://internals.rust-lang.org/t/per-target-llvm-module-flags/12023
|
||||||
|
---
|
||||||
|
compiler/rustc_codegen_llvm/src/back/lto.rs | 2 +-
|
||||||
|
compiler/rustc_codegen_llvm/src/context.rs | 49 +++++++++++++------
|
||||||
|
.../rustc_codegen_llvm/src/debuginfo/mod.rs | 6 +--
|
||||||
|
compiler/rustc_codegen_llvm/src/llvm/ffi.rs | 10 +++-
|
||||||
|
compiler/rustc_codegen_llvm/src/llvm/mod.rs | 5 ++
|
||||||
|
.../rustc_llvm/llvm-wrapper/RustWrapper.cpp | 11 ++++-
|
||||||
|
6 files changed, 62 insertions(+), 21 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/compiler/rustc_codegen_llvm/src/back/lto.rs b/compiler/rustc_codegen_llvm/src/back/lto.rs
|
||||||
|
index 42bd8687042a1..6c204b7ab2bc9 100644
|
||||||
|
--- a/compiler/rustc_codegen_llvm/src/back/lto.rs
|
||||||
|
+++ b/compiler/rustc_codegen_llvm/src/back/lto.rs
|
||||||
|
@@ -607,7 +607,7 @@ pub(crate) fn run_pass_manager(
|
||||||
|
"LTOPostLink".as_ptr().cast(),
|
||||||
|
11,
|
||||||
|
) {
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
module.module_llvm.llmod(),
|
||||||
|
llvm::LLVMModFlagBehavior::Error,
|
||||||
|
c"LTOPostLink".as_ptr().cast(),
|
||||||
|
diff --git a/compiler/rustc_codegen_llvm/src/context.rs b/compiler/rustc_codegen_llvm/src/context.rs
|
||||||
|
index 6cb62280a595e..ebb657f97b398 100644
|
||||||
|
--- a/compiler/rustc_codegen_llvm/src/context.rs
|
||||||
|
+++ b/compiler/rustc_codegen_llvm/src/context.rs
|
||||||
|
@@ -30,6 +30,7 @@ use rustc_span::Span;
|
||||||
|
use rustc_target::abi::{
|
||||||
|
call::FnAbi, HasDataLayout, PointeeInfo, Size, TargetDataLayout, VariantIdx,
|
||||||
|
};
|
||||||
|
+use rustc_target::spec::TargetTriple;
|
||||||
|
use rustc_target::spec::{HasTargetSpec, RelocModel, Target, TlsModel};
|
||||||
|
use smallvec::SmallVec;
|
||||||
|
|
||||||
|
@@ -203,13 +204,13 @@ pub unsafe fn create_module<'ll>(
|
||||||
|
// to ensure intrinsic calls don't use it.
|
||||||
|
if !sess.needs_plt() {
|
||||||
|
let avoid_plt = c"RtLibUseGOT".as_ptr().cast();
|
||||||
|
- llvm::LLVMRustAddModuleFlag(llmod, llvm::LLVMModFlagBehavior::Warning, avoid_plt, 1);
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(llmod, llvm::LLVMModFlagBehavior::Warning, avoid_plt, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable canonical jump tables if CFI is enabled. (See https://reviews.llvm.org/D65629.)
|
||||||
|
if sess.is_sanitizer_cfi_canonical_jump_tables_enabled() && sess.is_sanitizer_cfi_enabled() {
|
||||||
|
let canonical_jump_tables = c"CFI Canonical Jump Tables".as_ptr().cast();
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
llmod,
|
||||||
|
llvm::LLVMModFlagBehavior::Override,
|
||||||
|
canonical_jump_tables,
|
||||||
|
@@ -220,7 +221,7 @@ pub unsafe fn create_module<'ll>(
|
||||||
|
// Enable LTO unit splitting if specified or if CFI is enabled. (See https://reviews.llvm.org/D53891.)
|
||||||
|
if sess.is_split_lto_unit_enabled() || sess.is_sanitizer_cfi_enabled() {
|
||||||
|
let enable_split_lto_unit = c"EnableSplitLTOUnit".as_ptr().cast();
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
llmod,
|
||||||
|
llvm::LLVMModFlagBehavior::Override,
|
||||||
|
enable_split_lto_unit,
|
||||||
|
@@ -231,7 +232,7 @@ pub unsafe fn create_module<'ll>(
|
||||||
|
// Add "kcfi" module flag if KCFI is enabled. (See https://reviews.llvm.org/D119296.)
|
||||||
|
if sess.is_sanitizer_kcfi_enabled() {
|
||||||
|
let kcfi = c"kcfi".as_ptr().cast();
|
||||||
|
- llvm::LLVMRustAddModuleFlag(llmod, llvm::LLVMModFlagBehavior::Override, kcfi, 1);
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(llmod, llvm::LLVMModFlagBehavior::Override, kcfi, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Control Flow Guard is currently only supported by the MSVC linker on Windows.
|
||||||
|
@@ -240,7 +241,7 @@ pub unsafe fn create_module<'ll>(
|
||||||
|
CFGuard::Disabled => {}
|
||||||
|
CFGuard::NoChecks => {
|
||||||
|
// Set `cfguard=1` module flag to emit metadata only.
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
llmod,
|
||||||
|
llvm::LLVMModFlagBehavior::Warning,
|
||||||
|
c"cfguard".as_ptr() as *const _,
|
||||||
|
@@ -249,7 +250,7 @@ pub unsafe fn create_module<'ll>(
|
||||||
|
}
|
||||||
|
CFGuard::Checks => {
|
||||||
|
// Set `cfguard=2` module flag to emit metadata and checks.
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
llmod,
|
||||||
|
llvm::LLVMModFlagBehavior::Warning,
|
||||||
|
c"cfguard".as_ptr() as *const _,
|
||||||
|
@@ -267,26 +268,26 @@ pub unsafe fn create_module<'ll>(
|
||||||
|
};
|
||||||
|
|
||||||
|
if sess.target.arch == "aarch64" {
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
llmod,
|
||||||
|
behavior,
|
||||||
|
c"branch-target-enforcement".as_ptr().cast(),
|
||||||
|
bti.into(),
|
||||||
|
);
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
llmod,
|
||||||
|
behavior,
|
||||||
|
c"sign-return-address".as_ptr().cast(),
|
||||||
|
pac_ret.is_some().into(),
|
||||||
|
);
|
||||||
|
let pac_opts = pac_ret.unwrap_or(PacRet { leaf: false, key: PAuthKey::A });
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
llmod,
|
||||||
|
behavior,
|
||||||
|
c"sign-return-address-all".as_ptr().cast(),
|
||||||
|
pac_opts.leaf.into(),
|
||||||
|
);
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
llmod,
|
||||||
|
behavior,
|
||||||
|
c"sign-return-address-with-bkey".as_ptr().cast(),
|
||||||
|
@@ -302,7 +303,7 @@ pub unsafe fn create_module<'ll>(
|
||||||
|
|
||||||
|
// Pass on the control-flow protection flags to LLVM (equivalent to `-fcf-protection` in Clang).
|
||||||
|
if let CFProtection::Branch | CFProtection::Full = sess.opts.unstable_opts.cf_protection {
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
llmod,
|
||||||
|
llvm::LLVMModFlagBehavior::Override,
|
||||||
|
c"cf-protection-branch".as_ptr().cast(),
|
||||||
|
@@ -310,7 +311,7 @@ pub unsafe fn create_module<'ll>(
|
||||||
|
)
|
||||||
|
}
|
||||||
|
if let CFProtection::Return | CFProtection::Full = sess.opts.unstable_opts.cf_protection {
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
llmod,
|
||||||
|
llvm::LLVMModFlagBehavior::Override,
|
||||||
|
c"cf-protection-return".as_ptr().cast(),
|
||||||
|
@@ -319,7 +320,7 @@ pub unsafe fn create_module<'ll>(
|
||||||
|
}
|
||||||
|
|
||||||
|
if sess.opts.unstable_opts.virtual_function_elimination {
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
llmod,
|
||||||
|
llvm::LLVMModFlagBehavior::Error,
|
||||||
|
c"Virtual Function Elim".as_ptr().cast(),
|
||||||
|
@@ -329,7 +330,7 @@ pub unsafe fn create_module<'ll>(
|
||||||
|
|
||||||
|
// Set module flag to enable Windows EHCont Guard (/guard:ehcont).
|
||||||
|
if sess.opts.unstable_opts.ehcont_guard {
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
llmod,
|
||||||
|
llvm::LLVMModFlagBehavior::Warning,
|
||||||
|
c"ehcontguard".as_ptr() as *const _,
|
||||||
|
@@ -354,6 +355,24 @@ pub unsafe fn create_module<'ll>(
|
||||||
|
llvm::LLVMMDNodeInContext(llcx, &name_metadata, 1),
|
||||||
|
);
|
||||||
|
|
||||||
|
+ // Embed target-abi into bitcode for rv64gc when plugin-lto is enabled
|
||||||
|
+ // Relevant:
|
||||||
|
+ // https://discourse.llvm.org/t/encode-target-abi-into-llvm-bitcode-for-lto/54116
|
||||||
|
+ // https://internals.rust-lang.org/t/per-target-llvm-module-flags/12023
|
||||||
|
+ if sess.opts.cg.linker_plugin_lto.enabled() {
|
||||||
|
+ let TargetTriple::TargetTriple(ref triple) = sess.opts.target_triple else {
|
||||||
|
+ panic!("Unexpected TargetTriple::TargetJson")
|
||||||
|
+ };
|
||||||
|
+ if triple == "riscv64gc-unknown-linux-gnu" {
|
||||||
|
+ llvm::LLVMRustAddModuleFlagString(
|
||||||
|
+ llmod,
|
||||||
|
+ llvm::LLVMModFlagBehavior::Error,
|
||||||
|
+ c"target-abi".as_ptr() as *const _,
|
||||||
|
+ c"lp64d".as_ptr() as *const _,
|
||||||
|
+ )
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
// Add module flags specified via -Z llvm_module_flag
|
||||||
|
for (key, value, behavior) in &sess.opts.unstable_opts.llvm_module_flag {
|
||||||
|
let key = format!("{key}\0");
|
||||||
|
@@ -369,7 +388,7 @@ pub unsafe fn create_module<'ll>(
|
||||||
|
// We already checked this during option parsing
|
||||||
|
_ => unreachable!(),
|
||||||
|
};
|
||||||
|
- llvm::LLVMRustAddModuleFlag(llmod, behavior, key.as_ptr().cast(), *value)
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(llmod, behavior, key.as_ptr().cast(), *value)
|
||||||
|
}
|
||||||
|
|
||||||
|
llmod
|
||||||
|
diff --git a/compiler/rustc_codegen_llvm/src/debuginfo/mod.rs b/compiler/rustc_codegen_llvm/src/debuginfo/mod.rs
|
||||||
|
index d3a851b40c0a2..4fdaa59e0e559 100644
|
||||||
|
--- a/compiler/rustc_codegen_llvm/src/debuginfo/mod.rs
|
||||||
|
+++ b/compiler/rustc_codegen_llvm/src/debuginfo/mod.rs
|
||||||
|
@@ -110,7 +110,7 @@ impl<'ll, 'tcx> CodegenUnitDebugContext<'ll, 'tcx> {
|
||||||
|
.unstable_opts
|
||||||
|
.dwarf_version
|
||||||
|
.unwrap_or(sess.target.default_dwarf_version);
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
self.llmod,
|
||||||
|
llvm::LLVMModFlagBehavior::Warning,
|
||||||
|
c"Dwarf Version".as_ptr().cast(),
|
||||||
|
@@ -118,7 +118,7 @@ impl<'ll, 'tcx> CodegenUnitDebugContext<'ll, 'tcx> {
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// Indicate that we want CodeView debug information on MSVC
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
self.llmod,
|
||||||
|
llvm::LLVMModFlagBehavior::Warning,
|
||||||
|
c"CodeView".as_ptr().cast(),
|
||||||
|
@@ -127,7 +127,7 @@ impl<'ll, 'tcx> CodegenUnitDebugContext<'ll, 'tcx> {
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prevent bitcode readers from deleting the debug info.
|
||||||
|
- llvm::LLVMRustAddModuleFlag(
|
||||||
|
+ llvm::LLVMRustAddModuleFlagU32(
|
||||||
|
self.llmod,
|
||||||
|
llvm::LLVMModFlagBehavior::Warning,
|
||||||
|
c"Debug Info Version".as_ptr().cast(),
|
||||||
|
diff --git a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
|
||||||
|
index ee73c6b4756f0..4d1fc09c54854 100644
|
||||||
|
--- a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
|
||||||
|
+++ b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
|
||||||
|
@@ -1793,12 +1793,20 @@ extern "C" {
|
||||||
|
///
|
||||||
|
/// In order for Rust-C LTO to work, module flags must be compatible with Clang. What
|
||||||
|
/// "compatible" means depends on the merge behaviors involved.
|
||||||
|
- pub fn LLVMRustAddModuleFlag(
|
||||||
|
+ pub fn LLVMRustAddModuleFlagU32(
|
||||||
|
M: &Module,
|
||||||
|
merge_behavior: LLVMModFlagBehavior,
|
||||||
|
name: *const c_char,
|
||||||
|
value: u32,
|
||||||
|
);
|
||||||
|
+
|
||||||
|
+ pub fn LLVMRustAddModuleFlagString(
|
||||||
|
+ M: &Module,
|
||||||
|
+ merge_behavior: LLVMModFlagBehavior,
|
||||||
|
+ name: *const c_char,
|
||||||
|
+ value: *const c_char,
|
||||||
|
+ );
|
||||||
|
+
|
||||||
|
pub fn LLVMRustHasModuleFlag(M: &Module, name: *const c_char, len: size_t) -> bool;
|
||||||
|
|
||||||
|
pub fn LLVMRustDIBuilderCreate(M: &Module) -> &mut DIBuilder<'_>;
|
||||||
|
diff --git a/compiler/rustc_codegen_llvm/src/llvm/mod.rs b/compiler/rustc_codegen_llvm/src/llvm/mod.rs
|
||||||
|
index 4f5cc575da6e5..73cd5e3052413 100644
|
||||||
|
--- a/compiler/rustc_codegen_llvm/src/llvm/mod.rs
|
||||||
|
+++ b/compiler/rustc_codegen_llvm/src/llvm/mod.rs
|
||||||
|
@@ -324,3 +324,8 @@ impl Drop for OperandBundleDef<'_> {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+pub enum LLVMModFlagValue {
|
||||||
|
+ String(String),
|
||||||
|
+ U32(u32),
|
||||||
|
+}
|
||||||
|
diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
|
||||||
|
index 0df7b7eed11f9..7408526f6ebef 100644
|
||||||
|
--- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
|
||||||
|
+++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
|
||||||
|
@@ -748,7 +748,7 @@ extern "C" uint32_t LLVMRustVersionMinor() { return LLVM_VERSION_MINOR; }
|
||||||
|
|
||||||
|
extern "C" uint32_t LLVMRustVersionMajor() { return LLVM_VERSION_MAJOR; }
|
||||||
|
|
||||||
|
-extern "C" void LLVMRustAddModuleFlag(
|
||||||
|
+extern "C" void LLVMRustAddModuleFlagU32(
|
||||||
|
LLVMModuleRef M,
|
||||||
|
Module::ModFlagBehavior MergeBehavior,
|
||||||
|
const char *Name,
|
||||||
|
@@ -756,6 +756,15 @@ extern "C" void LLVMRustAddModuleFlag(
|
||||||
|
unwrap(M)->addModuleFlag(MergeBehavior, Name, Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
+extern "C" void LLVMRustAddModuleFlagString(
|
||||||
|
+ LLVMModuleRef M,
|
||||||
|
+ Module::ModFlagBehavior MergeBehavior,
|
||||||
|
+ const char *Name,
|
||||||
|
+ const char *Value) {
|
||||||
|
+ llvm::LLVMContext &Ctx = unwrap(M)->getContext();
|
||||||
|
+ unwrap(M)->addModuleFlag(MergeBehavior, Name, llvm::MDString::get(Ctx, Value));
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
extern "C" bool LLVMRustHasModuleFlag(LLVMModuleRef M, const char *Name,
|
||||||
|
size_t Len) {
|
||||||
|
return unwrap(M)->getModuleFlag(StringRef(Name, Len)) != nullptr;
|
||||||
BIN
rust-1.76.0-aarch64-unknown-linux-gnu.tar.xz
Normal file
BIN
rust-1.76.0-aarch64-unknown-linux-gnu.tar.xz
Normal file
Binary file not shown.
BIN
rust-1.76.0-x86_64-unknown-linux-gnu.tar.xz
Normal file
BIN
rust-1.76.0-x86_64-unknown-linux-gnu.tar.xz
Normal file
Binary file not shown.
86
rust-key.gpg.ascii
Normal file
86
rust-key.gpg.ascii
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: GnuPG v1
|
||||||
|
|
||||||
|
mQINBFJEwMkBEADlPACa2K7reD4x5zd8afKx75QYKmxqZwywRbgeICeD4bKiQoJZ
|
||||||
|
dUjmn1LgrGaXuBMKXJQhyA34e/1YZel/8et+HPE5XpljBfNYXWbVocE1UMUTnFU9
|
||||||
|
CKXa4AhJ33f7we2/QmNRMUifw5adPwGMg4D8cDKXk02NdnqQlmFByv0vSaArR5kn
|
||||||
|
gZKnLY6o0zZ9Buyy761Im/ShXqv4ATUgYiFc48z33G4j+BDmn0ryGr1aFdP58tHp
|
||||||
|
gjWtLZs0iWeFNRDYDje6ODyu/MjOyuAWb2pYDH47Xu7XedMZzenH2TLM9yt/hyOV
|
||||||
|
xReDPhvoGkaO8xqHioJMoPQi1gBjuBeewmFyTSPS4deASukhCFOcTsw/enzJagiS
|
||||||
|
ZAq6Imehduke+peAL1z4PuRmzDPO2LPhVS7CDXtuKAYqUV2YakTq8MZUempVhw5n
|
||||||
|
LqVaJ5/XiyOcv405PnkT25eIVVVghxAgyz6bOU/UMjGQYlkUxI7YZ9tdreLlFyPR
|
||||||
|
OUL30E8q/aCd4PGJV24yJ1uit+yS8xjyUiMKm4J7oMP2XdBN98TUfLGw7SKeAxyU
|
||||||
|
92BHlxg7yyPfI4TglsCzoSgEIV6xoGOVRRCYlGzSjUfz0bCMCclhTQRBkegKcjB3
|
||||||
|
sMTyG3SPZbjTlCqrFHy13e6hGl37Nhs8/MvXUysq2cluEISn5bivTKEeeQARAQAB
|
||||||
|
tERSdXN0IExhbmd1YWdlIChUYWcgYW5kIFJlbGVhc2UgU2lnbmluZyBLZXkpIDxy
|
||||||
|
dXN0LWtleUBydXN0LWxhbmcub3JnPokCOAQTAQIAIgUCUkTAyQIbAwYLCQgHAwIG
|
||||||
|
FQgCCQoLBBYCAwECHgECF4AACgkQhauW5vob5f5fYQ//b1DWK1NSGx5nZ3zYZeHJ
|
||||||
|
9mwGCftIaA2IRghAGrNf4Y8DaPqR+w1OdIegWn8kCoGfPfGAVW5XXJg+Oxk6QIaD
|
||||||
|
2hJojBUrq1DALeCZVewzTVw6BN4DGuUexsc53a8DcY2Yk5WE3ll6UKq/YPiWiPNX
|
||||||
|
9r8FE2MJwMABB6mWZLqJeg4RCrriBiCG26NZxGE7RTtPHyppoVxWKAFDiWyNdJ+3
|
||||||
|
UnjldWrT9xFqjqfXWw9Bhz8/EoaGeSSbMIAQDkQQpp1SWpljpgqvctZlc5fHhsG6
|
||||||
|
lmzW5RM4NG8OKvq3UrBihvgzwrIfoEDKpXbk3DXqaSs1o81NH5ftVWWbJp/ywM9Q
|
||||||
|
uMC6n0YWiMZMQ1cFBy7tukpMkd+VPbPkiSwBhPkfZIzUAWd74nanN5SKBtcnymgJ
|
||||||
|
+OJcxfZLiUkXRj0aUT1GLA9/7wnikhJI+RvwRfHBgrssXBKNPOfXGWajtIAmZc2t
|
||||||
|
kR1E8zjBVLId7r5M8g52HKk+J+y5fVgJY91nxG0zf782JjtYuz9+knQd55JLFJCO
|
||||||
|
hhbv3uRvhvkqgauHagR5X9vCMtcvqDseK7LXrRaOdOUDrK/Zg/abi5d+NIyZfEt/
|
||||||
|
ObFsv3idAIe/zpU6xa1nYNe3+Ixlb6mlZm3WCWGxWe+GvNW/kq36jZ/v/8pYMyVO
|
||||||
|
p/kJqnf9y4dbufuYBg+RLqC5Ag0EUkTAyQEQANxy2tTSeRspfrpBk9+ju+KZ3zc4
|
||||||
|
umaIsEa5DxJ2zIKHywVAR67Um0K1YRG07/F5+tD9TIRkdx2pcmpjmSQzqdk3zqa9
|
||||||
|
2Zzeijjz2RNyBY8qYmyE08IncjTsFFB8OnvdXcsAgjCFmI1BKnePxrABL/2k8X18
|
||||||
|
aysPb0beWqQVsi5FsSpAHu6k1kaLKc+130x6Hf/YJAjeo+S7HeU5NeOz3zD+h5bA
|
||||||
|
Q25qMiVHX3FwH7rFKZtFFog9Ogjzi0TkDKKxoeFKyADfIdteJWFjOlCI9KoIhfXq
|
||||||
|
Et9JMnxApGqsJElJtfQjIdhMN4Lnep2WkudHAfwJ/412fe7wiW0rcBMvr/BlBGRY
|
||||||
|
vM4sTgN058EwIuY9Qmc8RK4gbBf6GsfGNJjWozJ5XmXElmkQCAvbQFoAfi5TGfVb
|
||||||
|
77QQrhrQlSpfIYrvfpvjYoqj618SbU6uBhzh758gLllmMB8LOhxWtq9eyn1rMWyR
|
||||||
|
KL1fEkfvvMc78zP+Px6yDMa6UIez8jZXQ87Zou9EriLbzF4QfIYAqR9LUSMnLk6K
|
||||||
|
o61tSFmFEDobC3tc1jkSg4zZe/wxskn96KOlmnxgMGO0vJ7ASrynoxEnQE8k3WwA
|
||||||
|
+/YJDwboIR7zDwTy3Jw3mn1FgnH+c7Rb9h9geOzxKYINBFz5Hd0MKx7kZ1U6WobW
|
||||||
|
KiYYxcCmoEeguSPHABEBAAGJAh8EGAECAAkFAlJEwMkCGwwACgkQhauW5vob5f7f
|
||||||
|
FA//Ra+itJF4NsEyyhx4xYDOPq4uj0VWVjLdabDvFjQtbBLwIyh2bm8uO3AY4r/r
|
||||||
|
rM5WWQ8oIXQ2vvXpAQO9g8iNlFez6OLzbfdSG80AG74pQqVVVyCQxD7FanB/KGge
|
||||||
|
tAoOstFxaCAg4nxFlarMctFqOOXCFkylWl504JVIOvgbbbyj6I7qCUmbmqazBSMU
|
||||||
|
K8c/Nz+FNu2Uf/lYWOeGogRSBgS0CVBcbmPUpnDHLxZWNXDWQOCxbhA1Uf58hcyu
|
||||||
|
036kkiWHh2OGgJqlo2WIraPXx1cGw1Ey+U6exbtrZfE5kM9pZzRG7ZY83CXpYWMp
|
||||||
|
kyVXNWmf9JcIWWBrXvJmMi0FDvtgg3Pt1tnoxqdilk6yhieFc8LqBn6CZgFUBk0t
|
||||||
|
NSaWk3PsN0N6Ut8VXY6sai7MJ0Gih1gE1xadWj2zfZ9sLGyt2jZ6wK++U881YeXA
|
||||||
|
ryaGKJ8sIs182hwQb4qN7eiUHzLtIh8oVBHo8Q4BJSat88E5/gOD6IQIpxc42iRL
|
||||||
|
T+oNZw1hdwNyPOT1GMkkn86l3o7klwmQUWCPm6vl1aHp3omo+GHC63PpNFO5RncJ
|
||||||
|
Ilo3aBKKmoE5lDSMGE8KFso5awTo9z9QnVPkRsk6qeBYit9xE3x3S+iwjcSg0nie
|
||||||
|
aAkc0N00nc9V9jfPvt4z/5A5vjHh+NhFwH5h2vBJVPdsz6m5Ag0EVI9keAEQAL3R
|
||||||
|
oVsHncJTmjHfBOV4JJsvCum4DuJDZ/rDdxauGcjMUWZaG338ZehnDqG1Yn/ys7zE
|
||||||
|
aKYUmqyT+XP+M2IAQRTyxwlU1RsDlemQfWrESfZQCCmbnFScL0E7cBzy4xvtInQe
|
||||||
|
UaFgJZ1BmxbzQrx+eBBdOTDv7RLnNVygRmMzmkDhxO1IGEu1+3ETIg/DxFE7VQY0
|
||||||
|
It/Ywz+nHu1o4Hemc/GdKxu9hcYvcRVc/Xhueq/zcIM96l0m+CFbs0HMKCj8dgMe
|
||||||
|
Ng6pbbDjNM+cV+5BgpRdIpE2l9W7ImpbLihqcZt47J6oWt/RDRVoKOzRxjhULVyV
|
||||||
|
2VP9ESr48HnbvxcpvUAEDCQUhsGpur4EKHFJ9AmQ4zf91gWLrDc6QmlACn9o9ARU
|
||||||
|
fOV5aFsZI9ni1MJEInJTP37stz/uDECRie4LTL4O6P4Dkto8ROM2wzZq5CiRNfnT
|
||||||
|
PP7ARfxlCkpg+gpLYRlxGUvRn6EeYwDtiMQJUQPfpGHSvThUlgDEsDrpp4SQSmdA
|
||||||
|
CB+rvaRqCawWKoXs0In/9wylGorRUupeqGC0I0/rh+f5mayFvORzwy/4KK4QIEV9
|
||||||
|
aYTXTvSRl35MevfXU1Cumlaqle6SDkLr3ZnFQgJBqap0Y+Nmmz2HfO/pohsbtHPX
|
||||||
|
92SN3dKqaoSBvzNGY5WT3CsqxDtik37kR3f9/DHpABEBAAGJBD4EGAECAAkFAlSP
|
||||||
|
ZHgCGwICKQkQhauW5vob5f7BXSAEGQECAAYFAlSPZHgACgkQXLSpNHs7CdwemA/+
|
||||||
|
KFoGuFqU0uKT9qblN4ugRyil5itmTRVffl4tm5OoWkW8uDnu7Ue3vzdzy+9NV8X2
|
||||||
|
wRG835qjXijWP++AGuxgW6LB9nV5OWiKMCHOWnUjJQ6pNQMAgSN69QzkFXVF/q5f
|
||||||
|
bkma9TgSbwjrVMyPzLSRwq7HsT3V02Qfr4cyq39QeILGy/NHW5z6LZnBy3BaVSd0
|
||||||
|
lGjCEc3yfH5OaB79na4W86WCV5n4IT7cojFM+LdL6P46RgmEtWSG3/CDjnJl6BLR
|
||||||
|
WqatRNBWLIMKMpn+YvOOL9TwuP1xbqWr1vZ66wksm53NIDcWhptpp0KEuzbU0/Dt
|
||||||
|
OltBhcX8tOmO36LrSadX9rwckSETCVYklmpAHNxPml011YNDThtBidvsicw1vZwR
|
||||||
|
HsXn+txlL6RAIRN+J/Rw3uOiJAqN9Qgedpx2q+E15t8MiTg/FXtB9SysnskFT/BH
|
||||||
|
z0USNKJUY0btZBw3eXWzUnZf59D8VW1M/9JwznCHAx0c9wy/gRDiwt9w4RoXryJD
|
||||||
|
VAwZg8rwByjldoiThUJhkCYvJ0R3xH3kPnPlGXDW49E9R8C2umRC3cYOL4U9dOQ1
|
||||||
|
5hSlYydF5urFGCLIvodtE9q80uhpyt8L/5jj9tbwZWv6JLnfBquZSnCGqFZRfXlb
|
||||||
|
Jphk9+CBQWwiZSRLZRzqQ4ffl4xyLuolx01PMaatkQbRaw/+JpgRNlurKQ0PsTrO
|
||||||
|
8tztO/tpBBj/huc2DGkSwEWvkfWElS5RLDKdoMVs/j5CLYUJzZVikUJRm7m7b+OA
|
||||||
|
P3W1nbDhuID+XV1CSBmGifQwpoPTys21stTIGLgznJrIfE5moFviOLqD/LrcYlsq
|
||||||
|
CQg0yleu7SjOs//8dM3mC2FyLaE/dCZ8l2DCLhHw0+ynyRAvSK6aGCmZz6jMjmYF
|
||||||
|
MXgiy7zESksMnVFMulIJJhR3eB0wx2GitibjY/ZhQ7tD3i0yy9ILR07dFz4pgkVM
|
||||||
|
afxpVR7fmrMZ0t+yENd+9qzyAZs0ksxORoc2ze90SCx2jwEX/3K+m4I0hP2H/w5W
|
||||||
|
gqdvuRLiqf+4BGW4zqWkLLlNIe/okt0r82SwHtDN0Ui1asmZTGj6sm8SXtwx+5cE
|
||||||
|
38MttWqjDiibQOSthRVcETByRYM8KcjYSUCi4PoBc3NpDONkFbZm6XofR/f5mTcl
|
||||||
|
2jDw6fIeVc4Hd1jBGajNzEqtneqqbdAkPQaLsuD2TMkQfTDJfE/IljwjrhDa9Mi+
|
||||||
|
odtnMWq8vlwOZZ24/8/BNK5qXuCYL67O7AJB4ZQ6BT+g4z96iRLbupzu/XJyXkQF
|
||||||
|
rOY/Ghegvn7fDrnt2KC9MpgeFBXzUp+k5rzUdF8jbCx5apVjA1sWXB9Kh3L+DUwF
|
||||||
|
Mve696B5tlHyc1KxjHR6w9GRsh4=
|
||||||
|
=5FXw
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
577
rust.spec
Normal file
577
rust.spec
Normal file
@ -0,0 +1,577 @@
|
|||||||
|
%global bootstrap_rust 1.76.0
|
||||||
|
%global bootstrap_cargo 1.76.0
|
||||||
|
%global bootstrap_channel 1.76.0
|
||||||
|
%global bootstrap_date 2024-02-08
|
||||||
|
%global bootstrap_arches x86_64 aarch64
|
||||||
|
%bcond_with llvm_static
|
||||||
|
%bcond_with bundled_llvm
|
||||||
|
%bcond_without bundled_libgit2
|
||||||
|
%bcond_with disabled_libssh2
|
||||||
|
%bcond_without lldb
|
||||||
|
%bcond_without analyzer
|
||||||
|
|
||||||
|
Name: rust
|
||||||
|
Version: 1.76.0
|
||||||
|
Release: 1
|
||||||
|
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.76.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: CVE-2024-24575.patch
|
||||||
|
Patch0004: CVE-2024-24577.patch
|
||||||
|
|
||||||
|
%ifarch riscv64
|
||||||
|
Patch1000: embed-riscv64-target-abi-in-bc-when-plugin-_-lto-is-used.patch
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%{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
|
||||||
|
BuildRequires: make gcc gcc-c++ ncurses-devel curl curl-devel musl-libc-static musl-gcc pkgconfig(libcurl) pkgconfig(liblzma)
|
||||||
|
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) = 17.0.4
|
||||||
|
%else
|
||||||
|
BuildRequires: cmake >= 2.8.11
|
||||||
|
%if %defined llvm
|
||||||
|
%global llvm_root %{_libdir}/%{llvm}
|
||||||
|
%else
|
||||||
|
# default llvm is decent enough on riscv64
|
||||||
|
%global llvm llvm-toolset-17-llvm
|
||||||
|
%global llvm_root /opt/openEuler/llvm-toolset-17/root%{_prefix}
|
||||||
|
%endif
|
||||||
|
# rust currently requires llvm 14.0+
|
||||||
|
BuildRequires: %{llvm} >= 16.0.0
|
||||||
|
BuildRequires: %{llvm}-devel >= 16.0.0
|
||||||
|
%if %with llvm_static
|
||||||
|
BuildRequires: %{llvm}-static libffi-devel
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
BuildRequires: procps-ng
|
||||||
|
BuildRequires: ninja-build
|
||||||
|
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
|
||||||
|
|
||||||
|
%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}
|
||||||
|
%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
|
||||||
|
%ifarch riscv64
|
||||||
|
%patch -P 1000 -p1
|
||||||
|
%endif
|
||||||
|
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)
|
||||||
|
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
|
||||||
|
# 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
|
||||||
|
|
||||||
|
%configure --disable-option-checking \
|
||||||
|
--libdir=%{common_libdir} \
|
||||||
|
%ifarch loongarch64
|
||||||
|
--build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple} \
|
||||||
|
%else
|
||||||
|
%{rust_musl_root}=%{musl_root} \
|
||||||
|
--build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple},%{rust_musl_triple} \
|
||||||
|
%endif
|
||||||
|
--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
|
||||||
|
%{python} ./x.py build -j "$ncpus" --stage 2
|
||||||
|
%{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}%{_docdir}/%{name}/README.md
|
||||||
|
rm -f %{buildroot}%{_docdir}/%{name}/COPYRIGHT
|
||||||
|
rm -f %{buildroot}%{_docdir}/%{name}/LICENSE
|
||||||
|
rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-APACHE
|
||||||
|
rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-MIT
|
||||||
|
rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-THIRD-PARTY
|
||||||
|
rm -f %{buildroot}%{_docdir}/%{name}/*.old
|
||||||
|
find %{buildroot}%{_docdir}/%{name}/html -empty -delete
|
||||||
|
find %{buildroot}%{_docdir}/%{name}/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 || :
|
||||||
|
%{python} ./x.py test --no-fail-fast --stage 2 cargo || :
|
||||||
|
%{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 %{_docdir}/%{name}/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
|
||||||
|
%ifnarch loongarch64
|
||||||
|
%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
|
||||||
|
%ifnarch loongarch64
|
||||||
|
%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 %{_docdir}/%{name}
|
||||||
|
%docdir %{_docdir}/%{name}
|
||||||
|
%{_docdir}/%{name}/html
|
||||||
|
%dir %{_docdir}/cargo
|
||||||
|
%docdir %{_docdir}/cargo
|
||||||
|
%{_docdir}/cargo/html
|
||||||
|
%{_mandir}/man1/rustc.1*
|
||||||
|
%{_mandir}/man1/rustdoc.1*
|
||||||
|
%{_mandir}/man1/cargo*.1*
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Mon Feb 24 2025 wangkai <13474090681@163.com> - 1.76.0-1
|
||||||
|
- Update to 1.76.0 because firefox update 128ESR version
|
||||||
|
- Fix CVE-2022-21658 CVE-2022-46176 CVE-2023-38497
|
||||||
|
- Obsoletes rust-analysis
|
||||||
|
|
||||||
|
* Sat Feb 17 2024 wangkai <13474090681@163.com> - 1.64.0-3
|
||||||
|
- Fix CVE-2024-24575,CVE-2024-24577
|
||||||
|
|
||||||
|
* Sun Jul 30 2023 Funda Wang <fundawang@yeah.net> - 1.64.0-2
|
||||||
|
- Use local mirror for speed up
|
||||||
|
|
||||||
|
* Thu May 11 2023 wangkai <13474090681@163.com> - 1.64.0-1
|
||||||
|
- Update to 1.64.0
|
||||||
|
|
||||||
|
* Tue Nov 01 2022 wangkai <wangkai385@h-partners.com> - 1.60.0-1
|
||||||
|
- Update to 1.60.0
|
||||||
|
|
||||||
|
* Thu May 26 2022 fushanqing <fushanqing@kylinos.cn> - 1.58.1-1
|
||||||
|
- update to 1.58.1
|
||||||
|
|
||||||
|
* Mon Feb 14 2022 chenchen <chen_aka_jan@163.com> - 1.57.0-1
|
||||||
|
- Update to 1.57.0
|
||||||
|
|
||||||
|
* 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
4
rust.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
version_control: github
|
||||||
|
src_repo: rust-lang/rust
|
||||||
|
tag_prefix: ^
|
||||||
|
seperator: .
|
||||||
21
rustc-1.70.0-rust-gdb-substitute-path.patch
Normal file
21
rustc-1.70.0-rust-gdb-substitute-path.patch
Normal 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" \
|
||||||
|
"$@"
|
||||||
|
|
||||||
42
rustc-1.76.0-disable-libssh2.patch
Normal file
42
rustc-1.76.0-disable-libssh2.patch
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2024-01-07 18:12:08.000000000 -0800
|
||||||
|
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2024-01-09 15:25:51.519781381 -0800
|
||||||
|
@@ -2071,7 +2071,6 @@
|
||||||
|
dependencies = [
|
||||||
|
"cc",
|
||||||
|
"libc",
|
||||||
|
- "libssh2-sys",
|
||||||
|
"libz-sys",
|
||||||
|
"openssl-sys",
|
||||||
|
"pkg-config",
|
||||||
|
@@ -2113,20 +2112,6 @@
|
||||||
|
"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"
|
||||||
|
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2024-01-09 15:23:02.369032291 -0800
|
||||||
|
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2024-01-09 15:24:44.015679666 -0800
|
||||||
|
@@ -40,7 +40,7 @@
|
||||||
|
curl-sys = "0.4.70"
|
||||||
|
filetime = "0.2.22"
|
||||||
|
flate2 = { version = "1.0.28", default-features = false, features = ["zlib"] }
|
||||||
|
-git2 = "0.18.1"
|
||||||
|
+git2 = { version = "0.18.1", default-features = false, features = ["https"] }
|
||||||
|
git2-curl = "0.19.0"
|
||||||
|
gix = { version = "0.56.0", default-features = false, features = ["blocking-http-transport-curl", "progress-tree", "revision"] }
|
||||||
|
gix-features-for-configuration-only = { version = "0.35.0", package = "gix-features", features = [ "parallel" ] }
|
||||||
BIN
rustc-1.76.0-src.tar.xz
Normal file
BIN
rustc-1.76.0-src.tar.xz
Normal file
Binary file not shown.
16
rustc-1.76.0-src.tar.xz.asc
Normal file
16
rustc-1.76.0-src.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
wsFcBAABCgAQBQJlxNqSCRCFq5bm+hvl/gAA8kIP/ib21y3Rg18POvESXFDPmXAT
|
||||||
|
blvZsJwR4GsPcUeT2cUYEsWqrtEjoEjMPDumhaSJY4nt6wuAdpCSDf9RQxFSn5vW
|
||||||
|
Um68Q4dMqmIA2BOIbgDYIBwMUm+Q/ft+1eaKvitJSldqJCTFVXCee1MxeHpE9HSb
|
||||||
|
2sBC1sGD0aPecMJ9gnSYo57O9rAtItfWroek8KJ+NOxWABHkbRxhx4wSTK4mPy1i
|
||||||
|
DAtL4VYXomN3OvU1JiunAKhyuIttnrkH92x+YeUlNwOeLTECfLp8sq9yD0hgAkdW
|
||||||
|
b12ARrQCnBV3HwrgQNIw78ypPOSDYj4B++NB5F2j3wMCyIs6j/891F14ugzLEHuO
|
||||||
|
b1sjw/xW12kgUbRoyoW/5o60qE18QxgKaxNfgRme/XEF7hBxwFhOcc3BrBTvcA70
|
||||||
|
enFXpiqswpdvAMpW/YNEwT+Zm0UnWmsU9NXSB4cc8otL9Hj4oYyfX1q6XgmuyupL
|
||||||
|
jNXSd5evfTEjqcnpHFe0pnNJEExET7EQsEWFgn9J4K7hymSu/bliHMBIx+DAA4Ry
|
||||||
|
IMBP51oj+o+I8E84z9LDlBshGvcJvYsAXMrbpHonng7u9smitSA+oAy54qevS8+9
|
||||||
|
kK+UYY95Pl++BxdAFemsldoC0KkKJXGxK0FR2o1ttAA1I+uXrJLJXg8/K7binCeW
|
||||||
|
A7AXRJdE/spq/O9snPcA
|
||||||
|
=lnbm
|
||||||
|
-----END PGP SIGNATURE-----
|
||||||
Loading…
x
Reference in New Issue
Block a user