summaryrefslogtreecommitdiff
path: root/dev-lang
diff options
context:
space:
mode:
Diffstat (limited to 'dev-lang')
-rw-r--r--dev-lang/Manifest.gzbin22474 -> 22485 bytes
-rw-r--r--dev-lang/boogie/Manifest4
-rw-r--r--dev-lang/boogie/boogie-3.5.2.ebuild (renamed from dev-lang/boogie/boogie-3.4.3.ebuild)33
-rw-r--r--dev-lang/crystal/Manifest8
-rw-r--r--dev-lang/crystal/crystal-1.15.1-r1.ebuild (renamed from dev-lang/crystal/crystal-1.15.1.ebuild)8
-rw-r--r--dev-lang/crystal/crystal-1.16.0-r1.ebuild (renamed from dev-lang/crystal/crystal-1.16.2.ebuild)8
-rw-r--r--dev-lang/crystal/crystal-1.16.1-r1.ebuild (renamed from dev-lang/crystal/crystal-1.16.0.ebuild)8
-rw-r--r--dev-lang/crystal/crystal-1.16.2-r1.ebuild (renamed from dev-lang/crystal/crystal-1.16.1.ebuild)8
-rw-r--r--dev-lang/execline/Manifest3
-rw-r--r--dev-lang/execline/execline-2.9.7.0.ebuild59
-rw-r--r--dev-lang/execline/files/execline-2.9.7.0-pkgconfdir-configure.patch26
-rw-r--r--dev-lang/go/Manifest2
-rw-r--r--dev-lang/go/go-1.24.2-r3.ebuild (renamed from dev-lang/go/go-1.24.2-r2.ebuild)5
-rw-r--r--dev-lang/php/Manifest8
-rw-r--r--dev-lang/php/php-8.2.24-r1.ebuild (renamed from dev-lang/php/php-8.2.24.ebuild)4
-rw-r--r--dev-lang/php/php-8.2.28-r1.ebuild (renamed from dev-lang/php/php-8.2.28.ebuild)2
-rw-r--r--dev-lang/php/php-8.3.20-r1.ebuild (renamed from dev-lang/php/php-8.3.20.ebuild)2
-rw-r--r--dev-lang/php/php-8.4.6-r1.ebuild (renamed from dev-lang/php/php-8.4.6.ebuild)2
-rw-r--r--dev-lang/rust-bin/Manifest30
-rw-r--r--dev-lang/rust-bin/rust-bin-1.87.0_beta20250430.ebuild314
-rw-r--r--dev-lang/rust-common/Manifest3
-rw-r--r--dev-lang/rust-common/rust-common-1.87.0_beta20250430.ebuild73
-rw-r--r--dev-lang/rust/Manifest3
-rw-r--r--dev-lang/rust/rust-1.87.0_beta20250430.ebuild813
24 files changed, 1368 insertions, 58 deletions
diff --git a/dev-lang/Manifest.gz b/dev-lang/Manifest.gz
index f07ef86910aa..a4ea08867720 100644
--- a/dev-lang/Manifest.gz
+++ b/dev-lang/Manifest.gz
Binary files differ
diff --git a/dev-lang/boogie/Manifest b/dev-lang/boogie/Manifest
index 1a27ae97885e..17742cda4d44 100644
--- a/dev-lang/boogie/Manifest
+++ b/dev-lang/boogie/Manifest
@@ -1,6 +1,6 @@
AUX boogie-3.0.4-disable-analyzers.patch 764 BLAKE2B 965f6a8007a4324aa95b165109dcbc85f7bba5696d04772c53cfb1e456d0c60d2d3dce9103df641fe7f565d2a2d4e04a5d02aba43ac1ccc4527dcaae90b7b28b SHA512 b8c7b9172cd2f45be84058babd33c75f37dcb08f6c1a0b7c79b0ae2bd8afec70b29886f23d0a5553a00e1d3761a7788db0444d06788ee32aed2d1c2cd7cb9554
-DIST boogie-3.4.3.tar.gz 2083291 BLAKE2B 802315359afa17533cdf80f41a74d85067bc6b4d497e88bad89892f7cf8831a1564381a65852bdbba3e1c2b70303f9984ed9584dd3aac9c3f1ad085d41db8acc SHA512 39682dc7efc5cd2d9d0501fdaef345f4cbb01c2a92fc228fb2eff6177f373ba534097a17d009d144e3480aa67bd0f95423dfef4188a39803363bb7eac89af444
DIST boogie-3.5.1.gh.tar.gz 2080788 BLAKE2B d13c3d6fbb17c1d5bb76174cc29a7aa912a4993b52a202de41f98990ec594c3414ab87a074ed13d4d30033ed7058756632bc86b1614d7ac6e18ec05946dabace SHA512 711eb2c4dbbf96b0917b57b2aa1ba193ff41c27992a86f538e0ef799329fac4fa95e282a4dc041571400f607c373666eb007f81cdb79188ff62e1aa30a738824
+DIST boogie-3.5.2.gh.tar.gz 2079790 BLAKE2B c9244b5ea7a38a80d1544d03edc2e7d7c79693e7b7b5cc30a4049315643a9a5e7e2db80af46d1fdab3dc4b01e2e84204e1901971accec781b0da7ab09c4e9a7d SHA512 52508b1ce869e2fe0436ab903911e426f7e0df8deeffc8115b703db3fbad8a4b2b6f5ee5733cec1e56422b4cbb7a2308664137d9b89e157480556eb80b65133f
DIST microsoft.bcl.asyncinterfaces.6.0.0.nupkg 76354 BLAKE2B aca3f5db71e4037dbdd604aeaebcd0962ccc171915b77b4c409ab744bf0a469c7d588f9504fc7fa49e3863e9593b66b4083235cb49e812d1f87b3dadb32e6003 SHA512 221a05a0c910f7a87b620d8f3831ed392b4eb95d112bee274d35f27009ad2a26445de9d7cd235fe6fb4a03f2550874bda3be3dddd96edaf9c0852a9c23d7b099
DIST microsoft.codecoverage.16.2.0.nupkg 3133582 BLAKE2B 418cf403247d594cde0d827f8ca8690019a7631525f07993937085f4bbf8473364b4c99aea6e8b7b0020208d15fe0da63f0f4e69c273493c51ae011e8bd82667 SHA512 91f1d43fc038a20f5367d9aab669105dc7514dfbe749260b52789c09a75abcc6bdc000ee0c7f432231d4cc09e99bf5b863dd6289d813342f74d9dad23a651625
DIST microsoft.csharp.4.0.1.nupkg 462346 BLAKE2B 209ccebc9103b803d26ea1f0232245c3cd231078b03a83a0011a2a79a1a8a324a72c5b3fda94b2686fff170932f366e165f81a36a70df590a39c45d70778e4be SHA512 c0e75a9162f28ba4c4572c8fac4fd4c8c97d6d3505a37683646ba5f7e5f6ac0da69d5200d2646054de90e8e08f893a10e514591b69b8273640842b2cf90bddec
@@ -191,6 +191,6 @@ DIST system.xml.xpath.4.0.1.nupkg 250135 BLAKE2B d6f211f98f33f6b8959b918cff8e676
DIST system.xml.xpath.4.3.0.nupkg 250182 BLAKE2B 8a4177d47af56bc7a6289ed8f2cac41d504dee212a858ed221277b3f523b1ce38ccb47bc3ce4d59a2c7cfd77f00f3c9693a9c257c90adb38096ee77a860f10cc SHA512 2bd0979a2020579fb32ad374b89929a272e763ee1233ed9a215408c0a1f9f82a5fdb74330c1c55a6102e0dfdb8b7b59ed25fdf6454bf3de146152ea779f366e0
DIST system.xml.xpath.xmldocument.4.0.1.nupkg 86933 BLAKE2B 4c03b5a9433c2c954e75d212f9026885aa7514574b73a54880c3d55baee6bd5517abb46b67b22b9b6e63de92a8bc5ab4ff37e3f7e6454a5c5137ae2be6574b75 SHA512 81041a08d3b9158c43dfb48d42f13ec9950d7c2b7f63e1600a779a77786edfb46c522c32d9cc6a44358fbfe11efba0e539e578ef169261867a1905b8121a045d
DIST system.xml.xpath.xmldocument.4.3.0.nupkg 138523 BLAKE2B ba53f3b5ac0f2d1d1e9120940b302e6960690ed4a44b96ba15b03e16f9159f2c57d6004aa55b796ba2327009d23fc2f10d4d09e948b88eb6af36efa5f76e401b SHA512 f75b6f7c75874ab6053e8942c1662a6e9a3561aa01502437b8d67f3bfcebd1ebf906792801326889ed7acb094c55469766d7d27cd10bc61b46ddaaa94dfc11e3
-EBUILD boogie-3.4.3.ebuild 9635 BLAKE2B 5bd808c0bad6448100ca8d29acf288087d12a7973a538882609bb65138f99b9f946cedccffed2f00e876dd1467891d35f24d4a6b43458dc59cb66acf9375a0c2 SHA512 fc1082446bab14b653d9706606c54392cb48ed123bc0f48b190f52e0df483baae30176a1ec5e482bd9a070d55326043ef64063d1324d05140e03a64b7dd790be
EBUILD boogie-3.5.1.ebuild 9234 BLAKE2B 0e5a2cd5dd51931df2f13317747b088bc4e3ddab2e790d09b7c6171cc775be54136249b301212bdb61043dbe7d6d1952fe44cb9f6144dad023fb5fc3fc8111ea SHA512 787316f3462d9e86127976e910df5ca8eced51e68951a78f3ed06530b00d9ddcc5cebcde220c55d25054292a20b7a75e84fc4353a8da665ea9c7c473e49221c5
+EBUILD boogie-3.5.2.ebuild 9235 BLAKE2B cd8e08b24696feee10a146ebf264970c0d049a8c0f5de536fbca36d72cfa3f3ed9648dd4874b284a717a1324abe84ec1be2a721ff617543f5f5c345c9db37519 SHA512 fa2d1c4c1220ab713d44ac760422f3d53e82715fd30f3855a93327dde1cfa96ce0e733953bf613feb7eaed13cf5e44e7f83a2a68f8ed61e7f242c8b3857a68d0
MISC metadata.xml 1102 BLAKE2B 215544658792715aae72787f7c949ed89df9c05ceab5a919a861c02b7938c0d1ee228e0ede55008287b616faf70992a8c1f2854e6e5e1fc909718ae682996bb8 SHA512 b6a626c485e2a5db3390da62c629507a60417eda8b508d7ed8d1c017ac337743d2c4fe0e8554b103f989176dcd2969cc8579e91532b07a22c1b66328ef241e8d
diff --git a/dev-lang/boogie/boogie-3.4.3.ebuild b/dev-lang/boogie/boogie-3.5.2.ebuild
index 165ea833ecb1..af19ba9caf72 100644
--- a/dev-lang/boogie/boogie-3.4.3.ebuild
+++ b/dev-lang/boogie/boogie-3.5.2.ebuild
@@ -1,9 +1,9 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-DOTNET_PKG_COMPAT="8.0"
+DOTNET_PKG_COMPAT="9.0"
NUGETS="
microsoft.bcl.asyncinterfaces@6.0.0
microsoft.codecoverage@16.2.0
@@ -208,9 +208,9 @@ if [[ "${PV}" == *9999* ]] ; then
EGIT_REPO_URI="https://github.com/boogie-org/${PN}.git"
else
SRC_URI="https://github.com/boogie-org/${PN}/archive/v${PV}.tar.gz
- -> ${P}.tar.gz"
+ -> ${P}.gh.tar.gz"
- KEYWORDS="amd64"
+ KEYWORDS="~amd64"
fi
SRC_URI+=" ${NUGET_URIS} "
@@ -254,19 +254,10 @@ src_unpack() {
src_prepare() {
# Remove bad tests.
local -a bad_tests=(
- civl/inductive-sequentialization/BroadcastConsensus.bpl
- civl/inductive-sequentialization/ChangRoberts.bpl
- civl/inductive-sequentialization/PingPong.bpl
- civl/large-samples/GC.bpl
- civl/large-samples/shared-vector.bpl
- civl/large-samples/verified-ft.bpl
- civl/paxos/is.sh
- civl/samples/reserve.bpl
- havoc0/MouCreateClassObject.bpl
- havoc0/MouseClassFindMorePorts.bpl
- inst/vector-generic.bpl
- inst/vector.bpl
- livevars/stack_overflow.bpl
+ civl
+ havoc0
+ inst
+ livevars
prover/cvc5-offline.bpl
prover/cvc5.bpl
prover/exitcode.bpl
@@ -278,14 +269,16 @@ src_prepare() {
test2/git-issue-366.bpl
test21/InterestingExamples4.bpl
)
- local bad_test
+ local bad_test=""
for bad_test in "${bad_tests[@]}" ; do
- rm "${S}/Test/${bad_test}" || ewarn "Failed to remove test: ${bad_test}"
+ rm -r "${S}/Test/${bad_test}" \
+ || ewarn "Failed to remove test: ${bad_test}"
done
# Update the boogieBinary variable.
sed "/^boogieBinary/s|= .*|= '${DOTNET_PKG_OUTPUT}/BoogieDriver.dll'|" \
- -i "${S}/Test/lit.site.cfg" || die "failed to update lit.site.cfg"
+ -i "${S}/Test/lit.site.cfg" \
+ || die "failed to update lit.site.cfg"
dotnet-pkg_src_prepare
}
diff --git a/dev-lang/crystal/Manifest b/dev-lang/crystal/Manifest
index 0a87d7b60f1e..79ebe1b0e8e1 100644
--- a/dev-lang/crystal/Manifest
+++ b/dev-lang/crystal/Manifest
@@ -9,8 +9,8 @@ DIST crystal-1.16.1-1-linux-x86_64.tar.gz 51688372 BLAKE2B d4d1decd73b9ef4290cca
DIST crystal-1.16.1.gh.tar.gz 3719816 BLAKE2B 512d5d5907420a6fa4f1ed5449afe7d9f6e19f479f5817ea03dbb399103b6debe4b50443bb2fc3a21d38e6021b2293809e32db2bf5fa69be01f6825ae7123284 SHA512 e498645a3c653283c00534b813ebbbfc3a6688fc1895b266570ccd2581a286492dc92299af53509e37cf81344a527b23ac2b932e65390fab150969895e24ea4a
DIST crystal-1.16.2-1-linux-x86_64.tar.gz 51722506 BLAKE2B 3c4ee66b8cb8cb50aa4f7a6192e2c9e3c6dd153e35dddcfad14edf7a6c6c8c06b411808811a91d4fba6540c82064fe063ebf2313e1c4a7fc52747b4fed7044f6 SHA512 9bc023642c540cde095983e6b5ce440a01ea4603f309d4044fdce77f332d0037199599b69f0b1046e95b1b8c43cec6d4260e47de2ca97a459b4e6120dbfd71a9
DIST crystal-1.16.2.gh.tar.gz 3719814 BLAKE2B f2f04fe6637bf4df49b7becd745588452f17a85abecca1bfa609b6b18f8980aef3e10461e66553672cd94c4351eb10a232f71c89ab0bb0eac4a52cef7fab93ef SHA512 c72cc30dc97ad43f08a0206429119bacabcedd810401501954a36e800e5444b5f5b9a56bed8edae684628f08f583bfc15bf3ff5d00ab60ecdb3f5553b65f1960
-EBUILD crystal-1.15.1.ebuild 2784 BLAKE2B cff25e85a08daf3126d27420128d048e82f56086f7777d678ced3a4c208f654be13d4c88722e115078fd12764b6d467faeefa2eafea26b44e3068f5d4a8f2875 SHA512 d8cb55ed0837398f12b336175686d889682f83271819d8b74602349ce63d4f5427cac3a244ba01c14b9034122a8ce5905066889de0742f6672fd1e0c2cb2703c
-EBUILD crystal-1.16.0.ebuild 2785 BLAKE2B cf0495de84b1af4d292bd05c153db8a1412dcfed2a4bef00abd4c6b984d368b822f162c09ab0177f0b070e39aae2cbfc3582630c51f6f7bfe4a9c6efa83b406e SHA512 5333b4f5456ab7a58c3df1669627dae50e9a82ab71c77ddf564fba73e3d182c29721a7ac624b3e1ab0584f79097d6ca37f0c313b420d29507aedafb4c1de7b94
-EBUILD crystal-1.16.1.ebuild 2785 BLAKE2B cf0495de84b1af4d292bd05c153db8a1412dcfed2a4bef00abd4c6b984d368b822f162c09ab0177f0b070e39aae2cbfc3582630c51f6f7bfe4a9c6efa83b406e SHA512 5333b4f5456ab7a58c3df1669627dae50e9a82ab71c77ddf564fba73e3d182c29721a7ac624b3e1ab0584f79097d6ca37f0c313b420d29507aedafb4c1de7b94
-EBUILD crystal-1.16.2.ebuild 2785 BLAKE2B cf0495de84b1af4d292bd05c153db8a1412dcfed2a4bef00abd4c6b984d368b822f162c09ab0177f0b070e39aae2cbfc3582630c51f6f7bfe4a9c6efa83b406e SHA512 5333b4f5456ab7a58c3df1669627dae50e9a82ab71c77ddf564fba73e3d182c29721a7ac624b3e1ab0584f79097d6ca37f0c313b420d29507aedafb4c1de7b94
+EBUILD crystal-1.15.1-r1.ebuild 2783 BLAKE2B c29917c1dafed6f7b80d081a4c0c35485b0723168ef23706de75cf27feb045a9c9ecdcaae382aa8c800e23f2843708b47e77d5e9719aeced50c237185ca732f3 SHA512 9a0d249d3d937eb2ee884d25388528fb2673a87e1af2f762140b26151293573b3b74d965858dd18531fb89097e0c9db852b4a2d8714e1721391e1e33d1a1d7ad
+EBUILD crystal-1.16.0-r1.ebuild 2784 BLAKE2B 62a45ea861c524e0ff6ff337d7eed2f0b455bff91277883944dabae1f96bd9b3fe799bcc87151a0aae852ee1e222ea5b9b88901c3364a6ee5a285d0615b6fb29 SHA512 dd03072ea9a3b5bba967175cf6c997b1007d9e0957950692f187f28f20ae0169486be07414a6e4f61d301b6dd61230ceccb28c574967aacfe574a4c088390159
+EBUILD crystal-1.16.1-r1.ebuild 2784 BLAKE2B 62a45ea861c524e0ff6ff337d7eed2f0b455bff91277883944dabae1f96bd9b3fe799bcc87151a0aae852ee1e222ea5b9b88901c3364a6ee5a285d0615b6fb29 SHA512 dd03072ea9a3b5bba967175cf6c997b1007d9e0957950692f187f28f20ae0169486be07414a6e4f61d301b6dd61230ceccb28c574967aacfe574a4c088390159
+EBUILD crystal-1.16.2-r1.ebuild 2784 BLAKE2B 62a45ea861c524e0ff6ff337d7eed2f0b455bff91277883944dabae1f96bd9b3fe799bcc87151a0aae852ee1e222ea5b9b88901c3364a6ee5a285d0615b6fb29 SHA512 dd03072ea9a3b5bba967175cf6c997b1007d9e0957950692f187f28f20ae0169486be07414a6e4f61d301b6dd61230ceccb28c574967aacfe574a4c088390159
MISC metadata.xml 762 BLAKE2B 591f38c882318a6564501cc61abe6222264b65adeaffaf3b23d959ee86b83bae33eaf99029229705f92070fa539fd6d63d8242afc38475904483a9a0b997effd SHA512 ea223d568a3c336a43b183efc61bd1f1a9d1e5e0e8d963275e0b23ee879551bc7d8aae797b1e2edba49d119ad306692599eb535c5d164ebee0c6721dfeab78dc
diff --git a/dev-lang/crystal/crystal-1.15.1.ebuild b/dev-lang/crystal/crystal-1.15.1-r1.ebuild
index 6b61638ca307..8967275dd0cd 100644
--- a/dev-lang/crystal/crystal-1.15.1.ebuild
+++ b/dev-lang/crystal/crystal-1.15.1-r1.ebuild
@@ -33,6 +33,8 @@ DEPEND="
dev-libs/libatomic_ops:=
dev-libs/libevent:=
dev-libs/libpcre2:=[unicode]
+ dev-libs/libxml2:=
+ dev-libs/libyaml
dev-libs/pcl:=
$(llvm_gen_dep '
llvm-core/llvm:${LLVM_SLOT}=
@@ -44,11 +46,7 @@ DEPEND="
sys-libs/libunwind:=
)
"
-RDEPEND="
- ${DEPEND}
- dev-libs/libxml2
- dev-libs/libyaml
-"
+RDEPEND="${DEPEND}"
PATCHES=(
"${FILESDIR}/${PN}-0.27.0-gentoo-tests-long-unix.patch"
diff --git a/dev-lang/crystal/crystal-1.16.2.ebuild b/dev-lang/crystal/crystal-1.16.0-r1.ebuild
index 573dc999fa39..bb8e6f2132a4 100644
--- a/dev-lang/crystal/crystal-1.16.2.ebuild
+++ b/dev-lang/crystal/crystal-1.16.0-r1.ebuild
@@ -33,6 +33,8 @@ DEPEND="
dev-libs/libatomic_ops:=
dev-libs/libevent:=
dev-libs/libpcre2:=[unicode]
+ dev-libs/libxml2:=
+ dev-libs/libyaml
dev-libs/pcl:=
$(llvm_gen_dep '
llvm-core/llvm:${LLVM_SLOT}=
@@ -44,11 +46,7 @@ DEPEND="
sys-libs/libunwind:=
)
"
-RDEPEND="
- ${DEPEND}
- dev-libs/libxml2
- dev-libs/libyaml
-"
+RDEPEND="${DEPEND}"
PATCHES=(
"${FILESDIR}/${PN}-0.27.0-gentoo-tests-long-unix.patch"
diff --git a/dev-lang/crystal/crystal-1.16.0.ebuild b/dev-lang/crystal/crystal-1.16.1-r1.ebuild
index 573dc999fa39..bb8e6f2132a4 100644
--- a/dev-lang/crystal/crystal-1.16.0.ebuild
+++ b/dev-lang/crystal/crystal-1.16.1-r1.ebuild
@@ -33,6 +33,8 @@ DEPEND="
dev-libs/libatomic_ops:=
dev-libs/libevent:=
dev-libs/libpcre2:=[unicode]
+ dev-libs/libxml2:=
+ dev-libs/libyaml
dev-libs/pcl:=
$(llvm_gen_dep '
llvm-core/llvm:${LLVM_SLOT}=
@@ -44,11 +46,7 @@ DEPEND="
sys-libs/libunwind:=
)
"
-RDEPEND="
- ${DEPEND}
- dev-libs/libxml2
- dev-libs/libyaml
-"
+RDEPEND="${DEPEND}"
PATCHES=(
"${FILESDIR}/${PN}-0.27.0-gentoo-tests-long-unix.patch"
diff --git a/dev-lang/crystal/crystal-1.16.1.ebuild b/dev-lang/crystal/crystal-1.16.2-r1.ebuild
index 573dc999fa39..bb8e6f2132a4 100644
--- a/dev-lang/crystal/crystal-1.16.1.ebuild
+++ b/dev-lang/crystal/crystal-1.16.2-r1.ebuild
@@ -33,6 +33,8 @@ DEPEND="
dev-libs/libatomic_ops:=
dev-libs/libevent:=
dev-libs/libpcre2:=[unicode]
+ dev-libs/libxml2:=
+ dev-libs/libyaml
dev-libs/pcl:=
$(llvm_gen_dep '
llvm-core/llvm:${LLVM_SLOT}=
@@ -44,11 +46,7 @@ DEPEND="
sys-libs/libunwind:=
)
"
-RDEPEND="
- ${DEPEND}
- dev-libs/libxml2
- dev-libs/libyaml
-"
+RDEPEND="${DEPEND}"
PATCHES=(
"${FILESDIR}/${PN}-0.27.0-gentoo-tests-long-unix.patch"
diff --git a/dev-lang/execline/Manifest b/dev-lang/execline/Manifest
index 77ad3fb506b1..8662189a51df 100644
--- a/dev-lang/execline/Manifest
+++ b/dev-lang/execline/Manifest
@@ -1,5 +1,8 @@
+AUX execline-2.9.7.0-pkgconfdir-configure.patch 1038 BLAKE2B aba4540ebf1aba0624d669362765cf3bcdc469045ba4b7d75072ffd918a16c590ffee17d1f5571bfcf48df2c9ef0de081d5d89995d71bda67e859a567f0ff8f8 SHA512 1c861e3af7bd693b1a9f568c433d36113b0fc88167f36311c44d0e5c11efb595210917c2b9c868b8b41b0319e90e3c443e368d97bc174b829bba54ff76c5f032
DIST execline-2.9.6.0.tar.gz 111660 BLAKE2B 42baed36228b1e6a370d6d4c18829be7f517812ce9e3838e5b102d0fe58ac48ecd84f17caef89e9a07b3b149ed9b38b3b00f7eef810c231995c8e5ecbf07a770 SHA512 1c5233b0f17b4c92ab2e9e8700b47c8429ad97962bcb7c83190d0b3251b26584e591d77418eca77e8112cdecd24eec50aaca7da1dbb506120931bbda39f2b7cb
DIST execline-2.9.6.1.tar.gz 111566 BLAKE2B 199fe6ac6a08b48537abd7868db1332b60bff8e2fa19ba697e15a6d8b0d8969908d0740fdfcf4717fbbc1a75d980a6f2844b1015e52afed26ce1eb450d4e48bb SHA512 86e20a63926cc03cb81e07c9cbea9da5d0384436a82b93e331da6b3ced33829baf5adae4286d2c053b21474d41602d53804ff0bc280da60f7bccc64cbe5f601e
+DIST execline-2.9.7.0.tar.gz 116676 BLAKE2B b05268a009a94c4d9cd9aa9b1358465a38039f7ca84a6a607a3f007aacd39c255a7b70b52c73b1720373da09b96d188152a2b1e51493c2bd63c97143490ade75 SHA512 c46aa4954a560610074a5a4f8cecc1512bab05b40739c4dddc74881edb30468f248fc08ca1a461ec66279fa43fa25d130b339790995fb1eeb1612a13dc479ac1
EBUILD execline-2.9.6.0.ebuild 1132 BLAKE2B 8ac47516f9f4d89f44a6b86988a6df1a1f5639868f24f29691a1e6f4f9c7cd1e46520e82f37577d6bf31e81200e70aee08e4cbc6966dd4274772a0e65307dd24 SHA512 97932b7287d2cd30b625425de149bb3ca701e2902637146c90cd6e6ac8251b0e533832b060d93efa5efb66415c0aa5392ddb49a17ddc200e6eab6752663578dc
EBUILD execline-2.9.6.1.ebuild 1140 BLAKE2B 56b8184ffc01ecf9ddd6a1def81871fb4669a64dd42ecf8ab11069df545c494c56adb97dd9221e81f0e7b22db30f6a5bb026d1bf728c7b4d3e553f9bc092d2d7 SHA512 388ac6c69f5385c751afc97b31ebb0095a6149e6bb326727505320756e7510263b0ad8df9f20cf7d3eb89d0d506218bc182cdeb6e8a7ebd96e41b4bbb5d183d6
+EBUILD execline-2.9.7.0.ebuild 1271 BLAKE2B 1c285bd4e1046ebf4b4d789e215462285f783b5beffcb60dbe2d1607e0003cb208a0a1061446cba1dc25f7707d505e39bb14f878a2e1a87841fe0c21446acf21 SHA512 15c3ecaeec689982f2fface4c357905e4419dc8845c0358d6e6640ef24f9370865750487c28a0ae5522768f354cfc65508973882953fb4aa8e19f916ac33b974
MISC metadata.xml 585 BLAKE2B ce0671014512c49b041f6c47002603a15f0f5d7f23c356465fff024506fb261096aa757cc1c707501f5be572cea9d925a25039d1549d31852ffaf9b2f17b5cb3 SHA512 bddd917f615e8ff772889a4da992c9201f6e32982374ffa29e7a8c3fce8d7a4f409c3b3ffe8c989e7802c2b321d6cfc5bb37017aa75dc38e3026c1de48bb0090
diff --git a/dev-lang/execline/execline-2.9.7.0.ebuild b/dev-lang/execline/execline-2.9.7.0.ebuild
new file mode 100644
index 000000000000..5c0ab6ee3604
--- /dev/null
+++ b/dev-lang/execline/execline-2.9.7.0.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit optfeature toolchain-funcs
+
+DESCRIPTION="A non-interactive scripting language"
+HOMEPAGE="https://www.skarnet.org/software/execline/"
+SRC_URI="https://www.skarnet.org/software/${PN}/${P}.tar.gz"
+
+LICENSE="ISC"
+SLOT="0/$(ver_cut 1-2).4"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~x86"
+
+RDEPEND=">=dev-libs/skalibs-2.14.0.0:="
+DEPEND="${RDEPEND}"
+
+HTML_DOCS=( doc/. )
+
+PATCHES=(
+ "${FILESDIR}/${P}-pkgconfdir-configure.patch"
+)
+
+src_prepare() {
+ default
+
+ # Avoid QA warning for LDFLAGS addition
+ sed -i -e 's/.*-Wl,--hash-style=both$/:/' configure || die
+
+ sed -i -e '/AR := /d' -e '/RANLIB := /d' Makefile || die
+}
+
+src_configure() {
+ tc-export AR CC RANLIB
+
+ local myconf=(
+ --bindir=/bin
+ --dynlibdir="/$(get_libdir)"
+ --libdir="/usr/$(get_libdir)/${PN}"
+ --with-dynlib="/$(get_libdir)"
+ --with-lib="/usr/$(get_libdir)/skalibs"
+ --with-sysdeps="/usr/$(get_libdir)/skalibs"
+
+ --enable-pkgconfig
+ --pkgconfdir="/usr/$(get_libdir)/pkgconfig"
+
+ --enable-shared
+ --disable-allstatic
+ --disable-static
+ --disable-static-libc
+ )
+
+ econf "${myconf[@]}"
+}
+
+pkg_postinst() {
+ optfeature "man pages" app-doc/execline-man-pages
+}
diff --git a/dev-lang/execline/files/execline-2.9.7.0-pkgconfdir-configure.patch b/dev-lang/execline/files/execline-2.9.7.0-pkgconfdir-configure.patch
new file mode 100644
index 000000000000..a67244c9976b
--- /dev/null
+++ b/dev-lang/execline/files/execline-2.9.7.0-pkgconfdir-configure.patch
@@ -0,0 +1,26 @@
+From c7c284ebcaa969239a10889a121e2b21f94da444 Mon Sep 17 00:00:00 2001
+From: Laurent Bercot <ska-skaware@skarnet.org>
+Date: Mon, 5 May 2025 14:13:55 +0000
+Subject: [PATCH] Fix configure
+
+Signed-off-by: Laurent Bercot <ska@appnovation.com>
+---
+ configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure b/configure
+index 976f62f..eb16358 100755
+--- a/configure
++++ b/configure
+@@ -187,7 +187,7 @@ for arg ; do
+ --libdir=*) libdir=${arg#*=} ;;
+ --includedir=*) includedir=${arg#*=} ;;
+ --sysconfdir=*) sysconfdir=${arg#*=} ;;
+- --pkgconfigdir=*) pkgconfigdir=${arg#*=} ;;
++ --pkgconfdir=*) pkgconfdir=${arg#*=} ;;
+ --with-sysdeps=*) sysdeps=${arg#*=} manualsysdeps=true ;;
+ --with-include=*) var=${arg#*=} ; stripdir var ; addincpath="$addincpath -I$var" ; depincpath="${depincpath}${depincpath:+ }-I$var" ;;
+ --with-lib=*) var=${arg#*=} ; stripdir var ; addlibspath="$addlibspath -L$var" ; deplibpath="${deplibpath}${deplibpath:+ }-L$var" ; vpaths="$vpaths $var" ;;
+--
+2.48.1
+
diff --git a/dev-lang/go/Manifest b/dev-lang/go/Manifest
index cb8ad4132355..c412aeb960b8 100644
--- a/dev-lang/go/Manifest
+++ b/dev-lang/go/Manifest
@@ -6,7 +6,7 @@ AUX go-sets.conf 256 BLAKE2B 670afd72a2fa961e2b3882ac48d10e9d047af7a68f47bc8c898
DIST go1.23.8.src.tar.gz 28182772 BLAKE2B 568b9fcc7ed12cb19e10b458fc1890a5977c97660657e9eb7c171aa16382f6790a78cb87df99ed72ec18d5ff1654ee4d15a4d603332ad0812ee97f6500866198 SHA512 8e352a01484c168894026080ee4501180e327d734fb3d892ab17daac193964fcd5fd90033c9cf86d6ffe8b7e4da64bda83ba4501a6c05919bcefbe9e2467c771
DIST go1.24.2.src.tar.gz 30787666 BLAKE2B bb5f998a87e6527def304347b854c4addb0860a03da82e711f60e2af460bd43c36273b25126c643a679ae22fca226e6a4fc5ba55967d21965ffdc8f564781e35 SHA512 6366a32f6678e7908b138f62dafeed96f7144b3b93505e75fba374b33727da8b1d087c1f979f493382b319758ebfcbeb30e9d7dadcb2923b628c8abe7db41c6f
EBUILD go-1.23.8.ebuild 4219 BLAKE2B 5d42a222a7aab58bba44ba7504c1785260547e0a61adbd7801fef84a69308929d2b90fe941993ef6b6b4df6df7f2e2d2b532e6749e7b32a999f760180f4b72c8 SHA512 f78e742f821b52dcff9d0edd6dd27629b0d691a868b0d35eac4b46025163b6d33174554d730999182ae3721ae45ef97fa18709b05203bb005b7e7ec5711a33d2
-EBUILD go-1.24.2-r2.ebuild 3408 BLAKE2B bb51202276cd4298e633febec537ce191521677364eb8a46c03c697707dbe064b16d3623fe84c928d8120503d787136a120ede24845a6d099b09fec4e83803f0 SHA512 c7317d1dea49dccd4d2d31e4fc68ade5e9e4a5cbd9dfea03d3b90c56bc317ee48762bc31a527e1ae1f6d73251141e9767d399931e8753acb15be4912592b5179
+EBUILD go-1.24.2-r3.ebuild 3462 BLAKE2B 30262a58662f065b5b274537561844be7afebfddcd7ebfc5d2bd3710ce5f02fee651d20b0c111142c55a0b65d0714d77ea140ce83d9afa64b0bb785d7d074401 SHA512 c5fb2e8c74bd1470f6688bf34b65640451616e18e40b5cccc1635ab96196cb22062646fff525af08b092a2731bd4c551a7918872805f05019b6a93b121e624c2
EBUILD go-1.24.2.ebuild 3401 BLAKE2B 2ea55f57bad1c6970c494fe110f1d5c57af9db310d3d4071763f91594cae0ae838627d1e691b5ec8f3087c3a790f91e946a8ca299e0d8748fcc10ec7e5c3696e SHA512 7ea5b4533b6a7a46f26d8c447c1a8afd47efaaa263fe37c26684cb9fe1880f077e1e4562de05c85686769913568ed71b3e786e54170e184dad9aa89dbb8f4e79
EBUILD go-9999.ebuild 3325 BLAKE2B 44e91a7a333928cf9776903747221b227951d35cafee81b4df3ce8cc3fc847b21503cd34b339cdade49de5a4c810aee5a2f00698542615a42efb189b9bf26208 SHA512 f7cb4aa003edf37bfc89ebd3269e16049a1a33345d2aa779a32029c6c7fbdff3e6d051e499676dbaee0eb061fccc27de9d5e5413b8ffb676ee6a8f237955d858
MISC metadata.xml 589 BLAKE2B 341e4c0e91d73ca668c1795035e1223eed60f85c724afd989ef1f8fb69649f7f6eaaf8a5228f6c8f587ffcc40a438c47d332fbe6866839f5a0829872a983f642 SHA512 fe58ddddfbd4d0d060516cb035592a80c0f48e125bb59c95d3c6fac0c182271e2a9ec9bd055b9cc8e6cb8c449e6c483bff4a23c362f532c24255febfdefc273a
diff --git a/dev-lang/go/go-1.24.2-r2.ebuild b/dev-lang/go/go-1.24.2-r3.ebuild
index be97c0565775..ebf8aa30d021 100644
--- a/dev-lang/go/go-1.24.2-r2.ebuild
+++ b/dev-lang/go/go-1.24.2-r3.ebuild
@@ -20,7 +20,7 @@ case ${PV} in
*)
SRC_URI="https://storage.googleapis.com/golang/go${MY_PV}.src.tar.gz "
S="${WORKDIR}"/go
- KEYWORDS="-* ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~s390 ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
+ KEYWORDS="-* ~amd64 arm arm64 ~loong ~mips ppc64 ~riscv ~s390 x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
;;
esac
@@ -28,7 +28,8 @@ DESCRIPTION="A concurrent garbage collected and typesafe programming language"
HOMEPAGE="https://go.dev"
LICENSE="BSD"
-SLOT="0/${PV}"
+# XXX: Drop the .1 after 1.24.2 (added for bug #955451)
+SLOT="0/${PV}.1"
IUSE="cpu_flags_x86_sse2"
BDEPEND="|| (
diff --git a/dev-lang/php/Manifest b/dev-lang/php/Manifest
index 9259162f5357..16e3caca0f13 100644
--- a/dev-lang/php/Manifest
+++ b/dev-lang/php/Manifest
@@ -12,8 +12,8 @@ DIST php-8.2.24.tar.xz 12110000 BLAKE2B 0f5c47350b8914f87cfbee932ea2e24d29635a0b
DIST php-8.2.28.tar.xz 12147756 BLAKE2B eb2c5ad888f98b217d553efaa5f9832c791d7dcb73e90c1f0a45b536f3cbfd8f76c0606f993ca39492e43f587f5c0be1f1adac80c3ae7281527b8b381176f3bb SHA512 af2a4f43da756a78f762dbd2b9e589e52864c7069fd55a6a2b900e32a08728a7d69b80577dc79b5d4a86993846a2232b809b75ae415344935610a3934b10c6ba
DIST php-8.3.20.tar.xz 12549020 BLAKE2B b00cb60ef5583ecbdf9ae9f51d01f561d446a0462540cd0adb32725265bff1bf3bd9e8162acd4a843ab76f7021ad9fa77830a77edb458b768a12616e03ca7507 SHA512 2641a721ca0cbcb05200217ba38c7d0707b6294c355e109486180beccf0f5fa4822f92caab479a473bfccf93558a5bc34d42ef271355022701d62e2d11afeff9
DIST php-8.4.6.tar.xz 13612892 BLAKE2B 3c94b0ac29877d9cc1573be40fdd1c582fcb4505c481ba1ad58c3b3963bf458951dd5d18f55ca504a9a2bb3b74180deb9b9c6ae22ba59b18df4e2e52dc8c9d0d SHA512 aa39d97f7ffcc851bdfe674e9cccdca6e55cb4938584c1dc301746544364efb541bec242372a90ad370d802f717c8dff6054450a311a6fceb07073c922c04247
-EBUILD php-8.2.24.ebuild 26595 BLAKE2B 62bff19d9e738b5e8da960d6fc8d41ff35723356017ef048e7a45d54e07b62a43dcd632837f3917654e5600097fe2c50d2247137c693bf20627773fc6054fb36 SHA512 3df0a5705098463bedd5362af4b4ec1c06797932c1c3ad666fd6be115c601409ec3cdec75342e7da520966a17e3a4db30f975a5dbc6ff2d762a0234e639720ff
-EBUILD php-8.2.28.ebuild 26821 BLAKE2B 99ae628dedeab676fb8051827dfa4365c91e915c121934d05394894233bb9d35dfc356a30d99d8a560801a2453a0c30be5f194eaa60ebc8fb6fea6c7b32d6b71 SHA512 9232fc20d0a1385930153402ab9be846038df04f09ff97c5c9ec41735b8024cce65ae66e7fd1bff184c275931bbb7f0e3b0fe6d8af89005aa07792151a5910af
-EBUILD php-8.3.20.ebuild 24187 BLAKE2B 7e6e798616a5ee5bcba97f443ef8ec4b9921af7d736be548d82ce9cf607eedda624f66bd170bdeebacae4a83abdedd03522eb2590b0c5570cc92b68524c617f9 SHA512 593e286b05cf3db4d673f7b90e6743fe96144ec9b61a9d36141af41f4a65e1b1006a84722ac1be258e5367f38256c2d5b652308f159e7644e6ca688e7cbb5edf
-EBUILD php-8.4.6.ebuild 23340 BLAKE2B 83bcb5174a807d8bdac95ce4a35f2db23d7a770b052d4619b4c465c01f0eee64d29fb6b94d9df9ec592c9a30ddd14f2bd92ade122c805c57c0942aed16cf31bd SHA512 334fa3297bc87e7fe220e33e7474f9093a41e27bfc2e706ec0783b88af71de27af384276d15ee625adf2562f72a325bc76953abe958e574053dd193062071d77
+EBUILD php-8.2.24-r1.ebuild 26597 BLAKE2B e018e728d1f8bd14ebc1b8a6357497d60cb06f246877adcb22f7ed340f33a668f42a7bd7fdd874b56065e7a6a2be240e2650d41c81a0fe4d0706fdcaaf32da53 SHA512 cf4aaf47a98965aa95cd6b5c1328594e7f1657ff897843ae5927ec274922e653b1b8eca35d6132c604187f5246bd0458f22ae3a7432449f35be29634611a05f1
+EBUILD php-8.2.28-r1.ebuild 26823 BLAKE2B 17aa6d8ae58122803335c0fa3f886748bdca52077d9067f2a27a78c5ca2e3ab5b016b24aef4261b0c9f4da8fd7925bc7eaafe4baf2b29c58c16eb4f0377c6558 SHA512 b933e07fed020c33a855023201c84e891ebb8a0a028299e255afd668b4e61b0dad6c69dff8c452c9a9dcd1d3055fd00d90b6bd9e48cbda1d0b23b86b7e587291
+EBUILD php-8.3.20-r1.ebuild 24189 BLAKE2B cfcd7788ae79984f313b2e78a62423f2d23af0e947bee4b83f44878418eb5dd9b04906eaf5c6584940f92ed6cb152dd090c4ebcaa2839b602546eed66fbdf429 SHA512 f1b1ff3c155b18a62ef23769f5e00e7a3c3c23a354b7c94dff7a8e6929a482c3df8d13c9e608ad23d104555ee6827d0e3b3ba2af6e4265f8563e186f94a73b13
+EBUILD php-8.4.6-r1.ebuild 23342 BLAKE2B b4638698796b2e83db50a6e0d6c576637524fea4bdaf823f5f8b853e4cbf0906284c19748648a851ed2e0ad8140fc40d038445605559d39de314fa0ff1e4917c SHA512 e3787949968f56023fbffa24e44a7d6a96b3bcff31f1b916706b528dd1bb8b33bccacd0ec63f43423abe589bc8c1e8bb74ba2a3920952c86dbda885529579ed9
MISC metadata.xml 4085 BLAKE2B a829b370fa595e7a80e957f119cd35c6e9003cf8ad7b3b99a777d3bf54c2daef784ac95f4b4f7caa1b79864a171b101dc10e20a41b29a82cc32ca017001f8e86 SHA512 f3ed63931e0e7c863c0e42551fc5386b92b9b19e955dc74f494788d1ad7a0cf63cd51d0febc014fcfb9a6d5ccec1dc3b73c47ef4a8fd11167ca42bbb48983664
diff --git a/dev-lang/php/php-8.2.24.ebuild b/dev-lang/php/php-8.2.24-r1.ebuild
index 262be99fb415..00528d03165c 100644
--- a/dev-lang/php/php-8.2.24.ebuild
+++ b/dev-lang/php/php-8.2.24-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -120,7 +120,7 @@ COMMON_DEPEND="
unicode? ( dev-libs/oniguruma:= )
valgrind? ( dev-debug/valgrind )
webp? ( media-libs/libwebp:0= )
- xml? ( >=dev-libs/libxml2-2.9.0 )
+ xml? ( >=dev-libs/libxml2-2.9.0:= )
xpm? ( x11-libs/libXpm )
xslt? ( dev-libs/libxslt )
zip? ( >=dev-libs/libzip-1.2.0:= )
diff --git a/dev-lang/php/php-8.2.28.ebuild b/dev-lang/php/php-8.2.28-r1.ebuild
index 8acaf688b344..8a745064089d 100644
--- a/dev-lang/php/php-8.2.28.ebuild
+++ b/dev-lang/php/php-8.2.28-r1.ebuild
@@ -118,7 +118,7 @@ COMMON_DEPEND="
unicode? ( dev-libs/oniguruma:= )
valgrind? ( dev-debug/valgrind )
webp? ( media-libs/libwebp:0= )
- xml? ( >=dev-libs/libxml2-2.9.0 )
+ xml? ( >=dev-libs/libxml2-2.9.0:= )
xpm? ( x11-libs/libXpm )
xslt? ( dev-libs/libxslt )
zip? ( >=dev-libs/libzip-1.2.0:= )
diff --git a/dev-lang/php/php-8.3.20.ebuild b/dev-lang/php/php-8.3.20-r1.ebuild
index d6a9b1fa3259..b09660213239 100644
--- a/dev-lang/php/php-8.3.20.ebuild
+++ b/dev-lang/php/php-8.3.20-r1.ebuild
@@ -110,7 +110,7 @@ COMMON_DEPEND="
truetype? ( media-libs/freetype )
unicode? ( dev-libs/oniguruma:= )
valgrind? ( dev-debug/valgrind )
- xml? ( >=dev-libs/libxml2-2.12.5 )
+ xml? ( >=dev-libs/libxml2-2.12.5:= )
xslt? ( dev-libs/libxslt )
zip? ( dev-libs/libzip:= )
zlib? ( sys-libs/zlib:0= )
diff --git a/dev-lang/php/php-8.4.6.ebuild b/dev-lang/php/php-8.4.6-r1.ebuild
index 2afe7133ef03..e0cd4b0055a3 100644
--- a/dev-lang/php/php-8.4.6.ebuild
+++ b/dev-lang/php/php-8.4.6-r1.ebuild
@@ -108,7 +108,7 @@ COMMON_DEPEND="
truetype? ( media-libs/freetype )
unicode? ( dev-libs/oniguruma:= )
valgrind? ( dev-debug/valgrind )
- xml? ( >=dev-libs/libxml2-2.12.5 )
+ xml? ( >=dev-libs/libxml2-2.12.5:= )
xslt? ( dev-libs/libxslt )
zip? ( dev-libs/libzip:= )
zlib? ( sys-libs/zlib:0= )
diff --git a/dev-lang/rust-bin/Manifest b/dev-lang/rust-bin/Manifest
index 913e158dced0..22b77fb96b79 100644
--- a/dev-lang/rust-bin/Manifest
+++ b/dev-lang/rust-bin/Manifest
@@ -581,6 +581,34 @@ DIST rust-1.87.0_beta20250420-x86_64-unknown-linux-gnu.tar.xz 198552720 BLAKE2B
DIST rust-1.87.0_beta20250420-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 45a0d818111946afc5e6544deea84d649175a0059f6a4574b7d7d2095ff008285ad09945f7e79b02331b13627da51cdea535cf80e4454248572a1fe5524489f2 SHA512 47d46d2c48cbe2a0b72278bf4e60483b889d83371ee35eb568809cd50d1e5058eee62f416e1ba3871016e0a2957be57a3716882eae41eb6c384510f4e523e3af
DIST rust-1.87.0_beta20250420-x86_64-unknown-linux-musl.tar.xz 293222552 BLAKE2B 167b847bb5f23de2ab1b918976c7abe8cfa9d98b51ffad52aa208d986c9e409f37f72114280dd61a255496502d92d22e0d26c233c4034214d5e9f1565ecd32f1 SHA512 535e5320e11e70b86213146803994b7bf15475c24aa2822cf9f193586b01e8d77de509d9ba08cd6892f43b2caf1c22c657c4a1949582bc10283a47fc014de2d6
DIST rust-1.87.0_beta20250420-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B e25674a14e3efdfd95fe2269c9848bd9c78a9f7819d35a6fa54abc50478250eaf1207249719d92b9d8fa104943a3129ff3045cd4e7039febf94ad483098796fd SHA512 f493ca8b9604350e93deec6b698086662b82b8b774d66b7090815755657111255710b04105bff9f72d9d83de0268cb34df4db9c184f1066a364d5c44dda3331f
+DIST rust-1.87.0_beta20250430-aarch64-unknown-linux-gnu.tar.xz 167147580 BLAKE2B 2ec0c7bff468066cfcb8541446db8b3889b0c992941f7d68d5dc8df91fdb8e1e1f42ca057923f258bfd0b18ef83d2abbb554c3d49ef3ba82556049bce58dd0c2 SHA512 24e6a8ec7e3bad6d43d3dd099155face0d394318f6b6316d7e8154461e7e09580e5a92dc558ab02dbb2a8233cf2e60371742c49c31430fb6f1769d948dd34713
+DIST rust-1.87.0_beta20250430-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 64910eba90333c5f624c30c72be35b9ff496efd35ffd5fb4360dfdfe7215420ff349c7c027754ec7cd320d1939c98ff0961f8c806a4b8a05d16cd308195f54ef SHA512 6a92e0b4b1cc02c213c22f6edf63d329ece491cf58b61d63592465acd7fdacc7d1a0e276a53518053e55133810eb1a0b5d2753b2bf1125c55b547cd6551c681e
+DIST rust-1.87.0_beta20250430-aarch64-unknown-linux-musl.tar.xz 244234060 BLAKE2B 1679d52281225052cff41fba99336265985a69f4b09c11d7d4920bb5c9f8ca9fd299ef7d62d50a9dfb5609cea0d8113aa7e0ec51efe509fa0d14f710589e1024 SHA512 3c69f7096f2506fe4b794c0ad05815b8a78074b07ce96f6fa7ed8e8df6a792e9744671c631dd486f7aa8f29c539f01503a6d2a4c031cf4265583463ae4f24060
+DIST rust-1.87.0_beta20250430-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B d1f94c49fc4e5d664eb8b3b0cb532bc6e8d8260f841f294d6b5cdd8800dbd1fbd7e8058f29f8acfaaf079ffe93813870825b498c9747eb58a35e35161f82f12e SHA512 9e394188c89a7e5a63a909976e413d699f29a81c21c53fa140929c788050bee497c2565abb8836b884bec926f7bc9e59b7be5e6bdf7a8c5381171c724c3ff700
+DIST rust-1.87.0_beta20250430-arm-unknown-linux-gnueabi.tar.xz 229441924 BLAKE2B 21b58de7968db77c8f24afe7967dd659a5c1de07496ad8bba0f82b6acecdbd8bac91a0bc5c864d2cb0fe7176e3db3bdf0d16d02a3ad077cdb4668e0f18310a26 SHA512 e19b4067a9feffa70f3f9c34c8da1a83ca57a652225250f8c84a83a1b890d85d3e73b9d34f1428c2a227af231414203e1121642afb546a8c258f07ae3d229ae1
+DIST rust-1.87.0_beta20250430-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B e1c4c59e1502335dbe3aa50037e1db033b05a478193b6554f1f9b6b7e982885fd219c4a6274bb2bbd79cfadbefa85fe1f66f6f61650b3b1127760c0839d2918a SHA512 b3ad2a9441eb45c191568c7e395e60f556feb2be99b70e414e67d9282c0e319a3320ad9c26a89355fa190bd0862ef3c0c61b877f1aabbb1fbe406c73bc8d3818
+DIST rust-1.87.0_beta20250430-arm-unknown-linux-gnueabihf.tar.xz 229878332 BLAKE2B 6ef869de529838361bee3b3d38f6e3514a11330fffdaeece39834ed4b7184ab6d7381e7fccc4973f14584983c3e49b4ee32784d6c63c4ce11ac0d405fc294e7e SHA512 febca06c04b7e7a6448cc9a939ab9ad9fa638c42b5c7916a1c01bf5331099806dc707d1a5cb64dca8afe65596eb0fca834ed2cd3e9b4a6084b09f1b868c44f92
+DIST rust-1.87.0_beta20250430-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 9d9f44ae951e36da32894de8501ed313bf2d37033e83068b7d2876107c9561d79dc608c6b508224c30c12d4557f46babd9198f1c6b7d657d99aab6a9d0747e6a SHA512 1e46482639d61c5e1b26d2e388cde801b102189aed1ff2c19ca04d93062e3e37792f239cdde2488c97ea793d594e610567d629e47466b00e859e4c63229a2c42
+DIST rust-1.87.0_beta20250430-armv7-unknown-linux-gnueabihf.tar.xz 235550796 BLAKE2B d7820490576cdc9c99a120e16c018a29f97d4f6929af5c1b37e0e2619f01f1ab91c1bace836168062f164b5da4488cb02248e4df2d497b451b754e941c2f46cd SHA512 54c5b5a9f335965a01453f029b40de7ef9dda703a94d18176526ecd6677acdded12fab18c692489868f5f766a3bccdf26fddbeca7e22a161a59726edb6c4d7c2
+DIST rust-1.87.0_beta20250430-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 0ea8ed089f21dc07a58a6954ddb5ff602a2d5a87d7445ba962151f288d261545417974a66a8d44f8a4953b0b3a0c78385f73b1e199732e2b8cdb86a76314bd73 SHA512 1f94dfb40f307c9063fd4ba48e06eb7e67db8ac87b4a91dd5259db555f9be26637dba98bfa1b0a7d0e3c9c21322d67e9728e34e1af6332c26a5b4d6fb8696b12
+DIST rust-1.87.0_beta20250430-i686-unknown-linux-gnu.tar.xz 263614824 BLAKE2B afbd536a1ba02bdab43531d4819174e618660ab4f0add25cf145c03d8b48ea5e01ebf5148476ccfebdf6f80761f8aa62edf6313775ee751007921b499299fcc4 SHA512 9fe21def3ff36d4415f859cc3cdf2b975df2dfc5dd8656be18c67d0e2ac7136d8906fa0c4d3dd30f5726ef6cbd8a58338dd4d10ea97e09884a4df387a2163997
+DIST rust-1.87.0_beta20250430-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 2b36afb99494f3e68b147da9c72b318515672480d262f38ca96692033de835647d5e99f3deed7ece247efb82b13ed913a8bcda1e4e64a5704356b40ed8b6fef8 SHA512 f1cf97043941981a19624a579b4700e320fc5f029f19fae900a3d6225d6f92d7951f5afb90356e681b585ae03ac1f923ff4d82c5e5d5c3a693684beca77592a7
+DIST rust-1.87.0_beta20250430-loongarch64-unknown-linux-gnu.tar.xz 261199080 BLAKE2B 1d9f5258a232c11f074b48874c11c54f4b6d7fcafb25203300609bcd52668455f8380ef49a17f607d06d050f7152f282778067bd13eda0e7ffa6a5312b26fd47 SHA512 90bb1bbaa8438e713e5f47a28da362ab5f9c685e4b62a4247c5451fb7a32d5a9fa7a46334c49abd905e2148831263226bdbebd1f57867c3538f4b48ff6988952
+DIST rust-1.87.0_beta20250430-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d3ae6b7e2def424f3c6ccbffdf442bb90c8dd7ec3ba193196c29fecd8f3ce6ad50b55e0a766937c1e63d75d62ebb5a2f1c55fed3817bf4aedaa86fa2fd7a3efc SHA512 a8ac9fd9d4b23af73b36048ec90e37dd2c090ed8107a55f2fc47134dc542334a1037674de994c5a15291696bc272481d5ca38d49a317143926453bcadb59145c
+DIST rust-1.87.0_beta20250430-powerpc-unknown-linux-gnu.tar.xz 255715968 BLAKE2B 9286b725d3d6dc07a5dce972f069d908d08af2680f7fd2986373d2e7abdb4bfaf630303793b08d648a4899adc5f2794d46b2ac1100d822c1f81740c60b32ae18 SHA512 dc87cd8e4ea9f15e3fad80ad26adafbadf29f7b3c9424640559d5f8cd6314d59aaafce189e0b036cf9a8acb071e5b1274462710eb3250e7db01020397e924d7b
+DIST rust-1.87.0_beta20250430-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 0830fbe1671733020d79d4b7ede135a88f8448ff0e90f17c8019b7e1e55e49f1276c8dfec80598cc48b15cffef4e863dbadf00dd1a636d90b1dfd2233c85c35e SHA512 9b2e0915384a4f0e3314d520aad896ddbf159fe173a4342bb9c16eec15e373177bb07b2cd6270596bbd373d46ee7fec438f7f5421fe86bba0fc022eaa6eaea34
+DIST rust-1.87.0_beta20250430-powerpc64-unknown-linux-gnu.tar.xz 255890928 BLAKE2B a133c38bb5f9dbac8d83bcb4be95b347b5c906f61f8ffe586383748b82d55709dd5f2d18bf364688ff85972cf7112b3a3c14b95d3ce05eabc07cafb17bc89506 SHA512 33d44e20d9a0d0af2225b6c64177e8bb82f6eb2af601f4fc1028413c158d00ba13ff19b0fe9155a4d3820dc9f773d8e298cc627804a6082eb708e680cd36824c
+DIST rust-1.87.0_beta20250430-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B fc5990ab276c136a32309898ba4b90598cd94168c2bb596f3f7794b9ce015b3c1bc4b4b011bb03161cc6a41df8fdb9733655852ad6fb3f04df4b61d6a970f391 SHA512 f80a43d76b85aa510bce8ec64d5960c57dfa7faec3a3d7d79a27253db7176e7b9f1b0dfb63aa062d6c7b8910f12500cfc3fcb362ae4c8106c14bc336aec39eae
+DIST rust-1.87.0_beta20250430-powerpc64le-unknown-linux-gnu.tar.xz 271446928 BLAKE2B 3f4ecf61f439cc17564d9df55c550fdd40fff73728d897783af1d7254c372dfc330a0fd347d55563c07f5aea1bd60717876550f6aa260222ac347dd892f44e8e SHA512 ce662c8db1479f7f1d3a497974d0d7dd8575cbd34e51d55350d3ca0eca13d85a0566a9ea3d61970fcf81dcb2e40f690fd1a9aac81d715f8dff9e4024a796ef28
+DIST rust-1.87.0_beta20250430-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B a81b1fd6118d58b52b3ad790db2b9cd444ed007cc9b9bff96f44b04b6adaedf2e788d84d145c9ec31639aa2ae2e61b2f505274aa00bcfe673288e42ebc489cf9 SHA512 abc90d739d8f2b85e3929dec2b0edfe2566b0154a7111dbf89a4111cfa7b863ce4c6058de402e1c33667792051120b40efc4995145a6b5d27493cf2437c99873
+DIST rust-1.87.0_beta20250430-riscv64gc-unknown-linux-gnu.tar.xz 250452368 BLAKE2B aeb063f9a7e2c2334f8f00a84362f6de67dfbc632ab498465603ce29dab4a7d1d63ba361f1e2f696bf9609272dac3507e979546358694eedaf83db7220c49d78 SHA512 5b63d6f3d9a9cb6dee0e93eed4de407bc9b5cb099006e74ca37334bd135441fd8f4dff8ed1b2b981a3a9b1857ef7610826c96f1fad7222d242b259f5f3e0d58a
+DIST rust-1.87.0_beta20250430-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B ad7de23d30dc3c1ce452682e473fc697f8b6b0d75a77c83a2a74631d4c5737e19ea3cd5b9f6928bbda65e80cbe968461b60e9fc80085a64e2397271c5a01dbf7 SHA512 c8dcba3349a3ed4edb5adfc6b814c1b11280557768bdbd414b823b4fcd6cd1851b29092e03677a80d0757e5790e584ccc0feaba3a3306a3e064dc543109e9a5b
+DIST rust-1.87.0_beta20250430-s390x-unknown-linux-gnu.tar.xz 240130080 BLAKE2B 242119b30483591e791a6a2254c1f1c296053918c7c4b7892b3d5a1191b5c71f41905c7ad1f25fc1f389da2801f897ce62915dc0cbd9f2638d339340efb2674b SHA512 a80e8b1b1f158d90f1869ec7f40c53037ef7b2cf55b48bfaf542ddad6d5fb3ea60197a09945efa90026fab6d7f4d8705e281b83b88ac1161a4f7375efa637d56
+DIST rust-1.87.0_beta20250430-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 4cb889b42ee0a539fcc016ebb7a4a78c1cced09fe491b0957c69fba4d77b790d0978c5fdd5cdf3fcb8ad59cd0b6a7a36a385baddc99b8f30da643099a4ddfc3b SHA512 9c01c300c5f30a77b51a775cba44084e7ddc1991230e70878f574274e3cbd970b2166c7f4c11e7dc181b99b7d8dd67ee3ad5e10d97b57c8a823e14cf97b0f326
+DIST rust-1.87.0_beta20250430-x86_64-unknown-linux-gnu.tar.xz 198597356 BLAKE2B 2a0fb1356e7eecc7e955351d98614c81b290321af5d6d16b4bfdf080b350123fd0abe8ae84b7eb46af0dfdc204ec584e78a723f5bc50b53dd561aaecb1474cbc SHA512 efcf10a2e4d8738b7eb6e88a0b2a3cb91599a146093f091839884614ede03e4be0b3c8fa111c9e221af6dd1bee3a99676c1d3fb70db8dd4360ec89a0c78098cd
+DIST rust-1.87.0_beta20250430-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 731e7e8ffceee0ca02d0ff18d424218dd4171976658e6aefce924a11d1673a188bbf229770ece27660d2116c1325eda719a46b6dfa1f66d7e85ad03647f8a2ce SHA512 82fef82947875aef78b0def48e6bfc64160b65bf833832d5520cbfe61ae7459142e85f596d12c3699b1c65e45bcf9fcf01603764be4742846b002aefb3873f91
+DIST rust-1.87.0_beta20250430-x86_64-unknown-linux-musl.tar.xz 293260544 BLAKE2B 46a12a9cf153bb2c24fe80f2ed1f6f0228ef18aa80009c5522a131ba27af72e492d4157f4d3f4de61b27c0fcc475d0bcc09685c02212bab89078996c5b6557f0 SHA512 dafe582800d4f9b6e1f699713642429b32797baad80614d8bfe8142943d6ac899b72734fb2e502b68b6dd4d8618bae359a62e60d1880ec5b51693cca636ec679
+DIST rust-1.87.0_beta20250430-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B d64405eb306408924b9b606494be3c34f5daf8d99fabcd36ee992e314df449f519e4bf35284b791db9080806999a7341c603bf3e452b6539080aefc491318b61 SHA512 e356ab9e5d3e55a0fd9c896db4401a4a0306e4d86aae06f01bb9f79e9df4ef25bdf3d41d767a057271d8d8c8d96fd102a3c35fcbac1aa0987cb79d4a99439ca1
DIST rust-src-1.71.1.tar.xz 2460244 BLAKE2B e3a5b5bfb808310f96e760aab55310c7a790fa551d248c9c5dbb407e0a80653563d8df73a9e0973aa63d3286aad6c755b78098dd8db2dc1a2ed3cadb926b40e1 SHA512 659cc46e1ece2ddbcf5ab748bae48843bd36353cc633b59e4ac062d843af66919e8d5c39ccb72ebdbf94a0e26a8056ade6bd1c8fe9a936469bd405122a8ae35d
DIST rust-src-1.74.1.tar.xz 2544036 BLAKE2B d95431b69f102782f51878ff73ce8802cac6dab7909497c3231d1c479b95dc2a618cc6efd8bac9c6bd59a2b10dc6be05199f1e1bd74e45cc640ee52352c29268 SHA512 11467d0936193c5a5be8c2eba1aefe2b7028af48494698863de2c4057d68ce33dcee1fc66dc2d68b1d32f0202ce49e9b906727849de8f8d904dd07930e76d5a4
DIST rust-src-1.75.0.tar.xz 2570256 BLAKE2B 9db7ccff07ffe6991233e9f530321fd6ba48c561dcf1226537afa70c7d045421d8e83c5300b0866ec6fccfaae96dd67b9f204e9e0e12108c0c766d467cd78909 SHA512 e7565cea2f1658a05237a698e38880df2544319b41b6d8b0805db5f1f94fd3bb4f986967d0440fcdfe3a135e33246f3c747665b964f57ff5942f56133af78cdd
@@ -598,6 +626,7 @@ DIST rust-src-1.85.0.tar.xz 3036988 BLAKE2B b7281b23eef60cf052e1641a29915c02c590
DIST rust-src-1.85.1.tar.xz 3036412 BLAKE2B f137ffcebd2d231d8b3dc5c9072f6afe39a071bc9608ac468bca364fafaa9c277b91e40da870a083c802cc13b9b876a548d7fa8ae67ad9552321a7412b7d8cd8 SHA512 d230cbb1daae3e2f5168abef94c5b99fb118c34a980f018d5df3e43f6ead4e0a17d6ea29bcfbcd0fb745e215f7a4d0282a99a714dba77b98a16254bb27c2d2ad
DIST rust-src-1.86.0.tar.xz 3053544 BLAKE2B 2d1d8a4be4f9dc9355ce9a2d1599e0a57c5d1cb32f7b2eb413f6009dbce7d63db2533dc038cf50f5277a2d7bf4434f2076632c12a6fd33335ccf3a9f2ab685d1 SHA512 2818d94412bb0766ce53383932cd8ce96275a8e923f916c4bf7116fbcb7c2053cfb9714667add1a9d50b18366c973ba3ab4fe55d49c8abc8cc57656635c59f63
DIST rust-src-1.87.0_beta20250420.tar.xz 3118744 BLAKE2B 44c32b7b91c1b8440eaa64ec22422775fcc47581b0620bb51fcf738fa9e73ee938c40df578885db095cd4b442f50d972c2ec44c64a77a6093c7cf65bcee04a70 SHA512 cb08ad457250112c696e5ea82606ecf1f49d0196bfac81d743587458dc1c23a728afcd33c2651690a107c9fb45c15033648c2a7e0228aa00860b9b21b3b1e9a6
+DIST rust-src-1.87.0_beta20250430.tar.xz 3118724 BLAKE2B 2ae0e29368f8d54d6d63d885983bfe2471e237444e5caefb38b64e3ad47c00fa656f3740a1defbeaee042450234c9dc8bcf75fd9453547a2e9c6f17053f1ad5d SHA512 b3e6f2d3ce0c3c3705a8fbf0a41869d1d33abb3125f9469a374701a4b97f4b987b548d1beff578973e9cd228d1097a010dc2ca8ef6a2d5f2d7fce48ad4746189
EBUILD rust-bin-1.71.1-r102.ebuild 7370 BLAKE2B 5a0c5f6681061f891c7c0c96da9844a37ce1d9ee25e241b1e81550a4e0660f824d6bbd7828e9905b5314888fb519f7aea9d8d56d0f9208079d177560977403c4 SHA512 5851f7ebcd6ae3da5fc511190e6f79b9bd57e84194b0e17d5305b08e73fcc560302e982d95d053c4c96fa8bb7004697c6630c51f21613ddb1320bf2936f6cdcc
EBUILD rust-bin-1.74.1-r102.ebuild 7269 BLAKE2B 3a9cb52a2d71e828a7b63c9f8b391554f4e2ab2ebee0d54c8970c3ffffbaf717f24a11285637d579293a41f725af667080f0d2b1f01c9ac326ed1561b5750aaf SHA512 df0dd36ef335dc9f8d1b80c0c4fb83f1686bb44ec5cd4c1e093c2b22efab073a6512176c5e2290bb849aa8d5a48ce52dca11639e523d29abb9a5d099b2490c37
EBUILD rust-bin-1.75.0-r102.ebuild 7269 BLAKE2B 0613e52f80808ab78751e67836b9683cb391516f803ba029a74b0f73041dd1216759d1d9b7ba0ecbdbd013f680ec9f1576b642986255c6f27a1a0415e2534715 SHA512 67d96345d9d172802601fcfc64c8c54a4ea3a09721887aa68c7288343769884a88b073b2559955f35bffa3369c8f7c65af6e81a9ed7a75f796ab262221966cd5
@@ -615,5 +644,6 @@ EBUILD rust-bin-1.85.0-r1.ebuild 10656 BLAKE2B 633a942647b42dceae3603acde09e66f5
EBUILD rust-bin-1.85.1.ebuild 10650 BLAKE2B 0f53ca00336a78552c3d67816552aee454a0df9593be9064cc2941f207557a71a6dcddf979cb2eb2c38449cfd52448d9f83a5a249f4323b6b65d4aaca7e188a2 SHA512 db86093db76b0e52aeca6c302b75f23bfb04144262afbe23840919b71e63d1f903574dde2815c4c9d1f2646979ae64799baaed84136630be3fbd99814b86ee2d
EBUILD rust-bin-1.86.0-r1.ebuild 10681 BLAKE2B 62afaeeabdfed425e7d07f3508852a21719bbf79b03b70e92bb8fe01b4cde3979e2e66817440ef19e96cb4ae497820bf63c6aa29603e7e0a411fbe02fb493e23 SHA512 c98f67ccabeffc4fb5905587bca22997f464642fa580b4d83f7a315ed27e1c1e26e17bff785c8d1c8f545be04e16fc91855288dc7bba2e621107a7972a171d18
EBUILD rust-bin-1.87.0_beta20250420.ebuild 10632 BLAKE2B 755fbd47c1fdf0fa57c9cb53790da15ab72ac175e8cabe010857571f855b1a20f68a079e21c65d6c87e1743faacb36706b94847e1a4855c315961a8c1e57f818 SHA512 ab46e7d53ff18b717524e29f70c34468e55bb82b69c1f4b9a130150f51061b99337976155140efe83f2360ec11d6c19e76c7498e71c157ef97451397c3db0387
+EBUILD rust-bin-1.87.0_beta20250430.ebuild 10632 BLAKE2B 755fbd47c1fdf0fa57c9cb53790da15ab72ac175e8cabe010857571f855b1a20f68a079e21c65d6c87e1743faacb36706b94847e1a4855c315961a8c1e57f818 SHA512 ab46e7d53ff18b717524e29f70c34468e55bb82b69c1f4b9a130150f51061b99337976155140efe83f2360ec11d6c19e76c7498e71c157ef97451397c3db0387
EBUILD rust-bin-9999.ebuild 10632 BLAKE2B 755fbd47c1fdf0fa57c9cb53790da15ab72ac175e8cabe010857571f855b1a20f68a079e21c65d6c87e1743faacb36706b94847e1a4855c315961a8c1e57f818 SHA512 ab46e7d53ff18b717524e29f70c34468e55bb82b69c1f4b9a130150f51061b99337976155140efe83f2360ec11d6c19e76c7498e71c157ef97451397c3db0387
MISC metadata.xml 993 BLAKE2B 18f15fbf6c033c38a6234388cd261163fd1940dcdd7164503381ba782107ae8820afd9072ddd395650953ce42cb4125432ce39639eea404ad5465bf4c82222eb SHA512 646af8a97d5f67b6c73f3431dc7db48dabd90c9495e3aed201615a709ad35ffe3581026357c5b69bddb8acc9e809637b78b8a7acfd6af59291056f71f060cf61
diff --git a/dev-lang/rust-bin/rust-bin-1.87.0_beta20250430.ebuild b/dev-lang/rust-bin/rust-bin-1.87.0_beta20250430.ebuild
new file mode 100644
index 000000000000..e00494d54b3b
--- /dev/null
+++ b/dev-lang/rust-bin/rust-bin-1.87.0_beta20250430.ebuild
@@ -0,0 +1,314 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( 20 )
+LLVM_OPTIONAL="yes"
+
+inherit edo llvm-r1 multilib prefix rust-toolchain verify-sig multilib-minimal optfeature
+
+if [[ ${PV} == *9999* ]]; then
+ # We need to fetch a tarball in src_unpack
+ PROPERTIES+=" live"
+elif [[ ${PV} == *beta* ]]; then
+ # curl -Ls static.rust-lang.org/dist/channel-rust-beta.toml | grep "xz_url.*rust-src"
+ betaver=${PV//*beta}
+ BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+ RUST_TOOLCHAIN_BASEURL=https://static.rust-lang.org/dist/${BETA_SNAPSHOT}/
+ SRC_URI="$(rust_all_arch_uris rust-beta rust-${PV})
+ rust-src? ( ${RUST_TOOLCHAIN_BASEURL%/}/rust-src-beta.tar.xz -> rust-src-${PV}.tar.xz )
+ "
+else
+ # curl -Ls static.rust-lang.org/dist/channel-rust-${PV}.toml | grep "xz_url.*rust-src"
+ SRC_URI="$(rust_all_arch_uris "${PV}")
+ rust-src? ( ${RUST_TOOLCHAIN_BASEURL%/}/2025-01-30/rust-src-${PV}.tar.xz )
+ "
+ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+fi
+
+GENTOO_BIN_BASEURI="https://github.com/projg2/rust-bootstrap/releases/download/${PVR}" # omit trailing slash
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+if [[ ${PV} != *9999* && ${PV} != *beta* ]] ; then
+ # Keep this separate to allow easy commenting out if not yet built
+ SRC_URI+=" sparc? ( ${GENTOO_BIN_BASEURI}/rust-${PVR}-sparc64-unknown-linux-gnu.tar.xz ) "
+ SRC_URI+=" mips? (
+ abi_mips_o32? (
+ big-endian? ( ${GENTOO_BIN_BASEURI}/rust-${PVR}-mips-unknown-linux-gnu.tar.xz )
+ !big-endian? ( ${GENTOO_BIN_BASEURI}/rust-${PVR}-mipsel-unknown-linux-gnu.tar.xz )
+ )
+ abi_mips_n64? (
+ big-endian? ( ${GENTOO_BIN_BASEURI}/rust-${PVR}-mips64-unknown-linux-gnuabi64.tar.xz )
+ !big-endian? ( ${GENTOO_BIN_BASEURI}/rust-${PVR}-mips64el-unknown-linux-gnuabi64.tar.xz )
+ )
+ )"
+ SRC_URI+=" riscv? (
+ elibc_musl? ( ${GENTOO_BIN_BASEURI}/rust-${PVR}-riscv64gc-unknown-linux-musl.tar.xz )
+ )"
+ SRC_URI+=" ppc64? ( elibc_musl? (
+ big-endian? ( ${GENTOO_BIN_BASEURI}/rust-${PVR}-powerpc64-unknown-linux-musl.tar.xz )
+ !big-endian? ( ${GENTOO_BIN_BASEURI}/rust-${PVR}-powerpc64le-unknown-linux-musl.tar.xz )
+ ) )"
+fi
+
+LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
+SLOT="${PV%%_*}" # Beta releases get to share the same SLOT as the eventual stable
+IUSE="big-endian clippy cpu_flags_x86_sse2 doc prefix rust-analyzer rust-src rustfmt"
+
+RDEPEND="
+ >=app-eselect/eselect-rust-20190311
+ dev-libs/openssl
+ sys-apps/lsb-release
+ || (
+ llvm-runtimes/libgcc
+ sys-devel/gcc:*
+ )
+ !dev-lang/rust:stable
+ !dev-lang/rust-bin:stable
+"
+BDEPEND="
+ prefix? ( dev-util/patchelf )
+ verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+[[ ${PV} == *9999* ]] && BDEPEND+=" net-misc/curl"
+
+REQUIRED_USE="x86? ( cpu_flags_x86_sse2 )"
+
+# stripping rust may break it (at least on x86_64)
+# https://github.com/rust-lang/rust/issues/112286
+RESTRICT="strip"
+
+QA_PREBUILT="
+ opt/rust-bin-${SLOT}/bin/.*
+ opt/rust-bin-${SLOT}/lib/.*.so*
+ opt/rust-bin-${SLOT}/libexec/.*
+ opt/rust-bin-${SLOT}/lib/rustlib/.*/bin/.*
+ opt/rust-bin-${SLOT}/lib/rustlib/.*/lib/.*
+"
+
+# 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="opt/${P}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc"
+
+src_unpack() {
+ if [[ ${PV} == *9999* ]]; then
+ # We need to fetch the latest nightly listing and get the apprapriate src_uri for our arch
+ local rust_bin_url rustc_src_url
+ # Cut down on webrequests by fetching the nightly toml once
+ curl -Ls static.rust-lang.org/dist/channel-rust-nightly.toml > "${WORKDIR}/channel-rust-nightly.toml" ||
+ die "Failed to fetch nightly revision info"
+ rustc_src_url=$(grep 'xz_url.*rust-src' "${WORKDIR}/channel-rust-nightly.toml" | cut -d '"' -f 2)
+ rust_bin_url=$(grep "xz_url.*rust-nightly-$(rust_abi)" "${WORKDIR}/channel-rust-nightly.toml" | cut -d '"' -f 2)
+ einfo "Using nightly Rust from: ${rust_bin_url}"
+
+ if use rust-src; then
+ einfo "Using nightly Rust-src from: ${rustc_src_url}"
+ # We need to fetch the rust-src tarball
+ einfo "Fetching nightly rust-src tarball ..."
+ curl --progress-bar -L "${rustc_src_url}" -o "${WORKDIR}/rust-src-${PV}.tar.xz" ||
+ die "Failed to fetch nightly rust-src tarball."
+ # no verify-sig here, just unpack it
+ tar -xf "${WORKDIR}/rust-src-${PV}.tar.xz" || die "Failed to unpack nightly rust-src tarball"
+ fi
+
+ einfo "Fetching nightly Rust tarball ..."
+ curl --progress-bar -L "${rust_bin_url}" -O || die "Failed to fetch nightly tarball"
+ if use verify-sig; then
+ einfo "Fetching nightly signature ..."
+ curl --progress-bar -L "${rust_bin_url}.asc" -O || die "Failed to fetch nightly signature"
+ verify-sig_verify_detached "${WORKDIR}/rust-nightly-$(rust_abi).tar.xz" \
+ "${WORKDIR}/rust-nightly-$(rust_abi).tar.xz.asc"
+ fi
+ tar -xf "${WORKDIR}/rust-nightly-$(rust_abi).tar.xz" || die "Failed to unpack nightly tarball"
+ else
+ # sadly rust-src tarball does not have corresponding .asc file
+ # so do partial verification
+ if use verify-sig; then
+ for f in ${A}; do
+ if [[ -f ${DISTDIR}/${f}.asc ]]; then
+ verify-sig_verify_detached "${DISTDIR}/${f}" "${DISTDIR}/${f}.asc"
+ fi
+ done
+ fi
+
+ default_src_unpack
+
+ fi
+ case ${PV} in
+ *9999*)
+ mv "${WORKDIR}/rust-nightly-$(rust_abi)" "${S}" || die
+ ;;
+ *beta*)
+ mv "${WORKDIR}/rust-beta-$(rust_abi)" "${S}" || die
+ ;;
+ *)
+ mv "${WORKDIR}/rust-${PV}-$(rust_abi)" "${S}" || die
+ ;;
+ esac
+}
+
+patchelf_for_bin() {
+ local filetype=$(file -b ${1})
+ if [[ ${filetype} == *ELF*interpreter* ]]; then
+ einfo "${1}'s interpreter changed"
+ patchelf ${1} --set-interpreter ${2} || die
+ elif [[ ${filetype} == *script* ]]; then
+ hprefixify ${1}
+ fi
+}
+
+rust_native_abi_install() {
+ pushd "${S}" >/dev/null || die
+ local analysis="$(grep 'analysis' ./components || die "analysis not found in components")"
+ local std="$(grep 'std' ./components || die "std not found in components")"
+ local components=( "rustc" "cargo" "${std}" )
+ use doc && components+=( "rust-docs" )
+ use clippy && components+=( "clippy-preview" )
+ use rustfmt && components+=( "rustfmt-preview" )
+ use rust-analyzer && components+=( "rust-analyzer-preview" "${analysis}" )
+ # Rust component 'rust-src' is extracted from separate archive
+ if use rust-src; then
+ einfo "Combining rust and rust-src installers"
+ case ${PV} in
+ *9999*)
+ mv -v "${WORKDIR}/rust-src-nightly/rust-src" "${S}" || die
+ ;;
+ *beta*)
+ mv -v "${WORKDIR}/rust-src-beta/rust-src" "${S}" || die
+ ;;
+ *)
+ mv -v "${WORKDIR}/rust-src-${PV}/rust-src" "${S}" || die
+ ;;
+ esac
+ echo rust-src >> ./components || die
+ components+=( "rust-src" )
+ fi
+ edo ./install.sh \
+ --components="$(IFS=,; echo "${components[*]}")" \
+ --disable-verify \
+ --prefix="${ED}/opt/rust-bin-${SLOT}" \
+ --mandir="${ED}/opt/rust-bin-${SLOT}/man" \
+ --disable-ldconfig
+
+ docompress /opt/${P}/man/
+
+ if use prefix; then
+ local interpreter=$(patchelf --print-interpreter "${EPREFIX}"/bin/bash)
+ ebegin "Changing interpreter to ${interpreter} for Gentoo prefix at ${ED}/opt/${SLOT}/bin"
+ find "${ED}/opt/${SLOT}/bin" -type f -print0 | \
+ while IFS= read -r -d '' filename; do
+ patchelf_for_bin ${filename} ${interpreter} \; || die
+ done
+ eend $?
+ fi
+
+ local symlinks=(
+ cargo
+ rustc
+ rustdoc
+ rust-gdb
+ rust-gdbgui
+ rust-lldb
+ )
+
+ use clippy && symlinks+=( clippy-driver cargo-clippy )
+ use rustfmt && symlinks+=( rustfmt cargo-fmt )
+ use rust-analyzer && symlinks+=( rust-analyzer )
+
+ einfo "installing eselect-rust symlinks and paths"
+ local i
+ for i in "${symlinks[@]}"; do
+ # we need realpath on /usr/bin/* symlink return version-appended binary path.
+ # so /usr/bin/rustc should point to /opt/rust-bin-<ver>/bin/rustc-<ver>
+ local ver_i="${i}-bin-${SLOT}"
+ ln -v "${ED}/opt/rust-bin-${SLOT}/bin/${i}" "${ED}/opt/rust-bin-${SLOT}/bin/${ver_i}" || die
+ dosym -r "/opt/rust-bin-${SLOT}/bin/${ver_i}" "/usr/bin/${ver_i}"
+ done
+
+ # symlinks to switch components to active rust in eselect
+ dosym -r "/opt/rust-bin-${SLOT}/lib" "/usr/lib/rust/lib-bin-${SLOT}"
+ dosym -r "/opt/rust-bin-${SLOT}/man" "/usr/lib/rust/man-bin-${SLOT}"
+ dosym -r "/opt/rust-bin-${SLOT}/lib/rustlib" "/usr/lib/rustlib-bin-${SLOT}"
+ dosym -r "/opt/rust-bin-${SLOT}/share/doc/rust" "/usr/share/doc/rust-bin-${SLOT}"
+
+ # make all capital underscored variable
+ local CARGO_TRIPLET="$(rust_abi)"
+ CARGO_TRIPLET="${CARGO_TRIPLET//-/_}"
+ CARGO_TRIPLET="${CARGO_TRIPLET^^}"
+ cat <<-_EOF_ > "${T}/50${P}"
+ MANPATH="${EPREFIX}/usr/lib/rust/man-bin-${SLOT}"
+ $(usev elibc_musl "CARGO_TARGET_${CARGO_TRIPLET}_RUSTFLAGS=\"-C target-feature=-crt-static\"")
+ _EOF_
+ doenvd "${T}/50${P}"
+
+ # note: eselect-rust adds EROOT to all paths below
+ cat <<-_EOF_ > "${T}/provider-${PN}-${SLOT}"
+ /usr/bin/cargo
+ /usr/bin/rustdoc
+ /usr/bin/rust-gdb
+ /usr/bin/rust-gdbgui
+ /usr/bin/rust-lldb
+ /usr/lib/rustlib
+ /usr/lib/rust/lib
+ /usr/lib/rust/man
+ /usr/share/doc/rust
+ _EOF_
+
+ if use clippy; then
+ echo /usr/bin/clippy-driver >> "${T}/provider-${PN}-${SLOT}"
+ echo /usr/bin/cargo-clippy >> "${T}/provider-${PN}-${SLOT}"
+ fi
+ if use rustfmt; then
+ echo /usr/bin/rustfmt >> "${T}/provider-${PN}-${SLOT}"
+ echo /usr/bin/cargo-fmt >> "${T}/provider-${PN}-${SLOT}"
+ fi
+ if use rust-analyzer; then
+ echo /usr/bin/rust-analyzer >> "${T}/provider-${PN}-${SLOT}"
+ fi
+
+ insinto /etc/env.d/rust
+ doins "${T}/provider-${PN}-${SLOT}"
+ popd >/dev/null || die
+}
+
+multilib_src_install() {
+ if multilib_is_native_abi; then
+ rust_native_abi_install
+ else
+ local rust_target
+ rust_target="$(rust_abi $(get_abi_CHOST ${v##*.}))"
+ dodir "/opt/${P}/lib/rustlib"
+ cp -vr "${WORKDIR}/rust-${PV}-${rust_target}/rust-std-${rust_target}/lib/rustlib/${rust_target}"\
+ "${ED}/opt/${P}/lib/rustlib" || die
+ fi
+
+ # BUG: installs x86_64 binary on other arches
+ rm -f "${ED}/opt/${P}/lib/rustlib/"*/bin/rust-llvm-dwp || die
+}
+
+pkg_postinst() {
+ eselect rust update
+
+ if has_version dev-debug/gdb || has_version llvm-core/lldb; then
+ elog "Rust installs helper scripts for calling GDB and LLDB,"
+ elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}."
+ fi
+
+ if has_version app-editors/emacs; then
+ optfeature "emacs support for rust" app-emacs/rust-mode
+ fi
+
+ if has_version app-editors/gvim || has_version app-editors/vim; then
+ optfeature "vim support for rust" app-vim/rust-vim
+ fi
+}
+
+pkg_postrm() {
+ eselect rust cleanup
+}
diff --git a/dev-lang/rust-common/Manifest b/dev-lang/rust-common/Manifest
index f09346dfeccf..68deb8351214 100644
--- a/dev-lang/rust-common/Manifest
+++ b/dev-lang/rust-common/Manifest
@@ -12,6 +12,8 @@ DIST rustc-1.86.0-src.tar.xz 275696736 BLAKE2B 9f33a710a3e567d92f56091920643f5ef
DIST rustc-1.86.0-src.tar.xz.asc 801 BLAKE2B 3e10a3894c7eee68d37bc5707d797548119f830667e27e652a199d13633199713bd01bd0f41a5f2af3c682561903e36abe27b36ef78d9a1d65bdf485527d2c15 SHA512 0b74dab9ee56d0a08e26e9cd40f722e4d99de63ac678f969f0c54d50737074fb28e170db5a36ce2627ec332e5ce3bb8a92167aefbccff7c70e4cb057bc0a94ac
DIST rustc-1.87.0_beta20250420-src.tar.xz 283544556 BLAKE2B 70a59c7d695e881a4e21d500f19b7d83e3a86bc8d5dfaaaa28a4cd4631b12937a2743119e3181e84af7b348386c672f4e62675da8cfb399095fcdda527b072e0 SHA512 37e62954c21b0d5c232dca1d0fe476b165eb63b7315c1fcaa18068707f4fd00e2def09968ee1d243f62cb3eae3fbb4381493b8505179342705998dce08e23afe
DIST rustc-1.87.0_beta20250420-src.tar.xz.asc 801 BLAKE2B c0ed0686d3bc612e8b0edb96817928107905220328af81d2f9200552c3edb58d98ae8844f01b7dd20e59e6c0a173f6da11b2cd58d0c3b5d5f0bd8290528ea86c SHA512 e2e694feec13d8fb8d9b50442c0c2e3de5cef0a249730c945124880220e44d481b2109098c5a8479f765384a4298e293e63743c924e0866ed2e5aece3a35c98f
+DIST rustc-1.87.0_beta20250430-src.tar.xz 283517896 BLAKE2B 5d86aa824662230a843576798a544ef5e3a49e0166b66c9ecc9926832e102562aac3493748085b7f38a71e5954206d27f7ab3e219a27d96b1c55a8ab8419851a SHA512 5c29e7513b70416f97ba7a5f9669600da9b695d8dc6df582aa6ffa017da5c38215d9a27584fa6f6b2309813127571eba49a3fef375a6598c607f007f41f6d3fe
+DIST rustc-1.87.0_beta20250430-src.tar.xz.asc 801 BLAKE2B 4ecdc70a469bce016e7c92a77a8c088ed37375e994a820b24c67269358eed4bc465aa77c4974b1e72586b23737b1d25844394b5de36fd4427978eff20bd07102 SHA512 f8c10cf66e2fb791de7b994bba622d1f8e8df75e48fd8d30795edaa6316b935583b51e235520d2aa2578cfcea1dda17ff2256317c7f4bb1f6606f5afbd6a80d1
EBUILD rust-common-1.81.0.ebuild 1442 BLAKE2B 2fca9110584bab02d27116bb7384ef4cdc0cc42323b469473f76fa09bd15fd4dd24a4597769d453d12c8e06b4305614d50120099feaeb142c2aafe29dd610348 SHA512 b948bc84b48deb6249c61d977dde1489374f5e0df679540a254ce4211f148eb5fff00fa4970bc63a07d4d08328fa821cee1172c388ddd8b48c1c0117a1c0259d
EBUILD rust-common-1.82.0.ebuild 1442 BLAKE2B 04d044c0a244ce4e62fd4a8ae096c29c1972677e61ea3c8dd267817deafcdfc305087dc17b021e82376f96888d2374a9de774dbeb6067ee335a2f41dc87918c3 SHA512 279e84b9fba7fcf68c7b8666882411dff77d056258f8e315c141b736a910377bec28020d11fe09ec42921ddeb746e34cf2b8ef3f0503d4578cd8faeb416f257e
EBUILD rust-common-1.83.0.ebuild 1442 BLAKE2B 04d044c0a244ce4e62fd4a8ae096c29c1972677e61ea3c8dd267817deafcdfc305087dc17b021e82376f96888d2374a9de774dbeb6067ee335a2f41dc87918c3 SHA512 279e84b9fba7fcf68c7b8666882411dff77d056258f8e315c141b736a910377bec28020d11fe09ec42921ddeb746e34cf2b8ef3f0503d4578cd8faeb416f257e
@@ -19,5 +21,6 @@ EBUILD rust-common-1.84.1.ebuild 1442 BLAKE2B 04d044c0a244ce4e62fd4a8ae096c29c19
EBUILD rust-common-1.85.1.ebuild 2237 BLAKE2B 4c6d6b9dcff2217a61b66203316f21703eca50870e2772b49365e9d683a6c747616e9f494254eeecb8970060ddfd1fc614271845f68812faff818c92e9f1b972 SHA512 99fa433f1cbee8f7577c255cc74fde5bf03d0d1abb6de0b190cd7abed7852a522f0fd0c57c7ef791936178dcc7f8095111c1e95b97ccba01c4fb7c15ae3d2309
EBUILD rust-common-1.86.0.ebuild 2248 BLAKE2B 7da41b3ba969dfea261774cfa77754aaa20a7e74d7e2d7b905f172e37ae70f7f05731d11d59b572eaddf44690ffb6f457f158fa1cfa57aaeebcaec3fce75f5ba SHA512 20086a6be7b0e3ac8b59a5710f4b0f429d854ddef5a000a87b11103befdabf2cb914d5cce281ced33e0eb484263c15ff31801f1f6b21aae93420f7587a97b7c8
EBUILD rust-common-1.87.0_beta20250420.ebuild 2248 BLAKE2B 7da41b3ba969dfea261774cfa77754aaa20a7e74d7e2d7b905f172e37ae70f7f05731d11d59b572eaddf44690ffb6f457f158fa1cfa57aaeebcaec3fce75f5ba SHA512 20086a6be7b0e3ac8b59a5710f4b0f429d854ddef5a000a87b11103befdabf2cb914d5cce281ced33e0eb484263c15ff31801f1f6b21aae93420f7587a97b7c8
+EBUILD rust-common-1.87.0_beta20250430.ebuild 2248 BLAKE2B 7da41b3ba969dfea261774cfa77754aaa20a7e74d7e2d7b905f172e37ae70f7f05731d11d59b572eaddf44690ffb6f457f158fa1cfa57aaeebcaec3fce75f5ba SHA512 20086a6be7b0e3ac8b59a5710f4b0f429d854ddef5a000a87b11103befdabf2cb914d5cce281ced33e0eb484263c15ff31801f1f6b21aae93420f7587a97b7c8
EBUILD rust-common-9999.ebuild 2243 BLAKE2B 554160cc1aab204f2102f1925cf5709e60f09dacb098f8f78e007b1b443fe26d6ef1714e6b9eeae33bfd50873f7f7dcb3435ad6431098479310da2752b39e6ff SHA512 8fd4d239e68e534c432e8f260d7e30a22a0a6206563c7baed353473564253197a1ce9b778da53b4c54be31913aebe0e66f770c2649b118ff5c8513c27e874b08
MISC metadata.xml 324 BLAKE2B 25e471eacc689a8af7e0251146bf712b020a10d55e3cb48285f174996ec66db8bbd146d4737db15ac3b2abf3e1f0415277b9bdca84d94f9b08a56e9242a4fcbf SHA512 723c102ec7017eeb72bfd6f37c16e2705e61bb626a93e5127eca2275a9367cefbccdd846fe8a699bc1192ae52cafe236f3fb6261fa6db361564b34880a9db2fb
diff --git a/dev-lang/rust-common/rust-common-1.87.0_beta20250430.ebuild b/dev-lang/rust-common/rust-common-1.87.0_beta20250430.ebuild
new file mode 100644
index 000000000000..26c4792d0fb5
--- /dev/null
+++ b/dev-lang/rust-common/rust-common-1.87.0_beta20250430.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
+inherit shell-completion verify-sig
+
+DESCRIPTION="Common files shared between multiple slots of Rust"
+HOMEPAGE="https://www.rust-lang.org/"
+
+if [[ ${PV} = *9999* ]]; then
+ inherit git-r3
+ # In case cargo is not in sync we'll fetch it as a submodule
+ # Nightly users will probably already have the repo cloned and up-to-date anyway.
+ EGIT_REPO_URI="https://github.com/rust-lang/rust.git"
+ EGIT_SUBMODULES=( "-*" "src/tools/cargo" )
+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
+ MY_PV=beta
+ betaver=${PV//*beta}
+ BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+ 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}/rustc-${MY_PV}-src"
+else
+ MY_PV=${PV}
+ SRC_URI="https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz
+ verify-sig? ( https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz.asc )
+ "
+ S="${WORKDIR}/rustc-${MY_PV}-src"
+ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
+SLOT="0"
+
+# Legacy non-slotted versions bash completions will collide.
+RDEPEND="
+ !dev-lang/rust:stable
+ !dev-lang/rust-bin:stable
+"
+BDEPEND="verify-sig? ( sec-keys/openpgp-keys-rust )"
+
+src_unpack() {
+ if [[ ${PV} == *9999* ]]; then
+ git-r3_src_unpack
+ else
+ if use verify-sig ; then
+ verify-sig_verify_detached "${DISTDIR}"/rustc-${PV}-src.tar.xz "${DISTDIR}"/rustc-${PV}-src.tar.xz.asc
+ fi
+
+ # Avoid unpacking the whole tarball which would need check-reqs
+ tar -xf "${DISTDIR}"/rustc-${PV}-src.tar.xz \
+ "rustc-${MY_PV}-src/src/tools/cargo/src/etc/"{_cargo,cargo.bashcomp.sh} || die
+ fi
+}
+
+src_configure() {
+ :
+}
+
+src_compile() {
+ :
+}
+
+src_install() {
+ newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+ dozshcomp src/tools/cargo/src/etc/_cargo
+}
diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 88fced1e1f72..a892bdbcab03 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -53,6 +53,8 @@ DIST rustc-1.86.0-src.tar.xz 275696736 BLAKE2B 9f33a710a3e567d92f56091920643f5ef
DIST rustc-1.86.0-src.tar.xz.asc 801 BLAKE2B 3e10a3894c7eee68d37bc5707d797548119f830667e27e652a199d13633199713bd01bd0f41a5f2af3c682561903e36abe27b36ef78d9a1d65bdf485527d2c15 SHA512 0b74dab9ee56d0a08e26e9cd40f722e4d99de63ac678f969f0c54d50737074fb28e170db5a36ce2627ec332e5ce3bb8a92167aefbccff7c70e4cb057bc0a94ac
DIST rustc-1.87.0_beta20250420-src.tar.xz 283544556 BLAKE2B 70a59c7d695e881a4e21d500f19b7d83e3a86bc8d5dfaaaa28a4cd4631b12937a2743119e3181e84af7b348386c672f4e62675da8cfb399095fcdda527b072e0 SHA512 37e62954c21b0d5c232dca1d0fe476b165eb63b7315c1fcaa18068707f4fd00e2def09968ee1d243f62cb3eae3fbb4381493b8505179342705998dce08e23afe
DIST rustc-1.87.0_beta20250420-src.tar.xz.asc 801 BLAKE2B c0ed0686d3bc612e8b0edb96817928107905220328af81d2f9200552c3edb58d98ae8844f01b7dd20e59e6c0a173f6da11b2cd58d0c3b5d5f0bd8290528ea86c SHA512 e2e694feec13d8fb8d9b50442c0c2e3de5cef0a249730c945124880220e44d481b2109098c5a8479f765384a4298e293e63743c924e0866ed2e5aece3a35c98f
+DIST rustc-1.87.0_beta20250430-src.tar.xz 283517896 BLAKE2B 5d86aa824662230a843576798a544ef5e3a49e0166b66c9ecc9926832e102562aac3493748085b7f38a71e5954206d27f7ab3e219a27d96b1c55a8ab8419851a SHA512 5c29e7513b70416f97ba7a5f9669600da9b695d8dc6df582aa6ffa017da5c38215d9a27584fa6f6b2309813127571eba49a3fef375a6598c607f007f41f6d3fe
+DIST rustc-1.87.0_beta20250430-src.tar.xz.asc 801 BLAKE2B 4ecdc70a469bce016e7c92a77a8c088ed37375e994a820b24c67269358eed4bc465aa77c4974b1e72586b23737b1d25844394b5de36fd4427978eff20bd07102 SHA512 f8c10cf66e2fb791de7b994bba622d1f8e8df75e48fd8d30795edaa6316b935583b51e235520d2aa2578cfcea1dda17ff2256317c7f4bb1f6606f5afbd6a80d1
EBUILD rust-1.71.1-r101.ebuild 22398 BLAKE2B 14f409fb8a8cd5bab98003e46778c6b08cebb1e52fd141ca55edab79e0d466dd680a7a09c6d607f87af1e7ffc995e3984b46f62a74164bdc3925dd5a4e866e47 SHA512 3c5a8471b73f392e4f3da8ad1ddc585a8e5fb0621fcb5cc6686ce228a88b0d01cc611f3836ec36173f28e6b5ff8e591b56254bb3a49ef9b874820c4f241b6cc6
EBUILD rust-1.74.1-r101.ebuild 37973 BLAKE2B 7049c2ac677e14a0339f1b50c6a7f0fbb35adbe4c5a3b1b34e25f661eb00736b4c2f1246d773655013b5c066d3e1da12039996ace243e6921b9052e52e6fc04a SHA512 90507c4d350cf4df93c2dc767d6e7b403f170caf8425ab98597b627aeb666d184d63cdc5840f91c9e92a3530e948a991a44411979fc89e7155d887e3831209b8
EBUILD rust-1.75.0-r101.ebuild 23867 BLAKE2B 9c332c3004cb2c105eee67adeee86f7a7aac65e971e8b09c783ef84923ec98ea30f5a799060df308b8c30f48a44853af17ededd87c0caeb174c759bcddd70242 SHA512 e056387e22d3865d692f753405d02ddae8c4c4581ba0315838bb47964de34c678490c5d13516aa8910174bbb507bacb5dfd500af50103f8fa0b3a37ea9b134eb
@@ -71,5 +73,6 @@ EBUILD rust-1.85.0.ebuild 25624 BLAKE2B 6ec7628e4da4c9bad0190338245c98e53f840646
EBUILD rust-1.85.1.ebuild 25667 BLAKE2B 4a06b586ccd2a6d9a2e4c8d1bf3ace2373f39d7f3c6bc381c04fcff6a809ab5159432a4226d93e64d247b6fbbb2c3882b970198e80d8c39c09911100e8c64ded SHA512 351ef28f199e3ef31ff96478e71689288f4c98c01d3d2bbd5317272ac6874745a07543ead0ad3cf5de12c38621eacaa84dd240cce658696efdcdc53af0ceb7d6
EBUILD rust-1.86.0-r1.ebuild 25695 BLAKE2B e7884dd9f71ce0a77ee7c13fdafe0c79ab0bfcf97e120c50af1947af8e0b2b63bd58201490c717648a71af24abc5c5a031453e9e58fe4f5fe4ba8c10fc717341 SHA512 689b85254be73ff5e5e8053affc566162622947c207349b450712afaae79135357eed4e9fc7e56eb7a551081519c9c6a6116be15545522c9a84b432f2e18db89
EBUILD rust-1.87.0_beta20250420.ebuild 25674 BLAKE2B 9a60312195f6a9980a402d623608097aed7831bf815ba87e5e7336d827f65a599cb264e67529c6a120e5642afd01cea694fc5828b746a4409a386ca2da22273f SHA512 70096ee21f29098843be21973f9ba43abb5fb9fc0f29b20d319c1d27182a228d4a337e71a751ae8307171ed4ea61400f67a42703dd3290ea7af614dd1d2ad5f1
+EBUILD rust-1.87.0_beta20250430.ebuild 25674 BLAKE2B 9a60312195f6a9980a402d623608097aed7831bf815ba87e5e7336d827f65a599cb264e67529c6a120e5642afd01cea694fc5828b746a4409a386ca2da22273f SHA512 70096ee21f29098843be21973f9ba43abb5fb9fc0f29b20d319c1d27182a228d4a337e71a751ae8307171ed4ea61400f67a42703dd3290ea7af614dd1d2ad5f1
EBUILD rust-9999.ebuild 25697 BLAKE2B f691e19603d3f1fc8dd2da4856a1e7b000420abaf7771d3918860734c475e8bf5373129c53f9a755f6af8670d890213573248ba659797fd9c924a499e5f4774b SHA512 6143ea34272b7c4148b0a3f121c98de71d9f9afd42f6237b5d35e98d6b63db55b7f75caa5e6ccd84143c4b17972047d34fb019f0b269f464df3ccd5bbe82b662
MISC metadata.xml 1711 BLAKE2B 7161a839de6aaf58d986871a13efbe11627347646583c26da0e4b622cd8bfb4ad9d28f23caf7f4522dfaa02b213a9943771b335736c28991f568d5971481226d SHA512 cbe82531c2ea8ae1745f7f0831ed6ac1e59685581321278cfd9c3c848fd8c8a5866268a6c842dfb98b74e8f4c5e878353053d33c3565928b941cdd9d616dceaa
diff --git a/dev-lang/rust/rust-1.87.0_beta20250430.ebuild b/dev-lang/rust/rust-1.87.0_beta20250430.ebuild
new file mode 100644
index 000000000000..acfa779e1a77
--- /dev/null
+++ b/dev-lang/rust/rust-1.87.0_beta20250430.ebuild
@@ -0,0 +1,813 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( 20 )
+PYTHON_COMPAT=( python3_{10..13} )
+
+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} = *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_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_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 originally developed by Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+# 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
+ WebAssembly X86 XCore Xtensa )
+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_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%%_*}" # 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 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}]") )" )
+ 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}')" )
+
+BDEPEND="${PYTHON_DEPS}
+ app-eselect/eselect-rust
+ || (
+ >=sys-devel/gcc-4.7[cxx]
+ >=llvm-core/clang-3.5
+ )
+ lto? ( system-llvm? (
+ || (
+ $(llvm_gen_dep 'llvm-core/lld:${LLVM_SLOT}')
+ sys-devel/mold
+ )
+ ) )
+ !system-llvm? (
+ >=dev-build/cmake-3.13.4
+ app-alternatives/ninja
+ )
+ test? ( dev-debug/gdb )
+ verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+ >=app-arch/xz-utils-5.2
+ net-misc/curl:=[http2,ssl]
+ sys-libs/zlib:=
+ dev-libs/openssl:0=
+ system-llvm? (
+ ${LLVM_DEPEND[*]}
+ llvm-libunwind? ( llvm-runtimes/libunwind:= )
+ )
+ !system-llvm? (
+ !llvm-libunwind? (
+ elibc_musl? ( sys-libs/libunwind:= )
+ )
+ )
+"
+
+RDEPEND="${DEPEND}
+ app-eselect/eselect-rust
+ dev-lang/rust-common
+ sys-apps/lsb-release
+ !dev-lang/rust:stable
+ !dev-lang/rust-bin:stable
+"
+
+REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
+ rust-analyzer? ( rust-src )
+ test? ( ${ALL_LLVM_TARGETS[*]} )
+ wasm? ( llvm_targets_WebAssembly )
+ x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+ 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}/${SLOT}/lib/lib.*.so.*
+ usr/lib/${PN}/${SLOT}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+ 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}/${SLOT}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+ "${FILESDIR}"/1.85.0-cross-compile-libz.patch
+ "${FILESDIR}"/1.85.0-musl-dynamic-linking.patch
+ "${FILESDIR}"/1.67.0-doc-wasm.patch
+)
+
+clear_vendor_checksums() {
+ sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
+}
+
+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
+ if use amd64; then
+ M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
+ fi
+ M=$(( $(usex clippy 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
+ M=$(( 2048 + ${M} ))
+ local ltarget
+ for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+ M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+ done
+ fi
+ M=$(( $(usex wasm 256 0) + ${M} ))
+ M=$(( $(usex debug 2 1) * ${M} ))
+ eshopts_push -s extglob
+ if is-flagq '-g?(gdb)?([1-9])'; then
+ M=$(( 15 * ${M} / 10 ))
+ fi
+ eshopts_pop
+ M=$(( $(usex doc 256 0) + ${M} ))
+ CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+ has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+# Is LLVM being linked against libc++?
+is_libcxx_linked() {
+ local code='#include <ciso646>
+#if defined(_LIBCPP_VERSION)
+ HAVE_LIBCXX
+#endif
+'
+ local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
+ [[ ${out} == *HAVE_LIBCXX* ]]
+}
+
+pkg_pretend() {
+ pre_build_checks
+}
+
+pkg_setup() {
+ pre_build_checks
+ python-any-r1_pkg_setup
+
+ export LIBGIT2_NO_PKG_CONFIG=1 #749381
+ if tc-is-cross-compiler; then
+ use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
+ local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
+ use "llvm_targets_${cross_llvm_target}" || \
+ die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
+ fi
+
+ rust_pkg_setup
+
+ if use system-llvm; then
+ llvm-r1_pkg_setup
+
+ local llvm_config="$(get_llvm_prefix)/bin/llvm-config"
+ export LLVM_LINK_SHARED=1
+ export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+ fi
+}
+
+src_prepare() {
+ 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
+ eapply "${FILESDIR}/1.82.0-i586-baseline.patch"
+ #grep -rl cmd.args.push\(\"-march=i686\" . | xargs sed -i 's/march=i686/-march=i586/g' || die
+ fi
+ fi
+
+ if use lto && tc-is-clang && ! tc-ld-is-lld && ! tc-ld-is-mold; then
+ export RUSTFLAGS+=" -C link-arg=-fuse-ld=lld"
+ fi
+
+ default
+}
+
+src_configure() {
+ if tc-is-cross-compiler; then
+ export PKG_CONFIG_ALLOW_CROSS=1
+ export PKG_CONFIG_PATH="${ESYSROOT}/usr/$(get_libdir)/pkgconfig"
+ export OPENSSL_INCLUDE_DIR="${ESYSROOT}/usr/include"
+ export OPENSSL_LIB_DIR="${ESYSROOT}/usr/$(get_libdir)"
+ fi
+
+ filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
+
+ local rust_target="" rust_targets="" arch_cflags
+
+ # Collect rust target names to compile standard libs for all ABIs.
+ for v in $(multilib_get_enabled_abi_pairs); do
+ rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
+ done
+ if use wasm; then
+ rust_targets+=",\"wasm32-unknown-unknown\""
+ if use system-llvm; then
+ # un-hardcode rust-lld linker for this target
+ # https://bugs.gentoo.org/715348
+ sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die
+ fi
+ fi
+ rust_targets="${rust_targets#,}"
+
+ # cargo and rustdoc are mandatory and should always be included
+ local tools='"cargo","rustdoc"'
+ use clippy && tools+=',"clippy"'
+ 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"
+
+ rust_target="$(rust_abi)"
+ rust_build="$(rust_abi "${CBUILD}")"
+ rust_host="$(rust_abi "${CHOST}")"
+
+ 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
+ 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"
+ [llvm]
+ download-ci-llvm = false
+ optimize = $(toml_usex !debug)
+ release-debuginfo = $(toml_usex debug)
+ assertions = $(toml_usex debug)
+ ninja = true
+ targets = "${LLVM_TARGETS// /;}"
+ experimental-targets = "${RUST_EXPERIMENTAL_TARGETS// /;}"
+ link-shared = $(toml_usex system-llvm)
+ $(if is_libcxx_linked; then
+ # https://bugs.gentoo.org/732632
+ echo "use-libcxx = true"
+ echo "static-libstdcpp = false"
+ fi)
+ $(case "${rust_target}" in
+ i586-*-linux-*)
+ # https://github.com/rust-lang/rust/issues/93059
+ echo 'cflags = "-fcf-protection=none"'
+ echo 'cxxflags = "-fcf-protection=none"'
+ echo 'ldflags = "-fcf-protection=none"'
+ ;;
+ *)
+ ;;
+ esac)
+ enable-warnings = false
+ [llvm.build-config]
+ CMAKE_VERBOSE_MAKEFILE = "ON"
+ $(if ! tc-is-cross-compiler; then
+ # When cross-compiling, LLVM is compiled twice, once for host and
+ # once for target. Unfortunately, this build configuration applies
+ # to both, which means any flags applicable to one target but not
+ # the other will break. Conditionally disable respecting user
+ # flags when cross-compiling.
+ echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\""
+ echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\""
+ echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+ echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+ echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+ echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\""
+ fi)
+ [build]
+ build-stage = 2
+ test-stage = 2
+ build = "${rust_build}"
+ host = ["${rust_host}"]
+ target = [${rust_targets}]
+ cargo = "${rust_stage0_root}/bin/cargo"
+ rustc = "${rust_stage0_root}/bin/rustc"
+ rustfmt = "${rust_stage0_root}/bin/rustfmt"
+ docs = $(toml_usex doc)
+ compiler-docs = false
+ submodules = false
+ python = "${EPYTHON}"
+ locked-deps = true
+ vendor = true
+ extended = true
+ tools = [${tools}]
+ verbose = 2
+ sanitizers = false
+ profiler = true
+ cargo-native-static = false
+ [install]
+ prefix = "${EPREFIX}/usr/lib/${PN}/${SLOT}"
+ sysconfdir = "etc"
+ docdir = "share/doc/rust"
+ bindir = "bin"
+ libdir = "lib"
+ mandir = "share/man"
+ [rust]
+ # https://github.com/rust-lang/rust/issues/54872
+ codegen-units-std = 1
+ optimize = true
+ debug = $(toml_usex debug)
+ debug-assertions = $(toml_usex debug)
+ debug-assertions-std = $(toml_usex debug)
+ debuginfo-level = $(usex debug 2 0)
+ debuginfo-level-rustc = $(usex debug 2 0)
+ debuginfo-level-std = $(usex debug 2 0)
+ debuginfo-level-tools = $(usex debug 2 0)
+ debuginfo-level-tests = 0
+ backtrace = true
+ incremental = false
+ $(if ! tc-is-cross-compiler; then
+ echo "default-linker = \"${CHOST}-cc\""
+ fi)
+ channel = "${build_channel}"
+ description = "gentoo"
+ rpath = true
+ verbose-tests = true
+ optimize-tests = $(toml_usex !debug)
+ codegen-tests = true
+ dist-src = false
+ remap-debuginfo = true
+ lld = $(usex system-llvm false $(toml_usex wasm))
+ $(if use lto && tc-is-clang && ! tc-ld-is-mold; then
+ echo "use-lld = true"
+ fi)
+ # only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+ # https://github.com/rust-lang/rust/issues/74976
+ # https://github.com/rust-lang/rust/issues/76526
+ deny-warnings = $(usex wasm $(usex doc false true) true)
+ backtrace-on-ice = true
+ jemalloc = false
+ # See https://github.com/rust-lang/rust/issues/121124
+ lto = "$(usex lto thin off)"
+ [dist]
+ src-tarball = false
+ compression-formats = ["xz"]
+ compression-profile = "balanced"
+ _EOF_
+
+ for v in $(multilib_get_enabled_abi_pairs); do
+ rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+ arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+ export CFLAGS_${rust_target//-/_}="${arch_cflags}"
+
+ cat <<- _EOF_ >> "${S}"/config.toml
+ [target.${rust_target}]
+ ar = "$(tc-getAR)"
+ cc = "$(tc-getCC)"
+ cxx = "$(tc-getCXX)"
+ linker = "$(tc-getCC)"
+ ranlib = "$(tc-getRANLIB)"
+ llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
+ _EOF_
+ if use system-llvm; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
+ _EOF_
+ fi
+ # by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
+ # but we patch it and set to false here as well
+ if use elibc_musl; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ crt-static = false
+ musl-root = "$($(tc-getCC) -print-sysroot)/usr"
+ _EOF_
+ fi
+ done
+ if use wasm; then
+ wasm_target="wasm32-unknown-unknown"
+ export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")"
+ cat <<- _EOF_ >> "${S}"/config.toml
+ [target.wasm32-unknown-unknown]
+ linker = "$(usex system-llvm lld rust-lld)"
+ # wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
+ profiler = false
+ _EOF_
+ fi
+
+ if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
+ # experimental cross support
+ # discussion: https://bugs.gentoo.org/679878
+ # TODO: c*flags, clang, system-llvm, cargo.eclass target support
+ # it would be much better if we could split out stdlib
+ # complilation to separate ebuild and abuse CATEGORY to
+ # just install to /usr/lib/rustlib/<target>
+
+ # extra targets defined as a bash array
+ # spec format: <LLVM target>:<rust-target>:<CTARGET>
+ # best place would be /etc/portage/env/dev-lang/rust
+ # Example:
+ # RUST_CROSS_TARGETS=(
+ # "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
+ # )
+ # no extra hand holding is done, no target transformations, all
+ # values are passed as-is with just basic checks, so it's up to user to supply correct values
+ # valid rust targets can be obtained with
+ # rustc --print target-list
+ # matching cross toolchain has to be installed
+ # matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
+ # only gcc toolchains installed with crossdev are checked for now.
+
+ # BUG: we can't pass host flags to cross compiler, so just filter for now
+ # BUG: this should be more fine-grained.
+ filter-flags '-mcpu=*' '-march=*' '-mtune=*'
+
+ local cross_target_spec
+ for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
+ # extracts first element form <LLVM target>:<rust-target>:<CTARGET>
+ local cross_llvm_target="${cross_target_spec%%:*}"
+ # extracts toolchain triples, <rust-target>:<CTARGET>
+ local cross_triples="${cross_target_spec#*:}"
+ # extracts first element after before : separator
+ local cross_rust_target="${cross_triples%%:*}"
+ # extracts last element after : separator
+ local cross_toolchain="${cross_triples##*:}"
+ use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
+ command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
+
+ cat <<- _EOF_ >> "${S}"/config.toml
+ [target.${cross_rust_target}]
+ ar = "${cross_toolchain}-ar"
+ cc = "${cross_toolchain}-gcc"
+ cxx = "${cross_toolchain}-g++"
+ linker = "${cross_toolchain}-gcc"
+ ranlib = "${cross_toolchain}-ranlib"
+ _EOF_
+ if use system-llvm; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
+ _EOF_
+ fi
+ if [[ "${cross_toolchain}" == *-musl* ]]; then
+ cat <<- _EOF_ >> "${S}"/config.toml
+ musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+ _EOF_
+ fi
+
+ # append cross target to "normal" target list
+ # example 'target = ["powerpc64le-unknown-linux-gnu"]'
+ # becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+ rust_targets="${rust_targets},\"${cross_rust_target}\""
+ sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+ ewarn
+ ewarn "Enabled ${cross_rust_target} rust target"
+ ewarn "Using ${cross_toolchain} cross toolchain"
+ ewarn
+ if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+ ewarn "'sys-devel/binutils[multitarget]' is not installed"
+ ewarn "'strip' will be unable to strip cross libraries"
+ ewarn "cross targets will be installed with full debug information"
+ ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+ ewarn
+ ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+ ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+ ewarn
+ fi
+ done
+ fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+ einfo "Rust configured with the following flags:"
+ echo
+ echo RUSTFLAGS="\"${RUSTFLAGS}\""
+ echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
+ echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
+ echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
+ env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+ env | grep "CFLAGS_.*"
+ echo
+ einfo "config.toml contents:"
+ cat "${S}"/config.toml || die
+ echo
+}
+
+src_compile() {
+ RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+}
+
+src_test() {
+ # https://rustc-dev-guide.rust-lang.org/tests/intro.html
+
+ # those are basic and codegen tests.
+ local tests=(
+ codegen
+ codegen-units
+ compile-fail
+ incremental
+ mir-opt
+ pretty
+ run-make
+ )
+
+ # fails if llvm is not built with ALL targets.
+ # and known to fail with system llvm sometimes.
+ use system-llvm || tests+=( assembly )
+
+ # fragile/expensive/less important tests
+ # or tests that require extra builds
+ # TODO: instead of skipping, just make some nonfatal.
+ if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
+ tests+=(
+ rustdoc
+ rustdoc-js
+ rustdoc-js-std
+ rustdoc-ui
+ run-make-fulldeps
+ ui
+ ui-fulldeps
+ )
+ fi
+
+ local i failed=()
+ einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
+ for i in "${tests[@]}"; do
+ local t="src/test/${i}"
+ einfo "rust_src_test: running ${t}"
+ if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
+ -j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
+ then
+ failed+=( "${t}" )
+ eerror "rust_src_test: ${t} failed"
+ fi
+ done
+
+ if [[ ${#failed[@]} -ne 0 ]]; then
+ eerror "rust_src_test: failure summary: ${failed[@]}"
+ die "aborting due to test failures"
+ fi
+}
+
+src_install() {
+ DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+
+ docompress /usr/lib/${PN}/${SLOT}/share/man/
+
+ # bug #689562, #689160
+ 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
+ rustc
+ rustdoc
+ rust-gdb
+ rust-gdbgui
+ rust-lldb
+ )
+
+ use clippy && symlinks+=( clippy-driver cargo-clippy )
+ if [[ ${PV} = *9999* ]]; then
+ use miri && symlinks+=( miri cargo-miri )
+ fi
+ use rustfmt && symlinks+=( rustfmt cargo-fmt )
+ use rust-analyzer && symlinks+=( rust-analyzer )
+
+ einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
+ local i
+ for i in "${symlinks[@]}"; do
+ # 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}/${SLOT}/bin/${i}" ]]; then
+ einfo "Installing ${i} symlink"
+ 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}/${SLOT}/bin/${ver_i}" "/usr/bin/${ver_i}"
+ done
+
+ # symlinks to switch components to active rust in eselect
+ 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-${SLOT}"
+ _EOF_
+
+ 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-${PN}-${SLOT}"
+ /usr/bin/cargo
+ /usr/bin/rustdoc
+ /usr/bin/rust-gdb
+ /usr/bin/rust-gdbgui
+ /usr/bin/rust-lldb
+ /usr/lib/rustlib
+ /usr/lib/rust/lib
+ /usr/lib/rust/man
+ /usr/share/doc/rust
+ _EOF_
+
+ if use clippy; then
+ echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+ echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+ fi
+ if [[ ${SLOT} == *9999* ]] && use miri; then
+ echo /usr/bin/miri >> "${T}/provider-${P}"
+ echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+ fi
+ if use rustfmt; then
+ echo /usr/bin/rustfmt >> "${T}/provider-${P}"
+ echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
+ fi
+ if use rust-analyzer; then
+ echo /usr/lib/rust/libexec >> "${T}/provider-${P}"
+ echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
+ fi
+
+ insinto /etc/env.d/rust
+ 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}/${SLOT}/dist"
+ doins -r "${S}/build/dist/."
+ fi
+}
+
+pkg_postinst() {
+
+ eselect rust update
+
+ if has_version dev-debug/gdb || has_version llvm-core/lldb; then
+ elog "Rust installs helper scripts for calling GDB and LLDB,"
+ elog "for convenience they are installed under /usr/bin/rust-{gdb,lldb}-${PV}."
+ fi
+
+ if has_version app-editors/emacs; then
+ optfeature "emacs support for rust" app-emacs/rust-mode
+ fi
+
+ if has_version app-editors/gvim || has_version app-editors/vim; then
+ optfeature "vim support for rust" app-vim/rust-vim
+ fi
+}
+
+pkg_postrm() {
+ eselect rust cleanup
+}