commit:     2ab8ac5b6dba553d9389508731146250ef463b37
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Tue Feb 25 21:00:58 2025 +0000
Commit:     orbea <orbea <AT> riseup <DOT> net>
CommitDate: Tue Feb 25 21:44:06 2025 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=2ab8ac5b

dev-lang/rust: add 1.85.0-r1 + drop 1.84.0-r1

Signed-off-by: orbea <orbea <AT> riseup.net>

 dev-lang/rust/Manifest                             |   2 -
 .../rust/files/1.85.0-musl-dynamic-linking.patch   | 271 +++++++++++++++++++++
 ...rust-1.84.0-r1.ebuild => rust-1.85.0-r1.ebuild} | 227 +++++++++++------
 3 files changed, 429 insertions(+), 71 deletions(-)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 53bc7b9..b1954b0 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -20,8 +20,6 @@ DIST rustc-1.82.0-src.tar.xz 219769328 BLAKE2B 
611f33e134c2d459c9af1695c0a4d033d
 DIST rustc-1.82.0-src.tar.xz.asc 801 BLAKE2B 
8138fb15b8d7ec15be45378fe663207a8e87e3c527348ab079995b1840a771ed6e9d5464eb8855ac9e006c0cfcf54b1a4fea489d31e6c9899cb03e6f4c737b67
 SHA512 
3cd6b27e72041baf9996efa10f25aca2e04f3e3727b60ecfd90c1bef9c52d216d2dc130802f935b110e35766645a27637a01661aa8d5acf02bf64b02a107c93c
 DIST rustc-1.83.0-src.tar.xz 353808388 BLAKE2B 
217c85f7351a7c57a2684da2c7c81a32094187b3812dee628b327a5b2faca57235abc54d033c586c071c8bfa0c7360bb28761aaa42fe18414e388db704d81231
 SHA512 
64db57949c6ac1df6a3f4c6bd0938685a5fb1bc3d318b34ccfcfccb0f9eff1cffd4d8a53a190ef0409eeca9ad12bc6234c2c1de69196cc74ae02d6afa20d0ce6
 DIST rustc-1.83.0-src.tar.xz.asc 801 BLAKE2B 
3bacb43d50ebba579dc2d4f1726298a7887e303e15f039ef72b840e30d90bc2cf9cdbe4617a9ee113a2b1a48f1982e72cf30323d72cdfb9a65b5b4d734ca0024
 SHA512 
84b252ccaddc06cb05858ff64f582dd25823818c81b1e3a00362deeda06f09e6c36948fd316d5f0ca5e24949e6f99bb14a14dbd2af1cfbb85e679e27ab0a813c
-DIST rustc-1.84.0-src.tar.xz 354993944 BLAKE2B 
e4697d8a9f42484556ed490390aef535b2214ccb3715ade57936211c1c637737da5f2b9a6c53a30df0fba1744fbd80d4d1382c0b74f6b36b36098bf187557201
 SHA512 
9e964c1b964e74083a9002fa04b072fa8fe7a520b24ad55e88a89bb2a2a2cd5727c5438d6db425b824ae7502ab215c2dd3f49777efd65f76bae09965df2e070a
-DIST rustc-1.84.0-src.tar.xz.asc 801 BLAKE2B 
b1846702f36b92c479499f5eb704ce1e272131fc1b6b625c8d64c873a82ed79b1de8cceb1f21ae4b9dccf81e258547debf367b7b769ac94ed10a59dee18f79f1
 SHA512 
5ada0e0fed9901044eaa0d7cb657f685c7e183e91245714abe4a0a8bf3062a7de281932c7de7587220df0542511f6011d057bd8bed19d98c755eab74091cdfdb
 DIST rustc-1.84.1-src.tar.xz 355078168 BLAKE2B 
849e8c909493bf76ce9749b9dcb1967180223b91a41d690bc477e78557d4e24949c9a8d8276d824af8c54ad62bc4a998e7a8efbc0bbd2008a4f64f51a7690d48
 SHA512 
f1cc4765736551508408126e44086988e8ddc30c1a929bf7b61c6be85ad0d65928dd5fb1041cfaeee8eb37d2208f2c1917e276aef2bc9a8e40e34f6713b349e1
 DIST rustc-1.84.1-src.tar.xz.asc 801 BLAKE2B 
f3decd3470fd1eff33adbb376490a30eb8db28dd4176bde0fefe4f60acf79c3dd0e1a330d519b5319360136ea7d0a124f6720dea08617202d9e9298da992ccf6
 SHA512 
a241fe3efba293f3e872b74f09dd0d184e0239afd1416326d57bf1134d92721c65b187f5c99962b51671877a539f18e82d2d797c76af42615c11a8bb3905f796
 DIST rustc-1.85.0-src.tar.xz 274011696 BLAKE2B 
9cb1c5b9fa9b0ee8a3150d634b58f4d14c38342f19cffbdcaa4e783150f9b3c516763d549d9998d90e11377cd59e9d9442a99079aafccdc005739b075574447a
 SHA512 
3e9c933d1d9b6e5fb081837cf07eb1638b1a6b4fd1cb607dd860c5021ba7b521edbaf8ba0fa8f182f62178b72a3e1a3e6b26675e8fb6530871137852a074443c

diff --git a/dev-lang/rust/files/1.85.0-musl-dynamic-linking.patch 
b/dev-lang/rust/files/1.85.0-musl-dynamic-linking.patch
new file mode 100644
index 0000000..a6ab967
--- /dev/null
+++ b/dev-lang/rust/files/1.85.0-musl-dynamic-linking.patch
@@ -0,0 +1,271 @@
+From be965af5421e55c0032a989b220bc0da005d2272 Mon Sep 17 00:00:00 2001
+From: Michal Rostecki <[email protected]>
+Date: Tue, 25 Feb 2025 16:24:21 +0100
+Subject: [PATCH] Enable dynamic linking by default for musl
+
+---
+ .../src/spec/targets/aarch64_unknown_linux_musl.rs             | 3 ---
+ .../src/spec/targets/arm_unknown_linux_musleabi.rs             | 3 +--
+ .../src/spec/targets/arm_unknown_linux_musleabihf.rs           | 3 +--
+ .../src/spec/targets/armv5te_unknown_linux_musleabi.rs         | 3 +--
+ .../src/spec/targets/armv7_unknown_linux_musleabi.rs           | 3 +--
+ .../src/spec/targets/armv7_unknown_linux_musleabihf.rs         | 3 +--
+ .../rustc_target/src/spec/targets/i586_unknown_linux_musl.rs   | 2 --
+ .../rustc_target/src/spec/targets/i686_unknown_linux_musl.rs   | 2 --
+ .../src/spec/targets/mips64_unknown_linux_muslabi64.rs         | 3 +--
+ .../src/spec/targets/mips64el_unknown_linux_muslabi64.rs       | 2 --
+ .../src/spec/targets/powerpc64_unknown_linux_musl.rs           | 2 --
+ .../src/spec/targets/powerpc64le_unknown_linux_musl.rs         | 2 --
+ .../src/spec/targets/powerpc_unknown_linux_musl.rs             | 2 --
+ .../src/spec/targets/powerpc_unknown_linux_muslspe.rs          | 2 --
+ .../src/spec/targets/riscv32gc_unknown_linux_musl.rs           | 3 +--
+ .../rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs  | 2 --
+ .../src/spec/targets/thumbv7neon_unknown_linux_musleabihf.rs   | 3 +--
+ .../rustc_target/src/spec/targets/x86_64_unknown_linux_musl.rs | 2 --
+ 18 files changed, 8 insertions(+), 37 deletions(-)
+
+diff --git 
a/compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_musl.rs 
b/compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_musl.rs
+index 4fefdfa5c5e..bb65048a56d 100644
+--- a/compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_musl.rs
+@@ -12,9 +12,6 @@ pub(crate) fn target() -> Target {
+         | SanitizerSet::MEMORY
+         | SanitizerSet::THREAD;
+ 
+-    // FIXME(compiler-team#422): musl targets should be dynamically linked by 
default.
+-    base.crt_static_default = true;
+-
+     Target {
+         llvm_target: "aarch64-unknown-linux-musl".into(),
+         metadata: crate::spec::TargetMetadata {
+diff --git 
a/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabi.rs 
b/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabi.rs
+index 26241dd0bd4..cab79e2bf7d 100644
+--- a/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabi.rs
++++ b/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabi.rs
+@@ -20,8 +20,7 @@ pub(crate) fn target() -> Target {
+             features: "+strict-align,+v6".into(),
+             max_atomic_width: Some(64),
+             mcount: "\u{1}mcount".into(),
+-            // FIXME(compiler-team#422): musl targets should be dynamically 
linked by default.
+-            crt_static_default: true,
++            crt_static_default: false,
+             ..base::linux_musl::opts()
+         },
+     }
+diff --git 
a/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabihf.rs 
b/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabihf.rs
+index 4bbde7667b9..c5f6c180a95 100644
+--- a/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabihf.rs
++++ b/compiler/rustc_target/src/spec/targets/arm_unknown_linux_musleabihf.rs
+@@ -20,8 +20,7 @@ pub(crate) fn target() -> Target {
+             features: "+strict-align,+v6,+vfp2,-d32".into(),
+             max_atomic_width: Some(64),
+             mcount: "\u{1}mcount".into(),
+-            // FIXME(compiler-team#422): musl targets should be dynamically 
linked by default.
+-            crt_static_default: true,
++            crt_static_default: false,
+             ..base::linux_musl::opts()
+         },
+     }
+diff --git 
a/compiler/rustc_target/src/spec/targets/armv5te_unknown_linux_musleabi.rs 
b/compiler/rustc_target/src/spec/targets/armv5te_unknown_linux_musleabi.rs
+index 62619546891..680dafe6943 100644
+--- a/compiler/rustc_target/src/spec/targets/armv5te_unknown_linux_musleabi.rs
++++ b/compiler/rustc_target/src/spec/targets/armv5te_unknown_linux_musleabi.rs
+@@ -20,8 +20,7 @@ pub(crate) fn target() -> Target {
+             max_atomic_width: Some(32),
+             mcount: "\u{1}mcount".into(),
+             has_thumb_interworking: true,
+-            // FIXME(compiler-team#422): musl targets should be dynamically 
linked by default.
+-            crt_static_default: true,
++            crt_static_default: false,
+             ..base::linux_musl::opts()
+         },
+     }
+diff --git 
a/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabi.rs 
b/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabi.rs
+index 0436e0d8df4..e862b28ca92 100644
+--- a/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabi.rs
++++ b/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabi.rs
+@@ -24,8 +24,7 @@ pub(crate) fn target() -> Target {
+             features: "+v7,+thumb2,+soft-float,-neon".into(),
+             max_atomic_width: Some(64),
+             mcount: "\u{1}mcount".into(),
+-            // FIXME(compiler-team#422): musl targets should be dynamically 
linked by default.
+-            crt_static_default: true,
++            crt_static_default: false,
+             ..base::linux_musl::opts()
+         },
+     }
+diff --git 
a/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabihf.rs 
b/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabihf.rs
+index 22e49f2f1b0..acb7c99cdaf 100644
+--- a/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabihf.rs
++++ b/compiler/rustc_target/src/spec/targets/armv7_unknown_linux_musleabihf.rs
+@@ -23,8 +23,7 @@ pub(crate) fn target() -> Target {
+             features: "+v7,+vfp3,-d32,+thumb2,-neon".into(),
+             max_atomic_width: Some(64),
+             mcount: "\u{1}mcount".into(),
+-            // FIXME(compiler-team#422): musl targets should be dynamically 
linked by default.
+-            crt_static_default: true,
++            crt_static_default: false,
+             ..base::linux_musl::opts()
+         },
+     }
+diff --git a/compiler/rustc_target/src/spec/targets/i586_unknown_linux_musl.rs 
b/compiler/rustc_target/src/spec/targets/i586_unknown_linux_musl.rs
+index 8ad93496f3a..623422a89ea 100644
+--- a/compiler/rustc_target/src/spec/targets/i586_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/i586_unknown_linux_musl.rs
+@@ -4,7 +4,5 @@ pub(crate) fn target() -> Target {
+     let mut base = super::i686_unknown_linux_musl::target();
+     base.cpu = "pentium".into();
+     base.llvm_target = "i586-unknown-linux-musl".into();
+-    // FIXME(compiler-team#422): musl targets should be dynamically linked by 
default.
+-    base.crt_static_default = true;
+     base
+ }
+diff --git a/compiler/rustc_target/src/spec/targets/i686_unknown_linux_musl.rs 
b/compiler/rustc_target/src/spec/targets/i686_unknown_linux_musl.rs
+index 6ba87c732b7..b805b80b85b 100644
+--- a/compiler/rustc_target/src/spec/targets/i686_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/i686_unknown_linux_musl.rs
+@@ -6,8 +6,6 @@ pub(crate) fn target() -> Target {
+     base.max_atomic_width = Some(64);
+     base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32", 
"-Wl,-melf_i386"]);
+     base.stack_probes = StackProbeType::Inline;
+-    // FIXME(compiler-team#422): musl targets should be dynamically linked by 
default.
+-    base.crt_static_default = true;
+ 
+     // The unwinder used by i686-unknown-linux-musl, the LLVM libunwind
+     // implementation, apparently relies on frame pointers existing... 
somehow.
+diff --git 
a/compiler/rustc_target/src/spec/targets/mips64_unknown_linux_muslabi64.rs 
b/compiler/rustc_target/src/spec/targets/mips64_unknown_linux_muslabi64.rs
+index 32f5c79d653..9a25fe773fb 100644
+--- a/compiler/rustc_target/src/spec/targets/mips64_unknown_linux_muslabi64.rs
++++ b/compiler/rustc_target/src/spec/targets/mips64_unknown_linux_muslabi64.rs
+@@ -22,8 +22,7 @@ pub(crate) fn target() -> Target {
+             abi: "abi64".into(),
+             endian: Endian::Big,
+             mcount: "_mcount".into(),
+-            // FIXME(compiler-team#422): musl targets should be dynamically 
linked by default.
+-            crt_static_default: true,
++            crt_static_default: false,
+             ..base
+         },
+     }
+diff --git 
a/compiler/rustc_target/src/spec/targets/mips64el_unknown_linux_muslabi64.rs 
b/compiler/rustc_target/src/spec/targets/mips64el_unknown_linux_muslabi64.rs
+index 5e7c37fd46c..4f50e8b7033 100644
+--- 
a/compiler/rustc_target/src/spec/targets/mips64el_unknown_linux_muslabi64.rs
++++ 
b/compiler/rustc_target/src/spec/targets/mips64el_unknown_linux_muslabi64.rs
+@@ -5,8 +5,6 @@ pub(crate) fn target() -> Target {
+     base.cpu = "mips64r2".into();
+     base.features = "+mips64r2".into();
+     base.max_atomic_width = Some(64);
+-    // FIXME(compiler-team#422): musl targets should be dynamically linked by 
default.
+-    base.crt_static_default = true;
+     Target {
+         // LLVM doesn't recognize "muslabi64" yet.
+         llvm_target: "mips64el-unknown-linux-musl".into(),
+diff --git 
a/compiler/rustc_target/src/spec/targets/powerpc64_unknown_linux_musl.rs 
b/compiler/rustc_target/src/spec/targets/powerpc64_unknown_linux_musl.rs
+index a54b17c87a7..a964f417799 100644
+--- a/compiler/rustc_target/src/spec/targets/powerpc64_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/powerpc64_unknown_linux_musl.rs
+@@ -7,8 +7,6 @@ pub(crate) fn target() -> Target {
+     base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
+     base.max_atomic_width = Some(64);
+     base.stack_probes = StackProbeType::Inline;
+-    // FIXME(compiler-team#422): musl targets should be dynamically linked by 
default.
+-    base.crt_static_default = true;
+ 
+     Target {
+         llvm_target: "powerpc64-unknown-linux-musl".into(),
+diff --git 
a/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_musl.rs 
b/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_musl.rs
+index f763c37f535..d0335506f16 100644
+--- a/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_musl.rs
+@@ -6,8 +6,6 @@ pub(crate) fn target() -> Target {
+     base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
+     base.max_atomic_width = Some(64);
+     base.stack_probes = StackProbeType::Inline;
+-    // FIXME(compiler-team#422): musl targets should be dynamically linked by 
default.
+-    base.crt_static_default = true;
+ 
+     Target {
+         llvm_target: "powerpc64le-unknown-linux-musl".into(),
+diff --git 
a/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_musl.rs 
b/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_musl.rs
+index 0cd0ea96ad3..5372a83e29a 100644
+--- a/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_musl.rs
+@@ -6,8 +6,6 @@ pub(crate) fn target() -> Target {
+     base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32"]);
+     base.max_atomic_width = Some(32);
+     base.stack_probes = StackProbeType::Inline;
+-    // FIXME(compiler-team#422): musl targets should be dynamically linked by 
default.
+-    base.crt_static_default = true;
+ 
+     Target {
+         llvm_target: "powerpc-unknown-linux-musl".into(),
+diff --git 
a/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_muslspe.rs 
b/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_muslspe.rs
+index b86c3c2e8e0..2305db81c5e 100644
+--- a/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_muslspe.rs
++++ b/compiler/rustc_target/src/spec/targets/powerpc_unknown_linux_muslspe.rs
+@@ -6,8 +6,6 @@ pub(crate) fn target() -> Target {
+     base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-mspe"]);
+     base.max_atomic_width = Some(32);
+     base.stack_probes = StackProbeType::Inline;
+-    // FIXME(compiler-team#422): musl targets should be dynamically linked by 
default.
+-    base.crt_static_default = true;
+ 
+     Target {
+         llvm_target: "powerpc-unknown-linux-muslspe".into(),
+diff --git 
a/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_musl.rs 
b/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_musl.rs
+index a07429bb0c5..cf2d7669a8a 100644
+--- a/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/riscv32gc_unknown_linux_musl.rs
+@@ -23,8 +23,7 @@ pub(crate) fn target() -> Target {
+             llvm_abiname: "ilp32d".into(),
+             max_atomic_width: Some(32),
+             supported_split_debuginfo: Cow::Borrowed(&[SplitDebuginfo::Off]),
+-            // FIXME(compiler-team#422): musl targets should be dynamically 
linked by default.
+-            crt_static_default: true,
++            crt_static_default: false,
+             ..base::linux_musl::opts()
+         },
+     }
+diff --git 
a/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs 
b/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs
+index fbe8c48eca7..7a78004927b 100644
+--- a/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_musl.rs
+@@ -12,8 +12,6 @@ pub(crate) fn target() -> Target {
+     base.stack_probes = StackProbeType::Inline;
+     base.supported_sanitizers =
+         SanitizerSet::ADDRESS | SanitizerSet::LEAK | SanitizerSet::MEMORY | 
SanitizerSet::THREAD;
+-    // FIXME(compiler-team#422): musl targets should be dynamically linked by 
default.
+-    base.crt_static_default = true;
+ 
+     Target {
+         llvm_target: "s390x-unknown-linux-musl".into(),
+diff --git 
a/compiler/rustc_target/src/spec/targets/thumbv7neon_unknown_linux_musleabihf.rs
 
b/compiler/rustc_target/src/spec/targets/thumbv7neon_unknown_linux_musleabihf.rs
+index 1149b6d16eb..e1e060c211d 100644
+--- 
a/compiler/rustc_target/src/spec/targets/thumbv7neon_unknown_linux_musleabihf.rs
++++ 
b/compiler/rustc_target/src/spec/targets/thumbv7neon_unknown_linux_musleabihf.rs
+@@ -27,8 +27,7 @@ pub(crate) fn target() -> Target {
+             features: "+v7,+thumb-mode,+thumb2,+vfp3,+neon".into(),
+             max_atomic_width: Some(64),
+             mcount: "\u{1}mcount".into(),
+-            // FIXME(compiler-team#422): musl targets should be dynamically 
linked by default.
+-            crt_static_default: true,
++            crt_static_default: false,
+             ..base::linux_musl::opts()
+         },
+     }
+diff --git 
a/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_musl.rs 
b/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_musl.rs
+index 8dcdc5be8a9..8be0f335db9 100644
+--- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_musl.rs
++++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_musl.rs
+@@ -14,8 +14,6 @@ pub(crate) fn target() -> Target {
+         | SanitizerSet::MEMORY
+         | SanitizerSet::THREAD;
+     base.supports_xray = true;
+-    // FIXME(compiler-team#422): musl targets should be dynamically linked by 
default.
+-    base.crt_static_default = true;
+ 
+     Target {
+         llvm_target: "x86_64-unknown-linux-musl".into(),
+-- 
+2.45.3
+

diff --git a/dev-lang/rust/rust-1.84.0-r1.ebuild 
b/dev-lang/rust/rust-1.85.0-r1.ebuild
similarity index 75%
rename from dev-lang/rust/rust-1.84.0-r1.ebuild
rename to dev-lang/rust/rust-1.85.0-r1.ebuild
index 6433cd6..c7cd012 100644
--- a/dev-lang/rust/rust-1.84.0-r1.ebuild
+++ b/dev-lang/rust/rust-1.85.0-r1.ebuild
@@ -6,32 +6,53 @@ EAPI=8
 LLVM_COMPAT=( 19 )
 PYTHON_COMPAT=( python3_{10..13} )
 
-RUST_MAX_VER=${PV}
-RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
+RUST_MAX_VER=${PV%%_*}
+if [[ ${PV} == *9999* ]]; then
+       RUST_MIN_VER="1.85.0" # Update this as new `beta` releases come out.
+elif [[ ${PV} == *beta* ]]; then
+       # Enforce that `beta` is built from `stable`.
+       # While uncommon it is possible for feature changes within `beta` to 
result
+       # in an older snapshot being unable to build a newer one without 
modifying the sources.
+       # 'stable' releases should always be able to build a beta snapshot so 
just use those.
+       RUST_MAX_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).1"
+       RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
+else
+       RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
+fi
 
 inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \
        multilib multilib-build python-any-r1 rust rust-toolchain 
toolchain-funcs verify-sig
 
-if [[ ${PV} = *beta* ]]; then
+if [[ ${PV} = *9999* ]]; then
+       inherit git-r3
+       EGIT_REPO_URI="https://github.com/rust-lang/rust.git";
+       EGIT_SUBMODULES=(
+               "*"
+               "-src/gcc"
+       )
+elif [[ ${PV} == *beta* ]]; then
+       # Identify the snapshot date of the beta release:
+       # curl -Ls static.rust-lang.org/dist/channel-rust-beta.toml | grep 
beta-src.tar.xz
        betaver=${PV//*beta}
        BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
        MY_P="rustc-beta"
-       SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+       
SRC_URI="https://static.rust-lang.org/dist/${BETA_SNAPSHOT}/rustc-beta-src.tar.xz
 -> rustc-${PV}-src.tar.xz
+               verify-sig? ( 
https://static.rust-lang.org/dist/${BETA_SNAPSHOT}/rustc-beta-src.tar.xz.asc
+                       -> rustc-${PV}-src.tar.xz.asc )
+       "
+       S="${WORKDIR}/${MY_P}-src"
 else
        MY_P="rustc-${PV}"
-       SRC="${MY_P}-src.tar.xz"
+       SRC_URI="https://static.rust-lang.org/dist/${MY_P}-src.tar.xz
+               verify-sig? ( 
https://static.rust-lang.org/dist/${MY_P}-src.tar.xz.asc )
+       "
+       S="${WORKDIR}/${MY_P}-src"
        KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc 
~x86"
 fi
 
-DESCRIPTION="Systems programming language from Mozilla"
+DESCRIPTION="Systems programming language originally developed by Mozilla"
 HOMEPAGE="https://www.rust-lang.org/";
 
-SRC_URI="
-       https://static.rust-lang.org/dist/${SRC}
-       verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-"
-S="${WORKDIR}/${MY_P}-src"
-
 # keep in sync with llvm ebuild of the same version as bundled one.
 ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
        LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE
@@ -40,24 +61,29 @@ ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" 
)
 LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
 
 # 
https://github.com/rust-lang/llvm-project/blob/rustc-1.84.0/llvm/CMakeLists.txt
-_ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
-ALL_LLVM_EXPERIMENTAL_TARGETS=( )
+_ALL_RUST_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
+declare -A ALL_RUST_EXPERIMENTAL_TARGETS
+for _x in "${_ALL_RUST_EXPERIMENTAL_TARGETS[@]}"; do
+       ALL_RUST_EXPERIMENTAL_TARGETS["llvm_targets_${_x}"]=0
+done
 
 LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
-SLOT="${PV}"
+SLOT="${PV%%_*}" # Beta releases get to share the same SLOT as the eventual 
stable
 
-IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto 
miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test 
wasm ${ALL_LLVM_TARGETS[*]}"
+IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto 
rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+
+if [[ ${PV} = *9999* ]]; then
+       # These USE flags require nightly rust
+       IUSE+=" miri"
+fi
 
 LLVM_DEPEND=()
 # splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
 for _x in "${ALL_LLVM_TARGETS[@]}"; do
        LLVM_DEPEND+=( "        ${_x}? ( $(llvm_gen_dep 
"llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
-       for _xx in "${_ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do
-               if [[ "${_xx}" == "${_x}" ]] ; then
-                       ALL_LLVM_EXPERIMENTAL_TARGETS+=( ${_x} )
-                       break
-               fi
-       done
+       if [[ -v ALL_RUST_EXPERIMENTAL_TARGETS["${_x}"] ]] ; then
+               ALL_RUST_EXPERIMENTAL_TARGETS["${_x}"]=1
+       fi
 done
 LLVM_DEPEND+=( "       wasm? ( $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}') )" 
)
 LLVM_DEPEND+=( "       $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}')" )
@@ -101,8 +127,6 @@ RDEPEND="${DEPEND}
 "
 
 REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-       miri? ( nightly )
-       parallel-compiler? ( nightly )
        rust-analyzer? ( rust-src )
        test? ( ${ALL_LLVM_TARGETS[*]} )
        wasm? ( llvm_targets_WebAssembly )
@@ -113,27 +137,27 @@ REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
 CMAKE_WARN_UNUSED_CLI=no
 
 QA_FLAGS_IGNORED="
-       usr/lib/${PN}/${PV}/bin/.*
-       usr/lib/${PN}/${PV}/libexec/.*
-       usr/lib/${PN}/${PV}/lib/lib.*.so
-       usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-       usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+       usr/lib/${PN}/${SLOT}/bin/.*
+       usr/lib/${PN}/${SLOT}/libexec/.*
+       usr/lib/${PN}/${SLOT}/lib/lib.*.so
+       usr/lib/${PN}/${SLOT}/lib/rustlib/.*/bin/.*
+       usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/lib.*.so
 "
 
 QA_SONAME="
-       usr/lib/${PN}/${PV}/lib/lib.*.so.*
-       usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+       usr/lib/${PN}/${SLOT}/lib/lib.*.so.*
+       usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/lib.*.so
 "
 
 QA_PRESTRIPPED="
-       usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-       usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
+       usr/lib/${PN}/${SLOT}/lib/rustlib/.*/bin/rust-llvm-dwp
+       usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/self-contained/crtn.o
 "
 
 # An rmeta file is custom binary format that contains the metadata for the 
crate.
 # rmeta files do not support linking, since they do not contain compiled 
object files.
 # so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+QA_EXECSTACK="usr/lib/${PN}/${SLOT}/lib/rustlib/*/lib*.rlib:lib.rmeta"
 
 # causes double bootstrap
 RESTRICT="test"
@@ -141,9 +165,8 @@ RESTRICT="test"
 VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
 
 PATCHES=(
-       "${FILESDIR}"/1.78.0-musl-dynamic-linking.patch
-       "${FILESDIR}"/1.83.0-cross-compile-libz.patch
-       #"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch  # pending refresh
+       "${FILESDIR}"/1.85.0-cross-compile-libz.patch
+       "${FILESDIR}"/1.85.0-musl-dynamic-linking.patch
        "${FILESDIR}"/1.67.0-doc-wasm.patch
 )
 
@@ -162,6 +185,48 @@ toml_usex() {
        usex "${1}" true false
 }
 
+src_unpack() {
+       if [[ ${PV} = *9999* ]]; then
+               git-r3_src_unpack
+               mkdir "${S}/.cargo" || die # The vendor script has a check for 
.cargo/config{,.toml}
+               touch "${S}/.cargo/config.toml" || die
+               local rust_stage0_root="$(${RUSTC} --print sysroot || die 
"Can't determine rust's sysroot")"
+               local rust_build=""
+               local rust_host=""
+               # Configure vendor to use the portage-provided toolchain. This 
prevents it from
+               # attempting to fetch a `beta` toolchain from the internet.
+               cat <<- _EOF_ > "${T}/vendor-config.toml"
+                       [build]
+                       build = "$(rust_abi "${CBUILD}")"
+                       host = ["$(rust_abi "${CHOST}")"]
+                       target = ["$(rust_abi "${CHOST}")"]
+                       cargo = "${rust_stage0_root}/bin/cargo"
+                       rustc = "${rust_stage0_root}/bin/rustc"
+                       rustfmt = "${rust_stage0_root}/bin/rustfmt"
+               _EOF_
+               # We're using git sources so we need to run the Vendor script
+               # to ensure that all dependencies are present and up-to-date
+               mkdir "${S}/vendor" || die
+               # This also compiles the 'build helper', there's no way to 
avoid this.
+               ${EPYTHON} "${S}"/x.py vendor -vvv 
--config="${T}"/vendor-config.toml -j$(makeopts_jobs) ||
+                       die "Failed to vendor dependencies"
+               # TODO: This has to be generated somehow, this is from a 1.84.x 
tarball I had lying around.
+               cat <<- _EOF_ > "${S}/.cargo/config.toml"
+                       [source.crates-io]
+                       replace-with = "vendored-sources"
+
+                       [source."git+https://github.com/rust-lang/team";]
+                       git = "https://github.com/rust-lang/team";
+                       replace-with = "vendored-sources"
+
+                       [source.vendored-sources]
+                       directory = "vendor"
+               _EOF_
+       else
+               verify-sig_src_unpack
+       fi
+}
+
 pre_build_checks() {
        local M=9216
        # multiply requirements by 1.3 if we are doing x86-multilib
@@ -169,7 +234,9 @@ pre_build_checks() {
                M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
        fi
        M=$(( $(usex clippy 128 0) + ${M} ))
-       M=$(( $(usex miri 128 0) + ${M} ))
+       if [[ ${PV} == *9999* ]]; then
+               M=$(( $(usex miri 128 0) + ${M} ))
+       fi
        M=$(( $(usex rustfmt 256 0) + ${M} ))
        # add 2G if we compile llvm and 256M per llvm_target
        if ! use system-llvm; then
@@ -238,6 +305,11 @@ src_prepare() {
        eapply_crate openssl-sys-0.9.102 
"${FILESDIR}"/1.79.0-libressl-openssl-sys.patch
        eapply_crate openssl-sys-0.9.104 
"${FILESDIR}"/1.84.0-libressl-openssl-sys-0.9.104.patch
 
+       if [[ ${PV} = *9999* ]]; then
+               # We need to update / generate lockfiles for the workspace
+               ${CARGO} generate-lockfile --offline
+
+       fi
        # Rust baselines to Pentium4 on x86, this patch lowers the baseline to 
i586 when sse2 is not set.
        if use x86; then
                if ! use cpu_flags_x86_sse2; then
@@ -278,11 +350,14 @@ src_configure() {
        # cargo and rustdoc are mandatory and should always be included
        local tools='"cargo","rustdoc"'
        use clippy && tools+=',"clippy"'
-       use miri && tools+=',"miri"'
        use rustfmt && tools+=',"rustfmt"'
        use rust-analyzer && 
tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"'
        use rust-src && tools+=',"src"'
 
+       if [[ ${PV} == *9999* ]]; then
+               use miri && tools+=',"miri"'
+       fi
+
        local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't 
determine rust's sysroot")"
        # in case of prefix it will be already prefixed, as --print sysroot 
returns full path
        [[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a 
directory"
@@ -291,15 +366,28 @@ src_configure() {
        rust_build="$(rust_abi "${CBUILD}")"
        rust_host="$(rust_abi "${CHOST}")"
 
-       LLVM_EXPERIMENTAL_TARGETS=()
-       for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do
-               if use llvm_targets_${_x} ; then
-                       LLVM_EXPERIMENTAL_TARGETS+=( ${_x} )
+       RUST_EXPERIMENTAL_TARGETS=()
+       for _x in "${!ALL_RUST_EXPERIMENTAL_TARGETS[@]}"; do
+               if [[ ${ALL_RUST_EXPERIMENTAL_TARGETS[${_x}]} == 1 ]] && use 
${_x} ; then
+                       RUST_EXPERIMENTAL_TARGETS+=( ${_x#llvm_targets_} )
                fi
        done
-       LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]}
+       RUST_EXPERIMENTAL_TARGETS=${RUST_EXPERIMENTAL_TARGETS[@]}
 
        local cm_btype="$(usex debug DEBUG RELEASE)"
+       local build_channel
+       local build_miri="false"
+       case "${PV}" in
+               *9999*)
+                       build_channel="nightly"
+                       ;;
+               *beta*)
+                       build_channel="beta"
+                       ;;
+               *)
+                       build_channel="stable"
+                       ;;
+       esac
        cat <<- _EOF_ > "${S}"/config.toml
                # https://github.com/rust-lang/rust/issues/135358 (bug #947897)
                profile = "dist"
@@ -310,7 +398,7 @@ src_configure() {
                assertions = $(toml_usex debug)
                ninja = true
                targets = "${LLVM_TARGETS// /;}"
-               experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}"
+               experimental-targets = "${RUST_EXPERIMENTAL_TARGETS// /;}"
                link-shared = $(toml_usex system-llvm)
                $(if is_libcxx_linked; then
                        # https://bugs.gentoo.org/732632
@@ -365,7 +453,7 @@ src_configure() {
                profiler = true
                cargo-native-static = false
                [install]
-               prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
+               prefix = "${EPREFIX}/usr/lib/${PN}/${SLOT}"
                sysconfdir = "etc"
                docdir = "share/doc/rust"
                bindir = "bin"
@@ -388,8 +476,7 @@ src_configure() {
                $(if ! tc-is-cross-compiler; then
                        echo "default-linker = \"$(tc-getCC)\""
                fi)
-               parallel-compiler = $(toml_usex parallel-compiler)
-               channel = "$(usex nightly nightly stable)"
+               channel = "${build_channel}"
                description = "gentoo"
                rpath = true
                verbose-tests = true
@@ -608,11 +695,11 @@ src_test() {
 src_install() {
        DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv 
--config="${S}"/config.toml -j$(makeopts_jobs) || die
 
-       docompress /usr/lib/${PN}/${PV}/share/man/
+       docompress /usr/lib/${PN}/${SLOT}/share/man/
 
        # bug #689562, #689160
-       rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-       rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+       rm -v "${ED}/usr/lib/${PN}/${SLOT}/etc/bash_completion.d/cargo" || die
+       rmdir -v "${ED}/usr/lib/${PN}/${SLOT}"/etc{/bash_completion.d,} || die
 
        local symlinks=(
                cargo
@@ -624,7 +711,9 @@ src_install() {
        )
 
        use clippy && symlinks+=( clippy-driver cargo-clippy )
-       use miri && symlinks+=( miri cargo-miri )
+       if [[ ${PV} = *9999* ]]; then
+               use miri && symlinks+=( miri cargo-miri )
+       fi
        use rustfmt && symlinks+=( rustfmt cargo-fmt )
        use rust-analyzer && symlinks+=( rust-analyzer )
 
@@ -634,34 +723,34 @@ src_install() {
                # we need realpath on /usr/bin/* symlink return 
version-appended binary path.
                # so /usr/bin/rustc should point to 
/usr/lib/rust/<ver>/bin/rustc-<ver>
                # need to fix eselect-rust to remove this hack.
-               local ver_i="${i}-${PV}"
-               if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
+               local ver_i="${i}-${PV%%_*}"
+               if [[ -f "${ED}/usr/lib/${PN}/${SLOT}/bin/${i}" ]]; then
                        einfo "Installing ${i} symlink"
-                       ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" 
"${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
+                       ln -v "${ED}/usr/lib/${PN}/${SLOT}/bin/${i}" 
"${ED}/usr/lib/${PN}/${SLOT}/bin/${ver_i}" || die
                else
                        ewarn "${i} symlink requested, but source file not 
found"
                        ewarn "please report this"
                fi
-               dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
+               dosym "../lib/${PN}/${SLOT}/bin/${ver_i}" "/usr/bin/${ver_i}"
        done
 
        # symlinks to switch components to active rust in eselect
-       dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
-       use rust-analyzer && dosym "${PV}/libexec" 
"/usr/lib/${PN}/libexec-${PV}"
-       dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-       dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-       dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+       dosym "${SLOT}/lib" "/usr/lib/${PN}/lib-${SLOT}"
+       use rust-analyzer && dosym "${SLOT}/libexec" 
"/usr/lib/${PN}/libexec-${SLOT}"
+       dosym "${SLOT}/share/man" "/usr/lib/${PN}/man-${SLOT}"
+       dosym "rust/${SLOT}/lib/rustlib" "/usr/lib/rustlib-${SLOT}"
+       dosym "../../lib/${PN}/${SLOT}/share/doc/rust" "/usr/share/doc/${P}"
 
        newenvd - "50${P}" <<-_EOF_
-               MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}"
+               MANPATH="${EPREFIX}/usr/lib/rust/man-${SLOT}"
        _EOF_
 
-       rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-       rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die
-       rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+       rm -rf "${ED}/usr/lib/${PN}/${SLOT}"/*.old || die
+       rm -rf "${ED}/usr/lib/${PN}/${SLOT}/bin"/*.old || die
+       rm -rf "${ED}/usr/lib/${PN}/${SLOT}/doc"/*.old || die
 
        # note: eselect-rust adds EROOT to all paths below
-       cat <<-_EOF_ > "${T}/provider-${P}"
+       cat <<-_EOF_ > "${T}/provider-${PN}-${SLOT}"
                /usr/bin/cargo
                /usr/bin/rustdoc
                /usr/bin/rust-gdb
@@ -677,7 +766,7 @@ src_install() {
                echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
                echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
        fi
-       if use miri; then
+       if [[ ${SLOT} == *9999* ]] && use miri; then
                echo /usr/bin/miri >> "${T}/provider-${P}"
                echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
        fi
@@ -691,11 +780,11 @@ src_install() {
        fi
 
        insinto /etc/env.d/rust
-       doins "${T}/provider-${P}"
+       doins "${T}/provider-${PN}-${SLOT}"
 
        if use dist; then
                "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml 
-j$(makeopts_jobs) || die
-               insinto "/usr/lib/${PN}/${PV}/dist"
+               insinto "/usr/lib/${PN}/${SLOT}/dist"
                doins -r "${S}/build/dist/."
        fi
 }


Reply via email to