* update rust to 1:1.75.0-1

This commit is contained in:
Alexander Baldeck 2024-01-08 23:57:46 +01:00
parent 37ad391e89
commit e64c36b253
7 changed files with 150 additions and 269 deletions

View File

@ -4,15 +4,15 @@ Date: Thu, 6 May 2021 20:14:58 +0200
Subject: [PATCH] bootstrap: Change libexec dir
---
src/bootstrap/dist.rs | 4 ++--
src/bootstrap/tool.rs | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
src/bootstrap/src/core/build_steps/dist.rs | 2 +-
src/bootstrap/src/core/build_steps/tool.rs | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs
index b34a4b2dc63b..be5ecfda261a 100644
--- a/src/bootstrap/dist.rs
+++ b/src/bootstrap/dist.rs
@@ -420,7 +420,7 @@ fn prepare_image(builder: &Builder<'_>, compiler: Compiler, image: &Path) {
diff --git a/src/bootstrap/src/core/build_steps/dist.rs b/src/bootstrap/src/core/build_steps/dist.rs
index c485481b9a1e..1a1b3a2ee39a 100644
--- a/src/bootstrap/src/core/build_steps/dist.rs
+++ b/src/bootstrap/src/core/build_steps/dist.rs
@@ -423,7 +423,7 @@ fn prepare_image(builder: &Builder<'_>, compiler: Compiler, image: &Path) {
},
builder.kind,
) {
@ -21,20 +21,11 @@ index b34a4b2dc63b..be5ecfda261a 100644
}
let libdir_relative = builder.libdir_relative(compiler);
@@ -1081,7 +1081,7 @@ fn run(self, builder: &Builder<'_>) -> Option<GeneratedTarball> {
for dirent in fs::read_dir(cargo.parent().unwrap()).expect("read_dir") {
let dirent = dirent.expect("read dir entry");
if dirent.file_name().to_str().expect("utf8").starts_with("cargo-credential-") {
- tarball.add_file(&dirent.path(), "libexec", 0o755);
+ tarball.add_file(&dirent.path(), "lib", 0o755);
}
}
diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs
index 06c031788629..b7ca91a28157 100644
--- a/src/bootstrap/tool.rs
+++ b/src/bootstrap/tool.rs
@@ -719,7 +719,7 @@ fn run(self, builder: &Builder<'_>) -> Option<PathBuf> {
diff --git a/src/bootstrap/src/core/build_steps/tool.rs b/src/bootstrap/src/core/build_steps/tool.rs
index d1bc05e51d73..6a7b788a3c4f 100644
--- a/src/bootstrap/src/core/build_steps/tool.rs
+++ b/src/bootstrap/src/core/build_steps/tool.rs
@@ -691,7 +691,7 @@ fn run(self, builder: &Builder<'_>) -> Option<PathBuf> {
// Copy `rust-analyzer-proc-macro-srv` to `<sysroot>/libexec/`
// so that r-a can use it.

View File

@ -1,22 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org>
Date: Thu, 6 May 2021 20:13:31 +0200
Subject: [PATCH] cargo: Change libexec dir
---
src/cargo/util/auth/mod.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/cargo/util/auth/mod.rs b/src/cargo/util/auth/mod.rs
index 58309964f493..f621e1d643c4 100644
--- a/src/cargo/util/auth/mod.rs
+++ b/src/cargo/util/auth/mod.rs
@@ -711,7 +711,7 @@ fn sysroot_credential(
.parent()
.and_then(|p| p.parent())
.ok_or_else(|| format_err!("expected cargo path {}", cargo.display()))?;
- let exe = root.join("libexec").join(format!(
+ let exe = root.join("lib").join(format!(
"cargo-credential-{}{}",
cred_name,
std::env::consts::EXE_SUFFIX

View File

@ -4,14 +4,14 @@ Date: Thu, 13 Jul 2023 21:16:53 +0200
Subject: [PATCH] bootstrap: Change bash-completion dir
---
src/bootstrap/dist.rs | 6 +++++-
src/bootstrap/src/core/build_steps/dist.rs | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs
index be5ecfda261a..7ab950067eb4 100644
--- a/src/bootstrap/dist.rs
+++ b/src/bootstrap/dist.rs
@@ -1074,7 +1074,11 @@ fn run(self, builder: &Builder<'_>) -> Option<GeneratedTarball> {
diff --git a/src/bootstrap/src/core/build_steps/dist.rs b/src/bootstrap/src/core/build_steps/dist.rs
index 1a1b3a2ee39a..e3c334c37e05 100644
--- a/src/bootstrap/src/core/build_steps/dist.rs
+++ b/src/bootstrap/src/core/build_steps/dist.rs
@@ -1071,7 +1071,11 @@ fn run(self, builder: &Builder<'_>) -> Option<GeneratedTarball> {
tarball.add_file(&cargo, "bin", 0o755);
tarball.add_file(etc.join("_cargo"), "share/zsh/site-functions", 0o644);

View File

@ -18,16 +18,16 @@ targets, as things break when this is done:
(from `rustc --print target-list`) that best matches autoconf.
---
compiler/rustc_session/src/config.rs | 2 +-
compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs | 2 +-
compiler/rustc_target/src/spec/mod.rs | 9 +++++++++
.../rustc_target/src/spec/x86_64_unknown_linux_gnu.rs | 2 +-
.../src/spec/targets/i686_unknown_linux_gnu.rs | 2 +-
.../src/spec/targets/x86_64_unknown_linux_gnu.rs | 2 +-
4 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs
index f97cb3440d25..e96a8749823a 100644
index f745bc390cad..2f5e6ee95852 100644
--- a/compiler/rustc_session/src/config.rs
+++ b/compiler/rustc_session/src/config.rs
@@ -2169,7 +2169,7 @@ pub fn parse_target_triple(
@@ -2240,7 +2240,7 @@ pub fn parse_target_triple(
handler.early_error(format!("target file {path:?} does not exist"))
})
}
@ -36,24 +36,11 @@ index f97cb3440d25..e96a8749823a 100644
_ => TargetTriple::from_triple(host_triple()),
}
}
diff --git a/compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs
index 73e536a7e4d9..af48d437533c 100644
--- a/compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs
+++ b/compiler/rustc_target/src/spec/i686_unknown_linux_gnu.rs
@@ -9,7 +9,7 @@ pub fn target() -> Target {
base.stack_probes = StackProbeType::X86;
Target {
- llvm_target: "i686-unknown-linux-gnu".into(),
+ llvm_target: "i686-pc-linux-gnu".into(),
pointer_width: 32,
data_layout: "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-\
f64:32:64-f80:32-n8:16:32-S128"
diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
index 2365dfaf1af8..7e92928d214d 100644
index f04799482c83..76e4930fbfdb 100644
--- a/compiler/rustc_target/src/spec/mod.rs
+++ b/compiler/rustc_target/src/spec/mod.rs
@@ -3205,6 +3205,15 @@ pub fn from_path(path: &Path) -> Result<Self, io::Error> {
@@ -3488,6 +3488,15 @@ pub fn from_path(path: &Path) -> Result<Self, io::Error> {
Ok(TargetTriple::TargetJson { path_for_rustdoc: canonicalized_path, triple, contents })
}
@ -69,10 +56,23 @@ index 2365dfaf1af8..7e92928d214d 100644
/// Returns a string triple for this target.
///
/// If this target is a path, the file name (without extension) is returned.
diff --git a/compiler/rustc_target/src/spec/x86_64_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/x86_64_unknown_linux_gnu.rs
index 2f970f87cc64..f8a5eec3ad6c 100644
--- a/compiler/rustc_target/src/spec/x86_64_unknown_linux_gnu.rs
+++ b/compiler/rustc_target/src/spec/x86_64_unknown_linux_gnu.rs
diff --git a/compiler/rustc_target/src/spec/targets/i686_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/i686_unknown_linux_gnu.rs
index 0ca058b2fd2a..c3b34ad2a851 100644
--- a/compiler/rustc_target/src/spec/targets/i686_unknown_linux_gnu.rs
+++ b/compiler/rustc_target/src/spec/targets/i686_unknown_linux_gnu.rs
@@ -9,7 +9,7 @@ pub fn target() -> Target {
base.stack_probes = StackProbeType::X86;
Target {
- llvm_target: "i686-unknown-linux-gnu".into(),
+ llvm_target: "i686-pc-linux-gnu".into(),
pointer_width: 32,
data_layout: "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-\
f64:32:64-f80:32-n8:16:32-S128"
diff --git a/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs
index 80e267c163fa..c10da4b633f2 100644
--- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs
+++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs
@@ -17,7 +17,7 @@ pub fn target() -> Target {
base.supports_xray = true;

View File

@ -5,14 +5,14 @@ Subject: [PATCH] compiler: Use wasm-ld for wasm targets
We don't ship rust-lld.
---
compiler/rustc_target/src/spec/wasm_base.rs | 3 +--
compiler/rustc_target/src/spec/base/wasm.rs | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/compiler/rustc_target/src/spec/wasm_base.rs b/compiler/rustc_target/src/spec/wasm_base.rs
index 341763aadbaf..dbb075affc18 100644
--- a/compiler/rustc_target/src/spec/wasm_base.rs
+++ b/compiler/rustc_target/src/spec/wasm_base.rs
@@ -89,8 +89,7 @@ macro_rules! args {
diff --git a/compiler/rustc_target/src/spec/base/wasm.rs b/compiler/rustc_target/src/spec/base/wasm.rs
index 87ade9e58cf4..542ad0aef849 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,

View File

@ -10,16 +10,12 @@ pkgname=(
rust
rust-src
)
case "${CARCH}" in
powerpc64le) pkgname+=(rust-wasm) ;;
x86_64) pkgname+=(lib32-rust-libs rust-musl rust-wasm) ;;
esac
epoch=1
pkgver=1.74.1
pkgver=1.75.0
pkgrel=1
pkgdesc="Systems programming language focused on safety, speed and concurrency"
url=https://www.rust-lang.org/
arch=(x86_64 powerpc64le powerpc64 powerpc riscv64)
arch=(powerpc64le powerpc64 powerpc riscv64)
license=(
Apache
MIT
@ -48,97 +44,64 @@ makedepends=(
rust
wasi-libc
)
makedepends_x86_64=(
lib32-gcc-libs
musl
)
checkdepends=(
gdb
procps-ng
)
source=(
"https://static.rust-lang.org/dist/rustc-$pkgver-src.tar.gz"{,.asc}
0001-bootstrap-Change-libexec-dir.patch
0002-bootstrap-Change-bash-completion-dir.patch
0003-compiler-Change-LLVM-targets.patch
0004-compiler-Use-wasm-ld-for-wasm-targets.patch
xxxx-Use-ELFv2-ABI-on-all-powerpc64-targets.patch
)
b2sums=('71d86d8606ee06c44cd395a8fac73b6cdebd9c8993fdf9395e3f89bdd7fa480a273233f4c18e0823e889a2e5045354e1638d827e7c9d162c5101b3e6bb9af294'
b2sums=('6877d5bc89335be051639d21f723c1b596d83e837781ac691795ad3abf999e18c4fb07a2a9048da9ea860b3c4777cb2d49db7dc5081085da5f10888eebe0224e'
'SKIP'
'f165abb36f03bb1ddcdca8e674244e51c7ce3a6b83e59b44d520e16e3735952cdd1c6da9edca51a755b343323f6f37c7ea7093708212300974e41560d15ee6ef'
'5faa0c65de5186dd225afcb58d0d0b2fddf2f2a7008f7a7d84bf14e78a23dbf08ae04c016d3c8241359ec9eb286f5186a7ae84ce03446f37e56fc2667fa1c114'
'e0acea294146ae14ec18ac1f99cb9113dfe0dbe87cfd557fb093b56fc15cf036ac076af905fbe358a11a913d2fc845619c5fd8e18ac97127c232127a28666117'
'a55e8eca7d700f4dad9a09030cab97a5d7b28a56d4dfb03d75b09f66d04c05907a8e81df95af21f0caad12dcad17a292de55a4eb5eedf4f1a6d4a5f8dd053c83'
'd3050f44d166530c65f98f0546fbbfe1f924789db66a9982d5e6591029355da6ce0a471c98bab153bcdff4ebe9cd68622e2b697694c880a875e2b5ca8f49822b'
'0a1d5e8709a73a4f0825231362c1cb0f6b4fdc72d0082f222da6479e6075e945fb041b43a57fbe2844247c9a2f148d335c723bdf0d92083c62f6c19f56ce5c0c'
'a12ab3f62987d3de257ef4bb66220559efe46c92f0d9820390ed36bf404c56f05253619b5c46e37b44dc30386f54ef3c856124a1cc1a8b854b7f6426183b2d6d')
validpgpkeys=(
108F66205EAEB0AAA8DD5E1C85AB96E6FA1BE5FE # Rust Language (Tag and Release Signing Key) <rust-key@rust-lang.org>
474E22316ABF4785A88C6E8EA2C794A986419D8A # Tom Stellard <tstellar@redhat.com>
)
prepare() {
cd rustc-$pkgver-src
# Patch bootstrap so that rust-analyzer-proc-macro-srv
# is in /usr/lib instead of /usr/libexec
patch -Np1 -i ../0001-bootstrap-Change-libexec-dir.patch
# Put bash completions where they belong
patch -Np1 -i ../0002-bootstrap-Change-bash-completion-dir.patch
# Use our *-pc-linux-gnu targets, making LTO with clang simpler
patch -Np1 -i ../0003-compiler-Change-LLVM-targets.patch
# Use our wasm-ld
patch -Np1 -i ../0004-compiler-Use-wasm-ld-for-wasm-targets.patch
# Ensure powerpc64 uses ELFv2
patch -Np1 -i ../xxxx-Use-ELFv2-ABI-on-all-powerpc64-targets.patch
_jemalloc='true'
case "${CARCH}" in
powerpc64le)
_rust_target='powerpc64le-unknown-linux-gnu'
_build_tools='"cargo", "clippy", "rustdoc", "rustfmt", "rust-analyzer-proc-macro-srv", "analysis", "src", "rust-demangler"'
_config_targets='"powerpc64le-unknown-linux-gnu","wasm32-unknown-unknown","wasm32-wasi"'
_config_target_extras=''
pkgname+=(rust-wasm)
;;
powerpc64)
_rust_target='powerpc64-unknown-linux-gnu'
_build_tools='"cargo", "clippy", "rustdoc", "rustfmt", "rust-analyzer-proc-macro-srv", "analysis", "src", "rust-demangler"'
_config_targets='"powerpc64-unknown-linux-gnu"'
_config_target_extras=''
;;
powerpc)
# fails to link with -O3 due to 32bit related relocation problems
export RUSTFLAGS="-C opt-level=2"
_rust_target='powerpc-unknown-linux-gnu'
_build_tools='"cargo", "clippy", "rustdoc", "rustfmt", "rust-analyzer-proc-macro-srv", "analysis", "src", "rust-demangler"'
_config_targets='"powerpc-unknown-linux-gnu"'
_config_target_extras=''
;;
riscv64)
_rust_target='riscv64gc-unknown-linux-gnu'
_build_tools='"cargo", "clippy", "rustdoc", "rustfmt", "rust-analyzer-proc-macro-srv", "analysis", "src", "rust-demangler"'
_config_targets='"riscv64gc-unknown-linux-gnu"'
_config_target_extras=''
_jemalloc=false
;;
x86_64)
_rust_target="${CHOST}"
_build_tools='"cargo", "rls", "clippy", "rustfmt", "analysis", "src", "rust-demangler","rust-analyzer-proc-macro-srv"'
_config_targets='"x86_64-unknown-linux-gnu","i686-unknown-linux-gnu","x86_64-unknown-linux-musl","wasm32-unknown-unknown","wasm32-wasi"'
_config_target_extras='[target.x86_64-unknown-linux-musl]
sanitizers = false
musl-root = "/usr/lib/musl"'
;;
esac
_rust_target="\"${CHOST}\""
case "${CARCH}" in
powerpc)
# fails to link with -O3 due to 32bit related relocation problems
export RUSTFLAGS="-C opt-level=2"
;;
riscv64)
_rust_target='"riscv64gc-unknown-linux-gnu"'
;;
esac
cat >config.toml <<END
changelog-seen = 2
profile = "user"
change-id = 116881
[llvm]
link-shared = true
[build]
target = [
${_config_targets}
${_rust_target}
]
cargo = "/usr/bin/cargo"
rustc = "/usr/bin/rustc"
@ -146,8 +109,16 @@ rustfmt = "/usr/bin/rustfmt"
locked-deps = true
vendor = true
tools = [
${_build_tools}
"cargo",
"clippy",
"rustdoc",
"rustfmt",
"rust-analyzer-proc-macro-srv",
"analysis",
"src",
"rust-demangler",
]
sanitizers = true
profiler = true
# Generating docs fails with the wasm32-* targets
@ -162,8 +133,12 @@ channel = "stable"
description = "Arch POWER $pkgbase $epoch:$pkgver-$pkgrel"
rpath = false
backtrace-on-ice = true
remap-debuginfo = true
jemalloc = ${_jemalloc}
jemalloc = true
# Causes "error: --remap-path-prefix must contain '=' between FROM and TO"
# even after creating the missing ~/.cargo/registry/src dir.
# https://github.com/rust-lang/rust/issues/117885
remap-debuginfo = false
# LLVM crashes when passing an object through ThinLTO twice. This is triggered
# when using rust code in cross-language LTO if libstd was built using ThinLTO.
@ -178,22 +153,11 @@ deny-warnings = false
compression-formats = ["gz"]
[target.${_rust_target}]
cc = "/usr/bin/${CHOST}-gcc"
cxx = "/usr/bin/${CHOST}-g++"
ar = "/usr/bin/${CHOST}-gcc-ar"
cc = "/usr/bin/gcc"
cxx = "/usr/bin/g++"
ar = "/usr/bin/gcc-ar"
ranlib = "/usr/bin/gcc-ranlib"
llvm-config = "/usr/bin/llvm-config"
${_config_target_extras}
[target.wasm32-unknown-unknown]
sanitizers = false
profiler = false
[target.wasm32-wasi]
sanitizers = false
profiler = false
wasi-root = "/usr/share/wasi-sysroot"
END
}
@ -217,31 +181,18 @@ build() {
cd ../dest-rust
# delete unnecessary files, e.g. files only used for the uninstall script
rm usr/bin/*.old
rm usr/lib/rustlib/{components,install.log,rust-installer-version,uninstall.sh}
rm usr/lib/rustlib/manifest-*
# rustbuild always installs copies of the shared libraries to /usr/lib,
# overwrite them with symlinks to the per-architecture versions
ln -srft usr/lib usr/lib/rustlib/${_rust_target}/lib/*.so
case "${CARCH}" in
x86_64)
mkdir -p usr/lib32
ln -srft usr/lib32 usr/lib/rustlib/i686-unknown-linux-gnu/lib/*.so
;;
esac
ln -srft usr/lib usr/lib/rustlib/${_rust_target}/lib/*.so
mkdir -p usr/share/licenses/rust
mv -t usr/share/licenses/rust usr/share/doc/rust/{COPYRIGHT,LICENSE*}
case "${CARCH}" in
x86_64)
_pick dest-i686 usr/lib/rustlib/i686-unknown-linux-gnu usr/lib32
_pick dest-musl usr/lib/rustlib/x86_64-unknown-linux-musl
;;
powerpc64le)
_pick dest-wasm usr/lib/rustlib/wasm32-*
;;
esac
_pick dest-src usr/lib/rustlib/src
}
@ -269,45 +220,6 @@ package_rust() {
cp -a dest-rust/* "$pkgdir"
}
package_lib32-rust-libs() {
pkgdesc="32-bit target and libraries for Rust"
depends=(
lib32-gcc-libs
rust
)
provides=(lib32-rust)
conflicts=(lib32-rust)
replaces=(lib32-rust)
cp -a dest-i686/* "$pkgdir"
mkdir -p "$pkgdir/usr/share/licenses"
ln -s rust "$pkgdir/usr/share/licenses/$pkgname"
}
package_rust-musl() {
pkgdesc="Musl target for Rust"
depends=(rust)
cp -a dest-musl/* "$pkgdir"
mkdir -p "$pkgdir/usr/share/licenses"
ln -s rust "$pkgdir/usr/share/licenses/$pkgname"
}
package_rust-wasm() {
pkgdesc="WebAssembly targets for Rust"
depends=(
lld
rust
)
cp -a dest-wasm/* "$pkgdir"
mkdir -p "$pkgdir/usr/share/licenses"
ln -s rust "$pkgdir/usr/share/licenses/$pkgname"
}
package_rust-src() {
pkgdesc="Source code for the Rust standard library"
depends=(rust)

View File

@ -24,62 +24,62 @@ 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
Mve696B5tlHyc1KxjHR6w9GRsh4=
=5FXw
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
/5A5vjHh+NhFwH5h2vBJVPdsz6k=
=jRHo
-----END PGP PUBLIC KEY BLOCK-----