commit: 7a3f72ecb3972387e260eb0f6672e6fad60f2854
Author: Matt Jolly <kangie <AT> gentoo <DOT> org>
AuthorDate: Mon Apr 21 01:10:15 2025 +0000
Commit: Matt Jolly <kangie <AT> gentoo <DOT> org>
CommitDate: Wed Apr 23 11:36:02 2025 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7a3f72ec
dev-lang/rust-bin: add 1.87.0_beta20250420
Signed-off-by: Matt Jolly <kangie <AT> gentoo.org>
dev-lang/rust-bin/Manifest | 29 ++
.../rust-bin/rust-bin-1.87.0_beta20250420.ebuild | 314 +++++++++++++++++++++
2 files changed, 343 insertions(+)
diff --git a/dev-lang/rust-bin/Manifest b/dev-lang/rust-bin/Manifest
index 3c001f4bcaab..5c83bf3aee42 100644
--- a/dev-lang/rust-bin/Manifest
+++ b/dev-lang/rust-bin/Manifest
@@ -553,6 +553,34 @@ DIST rust-1.86.0-x86_64-unknown-linux-gnu.tar.xz 192462932
BLAKE2B 75bb01181aad6
DIST rust-1.86.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B
b7365bb0f74a12de2e80b4579323b3ae3b3e65460a216cad7c8f61d4fb4bb86bb55cc25721a6cbd8be5b2b5a92aec7601950d2f1b04f94644a890c91966bc20f
SHA512
d57cd3221f0d1dbfe69dbe4c5417b0e2d292a09fa892ed46ea90df95b6502c5d0e54eb4916f1289041758dbcc30cd6910f2bd4edc99f2711abb6a9e246361c6b
DIST rust-1.86.0-x86_64-unknown-linux-musl.tar.xz 283110076 BLAKE2B
9881d9dc7ac8e1f6cdf632131b31eae7404d17f76d38873509e4b8e549e00c37dfef3bdb0663a20b6fb13dc8198a6d25f74931d6f7e4d017400420a6032ab374
SHA512
abb2d6ccc009840b32e48755b2af2a7f2b04eafe285e5c2f35593bf3219e12cfb8ce9e15429cf2315bc5a0ee5103d3b64c7eea121cb77cb8ff2e699bd685bf88
DIST rust-1.86.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B
9dbec80a7661d103e0b0a2187bd524eb5a4f255e6a15ac4bf59f82eb0b5710ef09dec0f35dd0e3015d374c701c2945ddc510a05c5bad2287ce855c30c0460935
SHA512
9664e026d85ed42227680c385bfc42a2cdfdb3a37858ced5cfcf2f7baec4840e01fc0e3e581fba1297a55245864f3d1483f430fc58295b98b84814df07f73c0c
+DIST rust-1.87.0_beta20250420-aarch64-unknown-linux-gnu.tar.xz 167053492
BLAKE2B
f2138a03c2e842daa3ad49bb25b2ea63b7cb40165e472cdb20aca778b9fbc6d21f6102e10a0de411e873ddac7726a52dd0221afc6869650aa9a4cdca2e7fa9c1
SHA512
1db6b9ccb1071e95af7900c891e2f72ce52b434d7157c5b89370288d4fc12f4b2f51edbac761e09be79777d2bd156a334a71535e9bd15fe8a67596a9853ff0c3
+DIST rust-1.87.0_beta20250420-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B
55efcb2f4a63e712934e25edb15adacbe5941b0fa795827526fb720b5fc4083de7cc093c763cd86324b107aef74a953d06f510033f398fd018152e24ae3574a9
SHA512
b5d609a91d2bd2254337c776c33f6b6322211a7aa03da9afd26683afbcd5f02fcd62938b0288e572c55d8f413bc32b4d3df6c6cd544c4a6d3a38630cb058c91f
+DIST rust-1.87.0_beta20250420-aarch64-unknown-linux-musl.tar.xz 244278800
BLAKE2B
59b807b8c8e83c825a34734d6d317fb56a0fd670a629a20866ad2baa3afadc2e22353f81415b2ae073b705e063633f3961fcaf10ab34eb8eb6b2c05d2df204e4
SHA512
b6cb75ef359d48081dc4c40dc7e6f9794a121d750cec5b18f040aa0f80efa521d32eea0435cf74e467b59467af1bcbd971a3724d53a04963be7c0b21c5bcfdf8
+DIST rust-1.87.0_beta20250420-aarch64-unknown-linux-musl.tar.xz.asc 801
BLAKE2B
ac1cecf73f8018a8aa9bcf42f452818b810e13b7ea00be9b2a10ec60605980458b223600389dee74e679134951277ef5cd3b0d402425ffdcf1285530c490e028
SHA512
fedabb1ed5f3a38c36b20cd4dbbc44e11044522ad86e328d804ff975725195a33b321b447c5b918afa7bcff1485b1d4078a37181db4e3584905a7dca8ec13be2
+DIST rust-1.87.0_beta20250420-arm-unknown-linux-gnueabi.tar.xz 229437800
BLAKE2B
c7f6f72c9f538832edb58443115b202e6947f6e4cb8bd2fbbb81ad36ef93ea899067d1a94970eccdb5e6577f9d6d5d60a829a125dac3b48dfb7892d029aa9b46
SHA512
601c2c9a0f4acd988bcd4ee1ba2515baa092c4558d8a2109a965873b26d91f5645605a9371cdadd8fa27eabc34c2d50a781f8921fc9f9eed91933f800f36ca69
+DIST rust-1.87.0_beta20250420-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B
af63985f0b853ef1b8f0ae5b4448afe277c304cbb783cb73eee51a9c1b4429a245e164e5d63a62c9a50b72e0a52328e58ec2505eda2f5bc87cf36e4218d741e9
SHA512
deb475f6dff36af8ccaa4c27794dfc48073ea2e32177631e7ddde3f8f6cbceec6963f16c27b1fba9c191c4e48a6040b1929c4dd792303d6ee6cdda53bb5c893d
+DIST rust-1.87.0_beta20250420-arm-unknown-linux-gnueabihf.tar.xz 229830976
BLAKE2B
5cb3bc360d230b8b5fc3c5390b3d5097fefb76dfb73c47312ec229612fac1f1e34160b0a91d3374b7915dbece571f5edc05651bdfac344aebe6b99350b1d6042
SHA512
c1b6a2538967a05b336227d06e5cc7e73ad75e73abd39b1c690ffd6ddd9ec5f52adc2d209ace65672691da97ca12b200a7ecca3a0590f366af5aad0d190882e1
+DIST rust-1.87.0_beta20250420-arm-unknown-linux-gnueabihf.tar.xz.asc 801
BLAKE2B
9a9f0c2cb9991f0131662b41e8dcfc6a8bc66b32baa844b58e25aae09699f902496927454377643987cec0031da23a9b7b358d07b28e327720f75b6426741926
SHA512
8145c0adfbef8179396ff9d65089f179a523e6b500908a9a272c858d86cbc6235909b1f5e91ef5188377d00ed6a22c8668baa3c16827620a1698c7abce42fd99
+DIST rust-1.87.0_beta20250420-armv7-unknown-linux-gnueabihf.tar.xz 235549272
BLAKE2B
8df4bb650ee3f4d58227480e341db7cc9f0e7b065cb887c2931da46eab951edb304e6dcb3320496ac9da4a90e386973126fe4e197152c37554dd17c2b1cb624f
SHA512
8699544f8faf3002afb973179b3555bf12afd03667d295ec48d95cc3737e4bfd65d21bada4b7d2ad2582c6060a785603ec86ef636063b2b382da1bfedbfea331
+DIST rust-1.87.0_beta20250420-armv7-unknown-linux-gnueabihf.tar.xz.asc 801
BLAKE2B
45cb81d2f9133c4c6929a0d866393858237d4d99eece49bf8878dc351ac31224e61cb9f19b96e2639cc29502cecc4475dd1eb4f1d96fbe6a45ad03e00a215ceb
SHA512
c294dca3cff31b08e40394d8d25b4af5c7c98cfaaa7b2b1ee07b6c2af4b961181b56121b7638b42f6bcf36978b5a56e8311ec2c6f658b72daee39e4fbd360407
+DIST rust-1.87.0_beta20250420-i686-unknown-linux-gnu.tar.xz 263549596 BLAKE2B
b2e31c243b1514f17bc43c7715838e710dda3a8fa567c49a470b7bce082873b802b655cc790fdbf5325ab3df6c7fe5ccaa1ab9295ed0071dee532bce52f0b06b
SHA512
d02a842878dac99812aff56c6d906d60c51c37a6e03185c6a956f2712ffb0a46b9b198fdd7b05d50e7f9c56505d819253be28fa035f02c042065796853f571ed
+DIST rust-1.87.0_beta20250420-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B
3f6b3b1aea710e68713f67fcb13ad0ff81879f3e2c95bc288bf73dff01d051ca0e9f4e586b802fbf91dc9f75b69988c0df764a0d6128c02e9dbbc992f70fb340
SHA512
b35be052c1dba1b8d9f673a99fc5b2c5b123f33feffc4c5b24de2d5528c4624dc0d0ef75b9904cd9e86db12db7148693d1c5c065a07377072fc515fa4395ffd2
+DIST rust-1.87.0_beta20250420-loongarch64-unknown-linux-gnu.tar.xz 261203096
BLAKE2B
efc35a94cba075d843bd800fb52cb26bd01bcb02567a708926a5f8163e50cfab20802f50a8f11b449448b7924df462aafd6756a25eca3dee9882efed7a987366
SHA512
da71cf2b582f95119fddfb2dadf668b3c9ce9d731cffa68510ca72a7d2f5304c91530f020c3edfdcd03f4aca73905e8e32e8d5c304d0eb81dea432e212e715e5
+DIST rust-1.87.0_beta20250420-loongarch64-unknown-linux-gnu.tar.xz.asc 801
BLAKE2B
fee28e7ed6d77dd9a4a1a67fcdb886213c8cb047187508a0f4557dabc9a4fb9ff1278ffaf9b5ec652ac3eea1801275c4019221077a787a1045bce38c8b8bb08a
SHA512
6f9de5973a73eff1f44121e859aa97d74ca3df451ac1cdc20e5cf6f242368aa355157eb24c91084dcd7c2e594810b8c7ce4b6258fac5e68404e1789ef76a3bd9
+DIST rust-1.87.0_beta20250420-powerpc-unknown-linux-gnu.tar.xz 255800912
BLAKE2B
56e2e716d97e96096563569f1f8823ad31b8f104f424bc75d23c2b694181df9dd81b2d6b550f18149fb367041e7c7f30463e4c0abe294b45f3b1853e6f1423eb
SHA512
cd489c80bb6c901ba134af7f2d45afdd7ee1b82b3e1e4eb45049ec1316f9c067c463561459ddd7eab014ec8fdf4e00fc681baa63a36c1d953c2105df54acffe3
+DIST rust-1.87.0_beta20250420-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B
c134bf010ec2db06a8643668ffb6474fa530be7c31a076b2700f47477cddd2d8591ab2288b19f11b228dc933cb78c0576b4e512b89f3346ce4f01a0d68afd65f
SHA512
514039fa3faead4cdadaafbd7cc0583f7bb084a1accc295928b0f44657d94b0e47931d8badc69f80c13351ef6dd872a7d43856d7ba2ca63495a0f340c19f5c3c
+DIST rust-1.87.0_beta20250420-powerpc64-unknown-linux-gnu.tar.xz 255799988
BLAKE2B
585274636abb052f26ffeee7918a2ab5ee38029e7e895fbb278f24b659b8e28f34f6613375f90c1eb7dcc8236f657d5bef760c55291d048e4d102845883eee21
SHA512
b5d464d78b9b7ce0ef960c71d0a1e9d683ae599b46acaf096639baa69e0f67153e3ccf70e08ee4d2e9d23f8778cf654c6e9c3383d39a862a01ce03ecf2033338
+DIST rust-1.87.0_beta20250420-powerpc64-unknown-linux-gnu.tar.xz.asc 801
BLAKE2B
5fe0d07c0fedc718143aa8bc43383a95397a96ac46affa15f5114cb782996430bd347bd2a488d2cbab162fd2570834761296ec5e837da145093a83444d5c9fb9
SHA512
9a3c2b157adff51a286815de379bb8e42990c6dc4ee345950ea866ef6ef7cd4da17f39868aafec8ad9682eed187ca5665f5d332af8dbdb9beb29ce21bf14ba0c
+DIST rust-1.87.0_beta20250420-powerpc64le-unknown-linux-gnu.tar.xz 271492844
BLAKE2B
b090331958ac17b08b24b28ef772307bef4788ba16b40fa6cc62b0e1c6e4f5fecf4151048ab7f0ab10ff41a8c1c714df65e62c162dc9fdd8d56b3cc7390d93d5
SHA512
688fd8f82fb690f95a86e9457caca313527dee737c4bc6f928cce449ed456c5a569f1448afe6b8cee770e16a7603f5a212c62566df44115277cfc12b6969692d
+DIST rust-1.87.0_beta20250420-powerpc64le-unknown-linux-gnu.tar.xz.asc 801
BLAKE2B
6b83e970941e484c36c6147bb629383bf6a79a535c99f9c0c73b9881e38f2fcd4193bd27ffee4262fe2f5e0d74c867d35f7b60ff6543b61edc67b05b7674a5ac
SHA512
c849e801743a2a7f36d7a436309ed0bc5adf52cc3717a631a2dd56eeafd1942e97d624500f67d83d53187a821a56db88bdaad8928bd732bcea0a5d5e11803a41
+DIST rust-1.87.0_beta20250420-riscv64gc-unknown-linux-gnu.tar.xz 250483088
BLAKE2B
175a7c391337c844879736d7b71e5a9ebb777fb6134cb8ad4e42a3de56815487b5cefca681089a93e354f1a1d8f8d5b3bfb5016bb7b80003db4d8e2f70be71fd
SHA512
4ebafd8d1ebe0238e040c36c422b5b828b309c2f8322145ba07820a068e3c53a2ed7798c4ac67e2610baec1126c8d8e271c3b3004971490a253a5c59090c8fd7
+DIST rust-1.87.0_beta20250420-riscv64gc-unknown-linux-gnu.tar.xz.asc 801
BLAKE2B
72e0e1cb9f3e5fcd76e62c3efd42530f2cf04d54f05cbabeaaf3e1e16ce3f84a2d5f0ba0658da8cfdfd574bf85e4471a0b963a2ba57c1d790b314f0b89df9f56
SHA512
0e9ea30c181d46a8835c6c323bfb23f3eb1a7a267361b8aad056d4c820dd69b184ba210a9d0e1341d65178929eac473c69d11b4e0ec4f65de52f82f9bb93900b
+DIST rust-1.87.0_beta20250420-s390x-unknown-linux-gnu.tar.xz 240064780 BLAKE2B
193ca1b6d4a65eab53be8b6c16acb7b0acade0cb3c41dc244e06c38d34a0c9b1a6ad7bf852cb2ce1e432ca8f509e890dbe63cfc48c4cca11f8dd72a52664c39f
SHA512
060c876c11cd5783e7517ebeefe9d601b2f1e3220b69851200cb00d8fc06434c492740374798133248b3b5fd3b08e5d9ce9d458191896be9296a6245b7d30fe8
+DIST rust-1.87.0_beta20250420-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B
f41d5b89fbdc2f2d7fd7bfa56df5a481784bfa86563c2429a19cc86c397146151b9de31ce71f6a54986fd307533dc8f9df0ca23edbf659fa0efb1bd74613cfd2
SHA512
96968b74f64a7402be3d27e09867d62eb0554169553abac241c6ad4393c3854128494776bc9132bdcaee499e89e6a4875b8a25731af176d88297fa74f6c1dbea
+DIST rust-1.87.0_beta20250420-x86_64-unknown-linux-gnu.tar.xz 198552720
BLAKE2B
89ed8af9a09c7dd63833d91482f87b727b9597978318c7e66cec36afd1adaa13ed8ed6c87a2a5e118d8d1d0fc022e6cf8e3c6c79c92edf95162df9baf83aca04
SHA512
33b1df17bda04cf0b4dcd04337185dbd1b99bb440a0cfa2b6aaaf72257acb739e07f417ee56b691e32b8739016149a8bd5492cca8a84c0daeb92cfd9c5d4560a
+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-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
@@ -569,3 +597,4 @@ DIST rust-src-1.84.1.tar.xz 3016012 BLAKE2B
c9edeaf0797a22e384c54b3fe3e7c833464c
DIST rust-src-1.85.0.tar.xz 3036988 BLAKE2B
b7281b23eef60cf052e1641a29915c02c590166a73e5ae75890072ce80f95a2ab71cead3e3da7adf757ec0352d1dcc87ba4c3070282a27657b34420fe24a0c16
SHA512
613cfa603dc457cee34b154acef9573d766ce5757c9e8342b13d362f2e62b4cee47071a59df9fd5fa42ecade1a9efdada5784402aaf7254d5996558533bff8db
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
diff --git a/dev-lang/rust-bin/rust-bin-1.87.0_beta20250420.ebuild
b/dev-lang/rust-bin/rust-bin-1.87.0_beta20250420.ebuild
new file mode 100644
index 000000000000..e00494d54b3b
--- /dev/null
+++ b/dev-lang/rust-bin/rust-bin-1.87.0_beta20250420.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
+}