commit:     0fa175308df33b5ddd4082cc3cb302bdfcfd0d7d
Author:     Matt Jolly <kangie <AT> gentoo <DOT> org>
AuthorDate: Tue May  6 01:25:43 2025 +0000
Commit:     Matt Jolly <kangie <AT> gentoo <DOT> org>
CommitDate: Tue May  6 01:54:36 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0fa17530

dev-lang/rust-bin: add 1.87.0_beta20250430

Signed-off-by: Matt Jolly <kangie <AT> gentoo.org>

 dev-lang/rust-bin/Manifest                         |  29 ++
 .../rust-bin/rust-bin-1.87.0_beta20250430.ebuild   | 314 +++++++++++++++++++++
 2 files changed, 343 insertions(+)

diff --git a/dev-lang/rust-bin/Manifest b/dev-lang/rust-bin/Manifest
index 5c83bf3aee42..eff32e830de2 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,3 +626,4 @@ 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

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
+}

Reply via email to