mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-28 09:01:55 +02:00
dev-lang/rust: Sync with Gentoo
It's from Gentoo commit 7c5a33cf4c6ab34cadcf79c33da1e4f306374813.
This commit is contained in:
parent
9e931c9e55
commit
1f7be414f4
@ -1,241 +1,19 @@
|
||||
DIST rust-1.70.0-aarch64-unknown-linux-gnu.tar.xz 212261108 BLAKE2B 56e15d01ea0e84c51ca3d4fc292c124536472e9c3e6d9ae13ab524e520865117b36621eca5072b961831ee6ad3077abd84afa9e092483095234b7ab2ddcae769 SHA512 d64eb19417a03452f591bb779042b2b3ff16d2ac48a9a74d293bc7265980280801784f92cdd0ae0dbc21743433388149557da7642871c72f3bb4b3061cf7eeba
|
||||
DIST rust-1.70.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 435383da02632d404ce95ecfc0b0690f18447f22cd82e67cd08e6e8aab072539b33a49c2712bdc35f34a811f8e66bda6bcf9505b41dcdaf4cc66e358df9d7f02 SHA512 634c35b52d85c524a954d0663b6f1507c5aec826768c1a51394bf72bae585afadd3d3af985a9d165a65d178e04813fd592a78d058ed1400bb0fc43b0a1614a27
|
||||
DIST rust-1.70.0-aarch64-unknown-linux-musl.tar.xz 195626092 BLAKE2B df5ca11b64513c86dbcab93bbc5eee37a1f2c6307ca479c07ef62d683ec1b1f56bd596284b11695d80c8483ba5ffaacb0bf060d7618f5e79f3957bfe8bae042b SHA512 5bcc47e2e791603b419c2d1f3503a60cc9a4a7351d3e8a61e6f3823c53195f58795cfcdc56c0c2011ae40a21ec7819d7dad32f5f9981f3d39e5f28ba85083d07
|
||||
DIST rust-1.70.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 06e279acca2308599b367cfcc105e9a1a9b129c1ce8d70e9c64f34f471fb9f28ba0b3ffc71ba389a8268d7f35fbaeadafb3275be29e7db8e8167ce1a828a3fbc SHA512 945a1679eea5fc89debe6c840b95314fd7be3f5ded9897965584cb53c3571b9ad18b1894fe4f8f82cd2373ee473c002c290ff943466f7d467357a6d56b62ce2b
|
||||
DIST rust-1.70.0-arm-unknown-linux-gnueabi.tar.xz 175940376 BLAKE2B 101b06523554df9f115f33dbace6a045fdad5ede100c7ed70a50da8a522e271708223f2cd5600fc4c2d5aa920e8179c9d60c24649dd234afc3fffe20d06935f8 SHA512 b1c3bd1c80437fda5e605aebbedc3f03f13223ab7fb37cf5808c8ccad00f015dd4656979e6f47ae65ef42dd158ffe18e9fa74aa17e80de76e73a8065efdf0760
|
||||
DIST rust-1.70.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 1e901439a083b6da2e62df19829c76a3cd2486115f855407f329b9cae0dff7a0c24b31dc48c13b28c17975cbc7f3c8d6073d7cc5629e78182f891d01e93d09a1 SHA512 c32b7f12c1c5cb5263444f6ccc5facf69e78a63816915babfe68e81be33bbf8a922618fc47fe2ec7142f8f04127fac89504b332cab5e0b29e028011ec5d2927c
|
||||
DIST rust-1.70.0-arm-unknown-linux-gnueabihf.tar.xz 176229396 BLAKE2B 4c3be748a110a0db483b5cc8baff433ef7b67af0c21be41a68a72b4307ac8dfa9717e066db3768204b03550484ebb4d7e6d45345f33ba797844132e1dbdb16dd SHA512 847602b101fe68e639598fd15592e60c8b4b2482077aad62b60918fd09c1928f1ed251197bbbbe3fbc5578a0e1e2abcdfe838e9c54cacba30e3ef2fa3d6e9557
|
||||
DIST rust-1.70.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B f8d920f2f3c1021ac207b1e3c0004e07bedaa207d463a60c9f2556d057a8e80eeec00565fc61ec9fae67e435bbfd902c4b54d2df0a710fd9f63594e7852498dd SHA512 0b7983572502d918241510abbe23ff913e5757f9a7d64e00701b23666a188a2324d70fd1840cb2b604fec813ce1883e1aa30bb421e1648497f3b165b9ccf4e89
|
||||
DIST rust-1.70.0-armv7-unknown-linux-gnueabihf.tar.xz 180820156 BLAKE2B dcaf472e5bce185f56a8ecd509ca0b829afe8203c5f3154c8065b0e3d9848f9f2cb6f6ee30568a52deebb21bec9aa8d05f7f2c2f42d584833a4f998ade707c94 SHA512 adb7d0fbabf14fc654e020bc8f7a2071d3aec7cdc64edb82739e78f0bd6f02d3d0cbcd18a648be24947a80008a1f45a1e35b9ad098b7cd31272ef985a502e25a
|
||||
DIST rust-1.70.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 3f42c11e20e1e86b0f934954c7d59b7b09af1613f0f10ff3295a3105c4f90554ff67c5c300f4d8bc1e113cd7631f10a4a1b9bc4f18049c97d6a3a66e6f1d0790 SHA512 981df55ff730f20ec415dd86f9fe035cbdb280d4cf742734db0270311f800db28e0688115937f7a9e525a8ee15adb61787a91d0a89bdefe950cd7489a7a09258
|
||||
DIST rust-1.70.0-i686-unknown-linux-gnu.tar.xz 204795680 BLAKE2B 9cf9b73b388145589fab8580bb6efb60cf731ae2dc98eec50abe819771778c9c27277bd62f89c4fc89c70089f499b7c0d02e4e4ba60bbdc31f48a3d534a4ef52 SHA512 a8001d2df7384f29783b4811896a3634d4daa5310d2b3b881e347c9dd727a621417e6e59ac30c6556e123850d1bfe557f8fc57955f4e8ea7b541cf2dde4735b2
|
||||
DIST rust-1.70.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 002ee6ebeb71b5178ce6e88d5a95db6e176b4262ffde775383187ce705d3a6bf3c756ccf975d8642efc71ab9c90c8540cf6cd20501f6d2b668d91943d5a6cd06 SHA512 ccd6b486a000ccbf4f78ba0863e926c621d06214452a2730da8d05c70972d84bbcb3f49005b23a9acf82e31cec32ea1672fda8c091c04cb70224cdb5740d7bfa
|
||||
DIST rust-1.70.0-mips-unknown-linux-gnu.tar.xz 155096952 BLAKE2B c19219093ae7ea268b847b5fe0f20343d16e035c7666a545420473214fca6e5a43201421de693deec721ecf94c8d0ca44148ff7359184f5d07f94fadcddfa8b2 SHA512 8c5178fd56ca57af90ad4efc1dc2265b185858d6fed1e7494bfbd054c4849337af08c0b4d8e99eb126b9c8551800ab5986764faa4fd782abb56ae85b5a6169b5
|
||||
DIST rust-1.70.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 49e8717adc826756bd7439cb8b8a5d62d7aaaba7ef5ace3f8cf1766d04cf8831a69345ba10a9804abb179fc23a6cd9b2f88fe3277de603ba2e9ebbb7e2c919ba SHA512 02c33b2d80c2b40f013b4a44553e6e8bd84b9df748718ac3cf7b2d6a0b33a1723cac2e142ba80c38195533cbc907b621c4b89cb7790612a175f2cccfd3d508cd
|
||||
DIST rust-1.70.0-mips64-unknown-linux-gnuabi64.tar.xz 152952764 BLAKE2B a65bab1e6284cb81d2e6c03d82ca103a6b7984925f85d45caef0cf2735eb8156f9bbff31e9265b7a94827f5098895f7a09e05360e808013779fbe34ebb4de32b SHA512 4ecd8a3155ad2734bb996473d03b346dc8022b89943e1accf8a81348eaa1965fe9d289c5431196c7fc387a945a9fa89c9c2d9ca244723970b6dacdc2b978c453
|
||||
DIST rust-1.70.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B aef454db1e0952174c78d0341aa8fc3d1aa3f4bb16019151589d0c377443d61929a03d8b5891133cc4a29d93b6ca5195a0adead6ced96af6a0eeee88dddd8e91 SHA512 6f50a9f0b32e3f6d14039b3f1a2bd13a912d45cb1c297a8af8836c4be6dc9a5590f3f09c2f30132e7aaf9b0e2ea5d356c180462c6054888f6e6ec58b0e99f20f
|
||||
DIST rust-1.70.0-mips64el-unknown-linux-gnuabi64.tar.xz 156871924 BLAKE2B 254910113b718725dde06d4350a366aef669662c7a52c3c1f13d2bb8cbb59a6d03bd04def02c9f3e6bcfa0119aa994e708ab8a808e6f4abdfe444af3cea6d5c3 SHA512 333dca6baf1bf580fe028cb5a2c261beebbb906a027142e36a9e93b7eb0728f01320c8a143473829e412524a6d958659775cf0972f40b87ebe3c664e44ef38a8
|
||||
DIST rust-1.70.0-mips64el-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 2ad85a65706830973b380eebf6807092853f4916e44d265b5822f286541981895519ddf863221bcfd7c5789737ea8e553c50dc83ec3e8b43cb8d04d4fcbe574f SHA512 cbc2d658d041d5437db9e8b564fd5e6d8f7ef130157f79aa4a92000f562b40dfd40cbc350553554f5e6bbeac347c9704f72a75ab06cd1f1f3a7031ab64764f9f
|
||||
DIST rust-1.70.0-mipsel-unknown-linux-gnu.tar.xz 158491280 BLAKE2B 299065eb46c14e5243450b5a4bd4d6bd18a3cd80331001bbccc563b4d2a52dd051d1791b5bb564c648b0fe4df4fdccf472d43805bd71c3e7cbc1bd424a857758 SHA512 0adbb98062cac36bf3a59218b892a3e85917a230ff07fe371069e1eca0a62169874655e53f607ae100ed998f6c91579faa1cf36f5944ccc5d1b28fa2ad456b54
|
||||
DIST rust-1.70.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9774d50e76700cae25ee51ad9d1a3b718dab9a4be04d0006ff55dafd9918f07cfe2fe5a83b45ee4934a7e0f0b661c4d3838331738a9e69cc77e6331d1b3e489a SHA512 586f3e7e09226d9e5bff379261b107a4ce75614aa53e196cbbb68b7828b25eb9a1743c4e667c4f57b6269f93074394c97acac88854fe89f545a5acd6a233128f
|
||||
DIST rust-1.70.0-powerpc-unknown-linux-gnu.tar.xz 174738376 BLAKE2B acac25164e9b5bd7335dfb0249588abb54ff02b012539f540392cac3ddbfd064e9ab000a8790c1d7f980cbf7a9a38e19574aa83297448a48fe42ee1aeaaecd8f SHA512 1a369e3a63e658a86588c6565f36740069417b0e2a207584da5b32994c801362eda463d8a7de9676adf42a8476a5def4c7363150eea7d1a09fd6f3c298279c1a
|
||||
DIST rust-1.70.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B ee5c4079fc9493e78713c54540e69047a05f41246f9f88d3da422216fb04d3e876b25ec61f19b7de02f1cbb5dc3aeb7e5c5cd03a5c1d7ff9717d7e49f660b245 SHA512 1b7cb72919453ef5c272ef62c8b76937362dd56a70e292439da1f28f6803ecd3794bdca3c433ce3155823d524ac70a9873c0aa5b7fe8b59f06abc67935cd8450
|
||||
DIST rust-1.70.0-powerpc64-unknown-linux-gnu.tar.xz 172874164 BLAKE2B d0c718cfcd533b5aca653144831c50aabd6d292e7cdb8b53be768fd946de91f3274eb07e9c741145fb9a5f632d626629b6d4989f9cef203e240382fdac3ed8f2 SHA512 645c39d447e92c18705be0db6e5e53449fdac6fd0cd2262b8c33dc9fedb596ad3fb3f2a172ca5de019fbaa6d48acdc98c6c742e925c23859a58f27094db82179
|
||||
DIST rust-1.70.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B fc97b83827d351e0ddb95e3f844bdb8458232c374d23fa656ae6ca35a8db34b54b8ec47d18cb316410698970d63caf4bc028d9ea68825f83349320b28a7b1270 SHA512 a21553e7c4b28575f15cc28536d5af6bbc0be6992fbd7c6cf086b5318fd87de60181bc019ad264dca1dc3e59d1091ea0df233db83d69a267a91db9e22847a4ea
|
||||
DIST rust-1.70.0-powerpc64le-unknown-linux-gnu.tar.xz 182570028 BLAKE2B 2ae544c9006a850d457ebe240fbdca58905c86cb26be3edeaa95aea02a3201c94852936cf3e91c052f2bfb5960cf923f3bb4ae6d6d92493733f4acf9e70c71b4 SHA512 89cd4d1118ff8f5fec5e148f41ac9cd7dcb76b21b67b1733679c8fd9ed6f726239a22fcb45faf2ba45bb16e04f679bda9e29fdc8d3da3a6ec03f7a6ec85b1927
|
||||
DIST rust-1.70.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 234a2051888eeccf772d9b7f41ac6757453c29cd736a2abf1b3d1fe22dd45fa9929efbc501ad429b6e44de13fccfa17d64ce4beb86879498c157b0856bb3eae6 SHA512 48ccff718902cb4d78663b69efdd16925b4df21b735c373db25eccd8baaff3c6dcc5c49ae37d583cdd22f44df91244e34e8463e65db69f8ee6ee96fba90f1cf0
|
||||
DIST rust-1.70.0-riscv64gc-unknown-linux-gnu.tar.xz 167304092 BLAKE2B 977fdd1fd305d4cb405d18a21719e37928c5ad0934a62c53ef395c067afa75eb7bf6fba5c9c7004d1413cfb78496809d1425fea9f38fc33916fa7571cc9f687f SHA512 2b19f66ce4702a19f7ebb8329569031c4a5e2deaacd161ba231114780a565fd8f1ae0b3970e021da6b7b0a23b1f41ffe3296f2f2b1dadd5de3f533308ab02d95
|
||||
DIST rust-1.70.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 26af74d00f9f7c53a15f9c39acef5364a1cbc7df2380ebf43cab3b02240b8fe446c200ef4652ea8684f0470035d8352accf5e0ab5b34dd9632b471458aad2516 SHA512 93ffd6214db7e04e2692f4e05bccb7140c81378da039317f2e04587f1403935abd57b8b9bd5e12b1befc5dec10898c06a508b1ebf83b845564b9b8a42d7041ac
|
||||
DIST rust-1.70.0-s390x-unknown-linux-gnu.tar.xz 197741656 BLAKE2B 7d31b09ad69eba9ad1a2b7196679a439907ee80fa3ddee9014f0c78505ee9e1c93514e7f44f83b0ac5ad442c6e7f05568b0ea928a89c5a69601a1a935d2d253b SHA512 3fa31674a3ba33d41c7db2b33e176edac1bd67713b7b52dc51eca73d4ed1821a2a4ecfd2545734fecb57271828ae0bcc7e1c4d0883821b650bff99544484db07
|
||||
DIST rust-1.70.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9dac941acb317914f4eac12df601b442e9d9c74f13048dd8120d23c3297e7f5bc77618fa8eb29d4401b141acd59d20e87e1b198f9997041d4113de9ad39b59cf SHA512 64b8658b275a53b52986aa967535ade73009e833fdc89c4e225f3139262fedbeef902702e8e71b18380a0826afbe7dfb1afdd5800bd5f810e66f2193c4de6501
|
||||
DIST rust-1.70.0-x86_64-unknown-linux-gnu.tar.xz 163456784 BLAKE2B 49a8397a7129aa70f5ab3876613c9c3f25abe2a48fcdfaeec0bf030529f558dd6ee221bef18ab135b95b2e8bdd61349e3357674a794bd08e4539c0fbbf51bb3e SHA512 8950c85f03f2e7af23c18e9be0ca1cdf7074b9be8d8c7b26102277c150c598bb7d5f1f74400bd70efcd42b38f68c96c7701239719f320311e8b131191ee77512
|
||||
DIST rust-1.70.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e5fae8b3c87f54b39d922fe0c7694e0ba115ae34a668cc873390fc9e4638baaff5b6d1b4c67228c6bfc57b4da9bf77d6a452ca12bf6653d5610895b8ba19d64d SHA512 352749df741287107b966fd603113c51e82a426a7151e224e3a8d1cc7bd4658ef86147f6fce62caccd7b5779d9961be72cbb618db79a2850e8a8c4b0bc229ad3
|
||||
DIST rust-1.70.0-x86_64-unknown-linux-musl.tar.xz 233692884 BLAKE2B 295e815bbee6dc135ad17dd78801999afa7880a7a8f5ad4932a7580f1b03d50b850bcc3eb68e9d679e0a2d68392d446423ea752e47bb22d64823bf3222e0b377 SHA512 5e42224e109d525a321c107005660059ddcb0414392abc660b80fb09a55c936c79215989646be0aff6b0427b2f5d82a2a19ec3bd3235883a2037575808aeb69b
|
||||
DIST rust-1.70.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 7c5be81109607f191f339cfef87c736e2d35d4a045511036ee6e9bd68f22fbaae825ad5c463b0a5bf29606a8b9cf488172d1338aa4d034767b0f59243613c250 SHA512 241863164ee1a0d702080c9967e2ec5bb7af9222236316c8857b89b517fcbdc362b26ff3e362c4be7fd2989d3fd2aad0a0476feacecd2604855dfa53f5f1af27
|
||||
DIST rust-1.73.0-aarch64-unknown-linux-gnu.tar.xz 216033148 BLAKE2B 78bac094c78d68102cd5ca6a7bc9ac8a51ecd3e14cc5c66fefca0a0597b5ba439c22d69a323a6e7cafdfec60cadf0672c91ca5f85065ac8d7913c83437ec0256 SHA512 58198ebecaa4652e0477eed6ad2c29524e7a3e991ed437775281ce526c8485b2a1a49c75ac6fd5bdcc6cb997cee4d1b4d82fba49c03ad38bcafa764f5a9bdfb1
|
||||
DIST rust-1.73.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d4b85efab3aef10fd6940630ed3cbf6cca12961228482ce42cdbd4c0c185c55b9ccecb1ca386e7a5c02fa33b77685dc8e2d619ecdec0cb5afc7a01402be5a22e SHA512 b7392e301c00e2ee1be692e6b5a44fdadc4b442979bf8f09fe71f80d82b6f395d0505621ba8eb54fe6145812f7f9c0d2b278e474d6edde51a2318cf27f5080bc
|
||||
DIST rust-1.73.0-aarch64-unknown-linux-musl.tar.xz 197525740 BLAKE2B ed84c438426bb0fc9a5a320731ae448f242b70a764d67e46e53a37f0e76262a183886e83fb27166e030740a27e6a79ef1c8f50bfc4a2c9c5d915ee5fa74a251f SHA512 b1a3007217dbb771e459b92a2ce0efca3babb34e9901cd44006d7c8ca92f48f67bdb877d3ec4710c58ad1645da4830a52cc2062b6b5a9827b8d57d508f4029a6
|
||||
DIST rust-1.73.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 2e2a965b37bdeec12fbe3f605c4bd10bb51adc7dd1c2e2d185b7306e8c75415d678b1bd83eb68e8a05099eb77958a928e867f87b0a4f05b5315b89869f120a64 SHA512 b65b08a68571cd0cf17f4469c1eb95868e00e6244e30ac0d3c30e0ad6abcaed143a7389002c0f90b2ddbd79b9c9c3856d66387f701a8d0eb9f1683ce456e4910
|
||||
DIST rust-1.73.0-arm-unknown-linux-gnueabi.tar.xz 180327600 BLAKE2B f28725f19259806f934298d2b6dde6bf59e5f8bc3ee0ad9b1cf0565a5383a31189170f26495b3103bbc9d86d2ac9b83147b3803508a53b96eebd214d2b0aff90 SHA512 27900c5faa9076db40cc85d973274a09ff44a76936312f905a3d9751d0b7480dc260ed3cec91a65bb78382c67208b28978e2079e28a47a25aa6279d09adcc045
|
||||
DIST rust-1.73.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 03ad365e06dbaf30d4ca2d8d2d3066d4f956ba5426f2c5b601c3830d9b0741b3655d26eafb3853b41ab01dc377065ca330f9d6fcf89de066c50adb0c9c9fe3bd SHA512 ecef5fe8359d8dbf23337398c1cb90a269ae169a1cd08525361d6f39e0a24dd22c1819c7ee0fe3828431ad492af89d19bf8c3c7b111f7925831362e2050d1040
|
||||
DIST rust-1.73.0-arm-unknown-linux-gnueabihf.tar.xz 180870680 BLAKE2B fea49832d8eefa7545b76114874de3d653ed888f753b68cd7636b7a1462bb564e19bbe37a5f3b94cf9a06640bf81f6fcc97f224f0f3e1745eb19f99ae193d3af SHA512 3648672256182cf6c73e31a05af3084b996bf25e1ccad8b96d68501e57a4ae4cf57befdf84db27e3e1a9fa3af051117e94ffcefd14246794e7528020bc26f4d5
|
||||
DIST rust-1.73.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 7046fad305aabf192a1084328d739754bf76c27fd3f1efcc4be36047ef6c4bf899ef8ae7e3cb359e23578af4c9a25d4e1f453ed8695ba33c630d46351234de69 SHA512 7e046b79d4d0a1bee3c7c5f6b8e3020a342a39e9913a24ef672aa1d197e63905653acc24652b720a4b996029661503e2dfc3b678f297ce15c548281ed772ac23
|
||||
DIST rust-1.73.0-armv7-unknown-linux-gnueabihf.tar.xz 184898496 BLAKE2B d0b2ce03ce7ab5e2c843989958a00524fc59000f62dc07f9783f4b9f22c734b67b33e403e3300fe3350322e1ad2b59e64e41b339d5f5c258b29dcdd98dec9c61 SHA512 ca48bb9b683058321b0ae770faf2fd607e03ff5e9291626ccbeba707f5ef8c211c29b9ddf52dfa11958691a127f95dedb742010018bbd6be2fc1d7ddced44190
|
||||
DIST rust-1.73.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 12e19ff5f586a7f67bf7e4f6ee96d919293500bbfb3bec306b412a423a3dafe94fe63939f371a644e1d3a1575a6a21df78f11ee63a8dbae9af3a2ce6b03d5104 SHA512 9e1f316abb8f7861fe1188aba1880732b957514fe58de3f10e340c430c1ce64e9627feec1a655335d33605cc6f5ee32830159a8215c5a233f25ebff18e2c7bf7
|
||||
DIST rust-1.73.0-i686-unknown-linux-gnu.tar.xz 209918920 BLAKE2B 545c48dce0e275228e260669d0f5b93977a9c7a02237d4ae9d84ed69236f5e412c5980e2c5823478949214c2b775c89c836bbd43e25406c20fbdc52cee328240 SHA512 a80742d14acc1d018ac35b77abba4491b5eafe28bc3173527c865b0e930572f2a92d4fc459db51c34600f8288b20b5790346b5f8e6fbdfcb080f1f14f44a2db4
|
||||
DIST rust-1.73.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9800a96cf8484b0370f343c2fdda0762bab534fa7551a7716e7665bc90b651207c471ef5e06b2d7acb766959155b5d593b375487b01cf65e980ebc721c3a4042 SHA512 dc0c25c270701ff6509bbff3fd173178ec8aa3e5cf606fe87b803e6f1279dde3571d22cf0c7f28bb0ba5410c08a491f9b9b937d0aa796c0ba30fe43f7e381c1e
|
||||
DIST rust-1.73.0-loongarch64-unknown-linux-gnu.tar.xz 161763960 BLAKE2B 1ae7019055a4fb457733826750d2c20708e7d8bfeb8532ac1af5027387bd1f992c2ab1fe08d088b07581b0a81d7ea7ac8e44ff077887297a4d4da2a633089de0 SHA512 9840e1454506e3f0880e8113040eecd1b363bb78371386aa069271e18e70600f81e19358539785a3bd1ada7244b4830362e6f0b466798cda7647ed795072342d
|
||||
DIST rust-1.73.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B cacbbd7793d6f693cf2c1211529cb4a0c888f3ed4d8674f610e034a7216fcf7f4ecc85331aaeaa89ec02c1412a62fdbda29a3bca6faa64dee0f8d419d055b41d SHA512 64b8594f2f19151927f5b74584822a78b15da97fc8f5e4823dfc222056a203ed68ced70cca915e1694ea6b36fdef5697e5b56062cb761a0d9557e5c08ec8ea07
|
||||
DIST rust-1.73.0-powerpc-unknown-linux-gnu.tar.xz 176694620 BLAKE2B e8b43ea4b9ad78ece530985afdeb140e0e960213272857cedcfe4e9262c190c7d26ce77d46fd113d2742cb159442c256a081bb6cf23e6977fa5ca8c6cf21ec30 SHA512 03f889dad45d1bd9ee4af52209af3d763ad5362cf1a617c86b050e0d2fe00c39edc716fc32a83c6e45c118b97d828c32f682ffec5b32f215d6694509a885772f
|
||||
DIST rust-1.73.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e63cf87a2fb0584f2fc5c01a98dbb12bd9a7f4aace54a08505a0b4f9e7141705409d8bff1cd3a2d7cf40504ea274f29e11624ba050d56e4ec2a4e794fdf188f1 SHA512 a86db43be2a2fd92638e6355ac4117e707073fbb98631a8b41064e5b01e12bc1d2c594547778d9c99ec3e24c5c4dce6603cbfcb3715b11aef9d2c2758ee8b7d6
|
||||
DIST rust-1.73.0-powerpc64-unknown-linux-gnu.tar.xz 176165132 BLAKE2B 3750ef413de00047fa957ecc6c832995e072b58b78f994bdd6b8291583acd0a4ab54634d4e4778456bce6420135c83e9961aef5e615fd62806531686e33a31d8 SHA512 9f1a669f7d532a831df76292916493e1bcd4a56d95d3819c477898eb0510bc8760d008fc1e7d383927f8afbeff826b0598f9bc4067f692f530856c8e444f44df
|
||||
DIST rust-1.73.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B a1c1db86107b48a554d815811b518f7b28abac90cd08920362643a538670e7859ce43d179de24551b5e4409e0a421029e66b8374b27ddd699ca68fe0f47b8904 SHA512 04604baa0f13693d4bc7a0729df7041a55c0cb9efa11ef511d29d2b5a50c3575867c1ecbb6a23a030dc014876bc9c02e370c8d0eb531249833fbb52dd964f2b4
|
||||
DIST rust-1.73.0-powerpc64le-unknown-linux-gnu.tar.xz 187628140 BLAKE2B 1ab716a7d2e536ca3447fc0aa2751d774259ea2e39ee3cc150bfe11967e57bd85b484cf050a39cba717a0552dabe6d1aa79ca7dc24abe4b43d4802fb9cc1bc85 SHA512 d6566978f47067b84715ef39756721ced5f5430d5c92f51b673db39d1e1666a8dd933e998d4fe3ccbc36ec47c62b4fe7e335c4e3b830d27571dcf9e534446d0d
|
||||
DIST rust-1.73.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6b3a29cf580d750a17436036d6bdb2457cafde123c289205aa239457afa4de10b4b97c9f3ccc23cd296a1a388802ac4f696c71e45a2ff7c97d15d63f2a04cba3 SHA512 5840b7986e9472a4907ae01eee0c4a40664ce1a29ff159557766bcf50da773d246a74ffed2bc5bc735d255514e0daba55d10bdbf7d8d2c3a6aeebd704f3009b3
|
||||
DIST rust-1.73.0-riscv64gc-unknown-linux-gnu.tar.xz 182202208 BLAKE2B 836d89e6ce276d100edce8016f5a466b99e8aff2646be7e58dea2f38678e4fdb9b93fff1126573a112e19cdb32ee5290fa58df0e5cbb1c309e65927ae1439b52 SHA512 c49031996ecde5dfda4b8bf3869b37ecb51c89e3fb8f69d3d43d865bf2ed6dfa928f0239460f0f3c7b7168eedee9b5a957d956f39ad42fc7276fe64a649ee501
|
||||
DIST rust-1.73.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 119d6cf2b0b4f8950d51aac6eb865619412e513c6c87f31702572cb2120a20cb23133a763036cbac0a9977a20dccfb58a8b034d19d13892ffbde05c01970ec92 SHA512 578c2576f66d0ad344549a94cf83f80551dbec7ecf2ff8616d81cd1eb3a7154b89701a05caf6a21649361ccdd1abfd37b33de935e91dba02dd914945de3930b5
|
||||
DIST rust-1.73.0-s390x-unknown-linux-gnu.tar.xz 201224624 BLAKE2B 5f9f28c5f511a3bd119233e4a2b882119b18a42a8c235bafc57f35e365496fe9d6d88c6278e014345f76a98a235ecec31335178a6b047e5b2188d391ba465e70 SHA512 e946192961623be1e3ab4b3e2c86f16f9fd716ee3ccf88137e6ed7ca92b9e8376552a9b46b48c127f6be76a1fc7b240d9b8db568390fd7d81605634ebb431ea4
|
||||
DIST rust-1.73.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d05fc43c55e47b3a32e8be8f97b072961e920ed09d368968d1121dfaa0dc36e11ca61a0b03df2f708d0eff31a80367b5d465434b851da4c8ff00ce9ecd577bce SHA512 5950cfd08f49bfd0f1277e2f07e333e7188d65d6a61d738dbe586bde8f3647862ef6d6ca5f52d74f357ae3997f1554a2c7cd0399392cde7ec32b1f2aaf8a4c6b
|
||||
DIST rust-1.73.0-x86_64-unknown-linux-gnu.tar.xz 161588916 BLAKE2B 10c1c57641e2ae076c55826985d8ef43034a3e4b6fd15d109f949e8bc655dfb16d45ce86482992cc2aa3f4000f3432b8be17019f9f5d29a92fb42c37cd7df72e SHA512 b70886b5ecac41a7e6ea85d1b2d1aa557a0395d3f8abe4b8d1ad91f3b32ac9ae73bebfd7a9c48ebef4141be041cf5bdfab8bdb78e1b4969afb439daca203d5a3
|
||||
DIST rust-1.73.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 22e68ec4e6bfa49c15344675abd20ef9449d928943dafc64bfa1cf78dd36ccbce4802af8d4adb84762194dabc512efa74655a93785c127e6942ebeca8f6e3303 SHA512 56e53a1047a23a7f37250a785de2422ee2a3a72fdedb9a02530b3cc1cd978370cbbfc0e67d75f3d537f48c6c78f91d3de949ac2c9392a79404609b169cedaa40
|
||||
DIST rust-1.73.0-x86_64-unknown-linux-musl.tar.xz 236190528 BLAKE2B 062b54b31742bc846bdff63fb38be3a3a1f6d2f061da26cee6a0b089feee995fe3dbea536675495ed75d47d657c3d4bf04e36f6752f59f8308f7eb9a397d6e38 SHA512 abd01e0c98a8aa447d01613e24302ca81a8cce7d41179ed60834a39ed1942de0459add3c498a63f94bb1ee8662a2750b375b49894e3108da45f47d3a643cfdba
|
||||
DIST rust-1.73.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 9822879d0f14eb5387a623d111ed7a3b1ff038522c071608bd254c4b3479da8a1e9ed78c69c267c1156c45a9cbb2f7db00d123b85f28021a743d392d1cb65c75 SHA512 ff65fd3ca47afeb10f7434d8d4f91b6649739167639c3eadf178aa1339553c5316bd0bb393cd53fcce17c126dcf8db1f1dca6e87044b14762bb20ed8f5a500b7
|
||||
DIST rust-1.74.0-aarch64-unknown-linux-gnu.tar.xz 216169516 BLAKE2B 830b97f710a3249c4d1df6b37dc9c429cd8d8c8edb0a77de8d04460bc2132ababa6777dc92b82b8a3b3839256f2dc522128d31a81c8b5ae9820a483368292cc2 SHA512 40a98f9238af1a60a0506e3e1b88e1d61ce68ed6380c78c77b638b1fccbc8cd0e39d7c042a70dcde454a3fe95b6c49950820f728b847dda218fdd91fef7066de
|
||||
DIST rust-1.74.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6b15fd93514659cc64759b7c7c3e26781b87f58022d91bbeacc64906c681ed37b825031e9fd78051671b35c5abbf4d76c11e320742d5b482f36e98ed9d8691e7 SHA512 2480367abacb766e015c3287568cc2ea2f186b48cafe709595641e40471b4da1e29b5e41d2a3b5eb7d9f9329725e46e4110800952e554e84212e3a1ad36f06c5
|
||||
DIST rust-1.74.0-aarch64-unknown-linux-musl.tar.xz 196821888 BLAKE2B aa8444b243a670ce5130a0436bbe100b75912a03bf8b3f99f5dbef9b3459fbb3b6e0d0fae6e9d9ec368e95b20f563a8821ed7698cf699b169887dbc63a7a71f4 SHA512 22255c52052977b272dc740853359c15e2764164b38afd473830dd69830d4897d60dc037f0e6190df8a31ee22f80d69f60d7dad968a41b91f23368328e11eef5
|
||||
DIST rust-1.74.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B f3ab9235640f5314de7a01564fa60563f123d7d4d8755b4263a687fb22b4d874cbaaf9184436e62c8e65d23c64685d33333f3585dcc518fa90229d1a045186e8 SHA512 2ba35243e3d626347a442bb9b798e698e654d65d81d3d2391b791f33636a74e51b2c5f6270d37abe641f6e243dc70169e990e9fe1ed0392936f272b65216bd08
|
||||
DIST rust-1.74.0-arm-unknown-linux-gnueabi.tar.xz 180475660 BLAKE2B 33ac40eec4641d71ed03226dcc0cef62fb4b108835ca8532110237c41c5c1eaf5f2a78ae3b97fd69043898439816702df6d1ce8bbfea36622736b62db1de7d7c SHA512 4f90237267516870a9d236add52b70c4e3ffe2b12ce0280faea4f740aa81b0ab8fdbb0e6e58425c8e33a0795a4bd18cf766d222b9d6f8ec9e972d4ce10ac0640
|
||||
DIST rust-1.74.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B cb1c623548cd2dad04ba2130883fe6ca70466ad8e8d10a0bcbe42ecbf7f3e10c5f62eeccb5300d133458e26c9b340ea9f5aeb3b3bd35420e39ca4c2a751946d9 SHA512 eccee9e6ec905d4b30b620236bb2c3648f4c5e00518c2e1b0ad5d009865d56abfc866f1a100acc8c7ef559590052cd858cd247bd091d31821b27bfef00b9487f
|
||||
DIST rust-1.74.0-arm-unknown-linux-gnueabihf.tar.xz 180651920 BLAKE2B 34be0e8e7621bae3a7ae0c0c5fb94df55b42035d4a6219d773e109cf8e17082c81e0b8e831421f702bf269e095b0fd6bb798a8ccd78f12b099e5cfa638458572 SHA512 c6f7f9aa592985206a3af47f8d61e094e0fe3c714deb6c569a8a0bef8f5dd897f8f27ab33dd184eb28a9267c877f21527dd421baa312bbdf08994cb69aeb6ba0
|
||||
DIST rust-1.74.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 81703b2035f44dd3272cce97671205d6f838f1ef09dc22e25316567119da12ecae6c38d5cd54a82f70253a65357c60cac3d2c6c91ceb90614baedb5fb3707306 SHA512 aa7d6320d868f4b05274a964570f6d1e5bb4b0f72da0875d43356ff2a48a4d1a2605dce1097e88fdb3cae502c05373540799175bf205676088654a0288718995
|
||||
DIST rust-1.74.0-armv7-unknown-linux-gnueabihf.tar.xz 184856340 BLAKE2B 5002309dbc31916ff4984637c646136c0be0ff682d105f579f3e66dc3aac51feffd9fe70e1e4020bf554155bab88fceafd0a223ff6f2d8d3c885233b4592303e SHA512 8beb260a0f07b11b91a21ff7a6bc863d412006a4b7a582c769ac6991ef8d93ccbdf3b3e9921ba16fd2d3c4354aec706298fce182c910c26e4fcc61575e6f6213
|
||||
DIST rust-1.74.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 6945a1ad0917f5cca07e1d8e292644054a613ccbc7d6d8d8b4bbe1d0e580bd1e7e40c62383fd9ec3a465d9af1db02f28eacb98bfcd5bd9f4c4431f74824f1a7e SHA512 c3652f8a7336e5ba4c45a31a089d99fd9e36bf8f7b593a3bcbb728a24d3d76f81ac908b0ae97905b27ec0697364ce01ef6adcc1853756da300989b4ab4bc6d15
|
||||
DIST rust-1.74.0-i686-unknown-linux-gnu.tar.xz 211708688 BLAKE2B ef83549b86e4da0c8ea61d14dc302dd10459798fccabaafaec7e8f24ff2a4695e4378706c48092b8afd3dffac7d995e53100bf0d5f3caf73dcdfda764cd3e656 SHA512 b97e1ee46d8ea20af6a61ee933c66b5314f55c3c3879bd8101943a769dda3ded7c91899fb7eb26ecdbe1f01f35e9784398cb85d494b03bf0673d2c1c8ed27f9a
|
||||
DIST rust-1.74.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9a0916d77499972812edda89c04563d41e899a68f73fc8867d878e938ef6b37057e97e7209b033d6624674f472b9e8441fd89bc0a82a9ec17c85381b07809367 SHA512 562931b7a78a92ae6f07e502fb044c1ed45ffca94690cf8316c55c85ed37ce426ec72b526a10c4da8bbe947f1b253e618338028ea064eab8bc446ffb291b5aa6
|
||||
DIST rust-1.74.0-loongarch64-unknown-linux-gnu.tar.xz 161629420 BLAKE2B da3b11b1c8ce2d3e1f30885279e4524f795bb8680f0f076fc154c7ffcf067d5933f2a89c2c5dc142859adebeda9eebd9559193a5829a114bc670262872069fa1 SHA512 a3d75491371d74d14d5ea3e1578040b1baf67166c899e0c590599d1a5efe5d6fa11c6efa9f2525ef2011650cf62d7e1384f71f9bd33357296915a9564b2f0c3a
|
||||
DIST rust-1.74.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 58d483bd3f21344f3a2da5ee4a88b2a536baab0503d0fa52f7c97ac7f6cee308401246cedc5b2c38d7d6ecf57290e2e0f48f8a84c72cfd5aca7e2d2310723963 SHA512 28fc0773a95b0822b262dbd48f37b637ec95cfe7694b2b2c9d5b18e0492c802d29dbb0013382fadf2037250faf9b3019cd38882102f864136be1e64623c89882
|
||||
DIST rust-1.74.0-powerpc-unknown-linux-gnu.tar.xz 174911076 BLAKE2B 3539adb3fdcdaf6163a58aeaa2d5f1a7ca5e13119d19a559b328d2e994ea5c0147ffc410391c6a7d2714f814b4254d847791a3737596e4fdc97defc7e3838000 SHA512 95b76ca4f0667ed63e76b99ef7b3667d88e13592de941a6cdb85e970ac766667c2d1f7161e20e1d8d63d5968fd5c82f2c0bce5d84f11d59b438b0ef16679faf6
|
||||
DIST rust-1.74.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 58262a22b6a589bebf51a494e4bf0217b58cdf214c2eb0bbfa9d9fea20f0a21ab0ce76271772c452fc2d5a0b049bf09c84b342eced0995b9456e68747aaf4c63 SHA512 3c694d9ec22c03d07cbd64dde1bf5f532beafdf3d974e77e5fc09adc1484bb1572625d62fd1e0d13613c4b63c2efd82f58ec9e4a2a8ff87b2527b2da7896e703
|
||||
DIST rust-1.74.0-powerpc64-unknown-linux-gnu.tar.xz 176265620 BLAKE2B 2885cb229d612e702e47e7fcbb18a60c9b5aefaacbf14ae146b3078b53e3e64d05273268d4e2e0c61dac1f7f1a5238f82c0ab7e0a05aca25478e661e6f5c7600 SHA512 ce6c5eab3de7ce6800137aa02c19a9c1513738af140c9cb1cf1c89f33f71de50d022a6af92eaadb26898422c7beebb6d6870f2d766e3eb4e363afcffe75a2627
|
||||
DIST rust-1.74.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e3c29be027c55bd51b1520c9d573b2e3c6b8c094568d57b940db9b895532405717676cfbbb7486b78fed6d3c79453a760132ffe2b2b86bfbf67a7872809cc5ff SHA512 baed4414207068429bf5c4bf445650936bd1ace3bde19f8fdede269a4204e37964c6b172d2d347fa93e472128fbe7ae5696be82d5ef873aa6a3c588a1621f1e2
|
||||
DIST rust-1.74.0-powerpc64le-unknown-linux-gnu.tar.xz 187255560 BLAKE2B 29fd06bd7a3f0229b0c1513045932a7786ce10501469f46ffaa9d747d7badb63c69a0d1f13ece3b09ee811b492e1214ad4bf2b875269caf829e5a6eea449f0f1 SHA512 96a18b9938f8e7c6772a7215d866f6bbbb28d379ebfe4f0fe0e32fcb4fdc5f3b7441edbdce3b04fa30ef91f8d5c2a2c1fe75ad0cce1ce1f2ed75cbbeceb1e64e
|
||||
DIST rust-1.74.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 0cd802412a19cb27510c91831f953ece98b0ac65c8ad6f91e1b136694403b71b1fd29aa8eccf45384eb59ed72e7a6e4218226826e243d1bd232444c277f8f0e2 SHA512 a73c22b8b0a319c3b0997e463f4cafbae8ce3fd5e66d42db07aa60b6e366a92afe640ac36b0a941879df3510d9341b3cb3c895e2c864c0ebd4b2bab7c5426dd9
|
||||
DIST rust-1.74.0-riscv64gc-unknown-linux-gnu.tar.xz 181305504 BLAKE2B 708e30456c32d7fd6d8d07e18bfcc73d339e5c6f5ea92fb3958b538c8a3bc4b79d02c79e2de9a5e2480ec7ae6cab6a36d345cb183a811d738aef0536fd143701 SHA512 050ac10adbed179c646c6348fa43a1bcfa18084de444032d8c064b5f1a7b059aeadbf9e06a75079b2dd9170e1cb078205c2a675e0c39fa694c813f2da2d616dd
|
||||
DIST rust-1.74.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B a3be1f47f23d62f46b6c2b1dae6d07243c90690f3d097b24b4f7b2a22471d39160593e2703b5baf6a3c701f167d8941241511bca5c78ba79a25da37387ea1cf0 SHA512 a9c4c3e22bafb1c53c71d9836873e84c6a1b3adffeb361394d584b829b5239df39cfacfbddb96c93f4ecf48c4ea98421da3c46245f32659aed49961198db18de
|
||||
DIST rust-1.74.0-s390x-unknown-linux-gnu.tar.xz 201169576 BLAKE2B c8d5b9d621fe3a1f3ffe28a09cc0660636d33c6aba5463a99570d4061d736847b95cbb7bb3cd0c2d6a007aa8c4b08364867a5b6d4d12b7f34887327ecfdf041a SHA512 96c00ceb9bea19637d92151ff8ac289e0bc62f05e08a4ebe0221d08271a4e80e0fd628ef2c59240796dd289b6d16efa6d6191aafad1adb11f2d8fff92df3084d
|
||||
DIST rust-1.74.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 779fef510b53e24a6b20d868a3dcb349ececfb35f5e7059ccb0ef125d24361a8732e8459051a8b1e4da2ad1c6de342f15f857d4973ac4a1b9c19236cb66c4040 SHA512 bd266f3b6c09c73d400541a436890c85fd7d7b82241ed9952ab41481a1f19df8b477228a54ea4c215f0313aa7515d6b659e8ebc78f6186ac2b9fb2ec04cfa902
|
||||
DIST rust-1.74.0-x86_64-unknown-linux-gnu.tar.xz 155920616 BLAKE2B 6213da724e5052fd72aa35816aeded0136c873bdac5536b8d6efd8e830d1db6b909313f58462b5ebeeab148ded4d29a36f2dd5439ac6c1d1c68f73d137928376 SHA512 27dace338e78e437d5b8214778f75e79dec604ca54023ac6046c6761ad02db4790f3df902589a934ef2ec7e162ae201f9a5f6b0bb2e688d5c1eca90462cd75b1
|
||||
DIST rust-1.74.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9d81f9c2861963a34b0bf9bb15a584db502d388b15f73ce98f78cae6bea0357403d9bd0e6f8ea427a9f4db5946ba7dbb4242e7fb4400b561b7431235f0dbe2d5 SHA512 e1e5e3850715379d30c557791a4eeba2bea090ac85e09a982579a703b2582eddfbc060e21420f418cb492e8d4abe87d5bd81b5acf6ee8bd17b80bb6e0f65b721
|
||||
DIST rust-1.74.0-x86_64-unknown-linux-musl.tar.xz 235589268 BLAKE2B d695695ebbb3bf0dea28b9d337f82d5828e6ee70cf7220c849a6008b32f2b590ff57ee35efd58d9a38cd17e0f77ac1187765e8fd6470e0ee2c6cf75f3e3f1489 SHA512 3a8d4cb87d1295b07f0ed48f6e01e69801be3c93744948ef0145217b0cb17581c11c618a07b72edb0945c2ffbe85c59ec1cfd99ef6a60c2e96486f9d5d04d38a
|
||||
DIST rust-1.74.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 0ba1390f67b88fc694df26df22c99ae40f56ccdffb479d9228a17a153de965f8c31dfb4d2c65dad4819d42a0b66b96ff9d3e2c404848dd91141220fdce40710f SHA512 efc779bd0e6fb41297a67efdf731abe3857dace889be284d8ac1e6c239a35749185ad5ac3b82c3b2e55edab3f0e51754c8e53e07d207cf8b4b68ede20cdb8591
|
||||
DIST rust-1.76.0-aarch64-unknown-linux-gnu.tar.xz 217392212 BLAKE2B aa587d69b5acc389a8d1431875f10f6261bbedb259a9009092e663a345fb0ac0cf3ad3459ca549a496853b8d760c7fc56b797ee269bcd15d54bc735cd1100fbf SHA512 ad95566ca7597ef64a03f614cc20b9c8d9b2fe67f33141b817973fa160c2be978511509fee79bdbfc74c50076a607e8543ad5bb4b56723704df27b5573b8d606
|
||||
DIST rust-1.76.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 86834b999cb0ad9de02a32a79f801d28268c986c830ad3f16274cd4c404a4305267c90b677f7a8637f2de08c766ad3555945f77da181906358e3d51b35e258b1 SHA512 79c1b258267d6feaecba18648a7eb620a570c99fb75e422d0a5b946a66f3a5bf6d2b41dca89b4ae79feed704d498674f36de368e4b228b1e38e3499ac8cd4f21
|
||||
DIST rust-1.76.0-aarch64-unknown-linux-musl.tar.xz 197852572 BLAKE2B 93985909e049957f80d4a14842c85dd14e5eec6d74e4e439479f353b44b123947c782856de86555262829d755a344ad01a94c41e8852818e727fba74620e1d68 SHA512 1f36245932d3b9bab0b99604085d886d9fd2e575e896e1c28b1771ae916466c060f4d70486e47200d58947147eb5571b922e175b1a450a36388c3c95e6537655
|
||||
DIST rust-1.76.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 50326fb881308300aa01f3783ec6856b7ab9ef80e986cc4e64fc5d6d0bcd246add9330ee5459a3ab5c0bd417d75c2b9486bdbdc19edf5a899dfd9e1ecf31028e SHA512 0e775d73bee5cfc70035db1d0fc4506d022d593cf847e01c3f09ddc48a02c4eb24eabd42391c3241cc05ca49b15e38eea0f56786a4f800df724753ee7c557ab4
|
||||
DIST rust-1.76.0-arm-unknown-linux-gnueabi.tar.xz 181085440 BLAKE2B 024b82d285208635dda1c6dd66f634d1b921657d3921c402b7adeb7ac9b495628c31b248ed480d4e52e55293815a686f9ee52a84c2407763de5b961962ca9cc4 SHA512 c6840b3368bed511976c32dd3b22a8d1341c002843958a8cc8666c4f19547eb71d8a90946c1c075cf8af50187c1f14fcad2df488d186941d00cfd6b638b27dde
|
||||
DIST rust-1.76.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 71f2d3a9de1343eb96a75a7eec3d8d4ca9a02e7ed01a1cd2f4f352855dc6d58cae5ffbd70944d7d1e0c7559c74f8d8a25f3c1c3a14c2f00e5797d0f142b25a12 SHA512 b3dcd4b3e2fb5e5039b7fe654421f7a2f72ec5ebfa841589be715bf0a8ff4ff0a3c46a25d0978b4206678a2f2410c5ca69146f6e3eaa4b02a6231589bb099ed7
|
||||
DIST rust-1.76.0-arm-unknown-linux-gnueabihf.tar.xz 181168340 BLAKE2B 8d48ed7c79f87aeb91676c3f90877fbd396341130276e27adf42a0a0e5d3f7ded34a271cca34f1c0fa7f37d5666ba3f2f16eeccd91aa37859adc34077dd2a000 SHA512 6beba28be79a563eab4567ca33dbcaa7cba5f4389fa480ef4e16e528fcdc1ed6a2c7ccce1ee527afbaaa43545bfd80fa47ccd3ca2ea4c38ca2b397bdbee47a3a
|
||||
DIST rust-1.76.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 534e5f05848e5f6c05f2de69e0c974f5e4860c9ab4501491a651f5d2200aff69c9ece29010aa732d0eac3173b1f148afc3096b5f05146f7be7df14e5d9ecc44f SHA512 fba15a41ffc9202ae27a6c2884bac7367219fc5b1892287a599a1c8d2251bbe763df07da4b9719d73bb6d93fbac3dd1b8c4d8af75acb942200c9d7b1050be009
|
||||
DIST rust-1.76.0-armv7-unknown-linux-gnueabihf.tar.xz 184387332 BLAKE2B 7b9b03332f19859d43629d4e65815619fab1845c129a254643f164c025c5d574e71f6001899deec470e93c97fa6ac8c9d71cde5320b6f4cd822c2ab113e4b827 SHA512 3fbb7300e4dbe855207671ad309b71cdbad9cdc41b1c8144734f9de85c904918b137a2fe7284e9046f00526c7fce8b68dcbb40ab8d6543ef31ca0bbbfb396431
|
||||
DIST rust-1.76.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 050c4eead78d8161d46acd4ae47b69612706d8053bdfb5e4cfc0fe20ccbf4544643c1850f14cf93f7d17602849770857551b64c7f8f8db45594b7dbe267ecb41 SHA512 32e72430c4c9a5970994bcc6034d3be1a2a915adc6aa45a0c1cba403f6c44206af3e024afc42fe39a8501322fe46deea9921c9760f8e1f65422960baa88abafb
|
||||
DIST rust-1.76.0-i686-unknown-linux-gnu.tar.xz 211679020 BLAKE2B 06c9e52a1b6c802be3c4b0cb424dcf243f08fd5345e4b3977cca82093839cec885f6f491179e9e1f8e64c971bd7bfdbb6c551e463874b44c8b89ea649e8c9f40 SHA512 64605e0c981df2c805ba8cb31a89fabd00332faeea6d04ac57cb4898b7cedc66e4043ca3eeca799a204ffb93ecfa770150f09b99da3a7dc913d4e97331554e8f
|
||||
DIST rust-1.76.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 72d87215c5ddf03ed0cab99adb97b6f15fa8048fca68b44bdb77cd0df09cb1784cecb80f6618ad43d1b6f41a5848ddc84126ad576ff1ff08a3928cec9811a4d2 SHA512 a6d52e452a7afabb329b75155db9da91d51f809e913b19cde1c51c4d0f79831e962e698cf8e86079649e31a662d13743da23b13d16df6530427eec3e4269be7a
|
||||
DIST rust-1.76.0-loongarch64-unknown-linux-gnu.tar.xz 162940496 BLAKE2B 4c3b66199339262ea93de6785980795e493ce4e7de9d7ddf3e7c9fe38ad404f980abf408e979780905c149bb3de65d26cdc654f8b3ad0823a3d5067809fc4944 SHA512 64fac030d7edf9677757b883d1664b7e06ab9d5007d87a78d449acac359d7d6ba694bf4a6635c8bca51f274f842dad0612377aef655bb430f6290459343aa6e2
|
||||
DIST rust-1.76.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f52e951657308df5a944d35e2f9c19278f6f250474c070593f3b2072f372b8f6c32d379d144c8ae5a3ee31f7de21c00ec1da097f2c8c9a54759d9440ec5eb822 SHA512 d5ed37fd844715daa5d9901b388cbf39854fce3408c1d572f18e83d6207a20345e5e2c2b49b9c1523097245c73e1a448df8ecef2ae5b344e57bbe646b1266af6
|
||||
DIST rust-1.76.0-powerpc-unknown-linux-gnu.tar.xz 176795548 BLAKE2B 77e102e4d3821557895f3e24059b65847dc46ce3b81ce73f15063e9a6d383ba12f4c905fcbc85b79c39f00e9cb011fd2831737bb3ee9bb53103b4a7361aa312b SHA512 05ccb4294d788e948b69c9e38abf28454604f6b5bdd04704d6dd5231445e2f791cb18ea5149b4324a152ce9ae356b55036d2f74a5d9dc3aaaa05f5c7e4e69e1f
|
||||
DIST rust-1.76.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6d2fe65e5840cd7ddbf1b18ef89cd337b16e3424b6e20d21e199b274fbbc4d9fd88406c2a119d5b0bd48fc9e47145dade3f37bbf99faff68905e57bd41937c1a SHA512 a1e45e41f901513e97956d336910927d7357cb8c2362be69989528fa5ae7087da409853adfd86354b4b7faec3e8542e400838df1d195843c030d9c6fffed7557
|
||||
DIST rust-1.76.0-powerpc64-unknown-linux-gnu.tar.xz 177409476 BLAKE2B 7c9829c8e8ecf2a162663a2c382bff49739ca2bb02b785ffdbcf632edf55a3ea37ea3be09298b0a0a984512aef290123d3b0ca9ae0d088a2a816f38778aec79b SHA512 1f29f66d8e64d4c191bc90b05d791f08317aeec042ced815fd353beef6a7a4f6d5f91755481114e707728bd9a02ed9094b2a75d91d61ddb12748d9d40b211e17
|
||||
DIST rust-1.76.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 3087eda9eec862455906510d38f43b81644243ff7afbd5ddf221cfb2c12408b8ac9a0bd2a269a9499776e04b56b3d52c890e056af544aa56cc06b399614f83b5 SHA512 8a90d5acea677a02b2c5eec93157ee2c47bab895e16408123a0e2c3d44b0f9a9d95fe56dfa903fa1cd2fd298f17050110793e94d60510283c8e3cc120770ce9d
|
||||
DIST rust-1.76.0-powerpc64le-unknown-linux-gnu.tar.xz 187967776 BLAKE2B 0ffbbb4e4ca44285d8387fa66c58df72971bba6410faa96f6cfd80c223f4996285fac27672104f25ae2a20cb81a0ec6be0bea1d6893d95eab0d017fbae896509 SHA512 eb8be647651b02f1e9287d075d76c288e34e66514305a68ac118ef41dc14a16e5e1a3f2c5cb8512c4565a2eef3e5063dc4eb11272fa91c01d8313a323c20755c
|
||||
DIST rust-1.76.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5f41ec8841f4004df7b65b50a451027489e303bb2863ece09a14900a229d3180ba23bbf5c770c2939399eb157e97b4a08ccc0632a66eca5ca5cf4c29a1523186 SHA512 929e415a66d8777e2509c25a780b4963b8991adb905a9841dca19a5412a5f86326fd73c43f79c304a48a2898f863b76024b0144109343933a0c5f3f1fb8ed287
|
||||
DIST rust-1.76.0-riscv64gc-unknown-linux-gnu.tar.xz 183161264 BLAKE2B 9a0b579bc076b8cc55414c95456caa2146fd0597091d2332c1033d03ac7495684b7b7989ec6a8a108953c681ed88d4b62a9a7fbb39c0300128189a91b035d2df SHA512 29fe21df7b99b9a9483af6f2370e2b5a403c12aee94a1285bfb2d2efa631f9d284c70caf863247843ab1418bc78a26c6f6d5de4e8606456a9ebd265ea3bb504f
|
||||
DIST rust-1.76.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7a380f9d2f2f7083afe7abcd81a15d34df703f076c2c842fee2433c6c40d629bc5b0818fc186b462d653aafeb1fe767de3c01b7a014ec3220d77725bf1074fed SHA512 53e4942d74f42f4a7c35ef4a33833d23a955af157d80588c277f32f30cae63e8543fd4ffb569693ad00a6a20ebdb2d8422ca078ebc85bbf98814815e32791894
|
||||
DIST rust-1.76.0-s390x-unknown-linux-gnu.tar.xz 202133724 BLAKE2B d6d68392b9b9b69914cb6986cc1501246e0461a6eb5d18eb0ffe71e0a2a7be20d27e90b117c520723254b4709d08c4fb33d145e5ab559802ba6592dfabf81317 SHA512 fa74e1605eea945445f8ea621a667d50907d8b3ceed700e6b05dbcbf58dc7fec62c1e50247ad9688a5b9c5b78c4a140d93557d494260f8a21b1eb25baa315bec
|
||||
DIST rust-1.76.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 574df1144e6e79710a73962511fc73215b3a4d1c3b6623190180c7ec13aa8295e13329c4bc66710013f874054dd756e02bfb2c5f6ce1fc8a07ae0717f958b244 SHA512 17938b3f4671127c9c46a5c51703d430938b73b2e30cd497cbc159ed372889af42e651479d1ca69c000974e21d4d34cfb9e3cf28b79ec8e35540ac319e1b8b9d
|
||||
DIST rust-1.76.0-x86_64-unknown-linux-gnu.tar.xz 159385660 BLAKE2B 0846999358aba95a2bebd2ff35ccc9e1954ff4fca66227d1c8c1985c08e91159f2acaa1357544b81e92065a2f9ddf6aee41a2d9199d71d8de1655f9b16ba2ed3 SHA512 1cf0ffb44aee4da9768e27daf5ab3b20e67fc9e8eba5a1718b700c85ecdb61cdef129cb571633294f9c826b6e7bd2958086eec371922ca31af332266d3632609
|
||||
DIST rust-1.76.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 88e6b124812b409372ee05e2872cb4dfacbc638f8e3b4fb0d5fa4ea63f4594333a9788732502f8bd41e34b5cbc404d7ac08e7690d095a6c37c80b0043dd2be88 SHA512 f7ddca81da468d5617f48240b6d3e8d7d09336ac58f515acd3a20f2d315468ba1d53508dd3264a088ffc0141cb3fbcd8d3c17379f9628270d39c7d44f7727291
|
||||
DIST rust-1.76.0-x86_64-unknown-linux-musl.tar.xz 237333892 BLAKE2B e95b92c68e3c2df49fa0d5d84e35f6575fb80571db290b5969441cc09b6c07dee6b2b887f41a2b1ff1e3c099cda2ce2a4a8c05afbcf9f4dc8acbaed5245b69e4 SHA512 04bbbb9a6891c3bb7a20845010029e6ca979548ff70324c08d3162ebc1fa3a84e8c7e2d453495edd34aba19b7a685f048d5047993103bbf221c88ea36350370c
|
||||
DIST rust-1.76.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B cd4334fecc17cf03b7333659393004fed4bb895f9b75f93520d1c3e3ee0ce4fcd17d75d748c4a35d31984215c7aec8904ebe3a4ad8bafcd625aef30688a473f7 SHA512 a458372b41c2833bdbd3d6678c35fc23397817b406c409d1ba5e19b4c6246072afff3f938f111382de56f7ff57e660c3eaf3fea0e54871d9af50b52a54f39e41
|
||||
DIST rust-1.78.0-aarch64-unknown-linux-gnu.tar.xz 223523772 BLAKE2B 734416f447462f2778b74f12ffdda13374c95cc399e8728afbeb61b06c0db2e522e760a257d2ce26ce8190cb9c8292880bf02da52df04c3cf205841b95825767 SHA512 80adc842a56ac95d472dcd94aab199dbcfb3d3a5e7a8cb32b8334b038c58a66b8d4f3848ab62a3e799d7c35e6a32abb1f2738a784da8cfa3272ea299c528d5cd
|
||||
DIST rust-1.78.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b6cf17229559a845cf63a22043b1ecb9d7e142b536d0fdb0b44f36f05fe1238096c48dd61becac58275d60401a4f0ce623fed9593290d1f659d31976bb0c42ab SHA512 d03a380d0481b4ec19cfd8026d262ed19b7f6f4f40287b0e23127460029b30c47336232a488dc8d19d22df98f356cbd62d7d44f4a3e1cabb6f575531be8916f7
|
||||
DIST rust-1.78.0-aarch64-unknown-linux-musl.tar.xz 204806408 BLAKE2B 08abcef8a38d2d1e463971613481806e897ad4aa48a6e3306c23cf7b906807c944809ec60647c5a80e80978cf8aa8bb1b8e990d69769f94f44022b0f764cead4 SHA512 4ec03b17e2f016fc5449431c4d81d113c12227e6e11553f9fb4fb61e4ba3ca4216aad776e7e3c1e88ac42b797c07f5daa23cac90c3eaebc6d360602f026f9dac
|
||||
DIST rust-1.78.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 1b51cb7337d71930d4d455d7d018a32de858b6627f0ca3cd636420bfdf0d608f550d41985a93b09575e5ac853361c3362a5c0b85366ff19712a4488b79b706c8 SHA512 a9e28326f91009ca248297ba1b099b718f577c030ae3c75daaeb4798cec4e4de585f1652f18ac170228c32e3784d38e328c3821d6735ea1c083bc4d5b80c426f
|
||||
DIST rust-1.78.0-arm-unknown-linux-gnueabi.tar.xz 188301776 BLAKE2B e227ecff233f42b9b8dd7b5807de8fbc972107e7099612986b275ba0391c8fc074344db0764d96d00c34a099380354ddc5e7beaad1d5444fc3300481f7504a2e SHA512 624eef628d9ac6e1eaa376677296cda0cecf4ff7efd4763e40735ec69788fcd34b4a4e05c34046e2b57b916285acdfa04f5b122142ed661032e9c0d713e8fd37
|
||||
DIST rust-1.78.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 43df87950eb9a8a0d2410c861e08ccb90a28c815d50cffbc310fef063e5b6b8b3246f5dc96ad34343a7107b025e863a87021e6d59e0826386e4864b68e3d693a SHA512 85f8822c493a1499e6404400b4c9ac293266533c49c5b0b4fab470d2acaf93078aff4d0c3cc59b9117ae9dcd4c47291a1197de44b56214146fd06e708479a191
|
||||
DIST rust-1.78.0-arm-unknown-linux-gnueabihf.tar.xz 188746984 BLAKE2B 567ba5298d6b5a4734d126e0b9e5df24460f6204b32ecf3892b45a26689bafe7ccf15f4a6a098a6a6ec7c3f15cf80d314e682f2d8c784a60d9847056be1885e1 SHA512 f9b5b48042868e91d73e3466f7529e2bb2b72d2489b2d0ff1fc83ec1b1cb035c88e57d48b0ed7298d5f50db0cf9da2681e9a4862c185a2bd241356632516c93a
|
||||
DIST rust-1.78.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 4d4e6f113e18870a654bc175eba1ea8ae0129803503deba03d144be4f434b1b5651288e8e1cfaa51bf603f5bf51a959b584e2932c025c3474575dc282ec14d84 SHA512 6c682f710fc26e94f233ae27dab6be27fc132825c3604789671170c040b689bc1871d9a74436832fd07a0da50654d06f0c2b31dd8dd9787f1563e2085a51c14e
|
||||
DIST rust-1.78.0-armv7-unknown-linux-gnueabihf.tar.xz 194117584 BLAKE2B 5a62e628f06ba370b5ca2b11d8c657fe9c0885e4d36b14f49ab0b7759af0317f1c79ae92dbd5685c57de58c4f6c31fbe3f1c8b4e1721c91d67ed45232dbed5a8 SHA512 877c13fc97c5ed0785dd005c34e5d37763cee9b7c0b5c2217246d173d952301b1b6b590c3ca441269ec8d341a0cf5f2eb83db63517385bbecb0cf08167a3948e
|
||||
DIST rust-1.78.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B a3ba9914c74373835ea6900f97100f631d0d5133adf6f1f938734be0d58484c72372b933e9c42fa37856efc6ade7650d969b412d66edd854ffff4918e8aecfed SHA512 6df8b791841f7bac8539e2ba9fd8d22d516a5906152861baef8ac3256136ef72f8fdb7cc9f843127311a8eeeb7911d058fb377db52ef4fe9a3cdc21396495ea6
|
||||
DIST rust-1.78.0-i686-unknown-linux-gnu.tar.xz 219666344 BLAKE2B 9302eae6c99af5598f9952255ca8bb3f0288a03b385f77b79323e725bbe398e722baf5ed2de7fd74caa452248800948aad33954a82cbdab97d1935785e6d4437 SHA512 15b6ab20665af6ac7df6e9c9078b9565b3f2e0d493c0b58cb06c682d9368917b2dbc509dfd23fac09dfddc9c60c5f89bdd8321dbada77958ca5a6261ec54d203
|
||||
DIST rust-1.78.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 8c23ee14f8db7c4a776f4b5b986384c9e2c79e6449e019c67b526ec219e92e35be5c46a4a2d8187aee0ab958c7ba5f2e10ae40f4c7cd083cbef59bbfc96b0c13 SHA512 ea13084528d4b8d558309a0d5c392c734140a854d9543beb0c9b3c5bd2fb530ba154c608920ad125683e1e9888228422352c3b1c1fdfa9d70df1bd4728193944
|
||||
DIST rust-1.78.0-loongarch64-unknown-linux-gnu.tar.xz 170256096 BLAKE2B 07507d4517a9e421bcaa763cc93956d5c57d458f7b20f97f186f902702675b305e79c89142f5c9774b11e0842a82c8cb63247b71dacf1c362c0588b52dd86d3d SHA512 fc21d32b4ec72a3a5a353cbabb902df2676e3341a1f38ee45654eaf960bc677b0316af0474e5ce9d346d285a6f7f03ebeda7302b49650cd1ff8371c27166fd25
|
||||
DIST rust-1.78.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f99580babc5356c579b81fc0a4168dc1a57432d898e8e2422f00f9027477d704421cb217b5d56fa15a6fe9c01cbf8d4a727c6b01eedddbbcfe9d78e3cdfd24b5 SHA512 ab1ac741f6d71517a510a48fff1b903f325a35b83e35b7b73f4751c1f22e6944044d7a46f21e018659d7cf4ab5b430f6a4ff79971712af46a0d7705faf60e506
|
||||
DIST rust-1.78.0-powerpc-unknown-linux-gnu.tar.xz 183422544 BLAKE2B a37b4b4c3ba381e0456f46ac7d311ff6b11701026d568653f86d08e5170f9f21177e87efe329ea8fe259a6ab7991f096bb716af2bf3000569c9797db61a41c72 SHA512 eacce0850bbd9dd9a8a94177234d867dcf8d94c7c2e9f4260207b25364abffc8523e2b85e868b9dd9d4bd02ea4be06fb0c5fbcf5621ace2c0e93041a96cf7ad3
|
||||
DIST rust-1.78.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B ad0201eb1760590381c0e7ee30f612a44157e10a634eb585f253788702653b3658c636c3f8c971a0c96de8944cb4c6960fd555f35dc1ee45fad18c7410ab4b7d SHA512 de5026257f1bd95146cb8057569d643a79ba440aab21efb4ea7df985a527654234c499f16cf75a29eb29cf9d7771893f0d4cfabc3483435ab73ce781aa573ebd
|
||||
DIST rust-1.78.0-powerpc64-unknown-linux-gnu.tar.xz 181366112 BLAKE2B c6edeeddc3934e6b93e65776a01c7f19c5e560716490eac2f52b56ba0ff58b974ee2be8e858265c4242d017106880a368244f5565e6f0438258b0cb0bfaa9a0e SHA512 7e0182680d216757d62627b07041d1e36eaae47ed341a548e29d6fe192f5e99a7f933461da025f4341d4c9b816ed3d8d3224bee12e29a0e7fc8bcd9a93c5069c
|
||||
DIST rust-1.78.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B eb94775f878935e94b7a678d4588dd586de8ddd47120670326b6b9ed891edb009d637a2c99b0548e8d74d07960a02558f8421e0754d487e93b57bc2bfc19f052 SHA512 490b0ff842eafdf23adf754051c0f4abec2bfda438bc2e3f57cfe5232f1358318c31bcf6a9ea89284f26389f2f1212dc3ad467b14da465d655bbc6974981cd58
|
||||
DIST rust-1.78.0-powerpc64le-unknown-linux-gnu.tar.xz 192130524 BLAKE2B ca961dcd50d9071f0bf7b8f354aa0e78b4e3d4c9bd0b6c72f7a712bbe906833aa8982eb87d9065644c65e57e395ab09ed85bd24cf43477071e0c5cd8ed8590e7 SHA512 c890386b3a82ea36aca2f8753b0fc81a956ce3157b89ccd573403ec99b257299f84c976dc7972278371cca1b3945b21a50d276e10b4cd42647a9d26e0ebdd947
|
||||
DIST rust-1.78.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 2bf8596c462d1231ad884a417c5b676447b8474023b5769343ec5a7788cb42c89b937987226db9bd526b3f4ff0a39648e4ee1136c3733d316e35b8ff7295b6ea SHA512 6bc9965d32420bd86422e4d5fefd82a46a169d5d80d298ccca08fb421858d5bc077f785a52f3404f29f394f2dc471a747fec208931d19358aebadab6d9952e0f
|
||||
DIST rust-1.78.0-riscv64gc-unknown-linux-gnu.tar.xz 194762504 BLAKE2B b3a802e4b6efcd6c0c3155258b57483c24731e0564d0077f65706ac46898828c4e4d612996c16b63f9dbd5770ac6ab05cad27a27f1083f431e13aeb68e1e77be SHA512 530e5409755dcef86a9d074a3d387dedb5966689d7f47706e43daa5a9a8c65249f4d2b42916363b14924c11e1a5f5d934e9a1d9b47b1ed7206e85496fee27604
|
||||
DIST rust-1.78.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6b8f4a535ae61cf04523254267c2f816e51e459a670b5c2aaa1a28d44092745d7c64baa399583a18cf84e03df2a910409cf99140e3337654a1a051e84d3865a1 SHA512 b226ead3b0dd067eea71d3b5088925f0cfa381aaab6f809e58dff83d00c17da4d99a9d241d49eb66e5db381cd9c63a21c2f5be3ab85658b0bf00b91e970c271a
|
||||
DIST rust-1.78.0-s390x-unknown-linux-gnu.tar.xz 207632244 BLAKE2B dd548d618a050991121afe1d8ec7d9fa5eab19d9fead94440f34627562bda9b5f544cbb03a06cd6e85eec4c8d5279b4237cd14c9754f95795e7a26f0b20036e6 SHA512 f17a472ba144efd41f791854931e1e2eb566f126037a1f234b0b54191941a77d8c340687c4c47e0bd4fbe306079cddb36637e998439845ec82206e4c567979af
|
||||
DIST rust-1.78.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5ea16c70fbdcce4cc17c37e9c3b642fc6deae9e2033821d21d3598652b8ed2dbab58cf09dec4e5b2f913cb9fb25820ccf3511af5eb84441e9bee6ba702005def SHA512 8384b20c9f9b6654fd69e90a91aa8572d22b4abbf83ca3b349b7672a5d8db131053ad1b6f8a48881be0060d3db2eaef52075d3a9b15a3c9ef9bb366d592fbcf0
|
||||
DIST rust-1.78.0-x86_64-unknown-linux-gnu.tar.xz 163959816 BLAKE2B 1987a6a0ea169d67214bf403cb1e6ada022eed163be6ac72e6e46d1596eba6f282cf87e0581e9ac1b264dee4c59edececc9085b0d16cacabc79f9375da652a24 SHA512 6bb0481804a1de8ee9fde7d4793d45e80f071534f2c3756867d95e99bfc4766de2618b5fd6b1d5e8f4794e54c7056124538fd301c5ec20351f8dada54ef4c20b
|
||||
DIST rust-1.78.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 1b6b8e54c0eebbde2a803d14db3d75363c306c621845cad89c927a51a5df0ccb5d1406c8806a82d5d611d0a12c6d6c5ed0f113fe802e4b6a8e504e64562e168c SHA512 10072d0684b40a71176f36ad85b7161e1392b3f52c035bfd0c6bbf5889599234a7201d85a13f04de0269ef9d8e0c51d15a4e9a9151b3fa27cf9a6e8663203786
|
||||
DIST rust-1.78.0-x86_64-unknown-linux-musl.tar.xz 245914600 BLAKE2B 66cc40b70ca70eebee5c173eefb07758a8a7421cbf421329b3b405bdab1651334a5ff1202b450139c89039a4c3fd6ecf8b78ed218c62e81c983e6bb7353a335c SHA512 21190a0034aab2757cdcbc2e456fdacc972634f25f5c75daa089030a82b407037d3c7d3528c8d126d48d2a6840edf97526007bef41689a86ef1eec8f8c569f08
|
||||
DIST rust-1.78.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 2ebc83f961f3bb1681bfd2e3f08b2c394bd8701c68b873eb524a9f9a79f3d3858ae75f76c0e0bc452cbdde9466b1d1b2723d04a8d41f68902355150c86d41042 SHA512 a32e7706ab9483a464e3001aebda8975ced4ef66a64f534d67c0a0e2b508f8db0523cfef4a66bb2b264bad486566c7f684d01ba96055133eccf0e9da4abfa46e
|
||||
DIST rust-1.79.0-aarch64-unknown-linux-gnu.tar.xz 224366944 BLAKE2B bd890cfad2348f7bf1d97adde1a5ab244665474ea4d77dfc2cec60679829f84c30378f2a979acc3dddc51ce563b03ff86d04903602a079a85684d98a86ffa4ce SHA512 0cf80ea35cb501f406323a438ecca348fb957cd4a57a4c7ff42bbaa0c736d16a99187b821e29d2e51519e1cb76e533af7c5893c6204fc0736f8e2186235742e3
|
||||
DIST rust-1.79.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B c249d0badfd29130477841602b385e1d152488d43799e9e3b77cf92234b197501182edf59536f77b02b49f806a7dcd748f352458f97f15af6c8f0580659d3eb4 SHA512 2cd2fdde6ad1acd769af2a3ca97bff3e4cf3b57a3a7d1890ab592d2abb85be17f7c3f27cc1b994e70f9f6cd52e8e44314d1d182aafbf68fea4d52df1c9482afd
|
||||
DIST rust-1.79.0-aarch64-unknown-linux-musl.tar.xz 205404384 BLAKE2B 21dd98d62bc965e24b3a60c0e48fdc907e2bd6919a90923f26cb833218d6e1f23d3385c7e67d96d7651d65ef963f668abd9f1c9e4d3e80aeb726b50d09a2ca80 SHA512 358e8b8a76e1a48d6829735f04b2d3cd3ddae86684ba10c778a9f96ce4bb0f080c0d706bcf5c6d141d1d52685a8e92a48d8020008320ec8aa158fa911745678a
|
||||
DIST rust-1.79.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 99fcb4bb3818cf56ab9686aaede04dc104d156cb8c7989c3355974901cf7b84d9182239b526bc0208d7f4bbd80f959f896934796d1d431336820e10477c271c6 SHA512 9ce170419411e08bdb80aaad72c559fd0d81d7e5c2f088359ba2994dbc9a1f25bd6a35b2e3a02ac2ead12be6dac3d8cdb48764e85f8aea3babc031e242d66a5d
|
||||
DIST rust-1.79.0-arm-unknown-linux-gnueabi.tar.xz 189377704 BLAKE2B 6d2e12a9fd86d41dce2946404130fc314ce291e1610f1bdbe13214e04ccf91ef36b373d49bb06d4f871da1bf99568d194d27aaecde841634fab1fd222e44563f SHA512 630973e33a82d4dc27ef6ec07084bbb0c6555add6fe1324b0a743c39902ce02ad1b3142b3e56b6b37678b523ff37fdaf0f60518a83500ceb4db9544e7f60ac7d
|
||||
DIST rust-1.79.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 26045e38094ef9e424bd7050819c43998f9ddcd54f52c08b2f9d538e2729b1af1015847b55501a55d43db073f63324aaa594ba3ac27989665cb0855f58275b22 SHA512 73a365ab6ba6938f21e2f29d2ee8992e32998d159572a137621d451837dfb05b6f0bea8985165c6c22f16ce66d6f732393c8dc7680f2ac31df006b0cc2d26533
|
||||
DIST rust-1.79.0-arm-unknown-linux-gnueabihf.tar.xz 189222624 BLAKE2B c9ce961bd7f7bd8fdb05781096162f89bb2aa374963dad03f764a69570efb634a5c0fb3f776755869649a69ac1a95830a78e638f6e06d4840f1b2c2dadcac2fc SHA512 787e02c3b6415ed337964ff4db0d0e8cf5642f65ff733c6d70119c3ef328e9507ff66c5b2e4191bc0bcd1dd6755b656efd3d46b7629f3d20079f06d8fadcc10d
|
||||
DIST rust-1.79.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B c5729c56ee5a3efed7f8f5af46e459a844f67a87c71c9e280efc07771964fd06838263f254a19801bd6d072d98f3d326691add5495c62a8d06f74a39375557eb SHA512 0b1d5c144d8a9bc8d370052ddafe7d6a5b8fdc00038bcb2581c5e4787a1c8419c628bdd12398cdac94178cd6c876f10e23b5660755274e0f1648b86e54d78477
|
||||
DIST rust-1.79.0-armv7-unknown-linux-gnueabihf.tar.xz 194892388 BLAKE2B 82113120753281bab2e52dde18b399e878bc1c055e2a1123c7bf5e0432c39ce04cb24886ebfde6094683046af94a8e80d456647980632df8da65268c4461e857 SHA512 d923042c4c9db09ff62444e6222bb4c404f322b2c43722514bc4c126fe1f9988cc8c38191bd66f8f24c535509c683e9fa30b3091d40a118b3366062135aef7e3
|
||||
DIST rust-1.79.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 2cc6281091bd0dd012fe0d229aa0691fc3698ebac5bd77d8c2d811907d1a6d8fe73f19d4b456bc9619f6e7cc403e8d55c46fd02140103a72f5b82c2c2c3986a0 SHA512 4aa5854d7430b07550d72f3aa3d8b5f27d8d11542c9bc22c8088624fa1dcb2a6d194cf058e741b1a0eebbf04874aa844ee89511ca14ddf73568eccbc404d6a43
|
||||
DIST rust-1.79.0-i686-unknown-linux-gnu.tar.xz 220956232 BLAKE2B ab8bfc213938a0c512177765f4d5bb2333f5533506fb28ecc70744c545595a7e534d7e5dad5afdd6b7d6570bc0602ed7ed68de7df4d7a210c606e23cde5fb6e2 SHA512 7238d0102625d82f7595bf4346dc49cb83daa0ea0ab456b6526f4995d20e5ce7f10517bbc3de09937eb10a4c537edeb2636127f9f8aa7d45c7577a665d70820f
|
||||
DIST rust-1.79.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 838bd51b74f1f6c77a5ad10cf992f3e398f2f68510685d1146ea3b15bdb2ab7a994aec3e96b5b3a1a14a82c082a87c8cbfc77f01609bde2e096f1934a1fa61eb SHA512 f8a2aa8271348761c5c8c93406c65fdc05502c8d21d67fff82f1a706770891a820bd05acf8d3e8401a44a66c35a11f40e3594d5b42b6554060b3bb58a0dc6afd
|
||||
DIST rust-1.79.0-loongarch64-unknown-linux-gnu.tar.xz 171612592 BLAKE2B d06003c1817a191d8aea38068ad03449090538962aa9ae74423343032b2e1aae4784daa702fdee4f4b089341fcbac1d03048783b7cf082eee46df1a2b6323b31 SHA512 86c39ca2b43fd58893e490008c99ce7f8e8c8e087701b90838de8f589a3e5b5b0d3b20c86ea9803da2ed72301d44b68866fe219b65a5af9f0e7e3120b3d9b994
|
||||
DIST rust-1.79.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6f826cc05d126b8c6422674c9dfb496a61424144d7a76bf4e5225d7bc782c0d63dd55ea03c534494b633601bd027a922458d9f06dec5f5cf701c8907fe53cbf6 SHA512 c443a8a08ae2e65e3ff46e4b5f910ac24b8dda0ba62b67dd41888cf1504a78e9a6ff9415480b8c684a7f9390bf7b279e3fb7a7a22bc4139d6a91457753df4131
|
||||
DIST rust-1.79.0-powerpc-unknown-linux-gnu.tar.xz 184251688 BLAKE2B 372338527063379f922bb3ea83c98f21b2201cf0e75f61cb0a42c1c1c6b651eeab1532d972af72a2afdc7afb5e7a96c40b0482c248350b7886a1274c869d2a08 SHA512 e1a26ddaf53b070edaa630bfcf6ba94659f841804e2feb90fab05e8856cc616d413f5af45b67cab57fea2483221c8caa52e373e7e7d29039541ab2142c4187a3
|
||||
DIST rust-1.79.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 22c2867d40f0fe13888112294ea2571718064a30983903f7ce8b13a4a13684c34ac224990ebb0254e262686c097bed6e46d9a70e86bb282c447c9e690ef551d8 SHA512 68ea8142bb72430fadf274549d1830a8348ba74a02a52bdab1cf1b811e70592896f8cf9d34687bacc34aaa06603f89e5794211227c573a4f29ed34744b0f5a2d
|
||||
DIST rust-1.79.0-powerpc64-unknown-linux-gnu.tar.xz 182063040 BLAKE2B 0bf5d662cf69bff1a345dc54525319dfec98b2743744eb03712e9a2cce8cd45d968b9cc67ffa33a5b5a5a47f3a0a5568103d4e3de3efc7c2d837453dcdc077c7 SHA512 f65745bdb3c98f20c37c7bbe737ebd3b1107868fd56f1a9c42a4adfc14592e853cdd19217354070e5d18d31145be18c3b10681768d9f025b5846488937bd8a78
|
||||
DIST rust-1.79.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 80be893561f5021b4e57843a5a6c9db7f97d9e31a0748c2ef1768fe0074f29401a39de781d1eadadfe760e8d7f9a286045c6bec2bee1b2a889ccfb9625ae8477 SHA512 843e1cdda3dbceb93cd0b345ef0f551946cc37dc5085f52cfcc3c9f6e31f8d4d6b176afdf1c255f5bd7283473b717963aa0e6bd905c2eb89f3543cf5e88dfff0
|
||||
DIST rust-1.79.0-powerpc64le-unknown-linux-gnu.tar.xz 192753084 BLAKE2B ba53cdb229484dca210de50bc7cd493fae04b4c664551fb5b7f7bd6bc7dc3bbb59b79d183f20a9dada393d586eb49956fda1a358bb5b5761fe8d65f7ab58b3a1 SHA512 d8db247ecfb154247d7243e8caaab0680bb81e11aa0ed3e627b6a0d96a21a0a2099a7bdcdacb57a8b84910d6716754843d80a9149a8ee02fdbb6bc411a352112
|
||||
DIST rust-1.79.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 3e5ce77c7a2afdf0ddc4d8d53bf7ccaf8506986c1cf196837a3a6d82d648b4515b4c8cbeedb2998df233a1c5428ccfd82865482c0d0493248fb0631e100d4986 SHA512 5e63caeb8b20c7dde37099cdc0c246694b67dc2380104c83d3cbff7810cac521104d4d6cf6763559e13cc9e4bb5387bad761e79fc7bacf48536db1918b59246d
|
||||
DIST rust-1.79.0-riscv64gc-unknown-linux-gnu.tar.xz 195616336 BLAKE2B a17b0f9022681233e23ae3c3eaaf93da6d730ba604a9d327cd4a2553cd8c7321929e294de27866e995a591554db4f31f2b9f371747e4b45e473ac2c2a466ba63 SHA512 8a8c6be44ecf5d4cf35bdb32c2a56136fb007e9502f7f42980b5cec135bc481252b890be74d6ba638c2d885d1fb9bea58349e6ba67dbbb8efccdfe7bd6c7009d
|
||||
DIST rust-1.79.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B a20afcbcc4814988594537e0ef1ded539c29987941044d2174c5f16b84286d3d8b29321bcd205f5081dcc8ed487d21f88396a0420a7fc3626748b8ad1e0ca2be SHA512 cee5e0ebd5e7fd00ddda6549f749603376284071db7f806175b1913b39a94a5540cf535f30d45afd06ae95ea42b0fc6b71517bede7f09dc0221d5516abf32450
|
||||
DIST rust-1.79.0-s390x-unknown-linux-gnu.tar.xz 208109368 BLAKE2B 8c110bff01f7a7456a6044a782198c74a793af0fe4acf6881fb9af4c8193cb6c513cbcc8113320fee027a6eb046a0ca4319d014379c6f670f915314448fb927a SHA512 07de1f7da8d8d23c63ed081cd56c96a9becbd4b7149f87636918bce8155a25ea95579ef8694adf6e455ba6cdc19776677f430713a6ef6c607a7efd26db4658a8
|
||||
DIST rust-1.79.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 28a2586c96e2ee2263cae8c2dcd21a0017d09969114cc905a37408717c412a162fed12023df801497906a6aa77b294121699a56d05e270b28e2831796a15f4e8 SHA512 64c85ecf772b73e2e6f2002053a8bf659d518e7be2a9d0056fe38e991e47304471372206a8e45250d6a143086b3b1f4fc68f4e19388c040735e8475c981fd8a0
|
||||
DIST rust-1.79.0-x86_64-unknown-linux-gnu.tar.xz 165014992 BLAKE2B abd9f73c8439f6f4f9ea1b586cb0b2d3ddf3351e42dd49e01e2267d1bc2f9dc27dbbe9b866d5a571a983e3c537f003ea9a6570258af64edc26cb86fdd8e64d86 SHA512 c027a015cc6544d288b51bad6ebf8a9afd40932a06972cf61bf64bfe4997dda7ecaa2d53c4f4fb2200bcf1a7df16c3a44ade1b8366a32ce9a4c85357cc76dd0c
|
||||
DIST rust-1.79.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9cd1a51580d9f70f96c83b603716a5edbd8e1c4d4c2f53c07aa9d37c6c47f3bd252c0a1cf26b77bcd60842fb83ed74cd7b6e4ab3a039c3938423372485f8c1f4 SHA512 b65621f91085f4a5c6f84ed5e530fe56502ca12c5b18486afb1197156c5f6087110578647d428a58a1a6c04765569a28c38ae40a14c72fd41f39948349e8115d
|
||||
DIST rust-1.79.0-x86_64-unknown-linux-musl.tar.xz 247326760 BLAKE2B 36bf6787c69971ba7c445d1895001c005af0aeb48aaa3309e971237125a2b6de3ef5f1534572f8a3f4c1bc024962a8fd030e91b63c02f03444b5aec1a3ed2e5a SHA512 02e5c2a67f5470f3320b04e7c4f0a6f5dbd361d5a97aee7e5860d04224683166b21375794c94ae040a2cc6fc119380be9d3465b8c5e1798abd4142d621cf9f99
|
||||
DIST rust-1.79.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 6dde2d3096f7e47d31b1e13e7e5f41cf278e770dcb8a222d76ab5b93b2ca8a6d9e5b45515e097e5285bd2d76130546b3eb302a8391102460c4564e654c88f03c SHA512 4618852fdd81684ddf5bd8758d2551f1c800ef1614fed8ba91a9a1d29b3b51a0b9bf169c499dd8890347f999d002e5aba7b49a98eb819f20bdfe82fa375ed45a
|
||||
DIST rust-1.80.1-aarch64-unknown-linux-gnu.tar.xz 226220216 BLAKE2B 41c7a5ba5108da3ae79fc6d6fa229d2a91e6e217c92bbcbe37fe35d48418e0c787a29c43ffb406acabd410efcca0464da325120f925dfd6d1ee0822f0041f517 SHA512 4279028abc347ff1436d055f79523a24f98d94938dd7eb73516bcf39dbbfbd941418d4b1227576870c75a7c0b4c23c74b0528e1c5b8a39d54422af1ee2abb74f
|
||||
DIST rust-1.80.1-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 20c46e31535278145d143f619851edf151feb786b6d3112022b63e9dc882aad300665af16ba9dc600554f3d8f95d4ed7715bab5b57fab3e33a2c81fd7cd664a7 SHA512 dc104a9a30945d8f3d3a74cbc31b87ac4cffb81b4dd80a53b3e86432058830d4287542166db273895d9758bbfc36814c384c35a98b360ecf18938c6ebf6beb05
|
||||
DIST rust-1.80.1-aarch64-unknown-linux-musl.tar.xz 206752364 BLAKE2B 924f6c1f6b01c048ee9f1fc632e74abf1f5c11936effeb797d45fd500b1ce5a1638cc8061226018dd3e5a910e1d20a7645efbd25dbc5e3b2336cb3d20817fece SHA512 74a9846b328f2a79a75f7cb4c795a78c40ec1c30ac864e20046fa39324800e40ec13737bc580d5949dca92472c1512c747f67d8b67cd5e3e9048b22e2a8b7866
|
||||
DIST rust-1.80.1-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 49100a62a57a4147c13379bee868f5725b96f4dfa59c83c6d3a1a67eed86b0ed02bb0684b096dd557d07f54d0c3fb32bace38c81aed55cea7a0c001d53049897 SHA512 955d39f554413d51da50d2c66a8e9dd57aa28c850f12410b58a8ae1d8d768b7b5d2687bc6b88218f800f3e4242e282d6fc8d2e76616c30c926af1f9a461b2d9e
|
||||
DIST rust-1.80.1-arm-unknown-linux-gnueabi.tar.xz 190441552 BLAKE2B 2907546fe513550e8bb79eb60382503ae55dab8420be41be6d57ef04e9582362324de8639a43671181e439223cf2c677ee4f4819455a264c2eb34ce6e79bfef1 SHA512 1ec38d348e1c888cbbc7b391571e84a3026a5c59fe065d79e5769241c6af9f39c0f689c981695846a9109ab3c9baee9b225316868dd2fed18d15f4f1c81cb5f2
|
||||
DIST rust-1.80.1-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 106a856965e94aa260258aa8bb973a513cd13aef7b15f0c5794a699fbfa5445dbdd3628084d7a913849f0dd274075a28bad25a758e031ce851a6afe463dcc882 SHA512 ce34d38c05e8b4a7df9f0a79fe107b7d313bc467b1cf82cac43b8ab9b6ae3e4d3c1f4428f3a627110ce3b66f89086982cc95d0b2b2e85187095f66338aa92d0c
|
||||
DIST rust-1.80.1-arm-unknown-linux-gnueabihf.tar.xz 190747600 BLAKE2B 481473bfac35b8a45c4c3a5593b76abf88fe6eb50f0b2a424b1c5ed846e56234c2faa22910623514d0f6804d13f78d28cc3e4cff956ae558ac1dd655a0b62057 SHA512 540f74fe1f43ad8c407620ec47eae1ac4a3c4ddc8497cb79d0784393d17581c41576df7e114efbd6541a8626802c7961c998cd0895618b254814b66efc3bb01d
|
||||
DIST rust-1.80.1-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B f1d4aa5cbe123f566d63c3f9165766622048f463c78c0d9635949ac46d6910c1b9c59b0d8c7fce034c1b070416e1ac3f998c4b0c91c796e18669f9294a75bc89 SHA512 f4a75d28a245eaea7deabbbe282cad493175c303f9f0744a248728a7753603ba7e4acf488b3e8e3478a8f7160ed92963d255f0216b1fb598b66a91eb51c30a6f
|
||||
DIST rust-1.80.1-armv7-unknown-linux-gnueabihf.tar.xz 195804620 BLAKE2B f279fd6944aaa76a7a35007e0521003140e4a3569cd36e57d7fa4ed7f72b37ffb7d03412588d1b0671677fd95bd6b6626eb9603d55b81971e148ad0137bbbc2d SHA512 487aa0be4230659db1c5cf2436c65062f1c3061fa085f38ec84dce029a6ef3614657ba407d1aa13c1e5ff2cf6e87f7ffc0c1a1947c3dc641a5b6843cdde85615
|
||||
DIST rust-1.80.1-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 15b450c4743e45c4c2eb9a1ec6afd448a30ad64e9a885bbedd7f8a7f59db45926e7ae4b1b0f350a783adafe93ccecec40f6436b62c8063eac5ad4e91c5418576 SHA512 b5ce5e78cacafd3f0ccfa2797aebecb360bbf56140cf1a1f3dc6c200e7a6ac7d3eceefc0f3cd3fd109ff1b8755b7828c2808ac9bf53f23a3e49c27d6c6050e8c
|
||||
DIST rust-1.80.1-i686-unknown-linux-gnu.tar.xz 221151480 BLAKE2B 01c4a29b5cdc47b0070b031984daa5d6f77844cb3ab9a82a40440b5c4a7a1f6bdccd4b8f46e3ab13bc194997c4a1341de484319ad3e8f642c67f7b8d8481c846 SHA512 2c0cc27407265f686d5b3a5e9f00f751924ae47f3d6a5cc044c56278843ee76ba3cedd63575447feb5cda0a2b1d2a26d7a78e0c558e2f47b7cb09f40aa6b8425
|
||||
DIST rust-1.80.1-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 549b27298fbed09727ae6c6086127aab9c0ebf9a6fce70c2e102fd29e983e31b1907f3a2e7c18800ff7b2efcd6f49c36aa11a5021fb9f57e6148e62628cc56a2 SHA512 c20ea2b577aa263e70211198a9fe896b9d560b737d74d640ee107a89dd9d5b31bc843e2fdda75bf21318fd3aaaea58c4ee918d003f7bf7636aa5636fb657133a
|
||||
DIST rust-1.80.1-loongarch64-unknown-linux-gnu.tar.xz 172528232 BLAKE2B d308b0aab1ef8dc338025d9a106920f507035efdc04390e9618b6a936ec117b70c791d14d5a73aeb0533f1e8d1952ae36bc3d4e624239d5a64ecfaefa70aa5ab SHA512 1c6d689e43cad549f2f8aa96fd5bf52080276c1de386b771206c7533feb11a47bf515ea72dc7f406852ca7dc5632f1436dde69014d8bf35bd0f25bcc85c3cfa0
|
||||
DIST rust-1.80.1-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 92b347907616b18ae06d85a1380d01bd078c3ea4a03fdf808b79794ffeb1d6661057688050130aec61d29062f07a030ebcf15fe3d866cb411325c44a2c393a33 SHA512 7245d91fc398d787e8bfa2e0bbceda9aa30665699f01bc5490f29f690fc1f8fd5d5ee8d4a941d38f0dc5c4cb7c275bf4b6d4bd3727b1bad65326594101f90cf4
|
||||
DIST rust-1.80.1-powerpc-unknown-linux-gnu.tar.xz 185400364 BLAKE2B 2b37d052d0fc4f612c298e87be9a0afcac3ef8548f3914530737d0435cbdf270e0c3b8422c08f84f96192f89805a9bff9d3fe570eb056afc1fd902202a806025 SHA512 1350aa8c105555778231b4ef7ce1c4c8850cc112ccc2f72621bbb3c011a0733da91df7521bbab0aa3269b4ad61231a631660593d7608d017083cd7af375fde30
|
||||
DIST rust-1.80.1-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B da5dfb8d287b7a30a32443b0edb80a3994c68f732ce02a6f6d735d589db2c273962e02925fa88311698672eca10441850066c2f1ab2e48ded8ca33109e298509 SHA512 f0d381594d6b164e068cb80e39a508774633db64abd4a9ba68eba48fd627fbda6c0cdf849137f61e196ab44e0f93eba5d08f3dd60fe5820259b8d9fafdd51407
|
||||
DIST rust-1.80.1-powerpc64-unknown-linux-gnu.tar.xz 183179096 BLAKE2B 0b7b7af392b8aa1a1df14ea4f53fd231c5c475eddbadd2105a5222393162b187109201f96dbb30c9877ff1c684af48b9868d17dbf26113193cab572d8ea40852 SHA512 67ce98a6f89997c13f576493644634f8ee5055952500e4f6d6ae096fee9570d6e5938c483892e76325905fec35184ff7f7edc21e4ec30199e821017890825289
|
||||
DIST rust-1.80.1-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b5b296291d031d254a4be6f000abade2b5d67cea8cecb332505469af3ec3ed1e21454ba41f96ed4e77dc2324c339f136ad04f034191a639394e6d9390065ac19 SHA512 9ddacb0ccd9da29fb93c66a2d701a03af6a4a2e9911c06a09d9fd5bde2647931e6c61e623d418200038e232227010206561e431331ef866324e9020dfba4597b
|
||||
DIST rust-1.80.1-powerpc64le-unknown-linux-gnu.tar.xz 194097292 BLAKE2B 1134beec940443b111594c86f912b2bf26bf3ace83cab3f0176175a6e891d047701e08e8ebc62094fdb4bd7b4d2de115ba0125ecd5ff6b3a20906db30c86c480 SHA512 4275343153b6acec8ba3a25dd4e85abc3ea7872a9cca4cea6f394fc24db6461db7fe7c047d158b61bb0635983a6a033f25da39f5fa1d6d9ee6d3eb956799dafa
|
||||
DIST rust-1.80.1-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 280558f7b575a5b79c7367715e74f333b7e9bb0d4f6ffd9939ed9daf33899dfc19cf59eca2cfafdd2ad1d6d71ea58486d04931fc3d089c9c491c8374985a1960 SHA512 6c784aa10878531b44e5927b2cab5a81efd4767a5e723747e4a9c506b4c48141b44c98ce364459db47ad8f03f4f066fe96d070806695d76a6abc9e0c7a53a09c
|
||||
DIST rust-1.80.1-riscv64gc-unknown-linux-gnu.tar.xz 194141700 BLAKE2B e174c185d35d3974c923233807ff1a27f6736af2a8b97f92153c0518aad4f46653d5e5bab219b51ee1b58cac7216a29e5ad6499a982de8f52f6871903a307b71 SHA512 4d69bfd0fdd2de634a3ab873e8e2929c53baec12e4edcb220b8054c672324dba7a94d06a9c35474b8ba74b2e408d7b42a857ad11a4b7a346509b5fde23e8c779
|
||||
DIST rust-1.80.1-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 274048978581a816fd8a9c396e7adffa509004121d5e9dc8df53a9f4a850dc7a0bca8652760c1f27c1c0dd57be5a91ff60e2d39ad7681b17efdea91312d0fc40 SHA512 5c34ff90acd4307a57733f8371abf4712c3ca06bf9db88f1d3e3ed9dda1c16a7775d713804ec4f1bc46089428b6b5472ab7e416f10e21d33f10b84b1a33d1957
|
||||
DIST rust-1.80.1-s390x-unknown-linux-gnu.tar.xz 209785288 BLAKE2B 01792daab79e7abed8bdeca53295928429b6814672aa4e0426316ec790d22b22abf25d3d5513582206d18f53147e60d252a0557ab9cca3b594c89ad603d94ea7 SHA512 66b20f5d001e978e2db5277da5f01271f0500a59877a849ccadebd5823eaeee35066abdd5d449e024cd5ae8ee41dd60fad77a00648cac1db62137d6722729fd6
|
||||
DIST rust-1.80.1-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5c0a1a6036d3c3e9af835c281fd347a842cea15bea5f3d5f109f4080a2f93020d5e1c1a7de1894c03e8a2c87c6560f792a0c8024e68eb55d10e50da098f1e621 SHA512 7bbc3e8d3b039b522e62101714f5edb85046cfc06375df4b49c9ece891f8fc57e86027e1fd12a5837be7623c9137840551389e7dec4b2700e1dac0ae69121729
|
||||
DIST rust-1.80.1-x86_64-unknown-linux-gnu.tar.xz 167553060 BLAKE2B abc6430cfbbea5dd0ea42a6a3e2796b6f499d5a8343616d310ed22b541bdb15803d882dca9be743a81768bdf55f78c7a803bb594844d7dc3d2bdf09bd3f3d312 SHA512 73e6000af98efe5d90ab484ad88f455f07ccdabe49400d25ac16eeaa51327a5d17eaaae5ef3eb0b04b9aba2015c379eeb2a00076d82ba959e53e3dba470a228b
|
||||
DIST rust-1.80.1-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B bb52100a14bfa2775ca7cab5cd0f9dbc489ec3b26a8687876c97b666435c44ce58d86fd9f11d4f4832e79c05fa3ddefd7157edc91a3da25ffeba07da61fbddf9 SHA512 08aad912e47341bff29ee1d1b52cd02df8e609747f7061e61ed6a401d798140a8587378aa992b0d52af955a44d2284eefa00f27a6e94b4ed561c06eed60ad6fe
|
||||
DIST rust-1.80.1-x86_64-unknown-linux-musl.tar.xz 248220632 BLAKE2B 7f0954379658df0a5cb0bb4bd49fdd1d216bfa5a200789124667d13ad97f0a5278f57e5b6278a969558c834de43a5d7e3f5ad3e331cc5a4c428dc097453a9394 SHA512 079cd3384c0b7f85d5fb2f02f27febe423ff533d71463097fbaa90449a955699fc25d8e4ae16489f7d7920c34c318c0f2e8185eeb9c6fd64c0851e4366c5eca2
|
||||
DIST rust-1.80.1-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B bad9fdebe33c251b8802ecb0150a074e86becac00874137f793b1805bf36373903fbcfd4744b1086851fd1357c6c81262a7eb321685640d856dc2ee3a37917a7 SHA512 405de0a8676755a63a4fc1e61dd358960efc90e4fd2417cfb4311bfaab5a744397e1f751afbe6a9515c1d92626a79fc782272261eed2f72b37b88fd77a84d7c0
|
||||
DIST rust-1.81.0-aarch64-unknown-linux-gnu.tar.xz 230690876 BLAKE2B b037b62f61558f1e26a2d56042a8423480e79f582f9f20248181730518782f55371e6bac982bce532310f939f1c562541fcc93f6f5ea17f6f9a03972fa4c52d0 SHA512 de2e9da3461eba35fef1f22dd4ea90668b8e3d121b1acb3a9d862c291c6784ce6b2ffd9dc5f1bed99625e746ef9ad7a65d74142479fe1d6bd6b678fdeee6cc15
|
||||
DIST rust-1.81.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 1979ad9d4c2aa30f963565a7058b3251edabd972d80d368d69074d975606962991b23a2ae9f7ebe7225adf06789b0090da48b0a6418e82ae45b2a3e67065714d SHA512 cf6a64e759b2118ce5fc5489f543cbef34900aec37f5416c0836f8990a589677a02f3fe8ca02898089c770507fb61c36a48b21a4f50acd38f1350f077a95a44d
|
||||
DIST rust-1.81.0-aarch64-unknown-linux-musl.tar.xz 208644312 BLAKE2B e732d3a4d3ddf0b1fdaac1324567bcea86bbb36dcdc921409bf8484a116dab346e3e5d6cdba0bed82d29f6d144a97db8b471c5c4bf2b339ef0ff86109dda66af SHA512 874cd6bcf870a3f416768a029ee2a32a88fd396e4fbf1150214281379db9f599f68b3dc9eb7c9152e9c17933ab11cfbbc80e19c1a8083343e583bc3994feca17
|
||||
DIST rust-1.81.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B ded7ede2657f16f9e054aae69b8bf2f50606674259b258f1acae75c5275966cbde256d957028b7220ff23ee83ea366aa80e6ad059e5880a76031a466aba4e528 SHA512 b31e6a06c8bec7d955bc73a6275535bbf6bf864f55abb1604ff3a78d26bc2a5d384f34df36336164b0dd3a475281949429bca75e736f1e8dccd48d7f84174ee7
|
||||
DIST rust-1.81.0-arm-unknown-linux-gnueabi.tar.xz 192297828 BLAKE2B d1ac0b2649039f3b13568906b97627e6dc0e9e0df4c9d784192240e86e1424fb0fc0816c88d45b7baa6c473f175d4765e62a64994bf5b58031a40a6a1fa864ae SHA512 bd64fbac076bf31da5acadd1d3a85adb692d58644c3fcc1f338473eb6ead3bcf4463ec1d7d46b5fb1d55498ff7684958f4b1591425c2aa8184405d01fae261a4
|
||||
DIST rust-1.81.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B d2c507d2480665a8a983b5eb2f2eb85265ab1e8aecf278ca44d9f2ca7b5b2cb76577962df6866e81e6daa3912942df3fe0c4bfa75fe18173c4a6c05284bd0393 SHA512 6ca22e556388877bb9be06144ffcafad07126cfedbf77a27c6c3ede0be3ab6803df7d6d3e55cbdb0f210c02a02c7dfd26a3c3e5fd48338b4b7fc71fcb469242e
|
||||
DIST rust-1.81.0-arm-unknown-linux-gnueabihf.tar.xz 192357588 BLAKE2B 5236afdc2fb725b2be3a2cab4d66a6ec518038e1a557ea4950f683fe3ec716a6ca0e6ebdf99b8068856c90c3e60220a5f8d1140c23c1c6a5e1f8d0c96fc80d9c SHA512 03d2709ad7ccb87161b65771b4b7882163c9a80a814684ac8687780d5f9da031c9e667bd35baa3af89c3d7275e377c50d36b47fac585454c623acf6f8bab8cf7
|
||||
DIST rust-1.81.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B e819b6a30627c1af87f18dcdeff40eccd70249509f07b8157cceee047f756afe0ede798243a0b7a0b9842e42af5833e5a23c3b31771a1f4371711942b744b6ce SHA512 8eeaa15f932b9202acfd4d9210207d231a63cd5f3b77da4001e0d04a2e4f004c259150c83b608a5f84f59b29fe7933455409eb20b66739e3c238e13332e2273a
|
||||
DIST rust-1.81.0-armv7-unknown-linux-gnueabihf.tar.xz 197884288 BLAKE2B 060bc7c00c438011ecaad2a51b9edd2e96ac46bb1be602f14fd0eafebb2ef6d4bce979678d9ee7f99c6490565bb57b3f1abd1b3e2f387d247957763762b19082 SHA512 ad149183fa630b3b5c5258fb5b6ad993960c1fee979c4586206463bf76694ddba4854e451b79139a9455503bb3839b1efc92e9c27996f6557b7416078708b1a2
|
||||
DIST rust-1.81.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B f61a7fc711100cba3ae558eab15f165ac5c539c7adb1f82b4c83bc82b7a6c5eb294bcc43e351cb28e7886582b9f996b909e55896c267fa1456bc97d9accf34e2 SHA512 fb6851bf3cdc3c3c83ae9e3fdd04cdccbc6f1661c0656f4d9562c1d911c2e82f16854e88ac434d93804587697319545b6c659b68712198d7a62ba3877b4dedde
|
||||
DIST rust-1.81.0-i686-unknown-linux-gnu.tar.xz 224016868 BLAKE2B cbc147e42563ba1cd9e39e313d824c78d20e308c95e02bffef02d25b08e92309d5db0e5c0d5e0bfb30d593235bd3a58e6b4614043b3c12a6619406861c48a25b SHA512 b48d934b6644cce7f34db35ae69a4ddc9c9e71851dd1ca221e86d3a6cc107f29e0070515cec3d548e422161a031528927b93d4499e47eeefa87488dfb23591bf
|
||||
DIST rust-1.81.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 3cfb29d5ff9f00e5f14631466a3a5bc5ae0a3dadeed3e2b22ee000ebc57bf02ca6db5f2ac01756a6fdc753bb4cd83e5e6ed8fd9e356b6325f5b7eb17e7714d7e SHA512 1fd1ca2016876f2456eb832bc9c6d1ab2be237a619d5f6fd4e1ee0f31bdad3d3c1c95d5f45069512d0c8a140115a594be3d1f888fd9b5a342ddd7cda1d5e5ce7
|
||||
DIST rust-1.81.0-loongarch64-unknown-linux-gnu.tar.xz 200885152 BLAKE2B 46b23442632d7c3368454a031643a795cf54b732d2c180960008e38be97070708a433d1094f529aa78479fbd89adf1c4ceac38af919f28577e8f766029cf40c3 SHA512 2e090423c8c5ddc1dc29d5ad19cdaebb9abad45bc7a229f911385f50cd2951b587a187ed8deb01aa41aa643465d7c7ac2b91d94c80265c03362de39b99eba82e
|
||||
DIST rust-1.81.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 70aa0a550992b32ef666751336ebe2c81f3834d4117942cdc7f8b1eeadb1e5efa5fc63e283517e5535f406ff0e36b4577e559e24281e388a362463ed046fa340 SHA512 70c85d06e5b29968b6efb10efbece2761f81697395bf037581adf9e3aec0141266ae59644b6951e646749bcc23b038d5601b804c6d389b64c87b4be24847db42
|
||||
DIST rust-1.81.0-powerpc-unknown-linux-gnu.tar.xz 213304904 BLAKE2B b9d126cc787323ec18e978aaccbb8f92ccf753314fcc6a5d2d496400f4bc7885b543bd7ecae782a6c1dba737708358be26be68f69b47e982617e9a80af47d279 SHA512 a84bdad9877f7c8df2cd495447cca2a0e1448a8a13ee0fbcd2ca6f662317cbebf9425238edf3b5a1277b723b9c44eb4d363339c00a35e0ff86b6a568b61ec2f2
|
||||
DIST rust-1.81.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d2fba08b5be0026227e071993272a12e0d27af3b8e3b2fbd039a9c9a229317e9014d2e0f2c981387e6b46907e258e309424c2aef22d3512743d28ce035a85dc3 SHA512 156319d1904834794476d80a3b047a4099b983cb950ab3e9882ff34c0451eddff7cad8b160406abf23df40d195fdce925052177de2243ec8e8415edaac3c643c
|
||||
DIST rust-1.81.0-powerpc64-unknown-linux-gnu.tar.xz 210257620 BLAKE2B 686cb5e08befb0d4a19a7e34478c6916abd6aa7a05f09d83a7f8c4fcf59e144371a7442a1f14cd34b149dd056df119d5748ece4311d69af79725cb9b3b662126 SHA512 14f5feaeba8cb9e0a3326e5d74cba9be832fe6570308d5735f7fe7486fe240ef0f3cd2396c853bf34cc784f05fedd7a975dcb922775c59f3262a67fac1383839
|
||||
DIST rust-1.81.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d30e35436bbe3869278f4936b2b132d0a243bf0288470e837246a59239c2813025757f684f23c639517836e25895835a7ab0fd488834e2f53cfd1155e1c8a2fd SHA512 3b302c6c999df3e9aa0ab1a0638692cb6f88d44598e00bc862ecd2c384afffb259b8072738055800efc9f0c5b8de07a0fe3de1cab1bde28a9faf1951411a9bf6
|
||||
DIST rust-1.81.0-powerpc64le-unknown-linux-gnu.tar.xz 224307656 BLAKE2B 3891f93aa2bfb62fe23b463cdbd7db50182bb175cfadf2969b32d093897f517afb7dd97ecaefe90f220998f7436d41651c32e5a46957c2114d1ebc70834dd917 SHA512 9f6fa6bf0d5ba935b9ad5661287ad8aad5fc8d6b28fdbce6cd81730539d087ea512dba7b0133de08761d12b580b8b1c5d7ca35a4f1277a8bb683c109177ce83a
|
||||
DIST rust-1.81.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e96b56de2542596db2db9030382e8d87a9fee884888b58c0050b81487eaf22c2e6d62d11dfc7763a1f647318c2bd0b29e03dcbbe1809ea8162432874758caa7c SHA512 0e568a763276ca4e9c359d6dfc32d1f369ee04e160026c7660ff5f14175022175d23589df9c03c0c8c270d7e74a5e54754d23c8a1b0545b67b6d6c3d3ee82628
|
||||
DIST rust-1.81.0-riscv64gc-unknown-linux-gnu.tar.xz 223006516 BLAKE2B 5627ee83ed51726bcdb50757393f2333d76d705e18d65681c1872df6dd3e2beb9a18910b4d5e7da5c30f83b4c9f80117f2ef9c212cdd92eebc6cfce182ef579f SHA512 57cf209d364d43164402cddeed0ebe41b3e3ca69f79cec4f83055cf999493ed1cd87bc852b90707b2809cacceb39a83c4236712220105cd6a71be30250d4ae6e
|
||||
DIST rust-1.81.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 0eaff43543493165dd86a2ffa30a4039b599302970e5c4380e8640c8c61881480c86b2ef98159ccf464c2fe39e23d14191aa11fccecb8ea8f56feebabfcd0d2a SHA512 4b5b7f01801692aa4087b5f010993d4b14b73be9c2dc964555ba140a939e434400cb4ed4756238725dcb2ab66e5ed67bb1d4688a92fcbc6c8af23f21fdaee568
|
||||
DIST rust-1.81.0-s390x-unknown-linux-gnu.tar.xz 212322092 BLAKE2B 11237159a0e70c84e296cd54ac52721a887057ad12269328cf67483d55e603df3f55381c4413871b83fe58a26a52c32ba5e77e7b3426016eb35a207275598c29 SHA512 1ca177d52cd897da497191c4ff869ad9e22047d37f4955e134d51a8ac5a5c24d9ff109a6e955e71df0ac0fa1776939ee39ae384f2fa12ac4740e2aecf92dfd61
|
||||
DIST rust-1.81.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B a982e7308aca7fac8a93d299a9dcb00f5bea71e1b7061fada84fdf2cbe1cc5bf7ea65abff857a234896b950e06e1bc76c0e796a9570039b2314ac17dc4e9f4ea SHA512 cf8cfdecaeb589db64df6ff0418d68332c8b516d401f0e9bccf9651bb085f57d3bef4941fa60788ca372a9a2407a406dfb24c153a64549925a47c15196815683
|
||||
DIST rust-1.81.0-x86_64-unknown-linux-gnu.tar.xz 170439044 BLAKE2B 5377d8972a729b0135c2461adcdc179719a0af99e8e9656b3c9eb487144c306d49dd42737d71195773e4b03e4287215955a7bab34094c19a9f07fba04a706a62 SHA512 a648b735d91348dfda6a66b4ca09f3449ff4abbd1d727fce8c91ec409a82bfc873988b06aa0907e145c486d035df12c68fa14466ccd2148ac0a99d5934335ae2
|
||||
DIST rust-1.81.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9f39dedf33efd6fe4d66e10e3cb064851b1637a50e97d3bc19c48bf989e1e94d694df493eb437d2c2e58989933dbb05a7d25c276b26331475f44ea2d9d52909c SHA512 37908051e511cf223e92379ecf577ee1644d6aa13583b622b78d445367ca9e8a4253d77a5237831eeef15607c71e99ae3ef42451803466fad303bb523e13475c
|
||||
DIST rust-1.81.0-x86_64-unknown-linux-musl.tar.xz 251142276 BLAKE2B da30177914f8574ff896b64a60279913d48330818c6e96e10d3180964ed542697f29c6ca7e7c81fb1b814e1d9ceb8bbf6e119596b59564a64a08e30ce72ce4b8 SHA512 3b772269362556bebbff72a13abf05f745fd88128367ab1e5879ed3c0f3f5a1f7370faec1b2bce521a38662d58d94a8e4eb6b085c8e0f166979af490492e17c8
|
||||
DIST rust-1.81.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B e13afc29a5a06bd9453db22a6bc6894d8fb671ad9e3989852c9348ded5a22c908ec58ddc20b0f2d94e6bd291eb0e9fec09277f95ba9528bb7d333748ebb79959 SHA512 da0689376503be19af92d88e2731296c6a5286cec60d42dcebd4738b23e3e1a1bb303982e2a9e6bc14a8f7a8872321b9e9c25915cde43fa1772ddfdb149997c7
|
||||
DIST openssl-0.10.35.crate 204462 BLAKE2B fb58a3be883bac3d5aa3e971172a281a80e9e100c51585db3d2828ecfd89d0b3b19edfacba2039056fa3aefb79717e03cd2ecbf932afb1acac2e74e1c29d3551 SHA512 5ebe4626a894ccc6e5c159cef72357654aa1a20dcc863fdab495f10a574b49b0b9d4e85a069b8b9297544ea0d09fd88a976396c3a8e8faaee9d01d79d943126f
|
||||
DIST openssl-sys-0.9.65.crate 54405 BLAKE2B f0e09accf076653f172199d36bfe0b7547a738f962e9ee8c15563c4d27587aade3e44830022a1787dfc932ae1f162336e3a110a34b1459656631c7ea50e58b75 SHA512 4c14ff5258a35b86e35d352c5702c90e1f70954c8f33d17160694b63305057b97da3ac6846d3e8f8e7293c40f15b76effd1e34fad4be613b8d815b90148406f7
|
||||
DIST rustc-1.54.0-src.tar.xz 116286856 BLAKE2B 5ac47822646a0b6205f09282168b4d4ddcace9f6bc8f242c890327ca4074626f129514f8bcae5c5556015745f718990cce490658076f5cd3526623439540416b SHA512 5162f85b43ca2c5af93fdbfb2597d75df8a838f7fcc025a5298499ce1043db50f1ea2fbba753e47ce5daad3d80d4b612acf6527ef902c34117763e687fdbbcfa
|
||||
DIST rustc-1.54.0-src.tar.xz.asc 801 BLAKE2B 5ee9166eaa00e4ffec10fb82b18946d403bc2030c6e04de6449311cbccc2ef1b017044f451a1c19be3a0a9640c4a9a9e4bd22d28e2115509f333ae38eb25e9d4 SHA512 5ad91f43515de14114964db0348cd28c08adc6dc935f110bf339053414b8eab8a40f1074ceffa44ed2df61254f8368d867479400618c44efaa0333642ab49d07
|
||||
DIST rustc-1.71.1-src.tar.xz 151983068 BLAKE2B 3dfdbc246feb84a79ae94c2de978c5585ee06cf6b683d2245869b62e28f7c79f89cc589f5431537713bf088236a0b824acefc1b68e418e9eb72e1eea98054e3f SHA512 fd0e5a16bdbeb539184513583089e55f681cb772810df357b6b1464853f7022ac02edab3dd155b2262ed0047e2a25dea3808dd078dcdfce9d399384465009db4
|
||||
DIST rustc-1.71.1-src.tar.xz.asc 801 BLAKE2B a88c073a70552d73e2d7695eceabdaa478f34501b7271fabf7f4a09f3efa545181f34353e45776b05918e6aeba88adb02f9731454f7085a7abf1602fc6589983 SHA512 9dd0406cf22f1daa7fcfd015fc1c6f8d36586aa99bf14c1491ee464c1f892ab759feb83e8b55b64713170fb777fdbe038fb5fd01a59c911b6599223baaba0677
|
||||
DIST rustc-1.74.1-src.tar.xz 155968724 BLAKE2B e05f2379ac94b286f85791a138e1928e5b5b5a7749f0981d82c40c2a12860f55bf96bb2f0e924e35a0f8b2447b13052d38adea909aaa3199105787bb5a4861b3 SHA512 14c7e7ed2f38ab60299d8c7d41d78f042b6b57ef822d577b5138e60bdde31cf141eccd4332a25bc5da3d58eb5313d63c1448b5dfe9e11b8055bb8ea133a9038d
|
||||
DIST rustc-1.74.1-src.tar.xz.asc 801 BLAKE2B ddf73175b164233babf31ca3a381b03e20c0f36d017c1d5f85d6ab11f0986d861ab23b11c061e6b2444ced70c3d6a494cc3de4ec86f0deb221a805491bd75420 SHA512 9a96ff9ba9a4e2af4e267b2ec126fc0675c78d0eb767703daa2f28491c3d85c2ab00fbd8584390bf658812ec6c4ab6c57e43b386db59fd505bd3134a8873a09e
|
||||
DIST rustc-1.75.0-src.tar.xz 159624388 BLAKE2B 8937b80585eddaa3e1f1ef948899d14a170308518c6fef9fe569560cdd870053776956743f796055f2119399b9ca6c0df12fedd789ae46324d071e5126c4e495 SHA512 7b0f25d91b1b5c317980fc88e059200bd43b56a70b445fbc72fb9b96e09775bfd3a98e9bd9d662af80f0ce3aef527c777ee82777e96ca876f47a972d63da8606
|
||||
DIST rustc-1.75.0-src.tar.xz.asc 801 BLAKE2B 434da96b1dc93a5aeed07f4961b087fdd15870e407283ecc00df08dbc1e9f6c65fe459b3a25d39ee55900d53ee583207098ecf3d63f5d6ea114ef0b8398b6a63 SHA512 a0e948553af77ca6e2daa82c69d79079ef7d4ec61957bdff99efd73748200d6c7caa9282daeb3fe3ef849d81a48e66a25336df4c7b6f62f975266aa8b9b93d3a
|
||||
DIST rustc-1.76.0-src.tar.xz 162267908 BLAKE2B 0cf726841a837d9906d82a6216e65edad1e3e4a798ccd1ca3824c2098d0c45473854b8bf183c6e9ca70ba095752e77c4f5ef575d98c07243d609857214175f5e SHA512 92e16cfdeb91bde341fe6c2774d92868275b07aa1d46d870ddc9291eadfe4ea9af93e06586fa7d6b8d60534903945cbbe706d354c90272712989c58d2bf174bf
|
||||
DIST rustc-1.76.0-src.tar.xz.asc 801 BLAKE2B eadb2f54fceb9c1ac60af72407a2957e37e1ba134a696675a1e9dcf23a2958b41d7f5aa1f75156e4843cefc387cdc9c909e364c3bfcabecc6bfbe262d9c6e8af SHA512 d35c010a5a129580746bcec5c0dad1b0bc1b7864a69505c7c0ccfad436fdfbdf33f87518965a09de187d6a70fb8867dc6a20037c648861031a17501577855120
|
||||
DIST rustc-1.77.1-src.tar.xz 162796048 BLAKE2B 18a9fd095808ba78bf50ec94f7fd4087a1033ec79750aa593bacf64219c77ef90c030d41a7d8bc43f7ec8eb30b316c225024be4aeb517100ff6723487f8bb282 SHA512 e057ae638e4c3e54fdb367d48f4b85458121cee0d0ee1ed72f346940b8acad2f16cd9cc8abc16fcf4a17bf244b3300bb56a7e7be3bd0c23b034692c983b84fe8
|
||||
DIST rustc-1.77.1-src.tar.xz.asc 801 BLAKE2B 175a551abdb970295d37a0797cf262ac43055a3cb75b23845dbb8696d04b7705b7a2908b82fcbce7cd7dec2e05c382d06622013b9d4aa19fab7f651f7e00bb73 SHA512 eb24976ae97d2980d4c547bcf27d815f4b98b8aa45441a7201a849ee37e0ef15671732c9916d33964b8e802a87ede758daaadf84901bd569527c8b6c48efff23
|
||||
DIST rustc-1.78.0-src.tar.xz 159181212 BLAKE2B dedae58e413689de258f852c988a9a91d4cf14c9525f2619ca6155006ddc9b2262c8141ff995e4fc6ecceec383470e50d2fa0952d933db9b3957ce5c5b96f62e SHA512 d2fb9881e28849d871fda71b1b51652be3839b3283f0d32163f258c5c707a9fb7b589da8dc03bca2fefee1abdd2b44a5f17e85d8c6df7bea119d1e8d22371941
|
||||
DIST rustc-1.78.0-src.tar.xz.asc 801 BLAKE2B a40b0eab4e9263694e79f21d92652402579f4a0587fa48b4043211bc645d4303f9af7629e9c8361938748163e99fa7cd04108156780f23f9c8600361785e834b SHA512 ef16c9eed79f36576517e9dd77b56aa767ae9dc745f5df1839e24b76084ac791b27926f3d608b41695ae6022aa10cbdd3650cad163f35037c60d3bd0427b3cbd
|
||||
DIST rustc-1.79.0-src.tar.xz 162359512 BLAKE2B 753c0e9c537644d1a12b4d38024c22952a19513791c3da6f955690c544e58964bacbdb579f94cd05910697fc31f77ed6553e5ad3b111bbdfebeea8d2a4fa19f5 SHA512 99d7f276292e5c270648473ff73e9888413a3325ef3a4d7a45f8ce77a42ac87996905f1d875888ce084b621f642017bc9e31a00da1439108dbe19b85d0eab085
|
||||
DIST rustc-1.79.0-src.tar.xz.asc 801 BLAKE2B 860283021f513f5d4c81ea1f8d9567f0a052cc53a1d51d7fd9a804a39b855e24e06ea4c73db53176c1cf846910147de6bbc26da35755f3d0d4b296503e691e64 SHA512 51eec85d71817fe21073502c1d18e44ce694dc11b1c181e82462b529a24a610c8e215e6f2640e8b6d80f028207a360e43354cafa863f49a12c547b4c5f52d7e7
|
||||
DIST rustc-1.80.1-src.tar.xz 199234944 BLAKE2B 39891362f2a4bc249f5d943e3ded48d2add9cd9c0ee3c085d7fbefbfbc784f1e029308d9486cd35a6c03b77243077dc1196c75980faeea0d4319cee057509b6a SHA512 3c746108a86eeb734c1a8c8f63ba1a45e2cb03a8cb553395a167d07dc3ce5d8d9ea365ddd95533b6952d915069b86cad7ad218d27861e0889f8e878136bd32ab
|
||||
@ -244,3 +22,7 @@ DIST rustc-1.81.0-src.tar.xz 216743872 BLAKE2B d9f52da9092d0723c862ebbb2dc351cad
|
||||
DIST rustc-1.81.0-src.tar.xz.asc 801 BLAKE2B 01cd9f386d3fd73f4eb43b14d7d479ebababb8640abbff170e697817b94b8a18edd801c6047ecf3c084a0a51764c5e4f3f4bd6b00e8ae000ef0b850e9506572a SHA512 19c0da9d67f2bd9fd79a2078f0f486ee7fad5646a09a609b7e30d9531851955ae8df0ec69f9ddc09e2fd6e74d529648335b0fda833839c88c54c84494ec1988e
|
||||
DIST rustc-1.82.0-src.tar.xz 219769328 BLAKE2B 611f33e134c2d459c9af1695c0a4d033df93afc986e91a17fceb0dd293fb4ffbd5f7475ef571d36cecf49da6c3fdb3801c98d7f72f9dd1c39e42502f649b192f SHA512 d158c7c71c1814bde2a3ec3cbeabe34949bd3201b730c0d7ec6baad4158bb28dd13696c430a6b99dc38b9d23ad7ddf8dde7d2487cbfbbbe9c3473016994210f0
|
||||
DIST rustc-1.82.0-src.tar.xz.asc 801 BLAKE2B 8138fb15b8d7ec15be45378fe663207a8e87e3c527348ab079995b1840a771ed6e9d5464eb8855ac9e006c0cfcf54b1a4fea489d31e6c9899cb03e6f4c737b67 SHA512 3cd6b27e72041baf9996efa10f25aca2e04f3e3727b60ecfd90c1bef9c52d216d2dc130802f935b110e35766645a27637a01661aa8d5acf02bf64b02a107c93c
|
||||
DIST rustc-1.83.0-src.tar.xz 353808388 BLAKE2B 217c85f7351a7c57a2684da2c7c81a32094187b3812dee628b327a5b2faca57235abc54d033c586c071c8bfa0c7360bb28761aaa42fe18414e388db704d81231 SHA512 64db57949c6ac1df6a3f4c6bd0938685a5fb1bc3d318b34ccfcfccb0f9eff1cffd4d8a53a190ef0409eeca9ad12bc6234c2c1de69196cc74ae02d6afa20d0ce6
|
||||
DIST rustc-1.83.0-src.tar.xz.asc 801 BLAKE2B 3bacb43d50ebba579dc2d4f1726298a7887e303e15f039ef72b840e30d90bc2cf9cdbe4617a9ee113a2b1a48f1982e72cf30323d72cdfb9a65b5b4d734ca0024 SHA512 84b252ccaddc06cb05858ff64f582dd25823818c81b1e3a00362deeda06f09e6c36948fd316d5f0ca5e24949e6f99bb14a14dbd2af1cfbb85e679e27ab0a813c
|
||||
DIST rustc-1.84.0-src.tar.xz 354993944 BLAKE2B e4697d8a9f42484556ed490390aef535b2214ccb3715ade57936211c1c637737da5f2b9a6c53a30df0fba1744fbd80d4d1382c0b74f6b36b36098bf187557201 SHA512 9e964c1b964e74083a9002fa04b072fa8fe7a520b24ad55e88a89bb2a2a2cd5727c5438d6db425b824ae7502ab215c2dd3f49777efd65f76bae09965df2e070a
|
||||
DIST rustc-1.84.0-src.tar.xz.asc 801 BLAKE2B b1846702f36b92c479499f5eb704ce1e272131fc1b6b625c8d64c873a82ed79b1de8cceb1f21ae4b9dccf81e258547debf367b7b769ac94ed10a59dee18f79f1 SHA512 5ada0e0fed9901044eaa0d7cb657f685c7e183e91245714abe4a0a8bf3062a7de281932c7de7587220df0542511f6011d057bd8bed19d98c755eab74091cdfdb
|
||||
|
@ -0,0 +1,75 @@
|
||||
From 1879d1d1a284bf51c752e47db284ce22701ed5d0 Mon Sep 17 00:00:00 2001
|
||||
From: Samuel Holland <samuel@sholland.org>
|
||||
Date: Sun, 16 Sep 2018 16:38:48 +0000
|
||||
Subject: [PATCH 12/15] Ignore broken and non-applicable tests
|
||||
|
||||
c-link-to-rust-va-list-fn: unstable feature, broken on aarch64, #56475
|
||||
env-funky-keys: can't handle LD_PRELOAD (e.g. sandbox)
|
||||
long-linker-command-lines: takes >10 minutes to run (but still passes)
|
||||
simd-intrinsic-generic-bitmask.rs: broken on BE, #59356
|
||||
sparc-struct-abi: no sparc target
|
||||
sysroot-crates-are-unstable: can't run rustc without RPATH
|
||||
---
|
||||
src/test/codegen/sparc-struct-abi.rs | 1 +
|
||||
src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile | 2 ++
|
||||
src/test/run-make-fulldeps/long-linker-command-lines/Makefile | 2 ++
|
||||
src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile | 2 ++
|
||||
src/test/ui/env-funky-keys.rs | 1 +
|
||||
6 files changed, 10 insertions(+)
|
||||
|
||||
diff --git a/src/test/codegen/sparc-struct-abi.rs b/src/test/codegen/sparc-struct-abi.rs
|
||||
index 78e5b14a212..6f93e93286b 100644
|
||||
--- a/src/test/codegen/sparc-struct-abi.rs
|
||||
+++ b/src/test/codegen/sparc-struct-abi.rs
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
// only-sparc64
|
||||
// compile-flags: -O --target=sparc64-unknown-linux-gnu --crate-type=rlib
|
||||
+// ignore-test
|
||||
#![feature(no_core, lang_items)]
|
||||
#![no_core]
|
||||
|
||||
diff --git a/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile b/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile
|
||||
index f124ca2ab61..363b18f0985 100644
|
||||
--- a/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile
|
||||
+++ b/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile
|
||||
@@ -1,3 +1,5 @@
|
||||
+# ignore-aarch64
|
||||
+
|
||||
-include ../tools.mk
|
||||
|
||||
all:
|
||||
diff --git a/src/test/run-make-fulldeps/long-linker-command-lines/Makefile b/src/test/run-make-fulldeps/long-linker-command-lines/Makefile
|
||||
index 5876fbc94bc..5f167ece1a2 100644
|
||||
--- a/src/test/run-make-fulldeps/long-linker-command-lines/Makefile
|
||||
+++ b/src/test/run-make-fulldeps/long-linker-command-lines/Makefile
|
||||
@@ -1,3 +1,5 @@
|
||||
+# ignore-test
|
||||
+
|
||||
-include ../tools.mk
|
||||
|
||||
all:
|
||||
diff --git a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
|
||||
index 9e770706857..6d92ec5cec8 100644
|
||||
--- a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
|
||||
+++ b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
|
||||
@@ -1,1 +1,3 @@
|
||||
+# ignore-test
|
||||
+
|
||||
all:
|
||||
python2.7 test.py
|
||||
diff --git a/src/test/ui/env-funky-keys.rs b/src/test/ui/env-funky-keys.rs
|
||||
index c5c824ac58d..f3fe047a79c 100644
|
||||
--- a/src/test/ui/env-funky-keys.rs
|
||||
+++ b/src/test/ui/env-funky-keys.rs
|
||||
@@ -1,6 +1,7 @@
|
||||
// run-pass
|
||||
// Ignore this test on Android, because it segfaults there.
|
||||
|
||||
+// ignore-test
|
||||
// ignore-android
|
||||
// ignore-windows
|
||||
// ignore-cloudabi no execve
|
||||
--
|
||||
2.24.1
|
||||
|
@ -0,0 +1,164 @@
|
||||
From 671ef2d1c228aed031b4232b8bea96f17b825263 Mon Sep 17 00:00:00 2001
|
||||
From: Georgy Yakovlev <gyakovlev@gentoo.org>
|
||||
Date: Mon, 23 Nov 2020 14:52:04 -0800
|
||||
Subject: [PATCH] add gentoo musl target specs
|
||||
|
||||
---
|
||||
.../src/spec/aarch64_gentoo_linux_musl.rs | 11 +++++++++++
|
||||
.../src/spec/armv7_gentoo_linux_musleabihf.rs | 11 +++++++++++
|
||||
.../rustc_target/src/spec/i686_gentoo_linux_musl.rs | 11 +++++++++++
|
||||
compiler/rustc_target/src/spec/mod.rs | 8 ++++++++
|
||||
.../src/spec/powerpc64_gentoo_linux_musl.rs | 11 +++++++++++
|
||||
.../src/spec/powerpc64le_gentoo_linux_musl.rs | 11 +++++++++++
|
||||
.../src/spec/powerpc_gentoo_linux_musl.rs | 11 +++++++++++
|
||||
.../rustc_target/src/spec/x86_64_gentoo_linux_musl.rs | 11 +++++++++++
|
||||
8 files changed, 85 insertions(+)
|
||||
create mode 100644 compiler/rustc_target/src/spec/aarch64_gentoo_linux_musl.rs
|
||||
create mode 100644 compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs
|
||||
create mode 100644 compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs
|
||||
create mode 100644 compiler/rustc_target/src/spec/powerpc64_gentoo_linux_musl.rs
|
||||
create mode 100644 compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs
|
||||
create mode 100644 compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs
|
||||
create mode 100644 compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs
|
||||
|
||||
diff --git a/compiler/rustc_target/src/spec/aarch64_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/aarch64_gentoo_linux_musl.rs
|
||||
new file mode 100644
|
||||
index 0000000..420fe7c
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/aarch64_gentoo_linux_musl.rs
|
||||
@@ -0,0 +1,11 @@
|
||||
+use crate::spec::Target;
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ let mut base = super::aarch64_unknown_linux_musl::target();
|
||||
+
|
||||
+ base.llvm_target = "aarch64-gentoo-linux-musl".to_string();
|
||||
+ base.options.vendor = "gentoo".to_string();
|
||||
+ base.options.crt_static_default = false;
|
||||
+
|
||||
+ base
|
||||
+}
|
||||
diff --git a/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs b/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs
|
||||
new file mode 100644
|
||||
index 0000000..067e2d6
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs
|
||||
@@ -0,0 +1,11 @@
|
||||
+use crate::spec::Target;
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ let mut base = super::armv7_unknown_linux_musleabihf::target();
|
||||
+
|
||||
+ base.llvm_target = "armv7-gentoo-linux-musleabihf".to_string();
|
||||
+ base.options.vendor = "gentoo".to_string();
|
||||
+ base.options.crt_static_default = false;
|
||||
+
|
||||
+ base
|
||||
+}
|
||||
diff --git a/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs
|
||||
new file mode 100644
|
||||
index 0000000..1cd39cd
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs
|
||||
@@ -0,0 +1,11 @@
|
||||
+use crate::spec::Target;
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ let mut base = super::i686_unknown_linux_musl::target();
|
||||
+
|
||||
+ base.llvm_target = "i686-gentoo-linux-musl".to_string();
|
||||
+ base.options.vendor = "gentoo".to_string();
|
||||
+ base.options.crt_static_default = false;
|
||||
+
|
||||
+ base
|
||||
+}
|
||||
diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
|
||||
index f1e8330..d8c0ba0 100644
|
||||
--- a/compiler/rustc_target/src/spec/mod.rs
|
||||
+++ b/compiler/rustc_target/src/spec/mod.rs
|
||||
@@ -490,6 +490,14 @@ macro_rules! supported_targets {
|
||||
}
|
||||
|
||||
supported_targets! {
|
||||
+ ("aarch64-gentoo-linux-musl", aarch64_gentoo_linux_musl),
|
||||
+ ("armv7-gentoo-linux-musleabihf", armv7_gentoo_linux_musleabihf),
|
||||
+ ("i686-gentoo-linux-musl", i686_gentoo_linux_musl),
|
||||
+ ("powerpc-gentoo-linux-musl", powerpc_gentoo_linux_musl),
|
||||
+ ("powerpc64-gentoo-linux-musl", powerpc64_gentoo_linux_musl),
|
||||
+ ("powerpc64le-gentoo-linux-musl", powerpc64le_gentoo_linux_musl),
|
||||
+ ("x86_64-gentoo-linux-musl", x86_64_gentoo_linux_musl),
|
||||
+
|
||||
("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu),
|
||||
("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32),
|
||||
("i686-unknown-linux-gnu", i686_unknown_linux_gnu),
|
||||
diff --git a/compiler/rustc_target/src/spec/powerpc64_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc64_gentoo_linux_musl.rs
|
||||
new file mode 100644
|
||||
index 0000000..e840bb2
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/powerpc64_gentoo_linux_musl.rs
|
||||
@@ -0,0 +1,11 @@
|
||||
+use crate::spec::Target;
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ let mut base = super::powerpc64_unknown_linux_musl::target();
|
||||
+
|
||||
+ base.llvm_target = "powerpc64-gentoo-linux-musl".to_string();
|
||||
+ base.options.vendor = "gentoo".to_string();
|
||||
+ base.options.crt_static_default = false;
|
||||
+
|
||||
+ base
|
||||
+}
|
||||
diff --git a/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs
|
||||
new file mode 100644
|
||||
index 0000000..1037d82
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs
|
||||
@@ -0,0 +1,11 @@
|
||||
+use crate::spec::Target;
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ let mut base = super::powerpc64le_unknown_linux_musl::target();
|
||||
+
|
||||
+ base.llvm_target = "powerpc64le-gentoo-linux-musl".to_string();
|
||||
+ base.options.vendor = "gentoo".to_string();
|
||||
+ base.options.crt_static_default = false;
|
||||
+
|
||||
+ base
|
||||
+}
|
||||
diff --git a/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs
|
||||
new file mode 100644
|
||||
index 0000000..a623ffe
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs
|
||||
@@ -0,0 +1,11 @@
|
||||
+use crate::spec::Target;
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ let mut base = super::powerpc_unknown_linux_musl::target();
|
||||
+
|
||||
+ base.llvm_target = "powerpc-gentoo-linux-musl".to_string();
|
||||
+ base.options.vendor = "gentoo".to_string();
|
||||
+ base.options.crt_static_default = false;
|
||||
+
|
||||
+ base
|
||||
+}
|
||||
diff --git a/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs
|
||||
new file mode 100644
|
||||
index 0000000..f330473
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs
|
||||
@@ -0,0 +1,11 @@
|
||||
+use crate::spec::Target;
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ let mut base = super::x86_64_unknown_linux_musl::target();
|
||||
+
|
||||
+ base.llvm_target = "x86_64-gentoo-linux-musl".to_string();
|
||||
+ base.options.vendor = "gentoo".to_string();
|
||||
+ base.options.crt_static_default = false;
|
||||
+
|
||||
+ base
|
||||
+}
|
||||
--
|
||||
2.29.2
|
||||
|
234
sdk_container/src/third_party/portage-stable/dev-lang/rust/files/1.53.0-rustversion-1.0.5.patch
vendored
Normal file
234
sdk_container/src/third_party/portage-stable/dev-lang/rust/files/1.53.0-rustversion-1.0.5.patch
vendored
Normal file
@ -0,0 +1,234 @@
|
||||
From 12efa21eb88cb43d3b927952da0c5635373ac92b Mon Sep 17 00:00:00 2001
|
||||
From: David Tolnay <dtolnay@gmail.com>
|
||||
Date: Thu, 17 Jun 2021 22:34:55 -0700
|
||||
Subject: [PATCH] Update rustversion to 1.0.5
|
||||
|
||||
---
|
||||
Cargo.lock | 4 +--
|
||||
vendor/rustversion/.cargo-checksum.json | 2 +-
|
||||
vendor/rustversion/Cargo.toml | 2 +-
|
||||
vendor/rustversion/build/build.rs | 6 ++++
|
||||
vendor/rustversion/build/rustc.rs | 30 +++++++++-----------
|
||||
vendor/rustversion/src/lib.rs | 15 ++++++++++
|
||||
vendor/rustversion/src/time.rs | 13 +++++++--
|
||||
vendor/rustversion/tests/test_parse.rs | 10 +++++++
|
||||
vendor/rustversion/tests/ui/bad-bound.stderr | 4 +--
|
||||
vendor/rustversion/tests/ui/bad-date.stderr | 4 +--
|
||||
10 files changed, 63 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
index 0939f19cdfe..26a89caf050 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -4582,9 +4582,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rustversion"
|
||||
-version = "1.0.4"
|
||||
+version = "1.0.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd"
|
||||
+checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088"
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
diff --git a/vendor/rustversion/.cargo-checksum.json b/vendor/rustversion/.cargo-checksum.json
|
||||
index e1277df7b59..0a134695aaf 100644
|
||||
--- a/vendor/rustversion/.cargo-checksum.json
|
||||
+++ b/vendor/rustversion/.cargo-checksum.json
|
||||
@@ -1 +1 @@
|
||||
-{"files":{"Cargo.toml":"1a91782510461d54726e816ae776042b95c79c9949d49c11b8782caefc22ead2","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"01dc6a1bf499a12bd0bfbbfe4db2ca8460b2c151235bcf2aad2356de4c2ec50a","build/build.rs":"481daf363b7004c90ffc3e012863a4102e9f26b9aaa2a4a295c2dd78f690be28","build/rustc.rs":"4dc8f1764672137bd15758cc19242740b0d6ab99e4a69171ad0999f9112a15a6","src/attr.rs":"9301cd4aff5a9648c057d5d8de9eb66921f0c3a715c51ada4459576bd49c8b19","src/bound.rs":"44bda74d3aacfeeeac9dae2f7eef3acc844d4c3c7eaa9d3e6288e5aeff269dff","src/constfn.rs":"613b8f53b21cc06b4f619fce9000993d3e7873b650701ca01cef1e53bed5b40a","src/date.rs":"454c749a60db8144a706a813e06fe3ae39c981920ba9832ef82f3f9debe1f052","src/error.rs":"cb37102f03ebbaca313d80f9714fe08dfef92fe956789ee87d93eb6121705f4f","src/expr.rs":"8e8ca76f4f5838436d9d7273f499c698bb41f6c15bc07d32ec5c1cb8bd3dd731","src/iter.rs":"8d4b817b9abc4e817105b673e15f29ef9bb8284a010ce01ac2d83387fe136947","src/lib.rs":"f8347832d8072058dbb4af6b8d67a834a02fe9c5460bbaa26defec4b66317f1b","src/release.rs":"abb8ddd877c39a023bf5e7bd67063d6e4144e79758a8bafa338167f9d15b89f1","src/time.rs":"45fb48ff0a0046a5a1b108b9ce53b14885637ad868ede1d66970379c2b7f16ef","src/token.rs":"824ce765f692db73afa02d3ebb0281c750748035efc98fa547be29d3072665ce","src/version.rs":"afdb048bba95bbb885945eba5527b6bf0eca0105642bfc304c2f82a8b7d556df","tests/compiletest.rs":"0a52a44786aea1c299c695bf948b2ed2081e4cc344e5c2cadceab4eb03d0010d","tests/test_const.rs":"a8297ca6559f895a3b2664964a42b6f82bbbc3c8faa9556a513006e6e1827995","tests/test_eval.rs":"6f0ee3f49c9a0d0c374a4d0e9a9dce753cd9fc2ca7725e000a435dbd5f4a9ce3","tests/test_parse.rs":"fbf9695f4208263743715e6c8b6294dfffee21462a65dfeb9339a70c0e18dbc6","tests/ui/bad-bound.rs":"25bde278fcaabf62868417148a5e5f2006bf589d7ebd7bf6004fb8d78e47594f","tests/ui/bad-bound.stderr":"bc9297f758c2541fb0a8b48d5785f4bbcd0d2a07d876ba0baf2fc9de9275e7e6","tests/ui/bad-date.rs":"6e23714dae8b6346fefe50dacd4abba3265248bbadfdd60c739138aa8a0037ba","tests/ui/bad-date.stderr":"1ac3cab13ee900fc8344e8fab21ff4d9cad476aca44925a4c1b2293a6b59b742","tests/ui/bad-not.rs":"f003df8bd245e9dd8edc3a6d94078ee5162fac7a98db881271f0f5b6db98d45d","tests/ui/bad-not.stderr":"d4ef78fae4a82419e737757158796cb103a5920df498956eaf57ed201797b463","tests/ui/bad-version.rs":"f4ea2cd038e6c63deb9c2e3ceffce93dbf179d9ce18c16d88f3b6cd7138a8c8e","tests/ui/bad-version.stderr":"60ed51c62f4c2fb6ff95cff7523cfca379ed434f319da9d82704318588792338","tests/ui/const-not-fn.rs":"10bbe38f0d89391fff0698756e4cfd4e72a41090360393a0c951b67df14d1c35","tests/ui/const-not-fn.stderr":"9551f7f222445b31d7af2415d467301c332d55bb3d5a143846484f2f00047a01"},"package":"cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd"}
|
||||
\ No newline at end of file
|
||||
+{"files":{"Cargo.toml":"a09ee758f816eddff8a8c7fb5be54dd95e74caad18a207251faedd251ecfaf1c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"01dc6a1bf499a12bd0bfbbfe4db2ca8460b2c151235bcf2aad2356de4c2ec50a","build/build.rs":"bae427f344972e6e0e348ec48dce0947274b3ec6cac0938497a8d3da5c9834e5","build/rustc.rs":"3e4acf7ea679f9331dd4e8dbe42a08a312f58379ea1eee5898793a9848d06d8c","src/attr.rs":"9301cd4aff5a9648c057d5d8de9eb66921f0c3a715c51ada4459576bd49c8b19","src/bound.rs":"44bda74d3aacfeeeac9dae2f7eef3acc844d4c3c7eaa9d3e6288e5aeff269dff","src/constfn.rs":"613b8f53b21cc06b4f619fce9000993d3e7873b650701ca01cef1e53bed5b40a","src/date.rs":"454c749a60db8144a706a813e06fe3ae39c981920ba9832ef82f3f9debe1f052","src/error.rs":"cb37102f03ebbaca313d80f9714fe08dfef92fe956789ee87d93eb6121705f4f","src/expr.rs":"8e8ca76f4f5838436d9d7273f499c698bb41f6c15bc07d32ec5c1cb8bd3dd731","src/iter.rs":"8d4b817b9abc4e817105b673e15f29ef9bb8284a010ce01ac2d83387fe136947","src/lib.rs":"5652f6f84fc80136bd29b2125f7676e80e0df7d40aac274b0658c99cecbd871d","src/release.rs":"abb8ddd877c39a023bf5e7bd67063d6e4144e79758a8bafa338167f9d15b89f1","src/time.rs":"bdd05a743b07a6bbfa0dbc9d4e415e051aba4a51a430c3be1e23447eae298c8b","src/token.rs":"824ce765f692db73afa02d3ebb0281c750748035efc98fa547be29d3072665ce","src/version.rs":"afdb048bba95bbb885945eba5527b6bf0eca0105642bfc304c2f82a8b7d556df","tests/compiletest.rs":"0a52a44786aea1c299c695bf948b2ed2081e4cc344e5c2cadceab4eb03d0010d","tests/test_const.rs":"a8297ca6559f895a3b2664964a42b6f82bbbc3c8faa9556a513006e6e1827995","tests/test_eval.rs":"6f0ee3f49c9a0d0c374a4d0e9a9dce753cd9fc2ca7725e000a435dbd5f4a9ce3","tests/test_parse.rs":"cdfe376020b9391330292968046117b0935c828d73385e8faeb2e333ec897088","tests/ui/bad-bound.rs":"25bde278fcaabf62868417148a5e5f2006bf589d7ebd7bf6004fb8d78e47594f","tests/ui/bad-bound.stderr":"a03dc78b380191c10d3b3406b1fd3208bb2609d4c26b9c33ccd335721e3cd072","tests/ui/bad-date.rs":"6e23714dae8b6346fefe50dacd4abba3265248bbadfdd60c739138aa8a0037ba","tests/ui/bad-date.stderr":"3a607fb950a69f7dc1b503295bce53541f9dee9f4674edc5d13ee3a69ff0e8cd","tests/ui/bad-not.rs":"f003df8bd245e9dd8edc3a6d94078ee5162fac7a98db881271f0f5b6db98d45d","tests/ui/bad-not.stderr":"d4ef78fae4a82419e737757158796cb103a5920df498956eaf57ed201797b463","tests/ui/bad-version.rs":"f4ea2cd038e6c63deb9c2e3ceffce93dbf179d9ce18c16d88f3b6cd7138a8c8e","tests/ui/bad-version.stderr":"60ed51c62f4c2fb6ff95cff7523cfca379ed434f319da9d82704318588792338","tests/ui/const-not-fn.rs":"10bbe38f0d89391fff0698756e4cfd4e72a41090360393a0c951b67df14d1c35","tests/ui/const-not-fn.stderr":"9551f7f222445b31d7af2415d467301c332d55bb3d5a143846484f2f00047a01"},"package":"61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088"}
|
||||
\ No newline at end of file
|
||||
diff --git a/vendor/rustversion/Cargo.toml b/vendor/rustversion/Cargo.toml
|
||||
index 56995ff0792..c72b1b2b343 100644
|
||||
--- a/vendor/rustversion/Cargo.toml
|
||||
+++ b/vendor/rustversion/Cargo.toml
|
||||
@@ -13,7 +13,7 @@
|
||||
[package]
|
||||
edition = "2018"
|
||||
name = "rustversion"
|
||||
-version = "1.0.4"
|
||||
+version = "1.0.5"
|
||||
authors = ["David Tolnay <dtolnay@gmail.com>"]
|
||||
build = "build/build.rs"
|
||||
description = "Conditional compilation according to rustc compiler version"
|
||||
diff --git a/vendor/rustversion/build/build.rs b/vendor/rustversion/build/build.rs
|
||||
index 2a8bc4af39f..15312510d68 100644
|
||||
--- a/vendor/rustversion/build/build.rs
|
||||
+++ b/vendor/rustversion/build/build.rs
|
||||
@@ -1,3 +1,9 @@
|
||||
+#![allow(
|
||||
+ clippy::enum_glob_use,
|
||||
+ clippy::must_use_candidate,
|
||||
+ clippy::single_match_else
|
||||
+)]
|
||||
+
|
||||
mod rustc;
|
||||
|
||||
use std::env;
|
||||
diff --git a/vendor/rustversion/build/rustc.rs b/vendor/rustversion/build/rustc.rs
|
||||
index 723e6bdd0e2..dfc6a05166f 100644
|
||||
--- a/vendor/rustversion/build/rustc.rs
|
||||
+++ b/vendor/rustversion/build/rustc.rs
|
||||
@@ -48,23 +48,21 @@ pub fn parse(string: &str) -> Option<Version> {
|
||||
Some(channel) if channel == "dev" => Dev,
|
||||
Some(channel) if channel.starts_with("beta") => Beta,
|
||||
Some(channel) if channel == "nightly" => match words.next() {
|
||||
- Some(hash) => {
|
||||
- if !hash.starts_with('(') {
|
||||
- return None;
|
||||
+ Some(hash) if hash.starts_with('(') => match words.next() {
|
||||
+ None if hash.ends_with(')') => Dev,
|
||||
+ Some(date) if date.ends_with(')') => {
|
||||
+ let mut date = date[..date.len() - 1].split('-');
|
||||
+ let year = date.next()?.parse().ok()?;
|
||||
+ let month = date.next()?.parse().ok()?;
|
||||
+ let day = date.next()?.parse().ok()?;
|
||||
+ match date.next() {
|
||||
+ None => Nightly(Date { year, month, day }),
|
||||
+ Some(_) => return None,
|
||||
+ }
|
||||
}
|
||||
- let date = words.next()?;
|
||||
- if !date.ends_with(')') {
|
||||
- return None;
|
||||
- }
|
||||
- let mut date = date[..date.len() - 1].split('-');
|
||||
- let year = date.next()?.parse().ok()?;
|
||||
- let month = date.next()?.parse().ok()?;
|
||||
- let day = date.next()?.parse().ok()?;
|
||||
- match date.next() {
|
||||
- None => Nightly(Date { year, month, day }),
|
||||
- Some(_) => return None,
|
||||
- }
|
||||
- }
|
||||
+ None | Some(_) => return None,
|
||||
+ },
|
||||
+ Some(_) => return None,
|
||||
None => Dev,
|
||||
},
|
||||
Some(_) => return None,
|
||||
diff --git a/vendor/rustversion/src/lib.rs b/vendor/rustversion/src/lib.rs
|
||||
index 2614105dd1a..172eb89382f 100644
|
||||
--- a/vendor/rustversion/src/lib.rs
|
||||
+++ b/vendor/rustversion/src/lib.rs
|
||||
@@ -145,6 +145,21 @@
|
||||
//!
|
||||
//! <br>
|
||||
|
||||
+#![allow(
|
||||
+ clippy::cast_lossless,
|
||||
+ clippy::cast_possible_truncation,
|
||||
+ clippy::doc_markdown,
|
||||
+ clippy::enum_glob_use,
|
||||
+ clippy::from_iter_instead_of_collect,
|
||||
+ clippy::module_name_repetitions,
|
||||
+ clippy::must_use_candidate,
|
||||
+ clippy::needless_doctest_main,
|
||||
+ clippy::needless_pass_by_value,
|
||||
+ clippy::redundant_else,
|
||||
+ clippy::toplevel_ref_arg,
|
||||
+ clippy::unreadable_literal
|
||||
+)]
|
||||
+
|
||||
extern crate proc_macro;
|
||||
|
||||
mod attr;
|
||||
diff --git a/vendor/rustversion/src/time.rs b/vendor/rustversion/src/time.rs
|
||||
index 1e6dd9066b4..3c21463dd80 100644
|
||||
--- a/vendor/rustversion/src/time.rs
|
||||
+++ b/vendor/rustversion/src/time.rs
|
||||
@@ -1,4 +1,5 @@
|
||||
use crate::date::Date;
|
||||
+use std::env;
|
||||
use std::time::{SystemTime, UNIX_EPOCH};
|
||||
|
||||
// Timestamp of 2016-03-01 00:00:00 in UTC.
|
||||
@@ -13,14 +14,20 @@
|
||||
|
||||
pub fn today() -> Date {
|
||||
let default = Date {
|
||||
- year: 2019,
|
||||
- month: 1,
|
||||
- day: 1,
|
||||
+ year: 2020,
|
||||
+ month: 2,
|
||||
+ day: 25,
|
||||
};
|
||||
try_today().unwrap_or(default)
|
||||
}
|
||||
|
||||
fn try_today() -> Option<Date> {
|
||||
+ if let Some(pkg_name) = env::var_os("CARGO_PKG_NAME") {
|
||||
+ if pkg_name.to_str() == Some("rustversion-tests") {
|
||||
+ return None; // Stable date for ui testing.
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
let now = SystemTime::now();
|
||||
let since_epoch = now.duration_since(UNIX_EPOCH).ok()?;
|
||||
let secs = since_epoch.as_secs();
|
||||
diff --git a/vendor/rustversion/tests/test_parse.rs b/vendor/rustversion/tests/test_parse.rs
|
||||
index 843bd73d3e5..cb39b3179f5 100644
|
||||
--- a/vendor/rustversion/tests/test_parse.rs
|
||||
+++ b/vendor/rustversion/tests/test_parse.rs
|
||||
@@ -1,3 +1,5 @@
|
||||
+#![allow(clippy::enum_glob_use, clippy::must_use_candidate)]
|
||||
+
|
||||
include!("../build/rustc.rs");
|
||||
|
||||
#[test]
|
||||
@@ -76,6 +78,14 @@ fn test_parse() {
|
||||
}),
|
||||
},
|
||||
),
|
||||
+ (
|
||||
+ "rustc 1.52.1-nightly (gentoo)",
|
||||
+ Version {
|
||||
+ minor: 52,
|
||||
+ patch: 1,
|
||||
+ channel: Dev,
|
||||
+ },
|
||||
+ ),
|
||||
];
|
||||
|
||||
for (string, expected) in cases {
|
||||
diff --git a/vendor/rustversion/tests/ui/bad-bound.stderr b/vendor/rustversion/tests/ui/bad-bound.stderr
|
||||
index f8c498c8577..2c56acbdb33 100644
|
||||
--- a/vendor/rustversion/tests/ui/bad-bound.stderr
|
||||
+++ b/vendor/rustversion/tests/ui/bad-bound.stderr
|
||||
@@ -1,10 +1,10 @@
|
||||
-error: expected rustc release number like 1.31, or nightly date like 2020-10-26
|
||||
+error: expected rustc release number like 1.31, or nightly date like 2020-02-25
|
||||
--> $DIR/bad-bound.rs:1:22
|
||||
|
|
||||
1 | #[rustversion::since(stable)]
|
||||
| ^^^^^^
|
||||
|
||||
-error: expected rustc release number like 1.31, or nightly date like 2020-10-26
|
||||
+error: expected rustc release number like 1.31, or nightly date like 2020-02-25
|
||||
--> $DIR/bad-bound.rs:4:26
|
||||
|
|
||||
4 | #[rustversion::any(since(stable))]
|
||||
diff --git a/vendor/rustversion/tests/ui/bad-date.stderr b/vendor/rustversion/tests/ui/bad-date.stderr
|
||||
index 734d7889075..c523ccc02bf 100644
|
||||
--- a/vendor/rustversion/tests/ui/bad-date.stderr
|
||||
+++ b/vendor/rustversion/tests/ui/bad-date.stderr
|
||||
@@ -1,10 +1,10 @@
|
||||
-error: expected nightly date, like 2020-10-26
|
||||
+error: expected nightly date, like 2020-02-25
|
||||
--> $DIR/bad-date.rs:1:24
|
||||
|
|
||||
1 | #[rustversion::nightly(stable)]
|
||||
| ^^^^^^
|
||||
|
||||
-error: expected nightly date, like 2020-10-26
|
||||
+error: expected nightly date, like 2020-02-25
|
||||
--> $DIR/bad-date.rs:4:28
|
||||
|
|
||||
4 | #[rustversion::any(nightly(stable))]
|
||||
--
|
||||
2.32.0
|
||||
|
43
sdk_container/src/third_party/portage-stable/dev-lang/rust/files/1.54.0-parallel-miri.patch
vendored
Normal file
43
sdk_container/src/third_party/portage-stable/dev-lang/rust/files/1.54.0-parallel-miri.patch
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
From a789b49e4c0e7d742cc39713484596293d844537 Mon Sep 17 00:00:00 2001
|
||||
From: hyd-dev <yd-huang@outlook.com>
|
||||
Date: Fri, 30 Jul 2021 21:28:34 +0800
|
||||
Subject: [PATCH] Use `Lrc` instead of `Rc` in `MiriCompilerCalls::config()`
|
||||
|
||||
---
|
||||
src/bin/miri.rs | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/tools/miri/src/bin/miri.rs b/src/tools/miri/src/bin/miri.rs
|
||||
index 5a8f07263..18c393815 100644
|
||||
--- a/src/tools/miri/src/bin/miri.rs
|
||||
+++ b/src/tools/miri/src/bin/miri.rs
|
||||
@@ -1,5 +1,6 @@
|
||||
#![feature(rustc_private, bool_to_option, stmt_expr_attributes)]
|
||||
|
||||
+extern crate rustc_data_structures;
|
||||
extern crate rustc_driver;
|
||||
extern crate rustc_errors;
|
||||
extern crate rustc_hir;
|
||||
@@ -12,12 +13,12 @@ use std::convert::TryFrom;
|
||||
use std::env;
|
||||
use std::num::NonZeroU64;
|
||||
use std::path::PathBuf;
|
||||
-use std::rc::Rc;
|
||||
use std::str::FromStr;
|
||||
|
||||
use hex::FromHexError;
|
||||
use log::debug;
|
||||
|
||||
+use rustc_data_structures::sync::Lrc;
|
||||
use rustc_driver::Compilation;
|
||||
use rustc_errors::emitter::{ColorConfig, HumanReadableErrorType};
|
||||
use rustc_hir::{self as hir, def_id::LOCAL_CRATE, Node};
|
||||
@@ -42,7 +43,7 @@ impl rustc_driver::Callbacks for MiriCompilerCalls {
|
||||
// HACK: rustc will emit "crate ... required to be available in rlib format, but
|
||||
// was not found in this form" errors once we use `tcx.dependency_formats()` if
|
||||
// there's no rlib provided, so setting a dummy path here to workaround those errors.
|
||||
- Rc::make_mut(&mut crate_source).rlib = Some((PathBuf::new(), PathKind::All));
|
||||
+ Lrc::make_mut(&mut crate_source).rlib = Some((PathBuf::new(), PathKind::All));
|
||||
crate_source
|
||||
};
|
||||
});
|
247
sdk_container/src/third_party/portage-stable/dev-lang/rust/files/1.82.0-dwarf-llvm-assertion.patch
vendored
Normal file
247
sdk_container/src/third_party/portage-stable/dev-lang/rust/files/1.82.0-dwarf-llvm-assertion.patch
vendored
Normal file
@ -0,0 +1,247 @@
|
||||
https://bugs.gentoo.org/942013
|
||||
https://bugs.gentoo.org/942884
|
||||
https://github.com/rust-lang/rust/issues/131944
|
||||
https://github.com/rust-lang/rust/pull/132613
|
||||
|
||||
From 1dc106121b62562ead6e7d612fa136dc4b35cd5d Mon Sep 17 00:00:00 2001
|
||||
From: Kyle Huey <khuey@kylehuey.com>
|
||||
Date: Mon, 4 Nov 2024 11:38:14 -0800
|
||||
Subject: [PATCH] Add discriminators to DILocations when multiple functions are
|
||||
inlined into a single point.
|
||||
|
||||
LLVM does not expect to ever see multiple dbg_declares for the same variable at the same
|
||||
location with different values. proc-macros make it possible for arbitrary code,
|
||||
including multiple calls that get inlined, to happen at any given location in the source
|
||||
code. Add discriminators when that happens so these locations are different to LLVM.
|
||||
|
||||
This may interfere with the AddDiscriminators pass in LLVM, which is added by the
|
||||
unstable flag -Zdebug-info-for-profiling.
|
||||
|
||||
Fixes #131944
|
||||
---
|
||||
.../src/debuginfo/create_scope_map.rs | 60 ++++++++++++++++++-
|
||||
compiler/rustc_codegen_llvm/src/llvm/ffi.rs | 4 ++
|
||||
.../rustc_llvm/llvm-wrapper/RustWrapper.cpp | 8 +++
|
||||
.../auxiliary/macro_def.rs | 11 ++++
|
||||
.../mir_inlined_twice_var_locs.rs | 53 ++++++++++++++++
|
||||
5 files changed, 133 insertions(+), 3 deletions(-)
|
||||
create mode 100644 tests/codegen/debuginfo-proc-macro/auxiliary/macro_def.rs
|
||||
create mode 100644 tests/codegen/debuginfo-proc-macro/mir_inlined_twice_var_locs.rs
|
||||
|
||||
diff --git a/compiler/rustc_codegen_llvm/src/debuginfo/create_scope_map.rs b/compiler/rustc_codegen_llvm/src/debuginfo/create_scope_map.rs
|
||||
index ac6c2fb1b83a6..0f1909486ec7e 100644
|
||||
--- a/compiler/rustc_codegen_llvm/src/debuginfo/create_scope_map.rs
|
||||
+++ b/compiler/rustc_codegen_llvm/src/debuginfo/create_scope_map.rs
|
||||
@@ -1,11 +1,15 @@
|
||||
+use std::collections::hash_map::Entry;
|
||||
+
|
||||
use rustc_codegen_ssa::mir::debuginfo::{DebugScope, FunctionDebugContext};
|
||||
use rustc_codegen_ssa::traits::*;
|
||||
+use rustc_data_structures::fx::FxHashMap;
|
||||
use rustc_index::bit_set::BitSet;
|
||||
use rustc_index::Idx;
|
||||
use rustc_middle::mir::{Body, SourceScope};
|
||||
use rustc_middle::ty::layout::FnAbiOf;
|
||||
use rustc_middle::ty::{self, Instance};
|
||||
use rustc_session::config::DebugInfo;
|
||||
+use rustc_span::BytePos;
|
||||
|
||||
use super::metadata::file_metadata;
|
||||
use super::utils::DIB;
|
||||
@@ -37,10 +41,20 @@ pub(crate) fn compute_mir_scopes<'ll, 'tcx>(
|
||||
None
|
||||
};
|
||||
let mut instantiated = BitSet::new_empty(mir.source_scopes.len());
|
||||
+ let mut discriminators = FxHashMap::default();
|
||||
// Instantiate all scopes.
|
||||
for idx in 0..mir.source_scopes.len() {
|
||||
let scope = SourceScope::new(idx);
|
||||
- make_mir_scope(cx, instance, mir, &variables, debug_context, &mut instantiated, scope);
|
||||
+ make_mir_scope(
|
||||
+ cx,
|
||||
+ instance,
|
||||
+ mir,
|
||||
+ &variables,
|
||||
+ debug_context,
|
||||
+ &mut instantiated,
|
||||
+ &mut discriminators,
|
||||
+ scope,
|
||||
+ );
|
||||
}
|
||||
assert!(instantiated.count() == mir.source_scopes.len());
|
||||
}
|
||||
@@ -52,6 +66,7 @@ fn make_mir_scope<'ll, 'tcx>(
|
||||
variables: &Option<BitSet<SourceScope>>,
|
||||
debug_context: &mut FunctionDebugContext<'tcx, &'ll DIScope, &'ll DILocation>,
|
||||
instantiated: &mut BitSet<SourceScope>,
|
||||
+ discriminators: &mut FxHashMap<BytePos, u32>,
|
||||
scope: SourceScope,
|
||||
) {
|
||||
if instantiated.contains(scope) {
|
||||
@@ -60,7 +75,16 @@ fn make_mir_scope<'ll, 'tcx>(
|
||||
|
||||
let scope_data = &mir.source_scopes[scope];
|
||||
let parent_scope = if let Some(parent) = scope_data.parent_scope {
|
||||
- make_mir_scope(cx, instance, mir, variables, debug_context, instantiated, parent);
|
||||
+ make_mir_scope(
|
||||
+ cx,
|
||||
+ instance,
|
||||
+ mir,
|
||||
+ variables,
|
||||
+ debug_context,
|
||||
+ instantiated,
|
||||
+ discriminators,
|
||||
+ parent,
|
||||
+ );
|
||||
debug_context.scopes[parent]
|
||||
} else {
|
||||
// The root is the function itself.
|
||||
@@ -117,7 +141,37 @@ fn make_mir_scope<'ll, 'tcx>(
|
||||
// FIXME(eddyb) this doesn't account for the macro-related
|
||||
// `Span` fixups that `rustc_codegen_ssa::mir::debuginfo` does.
|
||||
let callsite_scope = parent_scope.adjust_dbg_scope_for_span(cx, callsite_span);
|
||||
- cx.dbg_loc(callsite_scope, parent_scope.inlined_at, callsite_span)
|
||||
+ let loc = cx.dbg_loc(callsite_scope, parent_scope.inlined_at, callsite_span);
|
||||
+
|
||||
+ // NB: In order to produce proper debug info for variables (particularly
|
||||
+ // arguments) in multiply-inline functions, LLVM expects to see a single
|
||||
+ // DILocalVariable with multiple different DILocations in the IR. While
|
||||
+ // the source information for each DILocation would be identical, their
|
||||
+ // inlinedAt attributes will be unique to the particular callsite.
|
||||
+ //
|
||||
+ // We generate DILocations here based on the callsite's location in the
|
||||
+ // source code. A single location in the source code usually can't
|
||||
+ // produce multiple distinct calls so this mostly works, until
|
||||
+ // proc-macros get involved. A proc-macro can generate multiple calls
|
||||
+ // at the same span, which breaks the assumption that we're going to
|
||||
+ // produce a unique DILocation for every scope we process here. We
|
||||
+ // have to explicitly add discriminators if we see inlines into the
|
||||
+ // same source code location.
|
||||
+ //
|
||||
+ // Note further that we can't key this hashtable on the span itself,
|
||||
+ // because these spans could have distinct SyntaxContexts. We have
|
||||
+ // to key on exactly what we're giving to LLVM.
|
||||
+ match discriminators.entry(callsite_span.lo()) {
|
||||
+ Entry::Occupied(mut o) => {
|
||||
+ *o.get_mut() += 1;
|
||||
+ unsafe { llvm::LLVMRustDILocationCloneWithBaseDiscriminator(loc, *o.get()) }
|
||||
+ .expect("Failed to encode discriminator in DILocation")
|
||||
+ }
|
||||
+ Entry::Vacant(v) => {
|
||||
+ v.insert(0);
|
||||
+ loc
|
||||
+ }
|
||||
+ }
|
||||
});
|
||||
|
||||
debug_context.scopes[scope] = DebugScope {
|
||||
diff --git a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
|
||||
index 3d2e270a3868e..75a5ec44c2285 100644
|
||||
--- a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
|
||||
+++ b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
|
||||
@@ -2174,6 +2174,10 @@ unsafe extern "C" {
|
||||
Scope: &'a DIScope,
|
||||
InlinedAt: Option<&'a DILocation>,
|
||||
) -> &'a DILocation;
|
||||
+ pub fn LLVMRustDILocationCloneWithBaseDiscriminator<'a>(
|
||||
+ Location: &'a DILocation,
|
||||
+ BD: c_uint,
|
||||
+ ) -> Option<&'a DILocation>;
|
||||
pub fn LLVMRustDIBuilderCreateOpDeref() -> u64;
|
||||
pub fn LLVMRustDIBuilderCreateOpPlusUconst() -> u64;
|
||||
pub fn LLVMRustDIBuilderCreateOpLLVMFragment() -> u64;
|
||||
diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
|
||||
index 9330c83b7f230..cd70c3f266920 100644
|
||||
--- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
|
||||
+++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
|
||||
@@ -1305,6 +1305,14 @@ LLVMRustDIBuilderCreateDebugLocation(unsigned Line, unsigned Column,
|
||||
return wrap(Loc);
|
||||
}
|
||||
|
||||
+extern "C" LLVMMetadataRef
|
||||
+LLVMRustDILocationCloneWithBaseDiscriminator(LLVMMetadataRef Location,
|
||||
+ unsigned BD) {
|
||||
+ DILocation *Loc = unwrapDIPtr<DILocation>(Location);
|
||||
+ auto NewLoc = Loc->cloneWithBaseDiscriminator(BD);
|
||||
+ return wrap(NewLoc.has_value() ? NewLoc.value() : nullptr);
|
||||
+}
|
||||
+
|
||||
extern "C" uint64_t LLVMRustDIBuilderCreateOpDeref() {
|
||||
return dwarf::DW_OP_deref;
|
||||
}
|
||||
diff --git a/tests/codegen/debuginfo-proc-macro/auxiliary/macro_def.rs b/tests/codegen/debuginfo-proc-macro/auxiliary/macro_def.rs
|
||||
new file mode 100644
|
||||
index 0000000000000..159ecfd09743d
|
||||
--- /dev/null
|
||||
+++ b/tests/codegen/debuginfo-proc-macro/auxiliary/macro_def.rs
|
||||
@@ -0,0 +1,11 @@
|
||||
+//@ force-host
|
||||
+//@ no-prefer-dynamic
|
||||
+#![crate_type = "proc-macro"]
|
||||
+
|
||||
+extern crate proc_macro;
|
||||
+use proc_macro::*;
|
||||
+
|
||||
+#[proc_macro]
|
||||
+pub fn square_twice(_item: TokenStream) -> TokenStream {
|
||||
+ "(square(env::vars().count() as i32), square(env::vars().count() as i32))".parse().unwrap()
|
||||
+}
|
||||
diff --git a/tests/codegen/debuginfo-proc-macro/mir_inlined_twice_var_locs.rs b/tests/codegen/debuginfo-proc-macro/mir_inlined_twice_var_locs.rs
|
||||
new file mode 100644
|
||||
index 0000000000000..c3858044c0c9f
|
||||
--- /dev/null
|
||||
+++ b/tests/codegen/debuginfo-proc-macro/mir_inlined_twice_var_locs.rs
|
||||
@@ -0,0 +1,53 @@
|
||||
+//@ min-llvm-version: 19
|
||||
+//@ compile-flags: -Cdebuginfo=2 -Copt-level=0 -Zmir-enable-passes=+Inline
|
||||
+// MSVC is different because of the individual allocas.
|
||||
+//@ ignore-msvc
|
||||
+
|
||||
+//@ aux-build:macro_def.rs
|
||||
+
|
||||
+// Find the variable.
|
||||
+// CHECK-DAG: ![[#var_dbg:]] = !DILocalVariable(name: "n",{{( arg: 1,)?}} scope: ![[#var_scope:]]
|
||||
+
|
||||
+// Find both dbg_declares. These will proceed the variable metadata, of course, so we're looking
|
||||
+// backwards.
|
||||
+// CHECK-DAG: dbg_declare(ptr %n.dbg.spill{{[0-9]}}, ![[#var_dbg]], !DIExpression(), ![[#var_loc2:]])
|
||||
+// CHECK-DAG: dbg_declare(ptr %n.dbg.spill, ![[#var_dbg]], !DIExpression(), ![[#var_loc1:]])
|
||||
+
|
||||
+// Find the first location definition, looking forwards again.
|
||||
+// CHECK: ![[#var_loc1]] = !DILocation
|
||||
+// CHECK-SAME: scope: ![[#var_scope:]], inlinedAt: ![[#var_inlinedAt1:]]
|
||||
+
|
||||
+// Find the first location's inlinedAt
|
||||
+// NB: If we fail here it's *probably* because we failed to produce two
|
||||
+// different locations and ended up reusing an earlier one.
|
||||
+// CHECK: ![[#var_inlinedAt1]] = !DILocation
|
||||
+// CHECK-SAME: scope: ![[var_inlinedAt1_scope:]]
|
||||
+
|
||||
+// Find the second location definition, still looking forwards.
|
||||
+// NB: If we failed to produce two different locations, the test will
|
||||
+// definitely fail by this point (if it hasn't already) because we won't
|
||||
+// be able to find the same line again.
|
||||
+// CHECK: ![[#var_loc2]] = !DILocation
|
||||
+// CHECK-SAME: scope: ![[#var_scope]], inlinedAt: ![[#var_inlinedAt2:]]
|
||||
+
|
||||
+// Find the second location's inlinedAt.
|
||||
+// CHECK: ![[#var_inlinedAt2]] = !DILocation
|
||||
+// CHECK-SAME: scope: ![[#var_inlinedAt2_scope:]]
|
||||
+
|
||||
+// Finally, check that a discriminator was emitted for the second scope.
|
||||
+// FIXMEkhuey ideally we would check that *either* scope has a discriminator
|
||||
+// but I don't know that it's possible to check that with FileCheck.
|
||||
+// CHECK: ![[#var_inlinedAt2_scope]] = !DILexicalBlockFile
|
||||
+// CHECK-SAME: discriminator: [[#]]
|
||||
+extern crate macro_def;
|
||||
+
|
||||
+use std::env;
|
||||
+
|
||||
+fn square(n: i32) -> i32 {
|
||||
+ n * n
|
||||
+}
|
||||
+
|
||||
+fn main() {
|
||||
+ let (z1, z2) = macro_def::square_twice!();
|
||||
+ println!("{z1} == {z2}");
|
||||
+}
|
21
sdk_container/src/third_party/portage-stable/dev-lang/rust/files/1.83.0-cross-compile-libz.patch
vendored
Normal file
21
sdk_container/src/third_party/portage-stable/dev-lang/rust/files/1.83.0-cross-compile-libz.patch
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
https://paste.sr.ht/~kchibisov/682321e0fd4a3ece4a4b7b71591896f5cd3cdb22
|
||||
https://github.com/gentoo/gentoo/pull/35246#discussion_r1484525497
|
||||
|
||||
diff --git a/compiler/rustc_llvm/build.rs b/compiler/rustc_llvm/build.rs
|
||||
index f606fa483ca..8a2e1c40e8b 100644
|
||||
--- a/compiler/rustc_llvm/build.rs
|
||||
+++ b/compiler/rustc_llvm/build.rs
|
||||
@@ -220,12 +220,7 @@
|
||||
let mut cmd = Command::new(&llvm_config);
|
||||
cmd.arg(llvm_link_arg).arg("--libs");
|
||||
|
||||
- // Don't link system libs if cross-compiling unless targetting Windows.
|
||||
- // On Windows system DLLs aren't linked directly, instead import libraries are used.
|
||||
- // These import libraries are independent of the host.
|
||||
- if !is_crossed || target.contains("windows") {
|
||||
- cmd.arg("--system-libs");
|
||||
- }
|
||||
+ cmd.arg("--system-libs");
|
||||
|
||||
// We need libkstat for getHostCPUName on SPARC builds.
|
||||
// See also: https://github.com/llvm/llvm-project/issues/64186
|
242
sdk_container/src/third_party/portage-stable/dev-lang/rust/files/1.83.0-dwarf-llvm-assertion.patch
vendored
Normal file
242
sdk_container/src/third_party/portage-stable/dev-lang/rust/files/1.83.0-dwarf-llvm-assertion.patch
vendored
Normal file
@ -0,0 +1,242 @@
|
||||
From 1dc106121b62562ead6e7d612fa136dc4b35cd5d Mon Sep 17 00:00:00 2001
|
||||
From: Kyle Huey <khuey@kylehuey.com>
|
||||
Date: Mon, 4 Nov 2024 11:38:14 -0800
|
||||
Subject: [PATCH] Add discriminators to DILocations when multiple functions are
|
||||
inlined into a single point.
|
||||
|
||||
LLVM does not expect to ever see multiple dbg_declares for the same variable at the same
|
||||
location with different values. proc-macros make it possible for arbitrary code,
|
||||
including multiple calls that get inlined, to happen at any given location in the source
|
||||
code. Add discriminators when that happens so these locations are different to LLVM.
|
||||
|
||||
This may interfere with the AddDiscriminators pass in LLVM, which is added by the
|
||||
unstable flag -Zdebug-info-for-profiling.
|
||||
|
||||
Fixes #131944
|
||||
---
|
||||
.../src/debuginfo/create_scope_map.rs | 60 ++++++++++++++++++-
|
||||
compiler/rustc_codegen_llvm/src/llvm/ffi.rs | 4 ++
|
||||
.../rustc_llvm/llvm-wrapper/RustWrapper.cpp | 8 +++
|
||||
.../auxiliary/macro_def.rs | 11 ++++
|
||||
.../mir_inlined_twice_var_locs.rs | 53 ++++++++++++++++
|
||||
5 files changed, 133 insertions(+), 3 deletions(-)
|
||||
create mode 100644 tests/codegen/debuginfo-proc-macro/auxiliary/macro_def.rs
|
||||
create mode 100644 tests/codegen/debuginfo-proc-macro/mir_inlined_twice_var_locs.rs
|
||||
|
||||
diff --git a/compiler/rustc_codegen_llvm/src/debuginfo/create_scope_map.rs b/compiler/rustc_codegen_llvm/src/debuginfo/create_scope_map.rs
|
||||
index ac6c2fb1b83a6..0f1909486ec7e 100644
|
||||
--- a/compiler/rustc_codegen_llvm/src/debuginfo/create_scope_map.rs
|
||||
+++ b/compiler/rustc_codegen_llvm/src/debuginfo/create_scope_map.rs
|
||||
@@ -1,11 +1,15 @@
|
||||
+use std::collections::hash_map::Entry;
|
||||
+
|
||||
use rustc_codegen_ssa::mir::debuginfo::{DebugScope, FunctionDebugContext};
|
||||
use rustc_codegen_ssa::traits::*;
|
||||
+use rustc_data_structures::fx::FxHashMap;
|
||||
use rustc_index::Idx;
|
||||
use rustc_index::bit_set::BitSet;
|
||||
use rustc_middle::mir::{Body, SourceScope};
|
||||
use rustc_middle::ty::layout::FnAbiOf;
|
||||
use rustc_middle::ty::{self, Instance};
|
||||
use rustc_session::config::DebugInfo;
|
||||
+use rustc_span::BytePos;
|
||||
|
||||
use super::metadata::file_metadata;
|
||||
use super::utils::DIB;
|
||||
@@ -37,10 +41,20 @@ pub(crate) fn compute_mir_scopes<'ll, 'tcx>(
|
||||
None
|
||||
};
|
||||
let mut instantiated = BitSet::new_empty(mir.source_scopes.len());
|
||||
+ let mut discriminators = FxHashMap::default();
|
||||
// Instantiate all scopes.
|
||||
for idx in 0..mir.source_scopes.len() {
|
||||
let scope = SourceScope::new(idx);
|
||||
- make_mir_scope(cx, instance, mir, &variables, debug_context, &mut instantiated, scope);
|
||||
+ make_mir_scope(
|
||||
+ cx,
|
||||
+ instance,
|
||||
+ mir,
|
||||
+ &variables,
|
||||
+ debug_context,
|
||||
+ &mut instantiated,
|
||||
+ &mut discriminators,
|
||||
+ scope,
|
||||
+ );
|
||||
}
|
||||
assert!(instantiated.count() == mir.source_scopes.len());
|
||||
}
|
||||
@@ -52,6 +66,7 @@ fn make_mir_scope<'ll, 'tcx>(
|
||||
variables: &Option<BitSet<SourceScope>>,
|
||||
debug_context: &mut FunctionDebugContext<'tcx, &'ll DIScope, &'ll DILocation>,
|
||||
instantiated: &mut BitSet<SourceScope>,
|
||||
+ discriminators: &mut FxHashMap<BytePos, u32>,
|
||||
scope: SourceScope,
|
||||
) {
|
||||
if instantiated.contains(scope) {
|
||||
@@ -60,7 +75,16 @@ fn make_mir_scope<'ll, 'tcx>(
|
||||
|
||||
let scope_data = &mir.source_scopes[scope];
|
||||
let parent_scope = if let Some(parent) = scope_data.parent_scope {
|
||||
- make_mir_scope(cx, instance, mir, variables, debug_context, instantiated, parent);
|
||||
+ make_mir_scope(
|
||||
+ cx,
|
||||
+ instance,
|
||||
+ mir,
|
||||
+ variables,
|
||||
+ debug_context,
|
||||
+ instantiated,
|
||||
+ discriminators,
|
||||
+ parent,
|
||||
+ );
|
||||
debug_context.scopes[parent]
|
||||
} else {
|
||||
// The root is the function itself.
|
||||
@@ -117,7 +141,37 @@ fn make_mir_scope<'ll, 'tcx>(
|
||||
// FIXME(eddyb) this doesn't account for the macro-related
|
||||
// `Span` fixups that `rustc_codegen_ssa::mir::debuginfo` does.
|
||||
let callsite_scope = parent_scope.adjust_dbg_scope_for_span(cx, callsite_span);
|
||||
- cx.dbg_loc(callsite_scope, parent_scope.inlined_at, callsite_span)
|
||||
+ let loc = cx.dbg_loc(callsite_scope, parent_scope.inlined_at, callsite_span);
|
||||
+
|
||||
+ // NB: In order to produce proper debug info for variables (particularly
|
||||
+ // arguments) in multiply-inline functions, LLVM expects to see a single
|
||||
+ // DILocalVariable with multiple different DILocations in the IR. While
|
||||
+ // the source information for each DILocation would be identical, their
|
||||
+ // inlinedAt attributes will be unique to the particular callsite.
|
||||
+ //
|
||||
+ // We generate DILocations here based on the callsite's location in the
|
||||
+ // source code. A single location in the source code usually can't
|
||||
+ // produce multiple distinct calls so this mostly works, until
|
||||
+ // proc-macros get involved. A proc-macro can generate multiple calls
|
||||
+ // at the same span, which breaks the assumption that we're going to
|
||||
+ // produce a unique DILocation for every scope we process here. We
|
||||
+ // have to explicitly add discriminators if we see inlines into the
|
||||
+ // same source code location.
|
||||
+ //
|
||||
+ // Note further that we can't key this hashtable on the span itself,
|
||||
+ // because these spans could have distinct SyntaxContexts. We have
|
||||
+ // to key on exactly what we're giving to LLVM.
|
||||
+ match discriminators.entry(callsite_span.lo()) {
|
||||
+ Entry::Occupied(mut o) => {
|
||||
+ *o.get_mut() += 1;
|
||||
+ unsafe { llvm::LLVMRustDILocationCloneWithBaseDiscriminator(loc, *o.get()) }
|
||||
+ .expect("Failed to encode discriminator in DILocation")
|
||||
+ }
|
||||
+ Entry::Vacant(v) => {
|
||||
+ v.insert(0);
|
||||
+ loc
|
||||
+ }
|
||||
+ }
|
||||
});
|
||||
|
||||
debug_context.scopes[scope] = DebugScope {
|
||||
diff --git a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
|
||||
index 3d2e270a3868e..75a5ec44c2285 100644
|
||||
--- a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
|
||||
+++ b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
|
||||
@@ -2174,6 +2174,10 @@ unsafe extern "C" {
|
||||
Scope: &'a DIScope,
|
||||
InlinedAt: Option<&'a DILocation>,
|
||||
) -> &'a DILocation;
|
||||
+ pub fn LLVMRustDILocationCloneWithBaseDiscriminator<'a>(
|
||||
+ Location: &'a DILocation,
|
||||
+ BD: c_uint,
|
||||
+ ) -> Option<&'a DILocation>;
|
||||
pub fn LLVMRustDIBuilderCreateOpDeref() -> u64;
|
||||
pub fn LLVMRustDIBuilderCreateOpPlusUconst() -> u64;
|
||||
pub fn LLVMRustDIBuilderCreateOpLLVMFragment() -> u64;
|
||||
diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
|
||||
index 9330c83b7f230..cd70c3f266920 100644
|
||||
--- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
|
||||
+++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
|
||||
@@ -1305,6 +1305,14 @@ LLVMRustDIBuilderCreateDebugLocation(unsigned Line, unsigned Column,
|
||||
return wrap(Loc);
|
||||
}
|
||||
|
||||
+extern "C" LLVMMetadataRef
|
||||
+LLVMRustDILocationCloneWithBaseDiscriminator(LLVMMetadataRef Location,
|
||||
+ unsigned BD) {
|
||||
+ DILocation *Loc = unwrapDIPtr<DILocation>(Location);
|
||||
+ auto NewLoc = Loc->cloneWithBaseDiscriminator(BD);
|
||||
+ return wrap(NewLoc.has_value() ? NewLoc.value() : nullptr);
|
||||
+}
|
||||
+
|
||||
extern "C" uint64_t LLVMRustDIBuilderCreateOpDeref() {
|
||||
return dwarf::DW_OP_deref;
|
||||
}
|
||||
diff --git a/tests/codegen/debuginfo-proc-macro/auxiliary/macro_def.rs b/tests/codegen/debuginfo-proc-macro/auxiliary/macro_def.rs
|
||||
new file mode 100644
|
||||
index 0000000000000..159ecfd09743d
|
||||
--- /dev/null
|
||||
+++ b/tests/codegen/debuginfo-proc-macro/auxiliary/macro_def.rs
|
||||
@@ -0,0 +1,11 @@
|
||||
+//@ force-host
|
||||
+//@ no-prefer-dynamic
|
||||
+#![crate_type = "proc-macro"]
|
||||
+
|
||||
+extern crate proc_macro;
|
||||
+use proc_macro::*;
|
||||
+
|
||||
+#[proc_macro]
|
||||
+pub fn square_twice(_item: TokenStream) -> TokenStream {
|
||||
+ "(square(env::vars().count() as i32), square(env::vars().count() as i32))".parse().unwrap()
|
||||
+}
|
||||
diff --git a/tests/codegen/debuginfo-proc-macro/mir_inlined_twice_var_locs.rs b/tests/codegen/debuginfo-proc-macro/mir_inlined_twice_var_locs.rs
|
||||
new file mode 100644
|
||||
index 0000000000000..c3858044c0c9f
|
||||
--- /dev/null
|
||||
+++ b/tests/codegen/debuginfo-proc-macro/mir_inlined_twice_var_locs.rs
|
||||
@@ -0,0 +1,53 @@
|
||||
+//@ min-llvm-version: 19
|
||||
+//@ compile-flags: -Cdebuginfo=2 -Copt-level=0 -Zmir-enable-passes=+Inline
|
||||
+// MSVC is different because of the individual allocas.
|
||||
+//@ ignore-msvc
|
||||
+
|
||||
+//@ aux-build:macro_def.rs
|
||||
+
|
||||
+// Find the variable.
|
||||
+// CHECK-DAG: ![[#var_dbg:]] = !DILocalVariable(name: "n",{{( arg: 1,)?}} scope: ![[#var_scope:]]
|
||||
+
|
||||
+// Find both dbg_declares. These will proceed the variable metadata, of course, so we're looking
|
||||
+// backwards.
|
||||
+// CHECK-DAG: dbg_declare(ptr %n.dbg.spill{{[0-9]}}, ![[#var_dbg]], !DIExpression(), ![[#var_loc2:]])
|
||||
+// CHECK-DAG: dbg_declare(ptr %n.dbg.spill, ![[#var_dbg]], !DIExpression(), ![[#var_loc1:]])
|
||||
+
|
||||
+// Find the first location definition, looking forwards again.
|
||||
+// CHECK: ![[#var_loc1]] = !DILocation
|
||||
+// CHECK-SAME: scope: ![[#var_scope:]], inlinedAt: ![[#var_inlinedAt1:]]
|
||||
+
|
||||
+// Find the first location's inlinedAt
|
||||
+// NB: If we fail here it's *probably* because we failed to produce two
|
||||
+// different locations and ended up reusing an earlier one.
|
||||
+// CHECK: ![[#var_inlinedAt1]] = !DILocation
|
||||
+// CHECK-SAME: scope: ![[var_inlinedAt1_scope:]]
|
||||
+
|
||||
+// Find the second location definition, still looking forwards.
|
||||
+// NB: If we failed to produce two different locations, the test will
|
||||
+// definitely fail by this point (if it hasn't already) because we won't
|
||||
+// be able to find the same line again.
|
||||
+// CHECK: ![[#var_loc2]] = !DILocation
|
||||
+// CHECK-SAME: scope: ![[#var_scope]], inlinedAt: ![[#var_inlinedAt2:]]
|
||||
+
|
||||
+// Find the second location's inlinedAt.
|
||||
+// CHECK: ![[#var_inlinedAt2]] = !DILocation
|
||||
+// CHECK-SAME: scope: ![[#var_inlinedAt2_scope:]]
|
||||
+
|
||||
+// Finally, check that a discriminator was emitted for the second scope.
|
||||
+// FIXMEkhuey ideally we would check that *either* scope has a discriminator
|
||||
+// but I don't know that it's possible to check that with FileCheck.
|
||||
+// CHECK: ![[#var_inlinedAt2_scope]] = !DILexicalBlockFile
|
||||
+// CHECK-SAME: discriminator: [[#]]
|
||||
+extern crate macro_def;
|
||||
+
|
||||
+use std::env;
|
||||
+
|
||||
+fn square(n: i32) -> i32 {
|
||||
+ n * n
|
||||
+}
|
||||
+
|
||||
+fn main() {
|
||||
+ let (z1, z2) = macro_def::square_twice!();
|
||||
+ println!("{z1} == {z2}");
|
||||
+}
|
24
sdk_container/src/third_party/portage-stable/dev-lang/rust/files/llvm/12/cstdint-signals-h.patch
vendored
Normal file
24
sdk_container/src/third_party/portage-stable/dev-lang/rust/files/llvm/12/cstdint-signals-h.patch
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
https://gitweb.gentoo.org/fork/llvm-project.git/commit/llvm/include/llvm/Support/Signals.h?h=gentoo-15.0.7-r7&id=ff1681ddb303223973653f7f5f3f3435b48a1983
|
||||
From: Sergei Trofimovich <slyich@gmail.com>
|
||||
Date: Mon, 23 May 2022 08:03:23 +0100
|
||||
Subject: [Support] Add missing <cstdint> header to Signals.h
|
||||
|
||||
Without the change llvm build fails on this week's gcc-13 snapshot as:
|
||||
|
||||
[ 0%] Building CXX object lib/Support/CMakeFiles/LLVMSupport.dir/Signals.cpp.o
|
||||
In file included from llvm/lib/Support/Signals.cpp:14:
|
||||
llvm/include/llvm/Support/Signals.h:119:8: error: variable or field 'CleanupOnSignal' declared void
|
||||
119 | void CleanupOnSignal(uintptr_t Context);
|
||||
| ^~~~~~~~~~~~~~~
|
||||
--- a/src/llvm-project/llvm/include/llvm/Support/Signals.h
|
||||
+++ b/src/llvm-project/llvm/include/llvm/Support/Signals.h
|
||||
@@ -14,6 +14,7 @@
|
||||
#ifndef LLVM_SUPPORT_SIGNALS_H
|
||||
#define LLVM_SUPPORT_SIGNALS_H
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
namespace llvm {
|
||||
--
|
||||
cgit v1.2.3-65-gdbad
|
@ -23,11 +23,9 @@
|
||||
<flag name="miri">Install miri, an interpreter for Rust's mid-level intermediate representation (requires USE=nightly, sometimes is broken)</flag>
|
||||
<flag name="nightly">Enable nightly (UNSTABLE) features (NOTE: it does not install nightly version, just enables features marked as nightly at time of release)</flag>
|
||||
<flag name="parallel-compiler">Build a multi-threaded rustc (experimental, not tested by upstream)</flag>
|
||||
<flag name="profiler">Build the profiler runtime and rust-demangler tool (needed for '-C profile-generate' or '-C instrument-coverage' codegen opts)</flag>
|
||||
<flag name="rustfmt">Install rustfmt, Rust code formatter</flag>
|
||||
<flag name="rust-analyzer">Install rust-analyzer, A Rust compiler front-end for IDEs (language server)</flag>
|
||||
<flag name="rust-src">Install rust-src, needed by developer tools and for build-std (cross)</flag>
|
||||
<flag name="system-bootstrap">Bootstrap using installed rust compiler</flag>
|
||||
<flag name="system-llvm">Use the system LLVM installation</flag>
|
||||
<flag name="wasm">Build support for the wasm32-unknown-unknown target</flag>
|
||||
</use>
|
||||
|
@ -3,99 +3,53 @@
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{10..12} )
|
||||
PYTHON_COMPAT=( python3_{10..13} )
|
||||
|
||||
inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
|
||||
CARGO_BOOTSTRAP="yes"
|
||||
RUST_MAX_VER=${PV}
|
||||
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
# Requried to build against openssl-3.*
|
||||
CRATE_PATHS_OVERRIDE="
|
||||
openssl@0.10.35
|
||||
openssl-sys@0.9.65
|
||||
"
|
||||
|
||||
inherit cargo check-reqs estack flag-o-matic multiprocessing \
|
||||
multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
|
||||
|
||||
if [[ ${PV} = *beta* ]]; then
|
||||
betaver=${PV//*beta}
|
||||
BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
|
||||
MY_P="rustc-beta"
|
||||
SLOT="beta/${PV}"
|
||||
SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
|
||||
else
|
||||
ABI_VER="$(ver_cut 1-2)"
|
||||
SLOT="stable/${ABI_VER}"
|
||||
MY_P="rustc-${PV}"
|
||||
SRC="${MY_P}-src.tar.xz"
|
||||
KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86"
|
||||
fi
|
||||
|
||||
RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
DESCRIPTION="Language empowering everyone to build reliable and efficient software"
|
||||
DESCRIPTION="Systems programming language from Mozilla"
|
||||
HOMEPAGE="https://www.rust-lang.org/"
|
||||
|
||||
SRC_URI="
|
||||
https://static.rust-lang.org/dist/${SRC}
|
||||
verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
|
||||
!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
|
||||
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz
|
||||
${CARGO_CRATE_URIS}
|
||||
verify-sig? (
|
||||
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz.asc
|
||||
)
|
||||
"
|
||||
|
||||
# keep in sync with llvm ebuild of the same version as bundled one.
|
||||
ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai LoongArch Mips MSP430
|
||||
NVPTX PowerPC RISCV Sparc SystemZ VE WebAssembly X86 XCore )
|
||||
S="${WORKDIR}/rustc-${PV}-src"
|
||||
|
||||
ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430
|
||||
NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore )
|
||||
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
|
||||
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
|
||||
|
||||
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4 UoI-NCSA"
|
||||
LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA"
|
||||
SLOT="${PV}"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
|
||||
|
||||
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||
|
||||
# Please keep the LLVM dependency block separate. Since LLVM is slotted,
|
||||
# we need to *really* make sure we're not pulling more than one slot
|
||||
# simultaneously.
|
||||
|
||||
# How to use it:
|
||||
# List all the working slots in LLVM_VALID_SLOTS, newest first.
|
||||
LLVM_VALID_SLOTS=( 16 )
|
||||
LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
|
||||
|
||||
# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
|
||||
# (-) usedep needed because we may build with older llvm without that target
|
||||
LLVM_DEPEND="|| ( "
|
||||
for _s in ${LLVM_VALID_SLOTS[@]}; do
|
||||
LLVM_DEPEND+=" ( "
|
||||
for _x in ${ALL_LLVM_TARGETS[@]}; do
|
||||
LLVM_DEPEND+="
|
||||
${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
|
||||
wasm? ( sys-devel/lld:${_s} )"
|
||||
done
|
||||
LLVM_DEPEND+=" )"
|
||||
done
|
||||
unset _s _x
|
||||
LLVM_DEPEND+=" )
|
||||
<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
|
||||
"
|
||||
|
||||
# to bootstrap we need at least exactly previous version, or same.
|
||||
# most of the time previous versions fail to bootstrap with newer
|
||||
# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
|
||||
# but it fails to bootstrap with 1.48.x
|
||||
# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
|
||||
RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
|
||||
RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
|
||||
BOOTSTRAP_DEPEND="||
|
||||
(
|
||||
=dev-lang/rust-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-"${RUST_DEP_CURR}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_CURR}"
|
||||
)
|
||||
"
|
||||
IUSE="clippy cpu_flags_x86_sse2 debug doc miri nightly parallel-compiler rustfmt test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||
|
||||
BDEPEND="${PYTHON_DEPS}
|
||||
app-eselect/eselect-rust
|
||||
|| (
|
||||
>=sys-devel/gcc-4.7
|
||||
>=sys-devel/clang-3.5
|
||||
>=llvm-core/clang-3.5
|
||||
)
|
||||
system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
|
||||
!system-llvm? (
|
||||
>=dev-build/cmake-3.13.4
|
||||
app-alternatives/ninja
|
||||
)
|
||||
dev-build/ninja
|
||||
test? ( dev-debug/gdb )
|
||||
verify-sig? ( sec-keys/openpgp-keys-rust )
|
||||
"
|
||||
@ -105,32 +59,24 @@ DEPEND="
|
||||
net-misc/curl:=[http2,ssl]
|
||||
sys-libs/zlib:=
|
||||
dev-libs/openssl:0=
|
||||
system-llvm? (
|
||||
${LLVM_DEPEND}
|
||||
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
elibc_musl? ( sys-libs/libunwind:= )
|
||||
)
|
||||
)
|
||||
"
|
||||
|
||||
RDEPEND="${DEPEND}
|
||||
app-eselect/eselect-rust
|
||||
sys-apps/lsb-release
|
||||
!dev-lang/rust:stable
|
||||
!dev-lang/rust-bin:stable
|
||||
"
|
||||
|
||||
REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
|
||||
miri? ( nightly )
|
||||
parallel-compiler? ( nightly )
|
||||
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
|
||||
# we don't use cmake.eclass, but can get a warnings
|
||||
CMAKE_WARN_UNUSED_CLI=no
|
||||
|
||||
QA_FLAGS_IGNORED="
|
||||
@ -146,11 +92,6 @@ QA_SONAME="
|
||||
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
|
||||
"
|
||||
|
||||
QA_PRESTRIPPED="
|
||||
usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
|
||||
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
|
||||
"
|
||||
|
||||
# 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.
|
||||
@ -162,59 +103,30 @@ RESTRICT="test"
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/1.71.1-fix-bootstrap-version-comparison.patch
|
||||
"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
|
||||
"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
|
||||
"${FILESDIR}"/1.67.0-doc-wasm.patch
|
||||
"${FILESDIR}"/1.47.0-ignore-broken-and-non-applicable-tests.patch
|
||||
"${FILESDIR}"/1.49.0-gentoo-musl-target-specs.patch
|
||||
"${FILESDIR}"/1.53.0-rustversion-1.0.5.patch # https://github.com/rust-lang/rust/pull/86425
|
||||
"${FILESDIR}"/1.54.0-parallel-miri.patch # https://github.com/rust-lang/miri/pull/1863
|
||||
"${FILESDIR}/llvm/12/cstdint-signals-h.patch"
|
||||
)
|
||||
|
||||
S="${WORKDIR}/${MY_P}-src"
|
||||
|
||||
toml_usex() {
|
||||
usex "${1}" true false
|
||||
}
|
||||
|
||||
bootstrap_rust_version_check() {
|
||||
# never call from pkg_pretend. eselect-rust may be not installed yet.
|
||||
[[ ${MERGE_TYPE} == binary ]] && return
|
||||
local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
|
||||
local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
|
||||
local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
|
||||
rustc_version=${rustc_version[0]#rust-bin-}
|
||||
rustc_version=${rustc_version#rust-}
|
||||
|
||||
[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
|
||||
|
||||
if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
|
||||
eerror "Rust >=${rustc_wanted} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too old"
|
||||
elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
|
||||
eerror "Rust <${rustc_toonew} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too new"
|
||||
else
|
||||
einfo "Using rust ${rustc_version} to build"
|
||||
fi
|
||||
}
|
||||
|
||||
pre_build_checks() {
|
||||
local M=8192
|
||||
# multiply requirements by 1.3 if we are doing x86-multilib
|
||||
local M=7680
|
||||
# multiply requirements by 1.5 if we are doing x86-multilib
|
||||
if use amd64; then
|
||||
M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
|
||||
M=$(( $(usex abi_x86_32 15 10) * ${M} / 10 ))
|
||||
fi
|
||||
M=$(( $(usex clippy 128 0) + ${M} ))
|
||||
M=$(( $(usex miri 128 0) + ${M} ))
|
||||
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
|
||||
@ -222,26 +134,10 @@ pre_build_checks() {
|
||||
M=$(( 15 * ${M} / 10 ))
|
||||
fi
|
||||
eshopts_pop
|
||||
M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
|
||||
M=$(( $(usex doc 256 0) + ${M} ))
|
||||
CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/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
|
||||
}
|
||||
@ -251,92 +147,48 @@ pkg_setup() {
|
||||
python-any-r1_pkg_setup
|
||||
|
||||
export LIBGIT2_NO_PKG_CONFIG=1 #749381
|
||||
|
||||
use system-bootstrap && bootstrap_rust_version_check
|
||||
|
||||
if use system-llvm; then
|
||||
llvm_pkg_setup
|
||||
|
||||
local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
export LLVM_LINK_SHARED=1
|
||||
export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
|
||||
fi
|
||||
rust_pkg_setup
|
||||
}
|
||||
|
||||
esetup_unwind_hack() {
|
||||
# https://bugs.gentoo.org/870280
|
||||
# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
|
||||
# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
|
||||
# the whole idea is for stage0 to bootstrap with fake libgcc_s.
|
||||
# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
|
||||
local fakelib="${T}/fakelib"
|
||||
mkdir -p "${fakelib}" || die
|
||||
# we need both symlinks, one for cargo runtime, other for linker.
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
|
||||
export LD_LIBRARY_PATH="${fakelib}"
|
||||
export RUSTFLAGS+=" -L${fakelib}"
|
||||
# this is a literally magic variable that gets through cargo cache, without it some
|
||||
# crates ignore RUSTFLAGS.
|
||||
# this variable can not contain leading space.
|
||||
export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
if ! use system-bootstrap; then
|
||||
has_version sys-devel/gcc || esetup_unwind_hack
|
||||
local rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
|
||||
|
||||
"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
|
||||
--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
|
||||
fi
|
||||
|
||||
default
|
||||
src_unpack() {
|
||||
verify-sig_src_unpack
|
||||
cargo_src_unpack
|
||||
# Vendored sources here override crates-io sources (repo) from cargo eclass.
|
||||
sed -i '/\[source.crates-io\]/,+2d' "${ECARGO_HOME}"/config.toml
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
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##*.}))\""
|
||||
rust_targets="${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/wasm_base.rs || die
|
||||
fi
|
||||
rust_targets="${rust_targets},\"wasm32-unknown-unknown\""
|
||||
fi
|
||||
rust_targets="${rust_targets#,}"
|
||||
|
||||
# cargo and rustdoc are mandatory and should always be included
|
||||
local tools='"cargo","rustdoc"'
|
||||
use clippy && tools+=',"clippy"'
|
||||
use miri && tools+=',"miri"'
|
||||
use profiler && tools+=',"rust-demangler"'
|
||||
use rustfmt && tools+=',"rustfmt"'
|
||||
use rust-analyzer && tools+=',"rust-analyzer"'
|
||||
use rust-src && tools+=',"src"'
|
||||
local tools="\"cargo\",\"rls\",\"analysis\",\"src\","
|
||||
if use clippy; then
|
||||
tools="\"clippy\",$tools"
|
||||
fi
|
||||
if use miri; then
|
||||
tools="\"miri\",$tools"
|
||||
fi
|
||||
if use rustfmt; then
|
||||
tools="\"rustfmt\",$tools"
|
||||
fi
|
||||
|
||||
local rust_stage0_root
|
||||
if use system-bootstrap; then
|
||||
local printsysroot
|
||||
printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
|
||||
rust_stage0_root="${printsysroot}"
|
||||
else
|
||||
rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
fi
|
||||
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)"
|
||||
|
||||
local cm_btype="$(usex debug DEBUG RELEASE)"
|
||||
cat <<- _EOF_ > "${S}"/config.toml
|
||||
changelog-seen = 2
|
||||
[llvm]
|
||||
@ -347,34 +199,11 @@ src_configure() {
|
||||
ninja = true
|
||||
targets = "${LLVM_TARGETS// /;}"
|
||||
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"
|
||||
CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
|
||||
CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
|
||||
CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
|
||||
CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
|
||||
CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
|
||||
CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
|
||||
link-shared = false
|
||||
[build]
|
||||
build-stage = 2
|
||||
test-stage = 2
|
||||
doc-stage = 2
|
||||
build = "${rust_target}"
|
||||
host = ["${rust_target}"]
|
||||
target = [${rust_targets}]
|
||||
@ -391,7 +220,7 @@ src_configure() {
|
||||
tools = [${tools}]
|
||||
verbose = 2
|
||||
sanitizers = false
|
||||
profiler = $(toml_usex profiler)
|
||||
profiler = false
|
||||
cargo-native-static = false
|
||||
[install]
|
||||
prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
|
||||
@ -424,42 +253,34 @@ src_configure() {
|
||||
codegen-tests = true
|
||||
dist-src = false
|
||||
remap-debuginfo = true
|
||||
lld = $(usex system-llvm false $(toml_usex wasm))
|
||||
lld = $(toml_usex wasm)
|
||||
# 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
|
||||
lto = "$(usex lto fat off)"
|
||||
[dist]
|
||||
src-tarball = false
|
||||
compression-formats = ["xz"]
|
||||
compression-profile = "balanced"
|
||||
compression-formats = ["gz"]
|
||||
_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.env
|
||||
CFLAGS_${rust_target}=${arch_cflags}
|
||||
_EOF_
|
||||
|
||||
cat <<- _EOF_ >> "${S}"/config.toml
|
||||
[target.${rust_target}]
|
||||
ar = "$(tc-getAR)"
|
||||
cc = "$(tc-getCC)"
|
||||
cxx = "$(tc-getCXX)"
|
||||
cc = "$(tc-getBUILD_CC)"
|
||||
cxx = "$(tc-getBUILD_CXX)"
|
||||
linker = "$(tc-getCC)"
|
||||
ranlib = "$(tc-getRANLIB)"
|
||||
llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
|
||||
ar = "$(tc-getAR)"
|
||||
_EOF_
|
||||
if use system-llvm; then
|
||||
cat <<- _EOF_ >> "${S}"/config.toml
|
||||
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/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
|
||||
# librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
|
||||
if use elibc_musl; then
|
||||
cat <<- _EOF_ >> "${S}"/config.toml
|
||||
crt-static = false
|
||||
@ -469,16 +290,14 @@ src_configure() {
|
||||
if use wasm; then
|
||||
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
|
||||
linker = "rust-lld"
|
||||
_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
|
||||
# TODO: c*flags, clang, 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>
|
||||
@ -517,17 +336,11 @@ src_configure() {
|
||||
|
||||
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"
|
||||
ar = "${cross_toolchain}-ar"
|
||||
_EOF_
|
||||
if use system-llvm; then
|
||||
cat <<- _EOF_ >> "${S}"/config.toml
|
||||
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
_EOF_
|
||||
fi
|
||||
if [[ "${cross_toolchain}" == *-musl* ]]; then
|
||||
cat <<- _EOF_ >> "${S}"/config.toml
|
||||
musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
|
||||
@ -560,12 +373,11 @@ src_configure() {
|
||||
|
||||
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}\""
|
||||
echo RUSTFLAGS="${RUSTFLAGS:-}"
|
||||
echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
|
||||
echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
|
||||
env | grep "CARGO_TARGET_.*_RUSTFLAGS="
|
||||
env | grep "CFLAGS_.*"
|
||||
cat "${S}"/config.env || die
|
||||
echo
|
||||
einfo "config.toml contents:"
|
||||
cat "${S}"/config.toml || die
|
||||
@ -573,7 +385,12 @@ src_configure() {
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
|
||||
# we need \n IFS to have config.env with spaces loaded properly. #734018
|
||||
(
|
||||
IFS=$'\n'
|
||||
env $(cat "${S}"/config.env) RUST_BACKTRACE=1\
|
||||
"${EPYTHON}" ./x.py build -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
|
||||
)
|
||||
}
|
||||
|
||||
src_test() {
|
||||
@ -581,6 +398,7 @@ src_test() {
|
||||
|
||||
# those are basic and codegen tests.
|
||||
local tests=(
|
||||
assembly
|
||||
codegen
|
||||
codegen-units
|
||||
compile-fail
|
||||
@ -590,10 +408,6 @@ src_test() {
|
||||
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.
|
||||
@ -614,8 +428,12 @@ 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 \
|
||||
if ! (
|
||||
IFS=$'\n'
|
||||
env $(cat "${S}"/config.env) 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"
|
||||
@ -629,27 +447,29 @@ src_test() {
|
||||
}
|
||||
|
||||
src_install() {
|
||||
DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
|
||||
(
|
||||
IFS=$'\n'
|
||||
env $(cat "${S}"/config.env) DESTDIR="${D}" \
|
||||
"${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
|
||||
)
|
||||
|
||||
# bug #689562, #689160
|
||||
rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
|
||||
rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
|
||||
newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
|
||||
|
||||
local symlinks=(
|
||||
cargo
|
||||
rustc
|
||||
rustdoc
|
||||
rls
|
||||
rust-gdb
|
||||
rust-gdbgui
|
||||
rust-lldb
|
||||
rustc
|
||||
rustdoc
|
||||
)
|
||||
|
||||
use clippy && symlinks+=( clippy-driver cargo-clippy )
|
||||
use miri && symlinks+=( miri cargo-miri )
|
||||
use profiler && symlinks+=( rust-demangler )
|
||||
use rustfmt && symlinks+=( rustfmt cargo-fmt )
|
||||
use rust-analyzer && symlinks+=( rust-analyzer )
|
||||
|
||||
einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
|
||||
local i
|
||||
@ -676,25 +496,27 @@ src_install() {
|
||||
dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
|
||||
|
||||
newenvd - "50${P}" <<-_EOF_
|
||||
LDPATH="${EPREFIX}/usr/lib/rust/lib"
|
||||
MANPATH="${EPREFIX}/usr/lib/rust/man"
|
||||
LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}"
|
||||
MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}"
|
||||
$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
|
||||
$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
|
||||
_EOF_
|
||||
|
||||
rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
|
||||
rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die
|
||||
rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
|
||||
|
||||
# note: eselect-rust adds EROOT to all paths below
|
||||
cat <<-_EOF_ > "${T}/provider-${P}"
|
||||
/usr/bin/cargo
|
||||
/usr/bin/rustdoc
|
||||
/usr/bin/rls
|
||||
/usr/bin/rust-gdb
|
||||
/usr/bin/rust-gdbgui
|
||||
/usr/bin/rust-lldb
|
||||
/usr/lib/rustlib
|
||||
/usr/bin/rustdoc
|
||||
/usr/lib/rust/lib
|
||||
/usr/lib/rust/libexec
|
||||
/usr/lib/rust/man
|
||||
/usr/lib/rustlib
|
||||
/usr/share/doc/rust
|
||||
_EOF_
|
||||
|
||||
@ -706,30 +528,19 @@ src_install() {
|
||||
echo /usr/bin/miri >> "${T}/provider-${P}"
|
||||
echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
|
||||
fi
|
||||
if use profiler; then
|
||||
echo /usr/bin/rust-demangler >> "${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/bin/rust-analyzer >> "${T}/provider-${P}"
|
||||
fi
|
||||
|
||||
insinto /etc/env.d/rust
|
||||
doins "${T}/provider-${P}"
|
||||
|
||||
if use dist; then
|
||||
insinto "/usr/lib/${PN}/${PV}/dist"
|
||||
doins -r "${S}/build/dist/."
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
if has_version dev-debug/gdb || has_version dev-util/lldb; then
|
||||
elog "Rust installs a helper script for calling GDB and LLDB,"
|
||||
elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
|
||||
fi
|
@ -9,8 +9,8 @@ PYTHON_COMPAT=( python3_{10..12} )
|
||||
RUST_MAX_VER=${PV}
|
||||
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing \
|
||||
multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \
|
||||
optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
|
||||
if [[ ${PV} = *beta* ]]; then
|
||||
betaver=${PV//*beta}
|
||||
@ -46,16 +46,16 @@ IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto mi
|
||||
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 "sys-devel/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
done
|
||||
LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'sys-devel/lld:${LLVM_SLOT}') )" )
|
||||
LLVM_DEPEND+=( " $(llvm_gen_dep 'sys-devel/llvm:${LLVM_SLOT}')" )
|
||||
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
|
||||
>=sys-devel/clang-3.5
|
||||
>=llvm-core/clang-3.5
|
||||
)
|
||||
!system-llvm? (
|
||||
>=dev-build/cmake-3.13.4
|
||||
@ -72,7 +72,7 @@ DEPEND="
|
||||
dev-libs/openssl:0=
|
||||
system-llvm? (
|
||||
${LLVM_DEPEND[*]}
|
||||
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
|
||||
llvm-libunwind? ( llvm-runtimes/libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
@ -169,7 +169,7 @@ pre_build_checks() {
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
}
|
||||
|
||||
# Is LLVM being linked against libc++?
|
||||
@ -646,36 +646,54 @@ pkg_preinst() {
|
||||
|
||||
pkg_postinst() {
|
||||
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)"
|
||||
if has_version -b ${old_rust}; then
|
||||
# Be _extra_ careful here as we're removing files from the live filesystem
|
||||
local f
|
||||
local only_one_file=()
|
||||
einfo "Tidying up libraries files from non-slotted \`${old_rust}\`."
|
||||
for f in "${old_rust_libs[@]}"; do
|
||||
[[ -f ${f} ]] || die "old_rust_libs array contains non-existent file"
|
||||
local base_name="${f%-*}"
|
||||
local ext="${f##*.}"
|
||||
local matching_files=("${base_name}"-*.${ext})
|
||||
if [[ ${#matching_files[@]} -ne 2 ]]; then
|
||||
die "Expected exactly two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
fi
|
||||
einfo "Removing old .rlib file ${f}"
|
||||
case ${#matching_files[@]} in
|
||||
2)
|
||||
einfo "Removing old .${ext}: ${f}"
|
||||
rm "${f}" || die
|
||||
;;
|
||||
1)
|
||||
# Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide,
|
||||
# so we may have already installed over the old file.
|
||||
# We'll warn about this just in case, but it's probably fine.
|
||||
only_one_file+=( "${matching_files[0]}" )
|
||||
;;
|
||||
*)
|
||||
die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [[ ${#only_one_file} -gt 0 ]]; then
|
||||
einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`,"
|
||||
einfo "the following file(s) did not have a duplicate where one was expected:"
|
||||
for f in "${only_one_file[@]}"; do
|
||||
einfo " * ${f}"
|
||||
done
|
||||
einfo ""
|
||||
einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same."
|
||||
einfo "However, if you encounter any issues please report them to the Gentoo Rust Team."
|
||||
fi
|
||||
fi
|
||||
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
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
|
||||
elog "install app-emacs/rust-mode to get emacs support for rust."
|
||||
fi
|
||||
|
||||
if has_version app-editors/gvim || has_version app-editors/vim; then
|
||||
elog "install app-vim/rust-vim to get vim support for rust."
|
||||
fi
|
||||
optfeature "Emacs support" "app-emacs/rust-mode"
|
||||
optfeature "Vim support" "app-vim/rust-vim"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
|
@ -9,8 +9,8 @@ PYTHON_COMPAT=( python3_{10..12} )
|
||||
RUST_MAX_VER=${PV}
|
||||
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing \
|
||||
multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \
|
||||
optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
|
||||
if [[ ${PV} = *beta* ]]; then
|
||||
betaver=${PV//*beta}
|
||||
@ -48,16 +48,16 @@ IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto mi
|
||||
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 "sys-devel/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
done
|
||||
LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'sys-devel/lld:${LLVM_SLOT}') )" )
|
||||
LLVM_DEPEND+=( " $(llvm_gen_dep 'sys-devel/llvm:${LLVM_SLOT}')" )
|
||||
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
|
||||
>=sys-devel/clang-3.5
|
||||
>=llvm-core/clang-3.5
|
||||
)
|
||||
!system-llvm? (
|
||||
>=dev-build/cmake-3.13.4
|
||||
@ -74,7 +74,7 @@ DEPEND="
|
||||
dev-libs/openssl:0=
|
||||
system-llvm? (
|
||||
${LLVM_DEPEND[*]}
|
||||
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
|
||||
llvm-libunwind? ( llvm-runtimes/libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
@ -176,7 +176,7 @@ pre_build_checks() {
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
}
|
||||
|
||||
# Is LLVM being linked against libc++?
|
||||
@ -676,36 +676,54 @@ pkg_preinst() {
|
||||
|
||||
pkg_postinst() {
|
||||
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)"
|
||||
if has_version -b ${old_rust}; then
|
||||
# Be _extra_ careful here as we're removing files from the live filesystem
|
||||
local f
|
||||
local only_one_file=()
|
||||
einfo "Tidying up libraries files from non-slotted \`${old_rust}\`."
|
||||
for f in "${old_rust_libs[@]}"; do
|
||||
[[ -f ${f} ]] || die "old_rust_libs array contains non-existent file"
|
||||
local base_name="${f%-*}"
|
||||
local ext="${f##*.}"
|
||||
local matching_files=("${base_name}"-*.${ext})
|
||||
if [[ ${#matching_files[@]} -ne 2 ]]; then
|
||||
die "Expected exactly two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
fi
|
||||
einfo "Removing old .rlib file ${f}"
|
||||
case ${#matching_files[@]} in
|
||||
2)
|
||||
einfo "Removing old .${ext}: ${f}"
|
||||
rm "${f}" || die
|
||||
;;
|
||||
1)
|
||||
# Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide,
|
||||
# so we may have already installed over the old file.
|
||||
# We'll warn about this just in case, but it's probably fine.
|
||||
only_one_file+=( "${matching_files[0]}" )
|
||||
;;
|
||||
*)
|
||||
die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [[ ${#only_one_file} -gt 0 ]]; then
|
||||
einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`,"
|
||||
einfo "the following file(s) did not have a duplicate where one was expected:"
|
||||
for f in "${only_one_file[@]}"; do
|
||||
einfo " * ${f}"
|
||||
done
|
||||
einfo ""
|
||||
einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same."
|
||||
einfo "However, if you encounter any issues please report them to the Gentoo Rust Team."
|
||||
fi
|
||||
fi
|
||||
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
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
|
||||
elog "install app-emacs/rust-mode to get emacs support for rust."
|
||||
fi
|
||||
|
||||
if has_version app-editors/gvim || has_version app-editors/vim; then
|
||||
elog "install app-vim/rust-vim to get vim support for rust."
|
||||
fi
|
||||
optfeature "Emacs support" "app-emacs/rust-mode"
|
||||
optfeature "Vim support" "app-vim/rust-vim"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
|
@ -1,784 +0,0 @@
|
||||
# Copyright 1999-2024 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{10..12} )
|
||||
|
||||
inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
|
||||
multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
|
||||
|
||||
if [[ ${PV} = *beta* ]]; then
|
||||
betaver=${PV//*beta}
|
||||
BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
|
||||
MY_P="rustc-beta"
|
||||
SLOT="beta/${PV}"
|
||||
SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
|
||||
else
|
||||
ABI_VER="$(ver_cut 1-2)"
|
||||
SLOT="stable/${ABI_VER}"
|
||||
MY_P="rustc-${PV}"
|
||||
SRC="${MY_P}-src.tar.xz"
|
||||
KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86"
|
||||
fi
|
||||
|
||||
RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
DESCRIPTION="Language empowering everyone to build reliable and efficient software"
|
||||
HOMEPAGE="https://www.rust-lang.org/"
|
||||
|
||||
SRC_URI="
|
||||
https://static.rust-lang.org/dist/${SRC}
|
||||
verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
|
||||
!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
|
||||
"
|
||||
|
||||
# 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[@]/%/(-)?}
|
||||
|
||||
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
|
||||
|
||||
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||
|
||||
# Please keep the LLVM dependency block separate. Since LLVM is slotted,
|
||||
# we need to *really* make sure we're not pulling more than one slot
|
||||
# simultaneously.
|
||||
|
||||
# How to use it:
|
||||
# List all the working slots in LLVM_VALID_SLOTS, newest first.
|
||||
LLVM_VALID_SLOTS=( 17 )
|
||||
LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
|
||||
|
||||
# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
|
||||
# (-) usedep needed because we may build with older llvm without that target
|
||||
LLVM_DEPEND="|| ( "
|
||||
for _s in ${LLVM_VALID_SLOTS[@]}; do
|
||||
LLVM_DEPEND+=" ( "
|
||||
for _x in ${ALL_LLVM_TARGETS[@]}; do
|
||||
LLVM_DEPEND+="
|
||||
${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
|
||||
wasm? ( sys-devel/lld:${_s} )"
|
||||
done
|
||||
LLVM_DEPEND+=" )"
|
||||
done
|
||||
unset _s _x
|
||||
LLVM_DEPEND+=" )
|
||||
<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
|
||||
"
|
||||
|
||||
# to bootstrap we need at least exactly previous version, or same.
|
||||
# most of the time previous versions fail to bootstrap with newer
|
||||
# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
|
||||
# but it fails to bootstrap with 1.48.x
|
||||
# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
|
||||
RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
|
||||
RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
|
||||
BOOTSTRAP_DEPEND="||
|
||||
(
|
||||
=dev-lang/rust-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-"${RUST_DEP_CURR}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_CURR}"
|
||||
)
|
||||
"
|
||||
|
||||
BDEPEND="${PYTHON_DEPS}
|
||||
app-eselect/eselect-rust
|
||||
|| (
|
||||
>=sys-devel/gcc-4.7
|
||||
>=sys-devel/clang-3.5
|
||||
)
|
||||
system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
|
||||
!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? ( sys-libs/llvm-libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
elibc_musl? ( sys-libs/libunwind:= )
|
||||
)
|
||||
)
|
||||
"
|
||||
|
||||
RDEPEND="${DEPEND}
|
||||
app-eselect/eselect-rust
|
||||
sys-apps/lsb-release
|
||||
"
|
||||
|
||||
REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
|
||||
miri? ( nightly )
|
||||
parallel-compiler? ( nightly )
|
||||
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}/${PV}/bin/.*
|
||||
usr/lib/${PN}/${PV}/libexec/.*
|
||||
usr/lib/${PN}/${PV}/lib/lib.*.so
|
||||
usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
|
||||
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
|
||||
"
|
||||
|
||||
QA_SONAME="
|
||||
usr/lib/${PN}/${PV}/lib/lib.*.so.*
|
||||
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
|
||||
"
|
||||
|
||||
QA_PRESTRIPPED="
|
||||
usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
|
||||
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
|
||||
"
|
||||
|
||||
# An rmeta file is custom binary format that contains the metadata for the crate.
|
||||
# rmeta files do not support linking, since they do not contain compiled object files.
|
||||
# so we can safely silence the warning for this QA check.
|
||||
QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
|
||||
|
||||
# causes double bootstrap
|
||||
RESTRICT="test"
|
||||
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/1.74.1-cross-compile-libz.patch
|
||||
#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh
|
||||
"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
|
||||
"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
|
||||
"${FILESDIR}"/1.67.0-doc-wasm.patch
|
||||
)
|
||||
|
||||
S="${WORKDIR}/${MY_P}-src"
|
||||
|
||||
clear_vendor_checksums() {
|
||||
sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
|
||||
}
|
||||
|
||||
toml_usex() {
|
||||
usex "${1}" true false
|
||||
}
|
||||
|
||||
bootstrap_rust_version_check() {
|
||||
# never call from pkg_pretend. eselect-rust may be not installed yet.
|
||||
[[ ${MERGE_TYPE} == binary ]] && return
|
||||
local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
|
||||
local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
|
||||
local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
|
||||
rustc_version=${rustc_version[0]#rust-bin-}
|
||||
rustc_version=${rustc_version#rust-}
|
||||
|
||||
[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
|
||||
|
||||
if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
|
||||
eerror "Rust >=${rustc_wanted} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too old"
|
||||
elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
|
||||
eerror "Rust <${rustc_toonew} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too new"
|
||||
else
|
||||
einfo "Using rust ${rustc_version} to build"
|
||||
fi
|
||||
}
|
||||
|
||||
pre_build_checks() {
|
||||
local M=8192
|
||||
# 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} ))
|
||||
M=$(( $(usex miri 128 0) + ${M} ))
|
||||
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 system-bootstrap 0 1024) + ${M} ))
|
||||
M=$(( $(usex doc 256 0) + ${M} ))
|
||||
CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/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
|
||||
export PKG_CONFIG_ALLOW_CROSS=1
|
||||
export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
|
||||
export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
|
||||
export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
|
||||
|
||||
use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
|
||||
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
|
||||
|
||||
use system-bootstrap && bootstrap_rust_version_check
|
||||
|
||||
if use system-llvm; then
|
||||
llvm_pkg_setup
|
||||
|
||||
local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
export LLVM_LINK_SHARED=1
|
||||
export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
|
||||
fi
|
||||
}
|
||||
|
||||
esetup_unwind_hack() {
|
||||
# https://bugs.gentoo.org/870280
|
||||
# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
|
||||
# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
|
||||
# the whole idea is for stage0 to bootstrap with fake libgcc_s.
|
||||
# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
|
||||
local fakelib="${T}/fakelib"
|
||||
mkdir -p "${fakelib}" || die
|
||||
# we need both symlinks, one for cargo runtime, other for linker.
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
|
||||
export LD_LIBRARY_PATH="${fakelib}"
|
||||
export RUSTFLAGS+=" -L${fakelib}"
|
||||
# this is a literally magic variable that gets through cargo cache, without it some
|
||||
# crates ignore RUSTFLAGS.
|
||||
# this variable can not contain leading space.
|
||||
export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# Clear vendor checksums for crates that we patched to bump libc.
|
||||
# NOTE: refresh this on each bump.
|
||||
#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
|
||||
# terminal_size tracing-tree; do
|
||||
# clear_vendor_checksums "${i}"
|
||||
#done
|
||||
|
||||
if ! use system-bootstrap; then
|
||||
has_version sys-devel/gcc || esetup_unwind_hack
|
||||
local rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
|
||||
|
||||
"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
|
||||
--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
|
||||
fi
|
||||
|
||||
default
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
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/wasm_base.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 miri && tools+=',"miri"'
|
||||
use profiler && tools+=',"rust-demangler"'
|
||||
use rustfmt && tools+=',"rustfmt"'
|
||||
use rust-analyzer && tools+=',"rust-analyzer"'
|
||||
use rust-src && tools+=',"src"'
|
||||
|
||||
local rust_stage0_root
|
||||
if use system-bootstrap; then
|
||||
local printsysroot
|
||||
printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
|
||||
rust_stage0_root="${printsysroot}"
|
||||
else
|
||||
rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
fi
|
||||
# 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}")"
|
||||
|
||||
local cm_btype="$(usex debug DEBUG RELEASE)"
|
||||
cat <<- _EOF_ > "${S}"/config.toml
|
||||
changelog-seen = 2
|
||||
[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 = ""
|
||||
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 = $(toml_usex profiler)
|
||||
cargo-native-static = false
|
||||
[install]
|
||||
prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
|
||||
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 = \"$(tc-getCC)\""
|
||||
fi)
|
||||
parallel-compiler = $(toml_usex parallel-compiler)
|
||||
channel = "$(usex nightly nightly stable)"
|
||||
description = "gentoo"
|
||||
rpath = false
|
||||
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))
|
||||
# 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
|
||||
lto = "$(usex lto fat 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 "${LLVM_MAX_SLOT}")/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
|
||||
_EOF_
|
||||
fi
|
||||
done
|
||||
if use wasm; then
|
||||
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 "${LLVM_MAX_SLOT}")/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
|
||||
|
||||
# bug #689562, #689160
|
||||
rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
|
||||
rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
|
||||
newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
|
||||
|
||||
local symlinks=(
|
||||
cargo
|
||||
rustc
|
||||
rustdoc
|
||||
rust-gdb
|
||||
rust-gdbgui
|
||||
rust-lldb
|
||||
)
|
||||
|
||||
use clippy && symlinks+=( clippy-driver cargo-clippy )
|
||||
use miri && symlinks+=( miri cargo-miri )
|
||||
use profiler && symlinks+=( rust-demangler )
|
||||
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}/${PV}/bin/${i}" ]]; then
|
||||
einfo "Installing ${i} symlink"
|
||||
ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
|
||||
else
|
||||
ewarn "${i} symlink requested, but source file not found"
|
||||
ewarn "please report this"
|
||||
fi
|
||||
dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
|
||||
done
|
||||
|
||||
# symlinks to switch components to active rust in eselect
|
||||
dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
|
||||
dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
|
||||
dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
|
||||
dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
|
||||
dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
|
||||
|
||||
newenvd - "50${P}" <<-_EOF_
|
||||
LDPATH="${EPREFIX}/usr/lib/rust/lib"
|
||||
MANPATH="${EPREFIX}/usr/lib/rust/man"
|
||||
_EOF_
|
||||
|
||||
rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
|
||||
rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die
|
||||
rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
|
||||
|
||||
# note: eselect-rust adds EROOT to all paths below
|
||||
cat <<-_EOF_ > "${T}/provider-${P}"
|
||||
/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/libexec
|
||||
/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 use miri; then
|
||||
echo /usr/bin/miri >> "${T}/provider-${P}"
|
||||
echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
|
||||
fi
|
||||
if use profiler; then
|
||||
echo /usr/bin/rust-demangler >> "${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/bin/rust-analyzer >> "${T}/provider-${P}"
|
||||
fi
|
||||
|
||||
insinto /etc/env.d/rust
|
||||
doins "${T}/provider-${P}"
|
||||
|
||||
if use dist; then
|
||||
insinto "/usr/lib/${PN}/${PV}/dist"
|
||||
doins -r "${S}/build/dist/."
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
elog "Rust installs a helper script for calling GDB and LLDB,"
|
||||
elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
|
||||
fi
|
||||
|
||||
if has_version app-editors/emacs; then
|
||||
elog "install app-emacs/rust-mode to get emacs support for rust."
|
||||
fi
|
||||
|
||||
if has_version app-editors/gvim || has_version app-editors/vim; then
|
||||
elog "install app-vim/rust-vim to get vim support for rust."
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
eselect rust cleanup
|
||||
}
|
@ -1,787 +0,0 @@
|
||||
# Copyright 1999-2024 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{10..12} )
|
||||
|
||||
inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
|
||||
multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
|
||||
|
||||
if [[ ${PV} = *beta* ]]; then
|
||||
betaver=${PV//*beta}
|
||||
BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
|
||||
MY_P="rustc-beta"
|
||||
SLOT="beta/${PV}"
|
||||
SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
|
||||
else
|
||||
ABI_VER="$(ver_cut 1-2)"
|
||||
SLOT="stable/${ABI_VER}"
|
||||
MY_P="rustc-${PV}"
|
||||
SRC="${MY_P}-src.tar.xz"
|
||||
KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86"
|
||||
fi
|
||||
|
||||
RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
DESCRIPTION="Language empowering everyone to build reliable and efficient software"
|
||||
HOMEPAGE="https://www.rust-lang.org/"
|
||||
|
||||
SRC_URI="
|
||||
https://static.rust-lang.org/dist/${SRC}
|
||||
verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
|
||||
!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
|
||||
"
|
||||
|
||||
# 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[@]/%/(-)?}
|
||||
|
||||
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
|
||||
|
||||
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||
|
||||
# Please keep the LLVM dependency block separate. Since LLVM is slotted,
|
||||
# we need to *really* make sure we're not pulling more than one slot
|
||||
# simultaneously.
|
||||
|
||||
# How to use it:
|
||||
# List all the working slots in LLVM_VALID_SLOTS, newest first.
|
||||
LLVM_VALID_SLOTS=( 17 )
|
||||
LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
|
||||
|
||||
# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
|
||||
# (-) usedep needed because we may build with older llvm without that target
|
||||
LLVM_DEPEND="|| ( "
|
||||
for _s in ${LLVM_VALID_SLOTS[@]}; do
|
||||
LLVM_DEPEND+=" ( "
|
||||
for _x in ${ALL_LLVM_TARGETS[@]}; do
|
||||
LLVM_DEPEND+="
|
||||
${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
|
||||
wasm? ( sys-devel/lld:${_s} )"
|
||||
done
|
||||
LLVM_DEPEND+=" )"
|
||||
done
|
||||
unset _s _x
|
||||
LLVM_DEPEND+=" )
|
||||
<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
|
||||
"
|
||||
|
||||
# to bootstrap we need at least exactly previous version, or same.
|
||||
# most of the time previous versions fail to bootstrap with newer
|
||||
# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
|
||||
# but it fails to bootstrap with 1.48.x
|
||||
# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
|
||||
RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
|
||||
RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
|
||||
BOOTSTRAP_DEPEND="||
|
||||
(
|
||||
=dev-lang/rust-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-"${RUST_DEP_CURR}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_CURR}"
|
||||
)
|
||||
"
|
||||
|
||||
BDEPEND="${PYTHON_DEPS}
|
||||
app-eselect/eselect-rust
|
||||
|| (
|
||||
>=sys-devel/gcc-4.7
|
||||
>=sys-devel/clang-3.5
|
||||
)
|
||||
system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
|
||||
!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? ( sys-libs/llvm-libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
elibc_musl? ( sys-libs/libunwind:= )
|
||||
)
|
||||
)
|
||||
"
|
||||
|
||||
RDEPEND="${DEPEND}
|
||||
app-eselect/eselect-rust
|
||||
sys-apps/lsb-release
|
||||
"
|
||||
|
||||
REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
|
||||
miri? ( nightly )
|
||||
parallel-compiler? ( nightly )
|
||||
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}/${PV}/bin/.*
|
||||
usr/lib/${PN}/${PV}/libexec/.*
|
||||
usr/lib/${PN}/${PV}/lib/lib.*.so
|
||||
usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
|
||||
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
|
||||
"
|
||||
|
||||
QA_SONAME="
|
||||
usr/lib/${PN}/${PV}/lib/lib.*.so.*
|
||||
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
|
||||
"
|
||||
|
||||
QA_PRESTRIPPED="
|
||||
usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
|
||||
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
|
||||
"
|
||||
|
||||
# An rmeta file is custom binary format that contains the metadata for the crate.
|
||||
# rmeta files do not support linking, since they do not contain compiled object files.
|
||||
# so we can safely silence the warning for this QA check.
|
||||
QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
|
||||
|
||||
# causes double bootstrap
|
||||
RESTRICT="test"
|
||||
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/1.75.0-musl-dynamic-linking.patch
|
||||
"${FILESDIR}"/1.74.1-cross-compile-libz.patch
|
||||
#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh
|
||||
"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
|
||||
"${FILESDIR}"/1.67.0-doc-wasm.patch
|
||||
# This patch shouldn't be necessary for later versions of Rust because its
|
||||
# code was backported from master.
|
||||
"${FILESDIR}"/1.75.0-handle-vendored-sources.patch
|
||||
)
|
||||
|
||||
S="${WORKDIR}/${MY_P}-src"
|
||||
|
||||
clear_vendor_checksums() {
|
||||
sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
|
||||
}
|
||||
|
||||
toml_usex() {
|
||||
usex "${1}" true false
|
||||
}
|
||||
|
||||
bootstrap_rust_version_check() {
|
||||
# never call from pkg_pretend. eselect-rust may be not installed yet.
|
||||
[[ ${MERGE_TYPE} == binary ]] && return
|
||||
local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
|
||||
local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
|
||||
local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
|
||||
rustc_version=${rustc_version[0]#rust-bin-}
|
||||
rustc_version=${rustc_version#rust-}
|
||||
|
||||
[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
|
||||
|
||||
if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
|
||||
eerror "Rust >=${rustc_wanted} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too old"
|
||||
elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
|
||||
eerror "Rust <${rustc_toonew} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too new"
|
||||
else
|
||||
einfo "Using rust ${rustc_version} to build"
|
||||
fi
|
||||
}
|
||||
|
||||
pre_build_checks() {
|
||||
local M=8192
|
||||
# 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} ))
|
||||
M=$(( $(usex miri 128 0) + ${M} ))
|
||||
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 system-bootstrap 0 1024) + ${M} ))
|
||||
M=$(( $(usex doc 256 0) + ${M} ))
|
||||
CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/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
|
||||
export PKG_CONFIG_ALLOW_CROSS=1
|
||||
export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
|
||||
export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
|
||||
export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
|
||||
|
||||
use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
|
||||
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
|
||||
|
||||
use system-bootstrap && bootstrap_rust_version_check
|
||||
|
||||
if use system-llvm; then
|
||||
llvm_pkg_setup
|
||||
|
||||
local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
export LLVM_LINK_SHARED=1
|
||||
export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
|
||||
fi
|
||||
}
|
||||
|
||||
esetup_unwind_hack() {
|
||||
# https://bugs.gentoo.org/870280
|
||||
# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
|
||||
# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
|
||||
# the whole idea is for stage0 to bootstrap with fake libgcc_s.
|
||||
# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
|
||||
local fakelib="${T}/fakelib"
|
||||
mkdir -p "${fakelib}" || die
|
||||
# we need both symlinks, one for cargo runtime, other for linker.
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
|
||||
export LD_LIBRARY_PATH="${fakelib}"
|
||||
export RUSTFLAGS+=" -L${fakelib}"
|
||||
# this is a literally magic variable that gets through cargo cache, without it some
|
||||
# crates ignore RUSTFLAGS.
|
||||
# this variable can not contain leading space.
|
||||
export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# Clear vendor checksums for crates that we patched to bump libc.
|
||||
# NOTE: refresh this on each bump.
|
||||
#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
|
||||
# terminal_size tracing-tree; do
|
||||
# clear_vendor_checksums "${i}"
|
||||
#done
|
||||
|
||||
if ! use system-bootstrap; then
|
||||
has_version sys-devel/gcc || esetup_unwind_hack
|
||||
local rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
|
||||
|
||||
"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
|
||||
--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
|
||||
fi
|
||||
|
||||
default
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
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 miri && tools+=',"miri"'
|
||||
use profiler && tools+=',"rust-demangler"'
|
||||
use rustfmt && tools+=',"rustfmt"'
|
||||
use rust-analyzer && tools+=',"rust-analyzer"'
|
||||
use rust-src && tools+=',"src"'
|
||||
|
||||
local rust_stage0_root
|
||||
if use system-bootstrap; then
|
||||
local printsysroot
|
||||
printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
|
||||
rust_stage0_root="${printsysroot}"
|
||||
else
|
||||
rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
fi
|
||||
# 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}")"
|
||||
|
||||
local cm_btype="$(usex debug DEBUG RELEASE)"
|
||||
cat <<- _EOF_ > "${S}"/config.toml
|
||||
changelog-seen = 2
|
||||
[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 = ""
|
||||
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 = $(toml_usex profiler)
|
||||
cargo-native-static = false
|
||||
[install]
|
||||
prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
|
||||
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 = \"$(tc-getCC)\""
|
||||
fi)
|
||||
parallel-compiler = $(toml_usex parallel-compiler)
|
||||
channel = "$(usex nightly nightly stable)"
|
||||
description = "gentoo"
|
||||
rpath = false
|
||||
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))
|
||||
# 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
|
||||
lto = "$(usex lto fat 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 "${LLVM_MAX_SLOT}")/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
|
||||
_EOF_
|
||||
fi
|
||||
done
|
||||
if use wasm; then
|
||||
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 "${LLVM_MAX_SLOT}")/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
|
||||
|
||||
# bug #689562, #689160
|
||||
rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
|
||||
rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
|
||||
newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
|
||||
|
||||
local symlinks=(
|
||||
cargo
|
||||
rustc
|
||||
rustdoc
|
||||
rust-gdb
|
||||
rust-gdbgui
|
||||
rust-lldb
|
||||
)
|
||||
|
||||
use clippy && symlinks+=( clippy-driver cargo-clippy )
|
||||
use miri && symlinks+=( miri cargo-miri )
|
||||
use profiler && symlinks+=( rust-demangler )
|
||||
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}/${PV}/bin/${i}" ]]; then
|
||||
einfo "Installing ${i} symlink"
|
||||
ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
|
||||
else
|
||||
ewarn "${i} symlink requested, but source file not found"
|
||||
ewarn "please report this"
|
||||
fi
|
||||
dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
|
||||
done
|
||||
|
||||
# symlinks to switch components to active rust in eselect
|
||||
dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
|
||||
dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
|
||||
dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
|
||||
dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
|
||||
dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
|
||||
|
||||
newenvd - "50${P}" <<-_EOF_
|
||||
LDPATH="${EPREFIX}/usr/lib/rust/lib"
|
||||
MANPATH="${EPREFIX}/usr/lib/rust/man"
|
||||
_EOF_
|
||||
|
||||
rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
|
||||
rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die
|
||||
rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
|
||||
|
||||
# note: eselect-rust adds EROOT to all paths below
|
||||
cat <<-_EOF_ > "${T}/provider-${P}"
|
||||
/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/libexec
|
||||
/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 use miri; then
|
||||
echo /usr/bin/miri >> "${T}/provider-${P}"
|
||||
echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
|
||||
fi
|
||||
if use profiler; then
|
||||
echo /usr/bin/rust-demangler >> "${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/bin/rust-analyzer >> "${T}/provider-${P}"
|
||||
fi
|
||||
|
||||
insinto /etc/env.d/rust
|
||||
doins "${T}/provider-${P}"
|
||||
|
||||
if use dist; then
|
||||
insinto "/usr/lib/${PN}/${PV}/dist"
|
||||
doins -r "${S}/build/dist/."
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
elog "Rust installs a helper script for calling GDB and LLDB,"
|
||||
elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
|
||||
fi
|
||||
|
||||
if has_version app-editors/emacs; then
|
||||
elog "install app-emacs/rust-mode to get emacs support for rust."
|
||||
fi
|
||||
|
||||
if has_version app-editors/gvim || has_version app-editors/vim; then
|
||||
elog "install app-vim/rust-vim to get vim support for rust."
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
eselect rust cleanup
|
||||
}
|
@ -9,8 +9,8 @@ PYTHON_COMPAT=( python3_{10..12} )
|
||||
RUST_MAX_VER=${PV}
|
||||
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing \
|
||||
multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \
|
||||
optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
|
||||
if [[ ${PV} = *beta* ]]; then
|
||||
betaver=${PV//*beta}
|
||||
@ -47,16 +47,16 @@ IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto mi
|
||||
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 "sys-devel/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
done
|
||||
LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'sys-devel/lld:${LLVM_SLOT}') )" )
|
||||
LLVM_DEPEND+=( " $(llvm_gen_dep 'sys-devel/llvm:${LLVM_SLOT}')" )
|
||||
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
|
||||
>=sys-devel/clang-3.5
|
||||
>=llvm-core/clang-3.5
|
||||
)
|
||||
!system-llvm? (
|
||||
>=dev-build/cmake-3.13.4
|
||||
@ -73,7 +73,7 @@ DEPEND="
|
||||
dev-libs/openssl:0=
|
||||
system-llvm? (
|
||||
${LLVM_DEPEND[*]}
|
||||
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
|
||||
llvm-libunwind? ( llvm-runtimes/libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
@ -178,7 +178,7 @@ pre_build_checks() {
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
}
|
||||
|
||||
# Is LLVM being linked against libc++?
|
||||
@ -678,36 +678,54 @@ pkg_preinst() {
|
||||
|
||||
pkg_postinst() {
|
||||
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)"
|
||||
if has_version -b ${old_rust}; then
|
||||
# Be _extra_ careful here as we're removing files from the live filesystem
|
||||
local f
|
||||
local only_one_file=()
|
||||
einfo "Tidying up libraries files from non-slotted \`${old_rust}\`."
|
||||
for f in "${old_rust_libs[@]}"; do
|
||||
[[ -f ${f} ]] || die "old_rust_libs array contains non-existent file"
|
||||
local base_name="${f%-*}"
|
||||
local ext="${f##*.}"
|
||||
local matching_files=("${base_name}"-*.${ext})
|
||||
if [[ ${#matching_files[@]} -ne 2 ]]; then
|
||||
die "Expected exactly two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
fi
|
||||
einfo "Removing old .rlib file ${f}"
|
||||
case ${#matching_files[@]} in
|
||||
2)
|
||||
einfo "Removing old .${ext}: ${f}"
|
||||
rm "${f}" || die
|
||||
;;
|
||||
1)
|
||||
# Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide,
|
||||
# so we may have already installed over the old file.
|
||||
# We'll warn about this just in case, but it's probably fine.
|
||||
only_one_file+=( "${matching_files[0]}" )
|
||||
;;
|
||||
*)
|
||||
die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [[ ${#only_one_file} -gt 0 ]]; then
|
||||
einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`,"
|
||||
einfo "the following file(s) did not have a duplicate where one was expected:"
|
||||
for f in "${only_one_file[@]}"; do
|
||||
einfo " * ${f}"
|
||||
done
|
||||
einfo ""
|
||||
einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same."
|
||||
einfo "However, if you encounter any issues please report them to the Gentoo Rust Team."
|
||||
fi
|
||||
fi
|
||||
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
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
|
||||
elog "install app-emacs/rust-mode to get emacs support for rust."
|
||||
fi
|
||||
|
||||
if has_version app-editors/gvim || has_version app-editors/vim; then
|
||||
elog "install app-vim/rust-vim to get vim support for rust."
|
||||
fi
|
||||
optfeature "Emacs support" "app-emacs/rust-mode"
|
||||
optfeature "Vim support" "app-vim/rust-vim"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
|
@ -3,35 +3,34 @@
|
||||
|
||||
EAPI=8
|
||||
|
||||
LLVM_COMPAT=( 17 )
|
||||
PYTHON_COMPAT=( python3_{10..12} )
|
||||
|
||||
inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
|
||||
multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
|
||||
RUST_MAX_VER=${PV}
|
||||
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \
|
||||
optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
|
||||
if [[ ${PV} = *beta* ]]; then
|
||||
betaver=${PV//*beta}
|
||||
BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
|
||||
MY_P="rustc-beta"
|
||||
SLOT="beta/${PV}"
|
||||
SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
|
||||
else
|
||||
ABI_VER="$(ver_cut 1-2)"
|
||||
SLOT="stable/${ABI_VER}"
|
||||
MY_P="rustc-${PV}"
|
||||
SRC="${MY_P}-src.tar.xz"
|
||||
KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv sparc x86"
|
||||
fi
|
||||
|
||||
RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
DESCRIPTION="Systems programming language from Mozilla"
|
||||
HOMEPAGE="https://www.rust-lang.org/"
|
||||
|
||||
SRC_URI="
|
||||
https://static.rust-lang.org/dist/${SRC}
|
||||
verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
|
||||
!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
|
||||
"
|
||||
S="${WORKDIR}/${MY_P}-src"
|
||||
|
||||
# keep in sync with llvm ebuild of the same version as bundled one.
|
||||
ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
|
||||
@ -41,58 +40,24 @@ ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
|
||||
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
|
||||
|
||||
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
|
||||
SLOT="${PV}"
|
||||
|
||||
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||
|
||||
# Please keep the LLVM dependency block separate. Since LLVM is slotted,
|
||||
# we need to *really* make sure we're not pulling more than one slot
|
||||
# simultaneously.
|
||||
|
||||
# How to use it:
|
||||
# List all the working slots in LLVM_VALID_SLOTS, newest first.
|
||||
LLVM_VALID_SLOTS=( 17 )
|
||||
LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
|
||||
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||
|
||||
LLVM_DEPEND=()
|
||||
# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
|
||||
# (-) usedep needed because we may build with older llvm without that target
|
||||
LLVM_DEPEND="|| ( "
|
||||
for _s in ${LLVM_VALID_SLOTS[@]}; do
|
||||
LLVM_DEPEND+=" ( "
|
||||
for _x in ${ALL_LLVM_TARGETS[@]}; do
|
||||
LLVM_DEPEND+="
|
||||
${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
|
||||
wasm? ( sys-devel/lld:${_s} )"
|
||||
done
|
||||
LLVM_DEPEND+=" )"
|
||||
for _x in "${ALL_LLVM_TARGETS[@]}"; do
|
||||
LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
done
|
||||
unset _s _x
|
||||
LLVM_DEPEND+=" )
|
||||
<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
|
||||
"
|
||||
|
||||
# to bootstrap we need at least exactly previous version, or same.
|
||||
# most of the time previous versions fail to bootstrap with newer
|
||||
# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
|
||||
# but it fails to bootstrap with 1.48.x
|
||||
# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
|
||||
RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
|
||||
RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
|
||||
BOOTSTRAP_DEPEND="||
|
||||
(
|
||||
=dev-lang/rust-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-"${RUST_DEP_CURR}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_CURR}"
|
||||
)
|
||||
"
|
||||
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
|
||||
>=sys-devel/clang-3.5
|
||||
>=llvm-core/clang-3.5
|
||||
)
|
||||
system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
|
||||
!system-llvm? (
|
||||
>=dev-build/cmake-3.13.4
|
||||
app-alternatives/ninja
|
||||
@ -107,8 +72,8 @@ DEPEND="
|
||||
sys-libs/zlib:=
|
||||
dev-libs/openssl:0=
|
||||
system-llvm? (
|
||||
${LLVM_DEPEND}
|
||||
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
|
||||
${LLVM_DEPEND[*]}
|
||||
llvm-libunwind? ( llvm-runtimes/libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
@ -119,7 +84,10 @@ DEPEND="
|
||||
|
||||
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[*]} )
|
||||
@ -168,11 +136,10 @@ PATCHES=(
|
||||
#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh
|
||||
"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
|
||||
"${FILESDIR}"/1.67.0-doc-wasm.patch
|
||||
"${FILESDIR}"/1.75.0-handle-vendored-sources.patch
|
||||
"${FILESDIR}"/1.76.0-loong-code-model.patch # remove for >=1.78.0
|
||||
)
|
||||
|
||||
S="${WORKDIR}/${MY_P}-src"
|
||||
|
||||
clear_vendor_checksums() {
|
||||
sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
|
||||
}
|
||||
@ -181,32 +148,8 @@ toml_usex() {
|
||||
usex "${1}" true false
|
||||
}
|
||||
|
||||
bootstrap_rust_version_check() {
|
||||
# never call from pkg_pretend. eselect-rust may be not installed yet.
|
||||
[[ ${MERGE_TYPE} == binary ]] && return
|
||||
local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
|
||||
local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
|
||||
local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
|
||||
rustc_version=${rustc_version[0]#rust-bin-}
|
||||
rustc_version=${rustc_version#rust-}
|
||||
|
||||
[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
|
||||
|
||||
if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
|
||||
eerror "Rust >=${rustc_wanted} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too old"
|
||||
elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
|
||||
eerror "Rust <${rustc_toonew} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too new"
|
||||
else
|
||||
einfo "Using rust ${rustc_version} to build"
|
||||
fi
|
||||
}
|
||||
|
||||
pre_build_checks() {
|
||||
local M=8192
|
||||
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 ))
|
||||
@ -229,13 +172,12 @@ pre_build_checks() {
|
||||
M=$(( 15 * ${M} / 10 ))
|
||||
fi
|
||||
eshopts_pop
|
||||
M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
|
||||
M=$(( $(usex doc 256 0) + ${M} ))
|
||||
CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
}
|
||||
|
||||
# Is LLVM being linked against libc++?
|
||||
@ -259,69 +201,31 @@ pkg_setup() {
|
||||
|
||||
export LIBGIT2_NO_PKG_CONFIG=1 #749381
|
||||
if tc-is-cross-compiler; then
|
||||
export PKG_CONFIG_ALLOW_CROSS=1
|
||||
export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
|
||||
export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
|
||||
export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
|
||||
|
||||
use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
|
||||
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
|
||||
|
||||
use system-bootstrap && bootstrap_rust_version_check
|
||||
rust_pkg_setup
|
||||
|
||||
if use system-llvm; then
|
||||
llvm_pkg_setup
|
||||
llvm-r1_pkg_setup
|
||||
|
||||
local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
local llvm_config="$(get_llvm_prefix)/bin/llvm-config"
|
||||
export LLVM_LINK_SHARED=1
|
||||
export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
|
||||
fi
|
||||
}
|
||||
|
||||
esetup_unwind_hack() {
|
||||
# https://bugs.gentoo.org/870280
|
||||
# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
|
||||
# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
|
||||
# the whole idea is for stage0 to bootstrap with fake libgcc_s.
|
||||
# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
|
||||
local fakelib="${T}/fakelib"
|
||||
mkdir -p "${fakelib}" || die
|
||||
# we need both symlinks, one for cargo runtime, other for linker.
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
|
||||
export LD_LIBRARY_PATH="${fakelib}"
|
||||
export RUSTFLAGS+=" -L${fakelib}"
|
||||
# this is a literally magic variable that gets through cargo cache, without it some
|
||||
# crates ignore RUSTFLAGS.
|
||||
# this variable can not contain leading space.
|
||||
export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# Clear vendor checksums for crates that we patched to bump libc.
|
||||
# NOTE: refresh this on each bump.
|
||||
#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
|
||||
# terminal_size tracing-tree; do
|
||||
# clear_vendor_checksums "${i}"
|
||||
#done
|
||||
|
||||
if ! use system-bootstrap; then
|
||||
has_version sys-devel/gcc || esetup_unwind_hack
|
||||
local rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
|
||||
|
||||
"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
|
||||
--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
|
||||
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
|
||||
|
||||
default
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
|
||||
|
||||
local rust_target="" rust_targets="" arch_cflags
|
||||
@ -341,22 +245,14 @@ src_configure() {
|
||||
rust_targets="${rust_targets#,}"
|
||||
|
||||
# cargo and rustdoc are mandatory and should always be included
|
||||
local tools='"cargo","rustdoc"'
|
||||
local tools='"cargo","rustdoc", "rust-demangler"'
|
||||
use clippy && tools+=',"clippy"'
|
||||
use miri && tools+=',"miri"'
|
||||
use profiler && tools+=',"rust-demangler"'
|
||||
use rustfmt && tools+=',"rustfmt"'
|
||||
use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"'
|
||||
use rust-src && tools+=',"src"'
|
||||
|
||||
local rust_stage0_root
|
||||
if use system-bootstrap; then
|
||||
local printsysroot
|
||||
printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
|
||||
rust_stage0_root="${printsysroot}"
|
||||
else
|
||||
rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
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"
|
||||
|
||||
@ -426,7 +322,7 @@ src_configure() {
|
||||
tools = [${tools}]
|
||||
verbose = 2
|
||||
sanitizers = false
|
||||
profiler = $(toml_usex profiler)
|
||||
profiler = true
|
||||
cargo-native-static = false
|
||||
[install]
|
||||
prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
|
||||
@ -493,7 +389,7 @@ src_configure() {
|
||||
_EOF_
|
||||
if use system-llvm; then
|
||||
cat <<- _EOF_ >> "${S}"/config.toml
|
||||
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
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;
|
||||
@ -513,89 +409,6 @@ src_configure() {
|
||||
_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 "${LLVM_MAX_SLOT}")/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}\""
|
||||
@ -672,7 +485,6 @@ src_install() {
|
||||
# bug #689562, #689160
|
||||
rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
|
||||
rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
|
||||
newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
|
||||
|
||||
local symlinks=(
|
||||
cargo
|
||||
@ -681,11 +493,11 @@ src_install() {
|
||||
rust-gdb
|
||||
rust-gdbgui
|
||||
rust-lldb
|
||||
rust-demangler
|
||||
)
|
||||
|
||||
use clippy && symlinks+=( clippy-driver cargo-clippy )
|
||||
use miri && symlinks+=( miri cargo-miri )
|
||||
use profiler && symlinks+=( rust-demangler )
|
||||
use rustfmt && symlinks+=( rustfmt cargo-fmt )
|
||||
use rust-analyzer && symlinks+=( rust-analyzer )
|
||||
|
||||
@ -708,14 +520,14 @@ src_install() {
|
||||
|
||||
# symlinks to switch components to active rust in eselect
|
||||
dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
|
||||
dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
|
||||
use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
|
||||
dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
|
||||
dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
|
||||
dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
|
||||
|
||||
newenvd - "50${P}" <<-_EOF_
|
||||
LDPATH="${EPREFIX}/usr/lib/rust/lib"
|
||||
MANPATH="${EPREFIX}/usr/lib/rust/man"
|
||||
LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}"
|
||||
MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}"
|
||||
_EOF_
|
||||
|
||||
rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
|
||||
@ -726,12 +538,12 @@ src_install() {
|
||||
cat <<-_EOF_ > "${T}/provider-${P}"
|
||||
/usr/bin/cargo
|
||||
/usr/bin/rustdoc
|
||||
/usr/bin/rust-demangler
|
||||
/usr/bin/rust-gdb
|
||||
/usr/bin/rust-gdbgui
|
||||
/usr/bin/rust-lldb
|
||||
/usr/lib/rustlib
|
||||
/usr/lib/rust/lib
|
||||
/usr/lib/rust/libexec
|
||||
/usr/lib/rust/man
|
||||
/usr/share/doc/rust
|
||||
_EOF_
|
||||
@ -744,17 +556,14 @@ src_install() {
|
||||
echo /usr/bin/miri >> "${T}/provider-${P}"
|
||||
echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
|
||||
fi
|
||||
if use profiler; then
|
||||
echo /usr/bin/rust-demangler >> "${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-${P}"
|
||||
|
||||
@ -764,21 +573,76 @@ src_install() {
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
# 943308 and friends; basically --keep-going can forget to unmerge old rust
|
||||
# but the soft blocker allows us to install conflicting files.
|
||||
# This results in duplicated .{rlib,so} files which confuses rustc and results in
|
||||
# the need for manual intervention.
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
# we need to find all .{rlib,so} files in the old rust lib directory
|
||||
# and store them in an array for later use
|
||||
readarray -d '' old_rust_libs < <(
|
||||
find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \
|
||||
-type f \( -name '*.rlib' -o -name '*.so' \) -print0)
|
||||
export old_rust_libs
|
||||
if [[ ${#old_rust_libs[@]} -gt 0 ]]; then
|
||||
einfo "Found old .rlib and .so files in the old rust lib directory"
|
||||
else
|
||||
die "Found no old .rlib and .so files but old rust version is installed. Bailing!"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
|
||||
local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)"
|
||||
if has_version -b ${old_rust}; then
|
||||
# Be _extra_ careful here as we're removing files from the live filesystem
|
||||
local f
|
||||
local only_one_file=()
|
||||
einfo "Tidying up libraries files from non-slotted \`${old_rust}\`."
|
||||
for f in "${old_rust_libs[@]}"; do
|
||||
[[ -f ${f} ]] || die "old_rust_libs array contains non-existent file"
|
||||
local base_name="${f%-*}"
|
||||
local ext="${f##*.}"
|
||||
local matching_files=("${base_name}"-*.${ext})
|
||||
case ${#matching_files[@]} in
|
||||
2)
|
||||
einfo "Removing old .${ext}: ${f}"
|
||||
rm "${f}" || die
|
||||
;;
|
||||
1)
|
||||
# Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide,
|
||||
# so we may have already installed over the old file.
|
||||
# We'll warn about this just in case, but it's probably fine.
|
||||
only_one_file+=( "${matching_files[0]}" )
|
||||
;;
|
||||
*)
|
||||
die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [[ ${#only_one_file} -gt 0 ]]; then
|
||||
einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`,"
|
||||
einfo "the following file(s) did not have a duplicate where one was expected:"
|
||||
for f in "${only_one_file[@]}"; do
|
||||
einfo " * ${f}"
|
||||
done
|
||||
einfo ""
|
||||
einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same."
|
||||
einfo "However, if you encounter any issues please report them to the Gentoo Rust Team."
|
||||
fi
|
||||
fi
|
||||
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
elog "Rust installs a helper script for calling GDB and LLDB,"
|
||||
elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
|
||||
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
|
||||
elog "install app-emacs/rust-mode to get emacs support for rust."
|
||||
fi
|
||||
|
||||
if has_version app-editors/gvim || has_version app-editors/vim; then
|
||||
elog "install app-vim/rust-vim to get vim support for rust."
|
||||
fi
|
||||
optfeature "Emacs support" "app-emacs/rust-mode"
|
||||
optfeature "Vim support" "app-vim/rust-vim"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
@ -9,8 +9,8 @@ PYTHON_COMPAT=( python3_{10..12} )
|
||||
RUST_MAX_VER=${PV}
|
||||
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing \
|
||||
multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \
|
||||
optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
|
||||
if [[ ${PV} = *beta* ]]; then
|
||||
betaver=${PV//*beta}
|
||||
@ -47,16 +47,16 @@ IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto mir
|
||||
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 "sys-devel/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
done
|
||||
LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'sys-devel/lld:${LLVM_SLOT}') )" )
|
||||
LLVM_DEPEND+=( " $(llvm_gen_dep 'sys-devel/llvm:${LLVM_SLOT}')" )
|
||||
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
|
||||
>=sys-devel/clang-3.5
|
||||
>=llvm-core/clang-3.5
|
||||
)
|
||||
!system-llvm? (
|
||||
>=dev-build/cmake-3.13.4
|
||||
@ -73,7 +73,7 @@ DEPEND="
|
||||
dev-libs/openssl:0=
|
||||
system-llvm? (
|
||||
${LLVM_DEPEND[*]}
|
||||
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
|
||||
llvm-libunwind? ( llvm-runtimes/libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
@ -176,7 +176,7 @@ pre_build_checks() {
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
}
|
||||
|
||||
# Is LLVM being linked against libc++?
|
||||
@ -677,36 +677,54 @@ pkg_preinst() {
|
||||
|
||||
pkg_postinst() {
|
||||
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)"
|
||||
if has_version -b ${old_rust}; then
|
||||
# Be _extra_ careful here as we're removing files from the live filesystem
|
||||
local f
|
||||
local only_one_file=()
|
||||
einfo "Tidying up libraries files from non-slotted \`${old_rust}\`."
|
||||
for f in "${old_rust_libs[@]}"; do
|
||||
[[ -f ${f} ]] || die "old_rust_libs array contains non-existent file"
|
||||
local base_name="${f%-*}"
|
||||
local ext="${f##*.}"
|
||||
local matching_files=("${base_name}"-*.${ext})
|
||||
if [[ ${#matching_files[@]} -ne 2 ]]; then
|
||||
die "Expected exactly two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
fi
|
||||
einfo "Removing old .rlib file ${f}"
|
||||
case ${#matching_files[@]} in
|
||||
2)
|
||||
einfo "Removing old .${ext}: ${f}"
|
||||
rm "${f}" || die
|
||||
;;
|
||||
1)
|
||||
# Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide,
|
||||
# so we may have already installed over the old file.
|
||||
# We'll warn about this just in case, but it's probably fine.
|
||||
only_one_file+=( "${matching_files[0]}" )
|
||||
;;
|
||||
*)
|
||||
die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [[ ${#only_one_file} -gt 0 ]]; then
|
||||
einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`,"
|
||||
einfo "the following file(s) did not have a duplicate where one was expected:"
|
||||
for f in "${only_one_file[@]}"; do
|
||||
einfo " * ${f}"
|
||||
done
|
||||
einfo ""
|
||||
einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same."
|
||||
einfo "However, if you encounter any issues please report them to the Gentoo Rust Team."
|
||||
fi
|
||||
fi
|
||||
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
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
|
||||
elog "install app-emacs/rust-mode to get emacs support for rust."
|
||||
fi
|
||||
|
||||
if has_version app-editors/gvim || has_version app-editors/vim; then
|
||||
elog "install app-vim/rust-vim to get vim support for rust."
|
||||
fi
|
||||
optfeature "Emacs support" "app-emacs/rust-mode"
|
||||
optfeature "Vim support" "app-vim/rust-vim"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
|
@ -3,35 +3,34 @@
|
||||
|
||||
EAPI=8
|
||||
|
||||
LLVM_COMPAT=( 18 )
|
||||
PYTHON_COMPAT=( python3_{10..13} )
|
||||
|
||||
inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
|
||||
multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
|
||||
RUST_MAX_VER=${PV}
|
||||
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \
|
||||
optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
|
||||
if [[ ${PV} = *beta* ]]; then
|
||||
betaver=${PV//*beta}
|
||||
BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
|
||||
MY_P="rustc-beta"
|
||||
SLOT="beta/${PV}"
|
||||
SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
|
||||
else
|
||||
ABI_VER="$(ver_cut 1-2)"
|
||||
SLOT="stable/${ABI_VER}"
|
||||
MY_P="rustc-${PV}"
|
||||
SRC="${MY_P}-src.tar.xz"
|
||||
KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86"
|
||||
fi
|
||||
|
||||
RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
DESCRIPTION="Systems programming language from Mozilla"
|
||||
HOMEPAGE="https://www.rust-lang.org/"
|
||||
|
||||
SRC_URI="
|
||||
https://static.rust-lang.org/dist/${SRC}
|
||||
verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
|
||||
!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
|
||||
"
|
||||
S="${WORKDIR}/${MY_P}-src"
|
||||
|
||||
# keep in sync with llvm ebuild of the same version as bundled one.
|
||||
ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
|
||||
@ -41,58 +40,24 @@ ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
|
||||
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
|
||||
|
||||
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
|
||||
SLOT="${PV}"
|
||||
|
||||
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||
|
||||
# Please keep the LLVM dependency block separate. Since LLVM is slotted,
|
||||
# we need to *really* make sure we're not pulling more than one slot
|
||||
# simultaneously.
|
||||
|
||||
# How to use it:
|
||||
# List all the working slots in LLVM_VALID_SLOTS, newest first.
|
||||
LLVM_VALID_SLOTS=( 18 )
|
||||
LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
|
||||
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||
|
||||
LLVM_DEPEND=()
|
||||
# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
|
||||
# (-) usedep needed because we may build with older llvm without that target
|
||||
LLVM_DEPEND="|| ( "
|
||||
for _s in ${LLVM_VALID_SLOTS[@]}; do
|
||||
LLVM_DEPEND+=" ( "
|
||||
for _x in ${ALL_LLVM_TARGETS[@]}; do
|
||||
LLVM_DEPEND+="
|
||||
${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
|
||||
wasm? ( sys-devel/lld:${_s} )"
|
||||
done
|
||||
LLVM_DEPEND+=" )"
|
||||
for _x in "${ALL_LLVM_TARGETS[@]}"; do
|
||||
LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
done
|
||||
unset _s _x
|
||||
LLVM_DEPEND+=" )
|
||||
<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
|
||||
"
|
||||
|
||||
# to bootstrap we need at least exactly previous version, or same.
|
||||
# most of the time previous versions fail to bootstrap with newer
|
||||
# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
|
||||
# but it fails to bootstrap with 1.48.x
|
||||
# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
|
||||
RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
|
||||
RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
|
||||
BOOTSTRAP_DEPEND="||
|
||||
(
|
||||
=dev-lang/rust-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-"${RUST_DEP_CURR}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_CURR}"
|
||||
)
|
||||
"
|
||||
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
|
||||
>=sys-devel/clang-3.5
|
||||
>=llvm-core/clang-3.5
|
||||
)
|
||||
system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
|
||||
!system-llvm? (
|
||||
>=dev-build/cmake-3.13.4
|
||||
app-alternatives/ninja
|
||||
@ -107,8 +72,8 @@ DEPEND="
|
||||
sys-libs/zlib:=
|
||||
dev-libs/openssl:0=
|
||||
system-llvm? (
|
||||
${LLVM_DEPEND}
|
||||
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
|
||||
${LLVM_DEPEND[*]}
|
||||
llvm-libunwind? ( llvm-runtimes/libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
@ -119,7 +84,10 @@ DEPEND="
|
||||
|
||||
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[*]} )
|
||||
@ -157,8 +125,6 @@ QA_PRESTRIPPED="
|
||||
# so we can safely silence the warning for this QA check.
|
||||
QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
|
||||
|
||||
S="${WORKDIR}/${MY_P}-src"
|
||||
|
||||
# causes double bootstrap
|
||||
RESTRICT="test"
|
||||
|
||||
@ -181,32 +147,8 @@ toml_usex() {
|
||||
usex "${1}" true false
|
||||
}
|
||||
|
||||
bootstrap_rust_version_check() {
|
||||
# never call from pkg_pretend. eselect-rust may be not installed yet.
|
||||
[[ ${MERGE_TYPE} == binary ]] && return
|
||||
local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
|
||||
local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
|
||||
local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
|
||||
rustc_version=${rustc_version[0]#rust-bin-}
|
||||
rustc_version=${rustc_version#rust-}
|
||||
|
||||
[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
|
||||
|
||||
if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
|
||||
eerror "Rust >=${rustc_wanted} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too old"
|
||||
elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
|
||||
eerror "Rust <${rustc_toonew} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too new"
|
||||
else
|
||||
einfo "Using rust ${rustc_version} to build"
|
||||
fi
|
||||
}
|
||||
|
||||
pre_build_checks() {
|
||||
local M=8192
|
||||
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 ))
|
||||
@ -229,13 +171,12 @@ pre_build_checks() {
|
||||
M=$(( 15 * ${M} / 10 ))
|
||||
fi
|
||||
eshopts_pop
|
||||
M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
|
||||
M=$(( $(usex doc 256 0) + ${M} ))
|
||||
CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
}
|
||||
|
||||
# Is LLVM being linked against libc++?
|
||||
@ -259,69 +200,31 @@ pkg_setup() {
|
||||
|
||||
export LIBGIT2_NO_PKG_CONFIG=1 #749381
|
||||
if tc-is-cross-compiler; then
|
||||
export PKG_CONFIG_ALLOW_CROSS=1
|
||||
export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
|
||||
export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
|
||||
export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
|
||||
|
||||
use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
|
||||
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
|
||||
|
||||
use system-bootstrap && bootstrap_rust_version_check
|
||||
rust_pkg_setup
|
||||
|
||||
if use system-llvm; then
|
||||
llvm_pkg_setup
|
||||
llvm-r1_pkg_setup
|
||||
|
||||
local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
local llvm_config="$(get_llvm_prefix)/bin/llvm-config"
|
||||
export LLVM_LINK_SHARED=1
|
||||
export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
|
||||
fi
|
||||
}
|
||||
|
||||
esetup_unwind_hack() {
|
||||
# https://bugs.gentoo.org/870280
|
||||
# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
|
||||
# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
|
||||
# the whole idea is for stage0 to bootstrap with fake libgcc_s.
|
||||
# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
|
||||
local fakelib="${T}/fakelib"
|
||||
mkdir -p "${fakelib}" || die
|
||||
# we need both symlinks, one for cargo runtime, other for linker.
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
|
||||
export LD_LIBRARY_PATH="${fakelib}"
|
||||
export RUSTFLAGS+=" -L${fakelib}"
|
||||
# this is a literally magic variable that gets through cargo cache, without it some
|
||||
# crates ignore RUSTFLAGS.
|
||||
# this variable can not contain leading space.
|
||||
export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# Clear vendor checksums for crates that we patched to bump libc.
|
||||
# NOTE: refresh this on each bump.
|
||||
#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
|
||||
# terminal_size tracing-tree; do
|
||||
# clear_vendor_checksums "${i}"
|
||||
#done
|
||||
|
||||
if ! use system-bootstrap; then
|
||||
has_version sys-devel/gcc || esetup_unwind_hack
|
||||
local rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
|
||||
|
||||
"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
|
||||
--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
|
||||
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
|
||||
|
||||
default
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
|
||||
|
||||
local rust_target="" rust_targets="" arch_cflags
|
||||
@ -341,22 +244,14 @@ src_configure() {
|
||||
rust_targets="${rust_targets#,}"
|
||||
|
||||
# cargo and rustdoc are mandatory and should always be included
|
||||
local tools='"cargo","rustdoc"'
|
||||
local tools='"cargo","rustdoc", "rust-demangler"'
|
||||
use clippy && tools+=',"clippy"'
|
||||
use miri && tools+=',"miri"'
|
||||
use profiler && tools+=',"rust-demangler"'
|
||||
use rustfmt && tools+=',"rustfmt"'
|
||||
use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"'
|
||||
use rust-src && tools+=',"src"'
|
||||
|
||||
local rust_stage0_root
|
||||
if use system-bootstrap; then
|
||||
local printsysroot
|
||||
printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
|
||||
rust_stage0_root="${printsysroot}"
|
||||
else
|
||||
rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
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"
|
||||
|
||||
@ -425,7 +320,7 @@ src_configure() {
|
||||
tools = [${tools}]
|
||||
verbose = 2
|
||||
sanitizers = false
|
||||
profiler = $(toml_usex profiler)
|
||||
profiler = true
|
||||
cargo-native-static = false
|
||||
[install]
|
||||
prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
|
||||
@ -492,7 +387,7 @@ src_configure() {
|
||||
_EOF_
|
||||
if use system-llvm; then
|
||||
cat <<- _EOF_ >> "${S}"/config.toml
|
||||
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
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;
|
||||
@ -565,7 +460,7 @@ src_configure() {
|
||||
_EOF_
|
||||
if use system-llvm; then
|
||||
cat <<- _EOF_ >> "${S}"/config.toml
|
||||
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
|
||||
_EOF_
|
||||
fi
|
||||
if [[ "${cross_toolchain}" == *-musl* ]]; then
|
||||
@ -674,7 +569,6 @@ src_install() {
|
||||
# bug #689562, #689160
|
||||
rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
|
||||
rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
|
||||
newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
|
||||
|
||||
local symlinks=(
|
||||
cargo
|
||||
@ -683,11 +577,11 @@ src_install() {
|
||||
rust-gdb
|
||||
rust-gdbgui
|
||||
rust-lldb
|
||||
rust-demangler
|
||||
)
|
||||
|
||||
use clippy && symlinks+=( clippy-driver cargo-clippy )
|
||||
use miri && symlinks+=( miri cargo-miri )
|
||||
use profiler && symlinks+=( rust-demangler )
|
||||
use rustfmt && symlinks+=( rustfmt cargo-fmt )
|
||||
use rust-analyzer && symlinks+=( rust-analyzer )
|
||||
|
||||
@ -710,14 +604,14 @@ src_install() {
|
||||
|
||||
# symlinks to switch components to active rust in eselect
|
||||
dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
|
||||
dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
|
||||
use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
|
||||
dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
|
||||
dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
|
||||
dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
|
||||
|
||||
newenvd - "50${P}" <<-_EOF_
|
||||
LDPATH="${EPREFIX}/usr/lib/rust/lib"
|
||||
MANPATH="${EPREFIX}/usr/lib/rust/man"
|
||||
LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}"
|
||||
MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}"
|
||||
_EOF_
|
||||
|
||||
rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
|
||||
@ -728,12 +622,12 @@ src_install() {
|
||||
cat <<-_EOF_ > "${T}/provider-${P}"
|
||||
/usr/bin/cargo
|
||||
/usr/bin/rustdoc
|
||||
/usr/bin/rust-demangler
|
||||
/usr/bin/rust-gdb
|
||||
/usr/bin/rust-gdbgui
|
||||
/usr/bin/rust-lldb
|
||||
/usr/lib/rustlib
|
||||
/usr/lib/rust/lib
|
||||
/usr/lib/rust/libexec
|
||||
/usr/lib/rust/man
|
||||
/usr/share/doc/rust
|
||||
_EOF_
|
||||
@ -746,17 +640,14 @@ src_install() {
|
||||
echo /usr/bin/miri >> "${T}/provider-${P}"
|
||||
echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
|
||||
fi
|
||||
if use profiler; then
|
||||
echo /usr/bin/rust-demangler >> "${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-${P}"
|
||||
|
||||
@ -767,21 +658,76 @@ src_install() {
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
# 943308 and friends; basically --keep-going can forget to unmerge old rust
|
||||
# but the soft blocker allows us to install conflicting files.
|
||||
# This results in duplicated .{rlib,so} files which confuses rustc and results in
|
||||
# the need for manual intervention.
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
# we need to find all .{rlib,so} files in the old rust lib directory
|
||||
# and store them in an array for later use
|
||||
readarray -d '' old_rust_libs < <(
|
||||
find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \
|
||||
-type f \( -name '*.rlib' -o -name '*.so' \) -print0)
|
||||
export old_rust_libs
|
||||
if [[ ${#old_rust_libs[@]} -gt 0 ]]; then
|
||||
einfo "Found old .rlib and .so files in the old rust lib directory"
|
||||
else
|
||||
die "Found no old .rlib and .so files but old rust version is installed. Bailing!"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
|
||||
local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)"
|
||||
if has_version -b ${old_rust}; then
|
||||
# Be _extra_ careful here as we're removing files from the live filesystem
|
||||
local f
|
||||
local only_one_file=()
|
||||
einfo "Tidying up libraries files from non-slotted \`${old_rust}\`."
|
||||
for f in "${old_rust_libs[@]}"; do
|
||||
[[ -f ${f} ]] || die "old_rust_libs array contains non-existent file"
|
||||
local base_name="${f%-*}"
|
||||
local ext="${f##*.}"
|
||||
local matching_files=("${base_name}"-*.${ext})
|
||||
case ${#matching_files[@]} in
|
||||
2)
|
||||
einfo "Removing old .${ext}: ${f}"
|
||||
rm "${f}" || die
|
||||
;;
|
||||
1)
|
||||
# Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide,
|
||||
# so we may have already installed over the old file.
|
||||
# We'll warn about this just in case, but it's probably fine.
|
||||
only_one_file+=( "${matching_files[0]}" )
|
||||
;;
|
||||
*)
|
||||
die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [[ ${#only_one_file} -gt 0 ]]; then
|
||||
einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`,"
|
||||
einfo "the following file(s) did not have a duplicate where one was expected:"
|
||||
for f in "${only_one_file[@]}"; do
|
||||
einfo " * ${f}"
|
||||
done
|
||||
einfo ""
|
||||
einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same."
|
||||
einfo "However, if you encounter any issues please report them to the Gentoo Rust Team."
|
||||
fi
|
||||
fi
|
||||
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
elog "Rust installs a helper script for calling GDB and LLDB,"
|
||||
elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
|
||||
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
|
||||
elog "install app-emacs/rust-mode to get emacs support for rust."
|
||||
fi
|
||||
|
||||
if has_version app-editors/gvim || has_version app-editors/vim; then
|
||||
elog "install app-vim/rust-vim to get vim support for rust."
|
||||
fi
|
||||
optfeature "Emacs support" "app-emacs/rust-mode"
|
||||
optfeature "Vim support" "app-vim/rust-vim"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
@ -9,8 +9,8 @@ PYTHON_COMPAT=( python3_{10..13} )
|
||||
RUST_MAX_VER=${PV}
|
||||
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing \
|
||||
multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \
|
||||
optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
|
||||
if [[ ${PV} = *beta* ]]; then
|
||||
betaver=${PV//*beta}
|
||||
@ -47,16 +47,16 @@ IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto mir
|
||||
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 "sys-devel/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
done
|
||||
LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'sys-devel/lld:${LLVM_SLOT}') )" )
|
||||
LLVM_DEPEND+=( " $(llvm_gen_dep 'sys-devel/llvm:${LLVM_SLOT}')" )
|
||||
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
|
||||
>=sys-devel/clang-3.5
|
||||
>=llvm-core/clang-3.5
|
||||
)
|
||||
!system-llvm? (
|
||||
>=dev-build/cmake-3.13.4
|
||||
@ -73,7 +73,7 @@ DEPEND="
|
||||
dev-libs/openssl:0=
|
||||
system-llvm? (
|
||||
${LLVM_DEPEND[*]}
|
||||
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
|
||||
llvm-libunwind? ( llvm-runtimes/libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
@ -176,7 +176,7 @@ pre_build_checks() {
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
}
|
||||
|
||||
# Is LLVM being linked against libc++?
|
||||
@ -680,36 +680,54 @@ pkg_preinst() {
|
||||
|
||||
pkg_postinst() {
|
||||
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)"
|
||||
if has_version -b ${old_rust}; then
|
||||
# Be _extra_ careful here as we're removing files from the live filesystem
|
||||
local f
|
||||
local only_one_file=()
|
||||
einfo "Tidying up libraries files from non-slotted \`${old_rust}\`."
|
||||
for f in "${old_rust_libs[@]}"; do
|
||||
[[ -f ${f} ]] || die "old_rust_libs array contains non-existent file"
|
||||
local base_name="${f%-*}"
|
||||
local ext="${f##*.}"
|
||||
local matching_files=("${base_name}"-*.${ext})
|
||||
if [[ ${#matching_files[@]} -ne 2 ]]; then
|
||||
die "Expected exactly two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
fi
|
||||
einfo "Removing old .rlib file ${f}"
|
||||
case ${#matching_files[@]} in
|
||||
2)
|
||||
einfo "Removing old .${ext}: ${f}"
|
||||
rm "${f}" || die
|
||||
;;
|
||||
1)
|
||||
# Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide,
|
||||
# so we may have already installed over the old file.
|
||||
# We'll warn about this just in case, but it's probably fine.
|
||||
only_one_file+=( "${matching_files[0]}" )
|
||||
;;
|
||||
*)
|
||||
die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [[ ${#only_one_file} -gt 0 ]]; then
|
||||
einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`,"
|
||||
einfo "the following file(s) did not have a duplicate where one was expected:"
|
||||
for f in "${only_one_file[@]}"; do
|
||||
einfo " * ${f}"
|
||||
done
|
||||
einfo ""
|
||||
einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same."
|
||||
einfo "However, if you encounter any issues please report them to the Gentoo Rust Team."
|
||||
fi
|
||||
fi
|
||||
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
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
|
||||
elog "install app-emacs/rust-mode to get emacs support for rust."
|
||||
fi
|
||||
|
||||
if has_version app-editors/gvim || has_version app-editors/vim; then
|
||||
elog "install app-vim/rust-vim to get vim support for rust."
|
||||
fi
|
||||
optfeature "Emacs support" "app-emacs/rust-mode"
|
||||
optfeature "Vim support" "app-vim/rust-vim"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
|
@ -9,8 +9,8 @@ PYTHON_COMPAT=( python3_{10..13} )
|
||||
RUST_MAX_VER=${PV}
|
||||
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing \
|
||||
multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \
|
||||
optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
|
||||
if [[ ${PV} = *beta* ]]; then
|
||||
betaver=${PV//*beta}
|
||||
@ -47,16 +47,16 @@ IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto mir
|
||||
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 "sys-devel/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
done
|
||||
LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'sys-devel/lld:${LLVM_SLOT}') )" )
|
||||
LLVM_DEPEND+=( " $(llvm_gen_dep 'sys-devel/llvm:${LLVM_SLOT}')" )
|
||||
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
|
||||
>=sys-devel/clang-3.5
|
||||
>=llvm-core/clang-3.5
|
||||
)
|
||||
!system-llvm? (
|
||||
>=dev-build/cmake-3.13.4
|
||||
@ -73,7 +73,7 @@ DEPEND="
|
||||
dev-libs/openssl:0=
|
||||
system-llvm? (
|
||||
${LLVM_DEPEND[*]}
|
||||
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
|
||||
llvm-libunwind? ( llvm-runtimes/libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
@ -175,7 +175,7 @@ pre_build_checks() {
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
}
|
||||
|
||||
# Is LLVM being linked against libc++?
|
||||
@ -677,36 +677,54 @@ pkg_preinst() {
|
||||
|
||||
pkg_postinst() {
|
||||
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)"
|
||||
if has_version -b ${old_rust}; then
|
||||
# Be _extra_ careful here as we're removing files from the live filesystem
|
||||
local f
|
||||
local only_one_file=()
|
||||
einfo "Tidying up libraries files from non-slotted \`${old_rust}\`."
|
||||
for f in "${old_rust_libs[@]}"; do
|
||||
[[ -f ${f} ]] || die "old_rust_libs array contains non-existent file"
|
||||
local base_name="${f%-*}"
|
||||
local ext="${f##*.}"
|
||||
local matching_files=("${base_name}"-*.${ext})
|
||||
if [[ ${#matching_files[@]} -ne 2 ]]; then
|
||||
die "Expected exactly two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
fi
|
||||
einfo "Removing old .rlib file ${f}"
|
||||
case ${#matching_files[@]} in
|
||||
2)
|
||||
einfo "Removing old .${ext}: ${f}"
|
||||
rm "${f}" || die
|
||||
;;
|
||||
1)
|
||||
# Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide,
|
||||
# so we may have already installed over the old file.
|
||||
# We'll warn about this just in case, but it's probably fine.
|
||||
only_one_file+=( "${matching_files[0]}" )
|
||||
;;
|
||||
*)
|
||||
die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [[ ${#only_one_file} -gt 0 ]]; then
|
||||
einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`,"
|
||||
einfo "the following file(s) did not have a duplicate where one was expected:"
|
||||
for f in "${only_one_file[@]}"; do
|
||||
einfo " * ${f}"
|
||||
done
|
||||
einfo ""
|
||||
einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same."
|
||||
einfo "However, if you encounter any issues please report them to the Gentoo Rust Team."
|
||||
fi
|
||||
fi
|
||||
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
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
|
||||
elog "install app-emacs/rust-mode to get emacs support for rust."
|
||||
fi
|
||||
|
||||
if has_version app-editors/gvim || has_version app-editors/vim; then
|
||||
elog "install app-vim/rust-vim to get vim support for rust."
|
||||
fi
|
||||
optfeature "Emacs support" "app-emacs/rust-mode"
|
||||
optfeature "Vim support" "app-vim/rust-vim"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
|
@ -48,16 +48,16 @@ IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto mir
|
||||
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 "sys-devel/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
done
|
||||
LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'sys-devel/lld:${LLVM_SLOT}') )" )
|
||||
LLVM_DEPEND+=( " $(llvm_gen_dep 'sys-devel/llvm:${LLVM_SLOT}')" )
|
||||
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
|
||||
>=sys-devel/clang-3.5
|
||||
>=llvm-core/clang-3.5
|
||||
)
|
||||
!system-llvm? (
|
||||
>=dev-build/cmake-3.13.4
|
||||
@ -74,7 +74,7 @@ DEPEND="
|
||||
dev-libs/openssl:0=
|
||||
system-llvm? (
|
||||
${LLVM_DEPEND[*]}
|
||||
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
|
||||
llvm-libunwind? ( llvm-runtimes/libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
@ -179,7 +179,7 @@ pre_build_checks() {
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
}
|
||||
|
||||
# Is LLVM being linked against libc++?
|
||||
@ -681,36 +681,54 @@ pkg_preinst() {
|
||||
|
||||
pkg_postinst() {
|
||||
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)"
|
||||
if has_version -b ${old_rust}; then
|
||||
# Be _extra_ careful here as we're removing files from the live filesystem
|
||||
local f
|
||||
local only_one_file=()
|
||||
einfo "Tidying up libraries files from non-slotted \`${old_rust}\`."
|
||||
for f in "${old_rust_libs[@]}"; do
|
||||
[[ -f ${f} ]] || die "old_rust_libs array contains non-existent file"
|
||||
local base_name="${f%-*}"
|
||||
local ext="${f##*.}"
|
||||
local matching_files=("${base_name}"-*.${ext})
|
||||
if [[ ${#matching_files[@]} -ne 2 ]]; then
|
||||
die "Expected exactly two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
fi
|
||||
einfo "Removing old .rlib file ${f}"
|
||||
case ${#matching_files[@]} in
|
||||
2)
|
||||
einfo "Removing old .${ext}: ${f}"
|
||||
rm "${f}" || die
|
||||
;;
|
||||
1)
|
||||
# Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide,
|
||||
# so we may have already installed over the old file.
|
||||
# We'll warn about this just in case, but it's probably fine.
|
||||
only_one_file+=( "${matching_files[0]}" )
|
||||
;;
|
||||
*)
|
||||
die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [[ ${#only_one_file} -gt 0 ]]; then
|
||||
einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`,"
|
||||
einfo "the following file(s) did not have a duplicate where one was expected:"
|
||||
for f in "${only_one_file[@]}"; do
|
||||
einfo " * ${f}"
|
||||
done
|
||||
einfo ""
|
||||
einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same."
|
||||
einfo "However, if you encounter any issues please report them to the Gentoo Rust Team."
|
||||
fi
|
||||
fi
|
||||
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
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
|
||||
optfeature "Emacs support" "app-emacs/rust-mode"
|
||||
optfeature "Vim support" "app-vim/rust-vim"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
|
@ -20,7 +20,7 @@ if [[ ${PV} = *beta* ]]; then
|
||||
else
|
||||
MY_P="rustc-${PV}"
|
||||
SRC="${MY_P}-src.tar.xz"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
|
||||
KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86"
|
||||
fi
|
||||
|
||||
DESCRIPTION="Systems programming language from Mozilla"
|
||||
@ -47,16 +47,16 @@ IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto mir
|
||||
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 "sys-devel/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
done
|
||||
LLVM_DEPEND+=( " wasm? ( $(llvm_gen_dep 'sys-devel/lld:${LLVM_SLOT}') )" )
|
||||
LLVM_DEPEND+=( " $(llvm_gen_dep 'sys-devel/llvm:${LLVM_SLOT}')" )
|
||||
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
|
||||
>=sys-devel/clang-3.5
|
||||
>=llvm-core/clang-3.5
|
||||
)
|
||||
!system-llvm? (
|
||||
>=dev-build/cmake-3.13.4
|
||||
@ -73,7 +73,7 @@ DEPEND="
|
||||
dev-libs/openssl:0=
|
||||
system-llvm? (
|
||||
${LLVM_DEPEND[*]}
|
||||
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
|
||||
llvm-libunwind? ( llvm-runtimes/libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
@ -174,7 +174,7 @@ pre_build_checks() {
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
}
|
||||
|
||||
# Is LLVM being linked against libc++?
|
||||
@ -691,36 +691,54 @@ pkg_preinst() {
|
||||
|
||||
pkg_postinst() {
|
||||
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)"
|
||||
if has_version -b ${old_rust}; then
|
||||
# Be _extra_ careful here as we're removing files from the live filesystem
|
||||
local f
|
||||
local only_one_file=()
|
||||
einfo "Tidying up libraries files from non-slotted \`${old_rust}\`."
|
||||
for f in "${old_rust_libs[@]}"; do
|
||||
[[ -f ${f} ]] || die "old_rust_libs array contains non-existent file"
|
||||
local base_name="${f%-*}"
|
||||
local ext="${f##*.}"
|
||||
local matching_files=("${base_name}"-*.${ext})
|
||||
if [[ ${#matching_files[@]} -ne 2 ]]; then
|
||||
die "Expected exactly two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
fi
|
||||
einfo "Removing old .rlib file ${f}"
|
||||
case ${#matching_files[@]} in
|
||||
2)
|
||||
einfo "Removing old .${ext}: ${f}"
|
||||
rm "${f}" || die
|
||||
;;
|
||||
1)
|
||||
# Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide,
|
||||
# so we may have already installed over the old file.
|
||||
# We'll warn about this just in case, but it's probably fine.
|
||||
only_one_file+=( "${matching_files[0]}" )
|
||||
;;
|
||||
*)
|
||||
die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [[ ${#only_one_file} -gt 0 ]]; then
|
||||
einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`,"
|
||||
einfo "the following file(s) did not have a duplicate where one was expected:"
|
||||
for f in "${only_one_file[@]}"; do
|
||||
einfo " * ${f}"
|
||||
done
|
||||
einfo ""
|
||||
einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same."
|
||||
einfo "However, if you encounter any issues please report them to the Gentoo Rust Team."
|
||||
fi
|
||||
fi
|
||||
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
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
|
||||
optfeature "Emacs support" "app-emacs/rust-mode"
|
||||
optfeature "Vim support" "app-vim/rust-vim"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
|
@ -3,34 +3,32 @@
|
||||
|
||||
EAPI=8
|
||||
|
||||
LLVM_COMPAT=( 19 )
|
||||
PYTHON_COMPAT=( python3_{10..13} )
|
||||
|
||||
inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
|
||||
multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
|
||||
RUST_MAX_VER=${PV}
|
||||
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \
|
||||
multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
|
||||
if [[ ${PV} = *beta* ]]; then
|
||||
betaver=${PV//*beta}
|
||||
BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
|
||||
MY_P="rustc-beta"
|
||||
SLOT="beta/${PV}"
|
||||
SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
|
||||
else
|
||||
ABI_VER="$(ver_cut 1-2)"
|
||||
SLOT="stable/${ABI_VER}"
|
||||
MY_P="rustc-${PV}"
|
||||
SRC="${MY_P}-src.tar.xz"
|
||||
KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86"
|
||||
fi
|
||||
|
||||
RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
DESCRIPTION="Systems programming language from Mozilla"
|
||||
HOMEPAGE="https://www.rust-lang.org/"
|
||||
|
||||
SRC_URI="
|
||||
https://static.rust-lang.org/dist/${SRC}
|
||||
verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
|
||||
!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
|
||||
"
|
||||
S="${WORKDIR}/${MY_P}-src"
|
||||
|
||||
@ -42,58 +40,24 @@ ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
|
||||
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
|
||||
|
||||
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
|
||||
SLOT="${PV}"
|
||||
|
||||
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||
|
||||
# Please keep the LLVM dependency block separate. Since LLVM is slotted,
|
||||
# we need to *really* make sure we're not pulling more than one slot
|
||||
# simultaneously.
|
||||
|
||||
# How to use it:
|
||||
# List all the working slots in LLVM_VALID_SLOTS, newest first.
|
||||
LLVM_VALID_SLOTS=( 18 )
|
||||
LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
|
||||
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||
|
||||
LLVM_DEPEND=()
|
||||
# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
|
||||
# (-) usedep needed because we may build with older llvm without that target
|
||||
LLVM_DEPEND="|| ( "
|
||||
for _s in ${LLVM_VALID_SLOTS[@]}; do
|
||||
LLVM_DEPEND+=" ( "
|
||||
for _x in ${ALL_LLVM_TARGETS[@]}; do
|
||||
LLVM_DEPEND+="
|
||||
${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
|
||||
wasm? ( sys-devel/lld:${_s} )"
|
||||
done
|
||||
LLVM_DEPEND+=" )"
|
||||
for _x in "${ALL_LLVM_TARGETS[@]}"; do
|
||||
LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
done
|
||||
unset _s _x
|
||||
LLVM_DEPEND+=" )
|
||||
<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
|
||||
"
|
||||
|
||||
# to bootstrap we need at least exactly previous version, or same.
|
||||
# most of the time previous versions fail to bootstrap with newer
|
||||
# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
|
||||
# but it fails to bootstrap with 1.48.x
|
||||
# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
|
||||
RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
|
||||
RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
|
||||
BOOTSTRAP_DEPEND="||
|
||||
(
|
||||
=dev-lang/rust-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-"${RUST_DEP_CURR}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_CURR}"
|
||||
)
|
||||
"
|
||||
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
|
||||
>=sys-devel/clang-3.5
|
||||
>=llvm-core/clang-3.5
|
||||
)
|
||||
system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
|
||||
!system-llvm? (
|
||||
>=dev-build/cmake-3.13.4
|
||||
app-alternatives/ninja
|
||||
@ -108,8 +72,8 @@ DEPEND="
|
||||
sys-libs/zlib:=
|
||||
dev-libs/openssl:0=
|
||||
system-llvm? (
|
||||
${LLVM_DEPEND}
|
||||
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
|
||||
${LLVM_DEPEND[*]}
|
||||
llvm-libunwind? ( llvm-runtimes/libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
@ -120,7 +84,10 @@ DEPEND="
|
||||
|
||||
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[*]} )
|
||||
@ -168,7 +135,7 @@ PATCHES=(
|
||||
"${FILESDIR}"/1.74.1-cross-compile-libz.patch
|
||||
#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh
|
||||
"${FILESDIR}"/1.67.0-doc-wasm.patch
|
||||
"${FILESDIR}"/1.79.0-revert-8c40426.patch
|
||||
"${FILESDIR}"/1.82.0-dwarf-llvm-assertion.patch
|
||||
)
|
||||
|
||||
clear_vendor_checksums() {
|
||||
@ -179,32 +146,8 @@ toml_usex() {
|
||||
usex "${1}" true false
|
||||
}
|
||||
|
||||
bootstrap_rust_version_check() {
|
||||
# never call from pkg_pretend. eselect-rust may be not installed yet.
|
||||
[[ ${MERGE_TYPE} == binary ]] && return
|
||||
local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
|
||||
local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
|
||||
local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
|
||||
rustc_version=${rustc_version[0]#rust-bin-}
|
||||
rustc_version=${rustc_version#rust-}
|
||||
|
||||
[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
|
||||
|
||||
if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
|
||||
eerror "Rust >=${rustc_wanted} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too old"
|
||||
elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
|
||||
eerror "Rust <${rustc_toonew} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too new"
|
||||
else
|
||||
einfo "Using rust ${rustc_version} to build"
|
||||
fi
|
||||
}
|
||||
|
||||
pre_build_checks() {
|
||||
local M=8192
|
||||
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 ))
|
||||
@ -227,13 +170,12 @@ pre_build_checks() {
|
||||
M=$(( 15 * ${M} / 10 ))
|
||||
fi
|
||||
eshopts_pop
|
||||
M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
|
||||
M=$(( $(usex doc 256 0) + ${M} ))
|
||||
CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
}
|
||||
|
||||
# Is LLVM being linked against libc++?
|
||||
@ -257,69 +199,43 @@ pkg_setup() {
|
||||
|
||||
export LIBGIT2_NO_PKG_CONFIG=1 #749381
|
||||
if tc-is-cross-compiler; then
|
||||
export PKG_CONFIG_ALLOW_CROSS=1
|
||||
export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
|
||||
export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
|
||||
export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
|
||||
|
||||
use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
|
||||
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
|
||||
|
||||
use system-bootstrap && bootstrap_rust_version_check
|
||||
rust_pkg_setup
|
||||
|
||||
if use system-llvm; then
|
||||
llvm_pkg_setup
|
||||
llvm-r1_pkg_setup
|
||||
|
||||
local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
local llvm_config="$(get_llvm_prefix)/bin/llvm-config"
|
||||
export LLVM_LINK_SHARED=1
|
||||
export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
|
||||
fi
|
||||
}
|
||||
|
||||
esetup_unwind_hack() {
|
||||
# https://bugs.gentoo.org/870280
|
||||
# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
|
||||
# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
|
||||
# the whole idea is for stage0 to bootstrap with fake libgcc_s.
|
||||
# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
|
||||
local fakelib="${T}/fakelib"
|
||||
mkdir -p "${fakelib}" || die
|
||||
# we need both symlinks, one for cargo runtime, other for linker.
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
|
||||
export LD_LIBRARY_PATH="${fakelib}"
|
||||
export RUSTFLAGS+=" -L${fakelib}"
|
||||
# this is a literally magic variable that gets through cargo cache, without it some
|
||||
# crates ignore RUSTFLAGS.
|
||||
# this variable can not contain leading space.
|
||||
export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# Clear vendor checksums for crates that we patched to bump libc.
|
||||
# NOTE: refresh this on each bump.
|
||||
#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
|
||||
# terminal_size tracing-tree; do
|
||||
# clear_vendor_checksums "${i}"
|
||||
#done
|
||||
|
||||
if ! use system-bootstrap; then
|
||||
has_version sys-devel/gcc || esetup_unwind_hack
|
||||
local rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
|
||||
|
||||
"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
|
||||
--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
|
||||
# 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
|
||||
|
||||
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
|
||||
@ -342,19 +258,11 @@ src_configure() {
|
||||
local tools='"cargo","rustdoc"'
|
||||
use clippy && tools+=',"clippy"'
|
||||
use miri && tools+=',"miri"'
|
||||
use profiler && tools+=',"rust-demangler"'
|
||||
use rustfmt && tools+=',"rustfmt"'
|
||||
use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"'
|
||||
use rust-src && tools+=',"src"'
|
||||
|
||||
local rust_stage0_root
|
||||
if use system-bootstrap; then
|
||||
local printsysroot
|
||||
printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
|
||||
rust_stage0_root="${printsysroot}"
|
||||
else
|
||||
rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
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"
|
||||
|
||||
@ -423,7 +331,7 @@ src_configure() {
|
||||
tools = [${tools}]
|
||||
verbose = 2
|
||||
sanitizers = false
|
||||
profiler = $(toml_usex profiler)
|
||||
profiler = true
|
||||
cargo-native-static = false
|
||||
[install]
|
||||
prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
|
||||
@ -490,7 +398,7 @@ src_configure() {
|
||||
_EOF_
|
||||
if use system-llvm; then
|
||||
cat <<- _EOF_ >> "${S}"/config.toml
|
||||
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
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;
|
||||
@ -563,7 +471,7 @@ src_configure() {
|
||||
_EOF_
|
||||
if use system-llvm; then
|
||||
cat <<- _EOF_ >> "${S}"/config.toml
|
||||
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
|
||||
_EOF_
|
||||
fi
|
||||
if [[ "${cross_toolchain}" == *-musl* ]]; then
|
||||
@ -669,10 +577,11 @@ src_test() {
|
||||
src_install() {
|
||||
DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
|
||||
|
||||
docompress /usr/lib/${PN}/${PV}/share/man/
|
||||
|
||||
# bug #689562, #689160
|
||||
rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
|
||||
rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
|
||||
newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
|
||||
|
||||
local symlinks=(
|
||||
cargo
|
||||
@ -685,7 +594,6 @@ src_install() {
|
||||
|
||||
use clippy && symlinks+=( clippy-driver cargo-clippy )
|
||||
use miri && symlinks+=( miri cargo-miri )
|
||||
use profiler && symlinks+=( rust-demangler )
|
||||
use rustfmt && symlinks+=( rustfmt cargo-fmt )
|
||||
use rust-analyzer && symlinks+=( rust-analyzer )
|
||||
|
||||
@ -708,14 +616,14 @@ src_install() {
|
||||
|
||||
# symlinks to switch components to active rust in eselect
|
||||
dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
|
||||
dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
|
||||
use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
|
||||
dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
|
||||
dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
|
||||
dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
|
||||
|
||||
newenvd - "50${P}" <<-_EOF_
|
||||
LDPATH="${EPREFIX}/usr/lib/rust/lib"
|
||||
MANPATH="${EPREFIX}/usr/lib/rust/man"
|
||||
LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}"
|
||||
MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}"
|
||||
_EOF_
|
||||
|
||||
rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
|
||||
@ -731,7 +639,6 @@ src_install() {
|
||||
/usr/bin/rust-lldb
|
||||
/usr/lib/rustlib
|
||||
/usr/lib/rust/lib
|
||||
/usr/lib/rust/libexec
|
||||
/usr/lib/rust/man
|
||||
/usr/share/doc/rust
|
||||
_EOF_
|
||||
@ -744,14 +651,12 @@ src_install() {
|
||||
echo /usr/bin/miri >> "${T}/provider-${P}"
|
||||
echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
|
||||
fi
|
||||
if use profiler; then
|
||||
echo /usr/bin/rust-demangler >> "${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
|
||||
|
||||
@ -765,21 +670,76 @@ src_install() {
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
# 943308 and friends; basically --keep-going can forget to unmerge old rust
|
||||
# but the soft blocker allows us to install conflicting files.
|
||||
# This results in duplicated .{rlib,so} files which confuses rustc and results in
|
||||
# the need for manual intervention.
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
# we need to find all .{rlib,so} files in the old rust lib directory
|
||||
# and store them in an array for later use
|
||||
readarray -d '' old_rust_libs < <(
|
||||
find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \
|
||||
-type f \( -name '*.rlib' -o -name '*.so' \) -print0)
|
||||
export old_rust_libs
|
||||
if [[ ${#old_rust_libs[@]} -gt 0 ]]; then
|
||||
einfo "Found old .rlib and .so files in the old rust lib directory"
|
||||
else
|
||||
die "Found no old .rlib and .so files but old rust version is installed. Bailing!"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
|
||||
local old_rust="dev-lang/rust:stable/$(ver_cut 1-2)"
|
||||
if has_version -b ${old_rust}; then
|
||||
# Be _extra_ careful here as we're removing files from the live filesystem
|
||||
local f
|
||||
local only_one_file=()
|
||||
einfo "Tidying up libraries files from non-slotted \`${old_rust}\`."
|
||||
for f in "${old_rust_libs[@]}"; do
|
||||
[[ -f ${f} ]] || die "old_rust_libs array contains non-existent file"
|
||||
local base_name="${f%-*}"
|
||||
local ext="${f##*.}"
|
||||
local matching_files=("${base_name}"-*.${ext})
|
||||
case ${#matching_files[@]} in
|
||||
2)
|
||||
einfo "Removing old .${ext}: ${f}"
|
||||
rm "${f}" || die
|
||||
;;
|
||||
1)
|
||||
# Turns out fingerprints are not as unique as we'd thought, _sometimes_ they collide,
|
||||
# so we may have already installed over the old file.
|
||||
# We'll warn about this just in case, but it's probably fine.
|
||||
only_one_file+=( "${matching_files[0]}" )
|
||||
;;
|
||||
*)
|
||||
die "Expected one or two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [[ ${#only_one_file} -gt 0 ]]; then
|
||||
einfo "While tidying up non-slotted rust libraries for \`${old_rust}\`,"
|
||||
einfo "the following file(s) did not have a duplicate where one was expected:"
|
||||
for f in "${only_one_file[@]}"; do
|
||||
einfo " * ${f}"
|
||||
done
|
||||
einfo ""
|
||||
einfo "This is unlikely to cause problems; the fingerprint for the library ended up being the same."
|
||||
einfo "However, if you encounter any issues please report them to the Gentoo Rust Team."
|
||||
fi
|
||||
fi
|
||||
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
elog "Rust installs a helper script for calling GDB and LLDB,"
|
||||
elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
|
||||
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
|
||||
elog "install app-emacs/rust-mode to get emacs support for rust."
|
||||
fi
|
||||
|
||||
if has_version app-editors/gvim || has_version app-editors/vim; then
|
||||
elog "install app-vim/rust-vim to get vim support for rust."
|
||||
fi
|
||||
optfeature "Emacs support" "app-emacs/rust-mode"
|
||||
optfeature "Vim support" "app-vim/rust-vim"
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
@ -3,34 +3,32 @@
|
||||
|
||||
EAPI=8
|
||||
|
||||
LLVM_COMPAT=( 19 )
|
||||
PYTHON_COMPAT=( python3_{10..13} )
|
||||
|
||||
inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing optfeature \
|
||||
multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
|
||||
RUST_MAX_VER=${PV}
|
||||
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \
|
||||
multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
|
||||
if [[ ${PV} = *beta* ]]; then
|
||||
betaver=${PV//*beta}
|
||||
BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
|
||||
MY_P="rustc-beta"
|
||||
SLOT="beta/${PV}"
|
||||
SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
|
||||
else
|
||||
ABI_VER="$(ver_cut 1-2)"
|
||||
SLOT="stable/${ABI_VER}"
|
||||
MY_P="rustc-${PV}"
|
||||
SRC="${MY_P}-src.tar.xz"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
|
||||
fi
|
||||
|
||||
RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
DESCRIPTION="Systems programming language from Mozilla"
|
||||
HOMEPAGE="https://www.rust-lang.org/"
|
||||
|
||||
SRC_URI="
|
||||
https://static.rust-lang.org/dist/${SRC}
|
||||
verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
|
||||
!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
|
||||
"
|
||||
S="${WORKDIR}/${MY_P}-src"
|
||||
|
||||
@ -42,58 +40,24 @@ ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
|
||||
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
|
||||
|
||||
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
|
||||
SLOT="${PV}"
|
||||
|
||||
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||
|
||||
# Please keep the LLVM dependency block separate. Since LLVM is slotted,
|
||||
# we need to *really* make sure we're not pulling more than one slot
|
||||
# simultaneously.
|
||||
|
||||
# How to use it:
|
||||
# List all the working slots in LLVM_VALID_SLOTS, newest first.
|
||||
LLVM_VALID_SLOTS=( 19 )
|
||||
LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
|
||||
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||
|
||||
LLVM_DEPEND=()
|
||||
# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
|
||||
# (-) usedep needed because we may build with older llvm without that target
|
||||
LLVM_DEPEND="|| ( "
|
||||
for _s in ${LLVM_VALID_SLOTS[@]}; do
|
||||
LLVM_DEPEND+=" ( "
|
||||
for _x in ${ALL_LLVM_TARGETS[@]}; do
|
||||
LLVM_DEPEND+="
|
||||
${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
|
||||
wasm? ( sys-devel/lld:${_s} )"
|
||||
done
|
||||
LLVM_DEPEND+=" )"
|
||||
for _x in "${ALL_LLVM_TARGETS[@]}"; do
|
||||
LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
done
|
||||
unset _s _x
|
||||
LLVM_DEPEND+=" )
|
||||
<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
|
||||
"
|
||||
|
||||
# to bootstrap we need at least exactly previous version, or same.
|
||||
# most of the time previous versions fail to bootstrap with newer
|
||||
# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
|
||||
# but it fails to bootstrap with 1.48.x
|
||||
# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
|
||||
RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
|
||||
RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
|
||||
BOOTSTRAP_DEPEND="||
|
||||
(
|
||||
=dev-lang/rust-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-"${RUST_DEP_CURR}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_CURR}"
|
||||
)
|
||||
"
|
||||
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
|
||||
>=sys-devel/clang-3.5
|
||||
>=llvm-core/clang-3.5
|
||||
)
|
||||
system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
|
||||
!system-llvm? (
|
||||
>=dev-build/cmake-3.13.4
|
||||
app-alternatives/ninja
|
||||
@ -108,8 +72,8 @@ DEPEND="
|
||||
sys-libs/zlib:=
|
||||
dev-libs/openssl:0=
|
||||
system-llvm? (
|
||||
${LLVM_DEPEND}
|
||||
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
|
||||
${LLVM_DEPEND[*]}
|
||||
llvm-libunwind? ( llvm-runtimes/libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
@ -120,7 +84,10 @@ DEPEND="
|
||||
|
||||
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[*]} )
|
||||
@ -129,6 +96,7 @@ 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
|
||||
@ -164,10 +132,10 @@ VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/1.78.0-musl-dynamic-linking.patch
|
||||
"${FILESDIR}"/1.74.1-cross-compile-libz.patch
|
||||
"${FILESDIR}"/1.83.0-cross-compile-libz.patch
|
||||
#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh
|
||||
"${FILESDIR}"/1.67.0-doc-wasm.patch
|
||||
"${FILESDIR}"/1.79.0-revert-8c40426.patch
|
||||
"${FILESDIR}"/1.83.0-dwarf-llvm-assertion.patch
|
||||
)
|
||||
|
||||
clear_vendor_checksums() {
|
||||
@ -178,32 +146,8 @@ toml_usex() {
|
||||
usex "${1}" true false
|
||||
}
|
||||
|
||||
bootstrap_rust_version_check() {
|
||||
# never call from pkg_pretend. eselect-rust may be not installed yet.
|
||||
[[ ${MERGE_TYPE} == binary ]] && return
|
||||
local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
|
||||
local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
|
||||
local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
|
||||
rustc_version=${rustc_version[0]#rust-bin-}
|
||||
rustc_version=${rustc_version#rust-}
|
||||
|
||||
[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
|
||||
|
||||
if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
|
||||
eerror "Rust >=${rustc_wanted} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too old"
|
||||
elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
|
||||
eerror "Rust <${rustc_toonew} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too new"
|
||||
else
|
||||
einfo "Using rust ${rustc_version} to build"
|
||||
fi
|
||||
}
|
||||
|
||||
pre_build_checks() {
|
||||
local M=8192
|
||||
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 ))
|
||||
@ -226,13 +170,12 @@ pre_build_checks() {
|
||||
M=$(( 15 * ${M} / 10 ))
|
||||
fi
|
||||
eshopts_pop
|
||||
M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
|
||||
M=$(( $(usex doc 256 0) + ${M} ))
|
||||
CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
}
|
||||
|
||||
# Is LLVM being linked against libc++?
|
||||
@ -256,78 +199,43 @@ pkg_setup() {
|
||||
|
||||
export LIBGIT2_NO_PKG_CONFIG=1 #749381
|
||||
if tc-is-cross-compiler; then
|
||||
export PKG_CONFIG_ALLOW_CROSS=1
|
||||
export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
|
||||
export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
|
||||
export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
|
||||
|
||||
use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
|
||||
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
|
||||
|
||||
use system-bootstrap && bootstrap_rust_version_check
|
||||
rust_pkg_setup
|
||||
|
||||
if use system-llvm; then
|
||||
llvm_pkg_setup
|
||||
llvm-r1_pkg_setup
|
||||
|
||||
local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
local llvm_config="$(get_llvm_prefix)/bin/llvm-config"
|
||||
export LLVM_LINK_SHARED=1
|
||||
export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
|
||||
fi
|
||||
}
|
||||
|
||||
esetup_unwind_hack() {
|
||||
# https://bugs.gentoo.org/870280
|
||||
# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
|
||||
# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
|
||||
# the whole idea is for stage0 to bootstrap with fake libgcc_s.
|
||||
# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
|
||||
local fakelib="${T}/fakelib"
|
||||
mkdir -p "${fakelib}" || die
|
||||
# we need both symlinks, one for cargo runtime, other for linker.
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
|
||||
export LD_LIBRARY_PATH="${fakelib}"
|
||||
export RUSTFLAGS+=" -L${fakelib}"
|
||||
# this is a literally magic variable that gets through cargo cache, without it some
|
||||
# crates ignore RUSTFLAGS.
|
||||
# this variable can not contain leading space.
|
||||
export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# Clear vendor checksums for crates that we patched to bump libc.
|
||||
# NOTE: refresh this on each bump.
|
||||
#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
|
||||
# terminal_size tracing-tree; do
|
||||
# clear_vendor_checksums "${i}"
|
||||
#done
|
||||
|
||||
# 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"
|
||||
# Required for i586 support, commented out until ready for wider use.
|
||||
#grep -rl cmd.args.push\(\"-march=i686\" . | xargs sed -i 's/march=i686/-march=i586/g' || die
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! use system-bootstrap; then
|
||||
has_version sys-devel/gcc || esetup_unwind_hack
|
||||
local rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
|
||||
|
||||
"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
|
||||
--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
|
||||
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
|
||||
@ -354,14 +262,7 @@ src_configure() {
|
||||
use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"'
|
||||
use rust-src && tools+=',"src"'
|
||||
|
||||
local rust_stage0_root
|
||||
if use system-bootstrap; then
|
||||
local printsysroot
|
||||
printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
|
||||
rust_stage0_root="${printsysroot}"
|
||||
else
|
||||
rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
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"
|
||||
|
||||
@ -430,7 +331,7 @@ src_configure() {
|
||||
tools = [${tools}]
|
||||
verbose = 2
|
||||
sanitizers = false
|
||||
profiler = $(toml_usex profiler)
|
||||
profiler = true
|
||||
cargo-native-static = false
|
||||
[install]
|
||||
prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
|
||||
@ -497,7 +398,7 @@ src_configure() {
|
||||
_EOF_
|
||||
if use system-llvm; then
|
||||
cat <<- _EOF_ >> "${S}"/config.toml
|
||||
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
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;
|
||||
@ -570,7 +471,7 @@ src_configure() {
|
||||
_EOF_
|
||||
if use system-llvm; then
|
||||
cat <<- _EOF_ >> "${S}"/config.toml
|
||||
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
|
||||
_EOF_
|
||||
fi
|
||||
if [[ "${cross_toolchain}" == *-musl* ]]; then
|
||||
@ -681,7 +582,6 @@ src_install() {
|
||||
# bug #689562, #689160
|
||||
rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
|
||||
rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
|
||||
newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
|
||||
|
||||
local symlinks=(
|
||||
cargo
|
||||
@ -716,14 +616,14 @@ src_install() {
|
||||
|
||||
# symlinks to switch components to active rust in eselect
|
||||
dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
|
||||
dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
|
||||
use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
|
||||
dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
|
||||
dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
|
||||
dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
|
||||
|
||||
newenvd - "50${P}" <<-_EOF_
|
||||
LDPATH="${EPREFIX}/usr/lib/rust/lib"
|
||||
MANPATH="${EPREFIX}/usr/lib/rust/man"
|
||||
LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}"
|
||||
MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}"
|
||||
_EOF_
|
||||
|
||||
rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
|
||||
@ -739,7 +639,6 @@ src_install() {
|
||||
/usr/bin/rust-lldb
|
||||
/usr/lib/rustlib
|
||||
/usr/lib/rust/lib
|
||||
/usr/lib/rust/libexec
|
||||
/usr/lib/rust/man
|
||||
/usr/share/doc/rust
|
||||
_EOF_
|
||||
@ -757,6 +656,7 @@ src_install() {
|
||||
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
|
||||
|
||||
@ -770,12 +670,49 @@ src_install() {
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
# 943308 and friends; basically --keep-going can forget to unmerge old rust
|
||||
# but the soft blocker allows us to install conflicting files.
|
||||
# This results in duplicated .{rlib,so} files which confuses rustc and results in
|
||||
# the need for manual intervention.
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
# we need to find all .{rlib,so} files in the old rust lib directory
|
||||
# and store them in an array for later use
|
||||
readarray -d '' old_rust_libs < <(
|
||||
find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \
|
||||
-type f \( -name '*.rlib' -o -name '*.so' \) -print0)
|
||||
export old_rust_libs
|
||||
if [[ ${#old_rust_libs[@]} -gt 0 ]]; then
|
||||
einfo "Found old .rlib and .so files in the old rust lib directory"
|
||||
else
|
||||
die "Found no old .rlib and .so files but old rust version is installed. Bailing!"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
# Be _extra_ careful here as we're removing files from the live filesystem
|
||||
local f
|
||||
for f in "${old_rust_libs[@]}"; do
|
||||
[[ -f ${f} ]] || die "old_rust_libs array contains non-existent file"
|
||||
local base_name="${f%-*}"
|
||||
local ext="${f##*.}"
|
||||
local matching_files=("${base_name}"-*.${ext})
|
||||
if [[ ${#matching_files[@]} -ne 2 ]]; then
|
||||
die "Expected exactly two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
fi
|
||||
einfo "Removing old .rlib file ${f}"
|
||||
rm "${f}" || die
|
||||
done
|
||||
fi
|
||||
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
elog "Rust installs a helper script for calling GDB and LLDB,"
|
||||
elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
|
||||
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
|
@ -1,36 +1,34 @@
|
||||
# Copyright 1999-2024 Gentoo Authors
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
LLVM_COMPAT=( 19 )
|
||||
PYTHON_COMPAT=( python3_{10..13} )
|
||||
|
||||
inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing optfeature \
|
||||
multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
|
||||
RUST_MAX_VER=${PV}
|
||||
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
|
||||
|
||||
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing optfeature \
|
||||
multilib multilib-build python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
|
||||
|
||||
if [[ ${PV} = *beta* ]]; then
|
||||
betaver=${PV//*beta}
|
||||
BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
|
||||
MY_P="rustc-beta"
|
||||
SLOT="beta/${PV}"
|
||||
SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
|
||||
else
|
||||
ABI_VER="$(ver_cut 1-2)"
|
||||
SLOT="stable/${ABI_VER}"
|
||||
MY_P="rustc-${PV}"
|
||||
SRC="${MY_P}-src.tar.xz"
|
||||
KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
|
||||
fi
|
||||
|
||||
RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).1"
|
||||
|
||||
DESCRIPTION="Systems programming language from Mozilla"
|
||||
HOMEPAGE="https://www.rust-lang.org/"
|
||||
|
||||
SRC_URI="
|
||||
https://static.rust-lang.org/dist/${SRC}
|
||||
verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
|
||||
!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
|
||||
"
|
||||
S="${WORKDIR}/${MY_P}-src"
|
||||
|
||||
@ -42,58 +40,24 @@ ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
|
||||
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
|
||||
|
||||
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
|
||||
SLOT="${PV}"
|
||||
|
||||
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||
|
||||
# Please keep the LLVM dependency block separate. Since LLVM is slotted,
|
||||
# we need to *really* make sure we're not pulling more than one slot
|
||||
# simultaneously.
|
||||
|
||||
# How to use it:
|
||||
# List all the working slots in LLVM_VALID_SLOTS, newest first.
|
||||
LLVM_VALID_SLOTS=( 18 )
|
||||
LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
|
||||
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
|
||||
|
||||
LLVM_DEPEND=()
|
||||
# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
|
||||
# (-) usedep needed because we may build with older llvm without that target
|
||||
LLVM_DEPEND="|| ( "
|
||||
for _s in ${LLVM_VALID_SLOTS[@]}; do
|
||||
LLVM_DEPEND+=" ( "
|
||||
for _x in ${ALL_LLVM_TARGETS[@]}; do
|
||||
LLVM_DEPEND+="
|
||||
${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
|
||||
wasm? ( sys-devel/lld:${_s} )"
|
||||
done
|
||||
LLVM_DEPEND+=" )"
|
||||
for _x in "${ALL_LLVM_TARGETS[@]}"; do
|
||||
LLVM_DEPEND+=( " ${_x}? ( $(llvm_gen_dep "llvm-core/llvm:\${LLVM_SLOT}[${_x}]") )" )
|
||||
done
|
||||
unset _s _x
|
||||
LLVM_DEPEND+=" )
|
||||
<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
|
||||
"
|
||||
|
||||
# to bootstrap we need at least exactly previous version, or same.
|
||||
# most of the time previous versions fail to bootstrap with newer
|
||||
# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
|
||||
# but it fails to bootstrap with 1.48.x
|
||||
# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
|
||||
RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
|
||||
RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
|
||||
BOOTSTRAP_DEPEND="||
|
||||
(
|
||||
=dev-lang/rust-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_PREV}"
|
||||
=dev-lang/rust-"${RUST_DEP_CURR}"
|
||||
=dev-lang/rust-bin-"${RUST_DEP_CURR}"
|
||||
)
|
||||
"
|
||||
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
|
||||
>=sys-devel/clang-3.5
|
||||
>=llvm-core/clang-3.5
|
||||
)
|
||||
system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
|
||||
!system-llvm? (
|
||||
>=dev-build/cmake-3.13.4
|
||||
app-alternatives/ninja
|
||||
@ -108,8 +72,8 @@ DEPEND="
|
||||
sys-libs/zlib:=
|
||||
dev-libs/openssl:0=
|
||||
system-llvm? (
|
||||
${LLVM_DEPEND}
|
||||
llvm-libunwind? ( sys-libs/llvm-libunwind:= )
|
||||
${LLVM_DEPEND[*]}
|
||||
llvm-libunwind? ( llvm-runtimes/libunwind:= )
|
||||
)
|
||||
!system-llvm? (
|
||||
!llvm-libunwind? (
|
||||
@ -120,7 +84,10 @@ DEPEND="
|
||||
|
||||
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[*]} )
|
||||
@ -165,13 +132,9 @@ VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/1.78.0-musl-dynamic-linking.patch
|
||||
"${FILESDIR}"/1.74.1-cross-compile-libz.patch
|
||||
"${FILESDIR}"/1.83.0-cross-compile-libz.patch
|
||||
#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch # pending refresh
|
||||
"${FILESDIR}"/1.67.0-doc-wasm.patch
|
||||
"${FILESDIR}"/1.79.0-revert-8c40426.patch
|
||||
"${FILESDIR}/1.81.0-backport-bug937164.patch"
|
||||
"${FILESDIR}/1.81.0-backport-llvm-pr101761.patch"
|
||||
"${FILESDIR}/1.81.0-backport-llvm-pr101766.patch"
|
||||
)
|
||||
|
||||
clear_vendor_checksums() {
|
||||
@ -182,32 +145,8 @@ toml_usex() {
|
||||
usex "${1}" true false
|
||||
}
|
||||
|
||||
bootstrap_rust_version_check() {
|
||||
# never call from pkg_pretend. eselect-rust may be not installed yet.
|
||||
[[ ${MERGE_TYPE} == binary ]] && return
|
||||
local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
|
||||
local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
|
||||
local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
|
||||
rustc_version=${rustc_version[0]#rust-bin-}
|
||||
rustc_version=${rustc_version#rust-}
|
||||
|
||||
[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
|
||||
|
||||
if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
|
||||
eerror "Rust >=${rustc_wanted} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too old"
|
||||
elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
|
||||
eerror "Rust <${rustc_toonew} is required"
|
||||
eerror "please run 'eselect rust' and set correct rust version"
|
||||
die "selected rust version is too new"
|
||||
else
|
||||
einfo "Using rust ${rustc_version} to build"
|
||||
fi
|
||||
}
|
||||
|
||||
pre_build_checks() {
|
||||
local M=8192
|
||||
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 ))
|
||||
@ -230,13 +169,12 @@ pre_build_checks() {
|
||||
M=$(( 15 * ${M} / 10 ))
|
||||
fi
|
||||
eshopts_pop
|
||||
M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
|
||||
M=$(( $(usex doc 256 0) + ${M} ))
|
||||
CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
|
||||
}
|
||||
|
||||
llvm_check_deps() {
|
||||
has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
has_version -r "llvm-core/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
|
||||
}
|
||||
|
||||
# Is LLVM being linked against libc++?
|
||||
@ -260,69 +198,43 @@ pkg_setup() {
|
||||
|
||||
export LIBGIT2_NO_PKG_CONFIG=1 #749381
|
||||
if tc-is-cross-compiler; then
|
||||
export PKG_CONFIG_ALLOW_CROSS=1
|
||||
export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
|
||||
export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
|
||||
export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
|
||||
|
||||
use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
|
||||
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
|
||||
|
||||
use system-bootstrap && bootstrap_rust_version_check
|
||||
rust_pkg_setup
|
||||
|
||||
if use system-llvm; then
|
||||
llvm_pkg_setup
|
||||
llvm-r1_pkg_setup
|
||||
|
||||
local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
local llvm_config="$(get_llvm_prefix)/bin/llvm-config"
|
||||
export LLVM_LINK_SHARED=1
|
||||
export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
|
||||
fi
|
||||
}
|
||||
|
||||
esetup_unwind_hack() {
|
||||
# https://bugs.gentoo.org/870280
|
||||
# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
|
||||
# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
|
||||
# the whole idea is for stage0 to bootstrap with fake libgcc_s.
|
||||
# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
|
||||
local fakelib="${T}/fakelib"
|
||||
mkdir -p "${fakelib}" || die
|
||||
# we need both symlinks, one for cargo runtime, other for linker.
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
|
||||
ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
|
||||
export LD_LIBRARY_PATH="${fakelib}"
|
||||
export RUSTFLAGS+=" -L${fakelib}"
|
||||
# this is a literally magic variable that gets through cargo cache, without it some
|
||||
# crates ignore RUSTFLAGS.
|
||||
# this variable can not contain leading space.
|
||||
export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# Clear vendor checksums for crates that we patched to bump libc.
|
||||
# NOTE: refresh this on each bump.
|
||||
#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
|
||||
# terminal_size tracing-tree; do
|
||||
# clear_vendor_checksums "${i}"
|
||||
#done
|
||||
|
||||
if ! use system-bootstrap; then
|
||||
has_version sys-devel/gcc || esetup_unwind_hack
|
||||
local rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
|
||||
|
||||
"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
|
||||
--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
|
||||
# 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
|
||||
|
||||
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
|
||||
@ -349,14 +261,7 @@ src_configure() {
|
||||
use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"'
|
||||
use rust-src && tools+=',"src"'
|
||||
|
||||
local rust_stage0_root
|
||||
if use system-bootstrap; then
|
||||
local printsysroot
|
||||
printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
|
||||
rust_stage0_root="${printsysroot}"
|
||||
else
|
||||
rust_stage0_root="${WORKDIR}"/rust-stage0
|
||||
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"
|
||||
|
||||
@ -366,6 +271,8 @@ src_configure() {
|
||||
|
||||
local cm_btype="$(usex debug DEBUG RELEASE)"
|
||||
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)
|
||||
@ -425,7 +332,7 @@ src_configure() {
|
||||
tools = [${tools}]
|
||||
verbose = 2
|
||||
sanitizers = false
|
||||
profiler = $(toml_usex profiler)
|
||||
profiler = true
|
||||
cargo-native-static = false
|
||||
[install]
|
||||
prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
|
||||
@ -492,7 +399,7 @@ src_configure() {
|
||||
_EOF_
|
||||
if use system-llvm; then
|
||||
cat <<- _EOF_ >> "${S}"/config.toml
|
||||
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
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;
|
||||
@ -565,7 +472,7 @@ src_configure() {
|
||||
_EOF_
|
||||
if use system-llvm; then
|
||||
cat <<- _EOF_ >> "${S}"/config.toml
|
||||
llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
|
||||
llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
|
||||
_EOF_
|
||||
fi
|
||||
if [[ "${cross_toolchain}" == *-musl* ]]; then
|
||||
@ -671,10 +578,11 @@ src_test() {
|
||||
src_install() {
|
||||
DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
|
||||
|
||||
docompress /usr/lib/${PN}/${PV}/share/man/
|
||||
|
||||
# bug #689562, #689160
|
||||
rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
|
||||
rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
|
||||
newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
|
||||
|
||||
local symlinks=(
|
||||
cargo
|
||||
@ -709,14 +617,14 @@ src_install() {
|
||||
|
||||
# symlinks to switch components to active rust in eselect
|
||||
dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
|
||||
dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
|
||||
use rust-analyzer && dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
|
||||
dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
|
||||
dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
|
||||
dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
|
||||
|
||||
newenvd - "50${P}" <<-_EOF_
|
||||
LDPATH="${EPREFIX}/usr/lib/rust/lib"
|
||||
MANPATH="${EPREFIX}/usr/lib/rust/man"
|
||||
LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}"
|
||||
MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}"
|
||||
_EOF_
|
||||
|
||||
rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
|
||||
@ -732,7 +640,6 @@ src_install() {
|
||||
/usr/bin/rust-lldb
|
||||
/usr/lib/rustlib
|
||||
/usr/lib/rust/lib
|
||||
/usr/lib/rust/libexec
|
||||
/usr/lib/rust/man
|
||||
/usr/share/doc/rust
|
||||
_EOF_
|
||||
@ -750,6 +657,7 @@ src_install() {
|
||||
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
|
||||
|
||||
@ -763,12 +671,49 @@ src_install() {
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
# 943308 and friends; basically --keep-going can forget to unmerge old rust
|
||||
# but the soft blocker allows us to install conflicting files.
|
||||
# This results in duplicated .{rlib,so} files which confuses rustc and results in
|
||||
# the need for manual intervention.
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
# we need to find all .{rlib,so} files in the old rust lib directory
|
||||
# and store them in an array for later use
|
||||
readarray -d '' old_rust_libs < <(
|
||||
find "${EROOT}/usr/lib/rust/${PV}/lib/rustlib" \
|
||||
-type f \( -name '*.rlib' -o -name '*.so' \) -print0)
|
||||
export old_rust_libs
|
||||
if [[ ${#old_rust_libs[@]} -gt 0 ]]; then
|
||||
einfo "Found old .rlib and .so files in the old rust lib directory"
|
||||
else
|
||||
die "Found no old .rlib and .so files but old rust version is installed. Bailing!"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
|
||||
if has_version -b "dev-lang/rust:stable/$(ver_cut 1-2)"; then
|
||||
# Be _extra_ careful here as we're removing files from the live filesystem
|
||||
local f
|
||||
for f in "${old_rust_libs[@]}"; do
|
||||
[[ -f ${f} ]] || die "old_rust_libs array contains non-existent file"
|
||||
local base_name="${f%-*}"
|
||||
local ext="${f##*.}"
|
||||
local matching_files=("${base_name}"-*.${ext})
|
||||
if [[ ${#matching_files[@]} -ne 2 ]]; then
|
||||
die "Expected exactly two files matching ${base_name}-\*.rlib, but found ${#matching_files[@]}"
|
||||
fi
|
||||
einfo "Removing old .rlib file ${f}"
|
||||
rm "${f}" || die
|
||||
done
|
||||
fi
|
||||
|
||||
eselect rust update
|
||||
|
||||
if has_version dev-debug/gdb || has_version dev-debug/lldb; then
|
||||
elog "Rust installs a helper script for calling GDB and LLDB,"
|
||||
elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
|
||||
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
|
Loading…
x
Reference in New Issue
Block a user