diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2020-11-25 22:39:15 +0000 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2020-11-25 22:39:15 +0000 |
commit | d934827bf44b7cfcf6711964418148fa60877668 (patch) | |
tree | 0625f358789b5e015e49db139cc1dbc9be00428f /dev-lang/rust | |
parent | 2e34d110f164bf74d55fced27fe0000201b3eec5 (diff) |
gentoo resync : 25.11.2020
Diffstat (limited to 'dev-lang/rust')
-rw-r--r-- | dev-lang/rust/Manifest | 59 | ||||
-rw-r--r-- | dev-lang/rust/files/1.46.0-don-t-create-prefix-at-time-of-check.patch | 31 | ||||
-rw-r--r-- | dev-lang/rust/files/1.47.0-ignore-broken-and-non-applicable-tests.patch | 75 | ||||
-rw-r--r-- | dev-lang/rust/files/1.47.0-libressl.patch | 44 | ||||
-rw-r--r-- | dev-lang/rust/files/1.47.0-llvm-tensorflow-fix.patch | 55 | ||||
-rw-r--r-- | dev-lang/rust/files/1.48.0-gentoo-musl-target-specs.patch | 164 | ||||
-rw-r--r-- | dev-lang/rust/files/gentoo-musl-target-specs.patch | 168 | ||||
-rw-r--r-- | dev-lang/rust/rust-1.45.2.ebuild | 9 | ||||
-rw-r--r-- | dev-lang/rust/rust-1.46.0.ebuild | 78 | ||||
-rw-r--r-- | dev-lang/rust/rust-1.47.0-r1.ebuild (renamed from dev-lang/rust/rust-1.44.1.ebuild) | 339 | ||||
-rw-r--r-- | dev-lang/rust/rust-1.47.0-r2.ebuild | 615 | ||||
-rw-r--r-- | dev-lang/rust/rust-1.48.0.ebuild | 615 |
12 files changed, 2086 insertions, 166 deletions
diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest index 6b57264a0bab..903919565317 100644 --- a/dev-lang/rust/Manifest +++ b/dev-lang/rust/Manifest @@ -1,19 +1,11 @@ AUX 0012-Ignore-broken-and-non-applicable-tests.patch 3387 BLAKE2B 6809f3d5c2cf5698d516ccd74dbbf66cc4265200f75567fa197743672895ddee418367751ac3d99a263ff3417ed89718cd3602c609d0dfac7ba2fd5ac18dce76 SHA512 0c41c238dc0b5a7130398d8c1d6bb6987c9bff704c89875830e9d6ad28d49d9b300c1fe7c982ef9be9a92ed0057f6fc04a604d189d1aec2dc2b014d6d50a7d8d AUX 1.44.0-libressl.patch 8969 BLAKE2B 1ae707140a93fd76ec825e0e8c49f1408cda5a3b290a07c974d8ba8ba9b82e230bc2a4864cdecc744425d77ded819690da9328af2f648c636e8fd9ba3f0bb131 SHA512 81421ce6a0eb89bb51ff6a95be79159fce18be51c341f29aaf9d18e9b4aa1d3324e0c3472f72881c94a053b6dc4490c16b5ca2ac9cece0ea2d01051e3ed28a56 -DIST rust-1.43.1-aarch64-unknown-linux-gnu.tar.xz 104148868 BLAKE2B ac5db9eb58c502253d001e0c93aef867bc584d045960a1d3c2caf6772a7c1f4fbad7da579d7c72b3376804f61f1332a54e9fc7099ba5f4a65f7e5435df28894a SHA512 b54fad5493344d2370bd77110f0ffb0231f41ab8aa9707e9303304957c5d9067dc83089432eb175605b78dc771dfcf7abfcce63d7fecdbb759dd224c17d12da0 -DIST rust-1.43.1-arm-unknown-linux-gnueabi.tar.xz 104779424 BLAKE2B 63c05d7403970bd4a237a6b690bcb8e78f310816a953af43da8d258a74102cd560c8674656c2036b1f391dc964ba6d2be2736bc10686c2365cc332b5c76a5502 SHA512 ea2eae6da6c757c07cf9631c706365c743c58f28b514444763ea70fed4c8fcefc5c36d55136afffc2f5e0d25e9b1fdf3243cb9def7e0f57e37b5a4783d44a61b -DIST rust-1.43.1-arm-unknown-linux-gnueabihf.tar.xz 103569032 BLAKE2B fc94eeb777a72fcb1b2821b5d10bb9eaca535d76e8caee3d06aed989107460e00146516c5be5714e9739c49d5170809fc132624f9a035afba146db883346c57a SHA512 1c523dafceb29f916a192261f673048c8f781453bcee237e0e333d694d7d7b71735544906f2edea9e0a8a48fc66a478645ae8ae865a171f4f9a94f0d8e6800c1 -DIST rust-1.43.1-armv7-unknown-linux-gnueabihf.tar.xz 108430484 BLAKE2B a3c57930b4e7096f409a2129abef60fbdfadad59f29e428296f3151187eac286e82bdb2d0ca879db87563cdc707dbcabbb5e9048b54303653209b98268ab9cf3 SHA512 0812b3229dd47f1b5cadb49020e68d28b4267ac0489d0c2e448f21e3b0b6519bbf216ac9b20b747e035033842a6eb3b13a98706f2eddca2c088d9396dcb2c21e -DIST rust-1.43.1-i686-unknown-linux-gnu.tar.xz 125731548 BLAKE2B 3a3278e409a69f3e8195bab39871b5594571c1c8f2ea2a5f8c9786a739f709381c13c1b2a3209ef62cb7c5b8aec47dd769cf3e658ed57e5037522759fa1a244e SHA512 c7423bccfb15f3df6043ec1d81203c9db9b3229dedd347cab09d3cc3b183f53aa0707f59964efccd63418e1c6ad21e7ee7dcc1495eda8c4ecb55ee8e6b3ac034 -DIST rust-1.43.1-mips-unknown-linux-gnu.tar.xz 95924004 BLAKE2B fc1da442dfaa535b81029ed40a85cd0d55766d84c34f0d97bf36376c44e44fd5305b429854b9c964515e10f83a06b36a6ad9daae5714e142491d99e58b1d0a07 SHA512 fe3b11e586d506dc917f0e04009a994a16575ac534a2716b49e66a0344060a26ee6c7e912b6cd7b5f010a97f59604515f899bc1b6c38f0ea86e8cecc20152dd6 -DIST rust-1.43.1-mips64-unknown-linux-gnuabi64.tar.xz 100980364 BLAKE2B 12439df511c3ad43ed24cb0e648a212314a747e203680929ed3e136505eb29af3dcb007162aaa337fbac56a9b1b8f1c405217756ec712c400bc0f4d9aefd64b8 SHA512 6c0d7f172e76e21596d305df7b1a38fde66a946972765de92ccc139cf8f2e8755864b7bd94328b9639023df6be51af08428f41ed78de4ba8d43620673b9f7ecb -DIST rust-1.43.1-mipsel-unknown-linux-gnu.tar.xz 98512180 BLAKE2B b5e8cdf2b8d65cc39bfb325afda9ae75a360967a4f6f413f3b01257bc34130fcc873dc128a4e48bbcad774d69b9a4aae0d4a8182819a4411809af6a0c636b403 SHA512 cb01eac951384fbf2ead5b7d4acbf92485de0bbaa7e3a272a46a8934066d720d248a19a67ffc88b7b239c15478e8691b94302807dc7652e042c9b8edded6da12 -DIST rust-1.43.1-powerpc-unknown-linux-gnu.tar.xz 105007576 BLAKE2B 8392f36025ca91742fad9755c945b42e616272cc97c33087090c6462a5ba9f1de82a0167ed53568b5cdd4c593464ed2858811fd0c9ae8559a1cba37be6db5305 SHA512 d10da49f19b79f843ae369bdff3e5040b93934dc50dac3c09bd346c24dfa7394364da647c08206d5cef4c853b7e59d1062c16e6eeba0ffc01736eeba63dd3eb6 -DIST rust-1.43.1-powerpc64-unknown-linux-gnu.tar.xz 107189572 BLAKE2B ba561d45b8f9a7f446b17313d92db31b30a07d657dbc59667076ee216d66e4b2ec3811821bc6d1fde6bba811d2c46473c6e3bc06162fe4e1ffe040ad23542742 SHA512 695591807892c8f08801cd145ebc6a91ee4222000210baaaa0d6c8acf1ac6a96f4bf2566871def04d15a9965b7e3ea4287e37d7851fb14010518694d8ede75e6 -DIST rust-1.43.1-powerpc64le-unknown-linux-gnu.tar.xz 112921244 BLAKE2B 9fa67664fc90c1f6095d98b756cae747be2ad863b894b393d4e9ecc3a1bd527b0d26f1bae2988981b98d4d582d2b60a18c62b3db3b5fa017439e034f576e7582 SHA512 da447ec44ebf998290a73420437c8d434a6c196cfe1c3331a9adf40abf7acd97a231e352a8626bbfa961da8e0c4f450aa59d573254257f72cce4068eeb8112a1 -DIST rust-1.43.1-s390x-unknown-linux-gnu.tar.xz 119547480 BLAKE2B 8ce0d64e2d47f23cb927f3ea3a0f469e3cafc191ac1d47e580bce6cf0b35887484542f7d1b857d9bace5f696a072adb7e17e8c5f64af9bf1fbcc305707a15f9f SHA512 f087e50a91b1cc4a12bf15aea1cefbda9b89518febcecc0d56ea7d0a6a682be06cff7777d0a0b4812e96f3fb3295e7799bf200c1599c88cb7083a78d5002f14a -DIST rust-1.43.1-x86_64-unknown-linux-gnu.tar.xz 112817212 BLAKE2B c6153889d9872ed5a60bfc43bc8c98e71654fffdd79ce775c3eb4376ed4714c5532e6aaecb769e447f3ae0bb7a11aed75754a5e879404742cb0813080dcf67eb SHA512 2fc573ca2826d9f03044f746ae4d7715b4e31b9ac933289607aa3449a538bb4dfd519540576a1d0d286c0d754a7ba6ce38beef6aded1090d3af3091b6ba2a9ee -DIST rust-1.43.1-x86_64-unknown-linux-musl.tar.xz 103345832 BLAKE2B c16930854ea5e825e1338fdde3966e24d3505230891ab4e10160c5482298996768d8cee9890eadd486bfca41ebd5c9f38f7b7ead35a7848e59e409df8eaf9bdf SHA512 9f6ce2a5eaf98dc20b4ed88dbe60e8fb014ef3e7e82f5c31a28cf0f916d996271929cadeaf39a869f548aafb311f022acb408d51d4312c849c71843bc37ca202 +AUX 1.46.0-don-t-create-prefix-at-time-of-check.patch 1322 BLAKE2B 2355cb6da8f2ecef611d7f7d1b82f6ebed6c5d3b579fcdd34024413d8156605db1134ae5d3b6fbdb15e33b063dd8e827580a32065f7b6ddf65c5063f0c73d9ab SHA512 95f883b6638a10bae3ab88864a8d8f0a4463c62db94f9e138edf0f0b1c2378432c766f8d7222fdd0d00950752b222e22b1b7edb856c7e9104878a3ddf8af44d2 +AUX 1.47.0-ignore-broken-and-non-applicable-tests.patch 2862 BLAKE2B 96363bfcaf3634185160d54f475711409c5af1e31b8deb3f1cb8650629eed6f4db6b8d758b84055c9ebe2983a213485f9d4d6de4f551ea1e3d122f7c3baad77e SHA512 4a2c7eab2d3930ba6d8bc042f52c993683a3e21bf023ae609bfb4db65df8c5750ce94264d6ee9196e4dfd3b3e204f10c70d6f3a2e752d0b373fee4ada4c5fe53 +AUX 1.47.0-libressl.patch 8926 BLAKE2B 7903c83d6d905733e53b1846d39eedf38180d3419e3ec1c338d7988d15eabde25ebcc58fdee931f01fc78976d2aa3892b339a73363233f09d78a6e2f0a37f29e SHA512 5f13ce28fd427bad3939dd7e5b1b4e3e0f5a6e13b5ba6acbcfa070106543dd2fee8023332180e1d11e7a4e6a7763f789a5de5bcbb46f12b02abd273e50bb8f91 +AUX 1.47.0-llvm-tensorflow-fix.patch 2535 BLAKE2B 8baf9b938f59d4180af536d24d99789bf1d9d5258eab8c85add4b0c78fcaceea173606711d68bc9597be06cda5384c528e53d01ee5b66408efe66c38cf75b9ba SHA512 206148d8f017dfe206a0e9d436cbdef68f1e433ce0adb7b865d0dfccbb509a6c16f8c8ca76d433ec68992871cf6ac1d808dcbc66995dcaa87928cac08237dad7 +AUX 1.48.0-gentoo-musl-target-specs.patch 6489 BLAKE2B 37330507a03aee9b807b2142e264f6418ea63a1838bf0c39460d3cb972423dc515334e0d440088ede2f1062c0bc3e382fa4e86dc256baccfe4fe82eaa3e69125 SHA512 6e87a5d166c4f876c48a8b65f3420cfe48bc711d3126f31fa4c432968986724469cf04bf5bc301390a47022dcec5c885ca706fa543e5117329c47510fd88b04f +AUX gentoo-musl-target-specs.patch 6500 BLAKE2B 07fe556fa39789a7b2ad0f3cb2e3885dd2a234216abb1e6a6aec4653b0d5da2ca9b29f2c2b5ac3ad95cde65203722c90079169dd46719f04a7c3cf5cffb7d8cb SHA512 55678d07fd7834e85da6ede69ee71115f5af92919deda122b5aac8be73c4d92f437e790f6dc8a566b0b738f07a0d6e0c738d4b5c8cec004b86de206b8d939c8f DIST rust-1.44.1-aarch64-unknown-linux-gnu.tar.xz 101259004 BLAKE2B c00274660698c5e980a6fe28839f96783989bc5f102025a5e2b63466928f697afc3c70ff8efd00b525ea4b88823585e801690e6c05b246abf5600af80f911a07 SHA512 97a67addb5995f504d7326a500d1b40c52cc6e6e6f6e946adabcf825ce9b64272232a24bc30ce36e3ea63ccda4b980f3b7b61b0e88a8554f021b731ad79a35f1 DIST rust-1.44.1-arm-unknown-linux-gnueabi.tar.xz 107474900 BLAKE2B 1b21f28b12507cba83ede592670b715365b1ca1fa311dc70108404bc7fa199914716cf7e5560a682ccf4f37bfaf91357f547456a032b4914e75543fdb7e8e84f SHA512 5bb406cc999317a15988b434c3de53d11e3823359fd3dd798de8195fc2e7e7b32830c7cceb1cb7089f47b333346c42fd4153ba1b441799d89fa27207383b7043 DIST rust-1.44.1-arm-unknown-linux-gnueabihf.tar.xz 105267436 BLAKE2B 6e4c13028dc1751970b04b99db64be6e1ddbbc3b754318e3eabe03e7ae65031c4a5ed87582ec0ffa605a7ac69bee32c5fd48c6dcd84f298d73199a7f7d1c731f SHA512 fffadfc6d8317512ed50df97785a7d0094f59b9465ce5e762c45d6a3a484cdb3c04a72ac49c3d61abad898503378d841ed6abaa16a072aa6adc9069619e26a49 @@ -42,10 +34,41 @@ DIST rust-1.45.1-powerpc64le-unknown-linux-gnu.tar.xz 119234164 BLAKE2B 4148957f DIST rust-1.45.1-s390x-unknown-linux-gnu.tar.xz 124758156 BLAKE2B ff62e14d5ae9f7213ebc24d694317ff292cb0d7d2a67f0ca284cddd2b9f594547b01a6c647780d47989d4405072f377d37fc03933431a3df804e37bc1248e803 SHA512 278411c6308eaa4d732ff4c0f448d808a5ee74dae5f3eaf04773ccf65c9bc5963153f62346d30de0f577dd6da89c55bed280c2fb0e50d2075e3c30a3649fc4e8 DIST rust-1.45.1-x86_64-unknown-linux-gnu.tar.xz 117764080 BLAKE2B cafe6e4f7c28112879089d75703a1b1ce7c0cf9b5ab5beeb4ddf343f7bc93e8704bc105ba0bd95f1df6d62439f206d8f4ae9090330af857ec0a249540eb63122 SHA512 13ee5ff7cae29440e32fb140404ff01414d66f0ea8d79777fb1586541de1ee6ef8e12f9249c35374501460a2352f7d0f6035b5bdc2f0daa91d772a157657ec0b DIST rust-1.45.1-x86_64-unknown-linux-musl.tar.xz 123820216 BLAKE2B 1afe48589e5eec15d8fdb31d52b2ada49688e78a311298d421a8b2d4c0cc6a708223e5976518d66506584dc2adc63651b62b8c1fc3c3ccfaff80e2ef7ade5078 SHA512 39875878acfeb05d7b72bab2dea51063a523fa7ad136d582ba28603df7f8b1c3360e5838e5f9b08f396969e52bb1fc672fa4c08cf5f8ffc39128af129b6b17a6 -DIST rustc-1.44.1-src.tar.xz 94756856 BLAKE2B 60f536c3ba0fa1fec4b6333ee57809ee5226090ad5041c14a136b4356ff3b898062e06c3fe54effe873e27931ac8fcb902cd48a38615a8de7eebc6ecb3bdc2bd SHA512 1c17002edae844a710db9b144c17171416330dc565343c65af8a6e112fb61555e2025bb4cf33cac1229d7df689e6ff8858b91ae00552400ccacafaf1de11849b +DIST rust-1.46.0-aarch64-unknown-linux-gnu.tar.xz 127384736 BLAKE2B a1efd25cf429a309a454ef5db38c68d642920e859ef6effbe88ace7f3c4050ae7e9cf10d2f5b70405475ffcbbbc80338e3a5e4b3cb632c555e31a0ebc1b76cd4 SHA512 53e5d8afadaa9505286dce4acbb911126d17bc7bf45ea4685070ff07be7f6c7860e543a7686eeac695e7e3e127ca38ba2f09b73467fbf5f92d0b2195467c51f2 +DIST rust-1.46.0-arm-unknown-linux-gnueabi.tar.xz 121741008 BLAKE2B d277cb19c9f9641f216eba9ddb8bdb0a1bf70b7376e82798dad3116ff6d976c6ec8f6442831ae6a3c64cfdb46c59cf47b482df5200af49ba5eeccb663538084b SHA512 74cc1c8f56c88bdb669d52edca69c8aed7500e51498e8bf4099b2edbf85a2beab1e6d447029eb24e12fdfcbf2272f5d8b741eb4aa48fe83dac44759478429284 +DIST rust-1.46.0-arm-unknown-linux-gnueabihf.tar.xz 120726564 BLAKE2B 5ef9c319d4744016e336a8d8bde99b2b9183dd13fc6873d4f0e239a52a86e054d42ee48ca1a84ac42d140b1bbe234f4eeaf90717f14959ad6966681429eef233 SHA512 89972cc03c05dd5bc003f6cf16e062b935b3fda288ae0c3d32a3d08ccdcbf7699c306aa3c017a13e76f13f8dca7a951ec98f23507de978ae87cffb6d6907af5c +DIST rust-1.46.0-armv7-unknown-linux-gnueabihf.tar.xz 123912836 BLAKE2B 97cdb2e8d643826f7dd1554096e14c58c35b38cc2eebb49c478343bf8bc157995a9f1099c014800701d34edbf0f0798ac29babbd2a5bf261d1956bc731b0a99c SHA512 c7e320fd5169c99bf8a12fb5bf1c5fb19a05d14f75ce655e4b64cad3456594ef09be1da7ac34a09b5d84da0c857d1a6e5a0695b5ff04cda491ea92fea15d28dc +DIST rust-1.46.0-i686-unknown-linux-gnu.tar.xz 141319800 BLAKE2B 712227e42b8597ee1c645cb344042e79ca40aef0e22d783c4a0c042bd07f686aafd9b80bebe0dfe69b4b012056509bfe510fffa8ba5357656d459fe5885fe0fe SHA512 b01e9b06c9de50e43bc6b5e1a5e6cc49dab1cf28b9cf0a8b974d2630c7ed4c6a5df6f321c872e11eb622c42f1d8cfaec77c1b67254a84365464fe3415acfa07f +DIST rust-1.46.0-mips-unknown-linux-gnu.tar.xz 110175584 BLAKE2B 23e38e81d281d0df23795ff60e4a7503f63d443d966bc6d5068edc50fc0dd90e2fe45eb90b901a1fb3f8f813375533eaa142d625b661f5d76d2097b0cf572606 SHA512 0635060dd15f548834e5c946ec8deea10bf234f550f6a01d4d491f45e0d5f16e957f99caba14c91225d100e7c59e909869b816dfffe9f8681c09e9e5b6ca2bdd +DIST rust-1.46.0-mips64-unknown-linux-gnuabi64.tar.xz 117357812 BLAKE2B c3118a0b710ceaffda8523840551306d4bbc7c78fc26016fc1ac0037c2a7cd68f56c11999f7e3bc435f93e0dbebf348fdc52255cc5978bdffb2d55dc9d56e23e SHA512 5dc6de40429e72ecad9546390f1f5e626d388938c7bc50a56fb258787b45e8d7363170d8d1a2bff56fbd8bef22060b6cb0c50fb016ccc7d4fb767ba6b7e80c2d +DIST rust-1.46.0-mipsel-unknown-linux-gnu.tar.xz 111804692 BLAKE2B 4779d5602f2107321d5c6042dce1baaf6eec2f60cf2ba4330bf72fda0868d7e8294cf573b3ffab3654a0689d11599f2fc37430005686e91439abc7ae6fefb977 SHA512 3c9d17fa89636d37e125d7665883abc9912330d4a1f5291d44771fd1cbb17d604deccc07685cb567f1b141dde3668d5ef55f3661b04e4506d5337d69acc6738c +DIST rust-1.46.0-powerpc-unknown-linux-gnu.tar.xz 111495200 BLAKE2B d618c61a05507abe13d1294594187a4552896cb61396c2f8bd6e506a71ab4bb5cd26ae3b2b573d1d5a4ea79fb4dd2238a2ae34059357ef397264beb0b67cbc34 SHA512 38df2204bd4bfe7371365266651a84da218ba909c3ae107432f6fef892e71488d193b8f54fe6738edd91aa0ca029038d864806b25289254711bd10f736bcc2d7 +DIST rust-1.46.0-powerpc64-unknown-linux-gnu.tar.xz 124882812 BLAKE2B 2362e25d39cfd2039ce18db08f43bceaaccd208ec113c16f6718803eadda964bb254a6afc606765a00026adc93cf366495d3546d6aac8a7444088f519d421c9b SHA512 40f9423d838cab74b9920372e728c4ca7057005d83af587387dd2b164a0bf93de65cebc035320bce25f80914c63ce65b84218b9a776b0b905428e4cba0821b8b +DIST rust-1.46.0-powerpc64le-unknown-linux-gnu.tar.xz 130200900 BLAKE2B d38a7f131983aee27e6af59ab03999e7420745a0f9256b2623e71f36dd6f12605025dbdc510bd5ffb73e0d31a5c7e56a791bdf718b2eba629d08e2f75221b1c8 SHA512 986f0bf7995f35836b73fb7045cf43ae5efe0c2543c75c66cdcc0f8c1dd3513def3c291e021241e328142deaca690ce113526ffc870c4412a7841f244258a43e +DIST rust-1.46.0-s390x-unknown-linux-gnu.tar.xz 134521076 BLAKE2B d3efd71dd7db812736680929185ad5f58a2dbf7d1b8a6f851834dd7b41713fc171dbcdf2472bedc13751bfeed58070d919d2a1138765ab75c0f4bdf817cb6418 SHA512 b6146695225ff6d0516e7bb6bc4620599356bb89b14f429a09d9d7f8715a94e8e218402346d5c9a10eeb54c0bdc40fb179289216b0cb4edd5bdf886f6b69aab4 +DIST rust-1.46.0-x86_64-unknown-linux-gnu.tar.xz 127200200 BLAKE2B 7d755e0622cda99d111490197b21ff4aaeb7b13292804566bc677b7b1d833eaa644b7a801863a1a01e3aa34be28a80344cae69edc57f8c8788884c78e037b750 SHA512 95f5adc2d2137010c7e5ac8a0fc70485250b4f9a909cb8b164b35fffff76ab88e9b09d305bfac37324ed080c5fc7643001d2abec5454ca911dc3513f1af52c88 +DIST rust-1.46.0-x86_64-unknown-linux-musl.tar.xz 142372372 BLAKE2B 7d3672234b61b772e2311127db569b37296bf3a9bf86841fb78c6d20da6a6abfc6c866ba4aa7cc44c12eebb0744fbeb401b491314db9eb481b926792cadcca22 SHA512 e2599c4c10fe9725e63524d89c0be869d43347620b0f6ff1a93cee5e7219f5560c6171d8eda99e5624eba60b9d488bfe0942c23eacdbac2ba42e4cd63f14b7c9 +DIST rust-1.47.0-aarch64-unknown-linux-gnu.tar.xz 136486128 BLAKE2B 872226c232141e25466413d9a998bb021a6f4955dd8ccb5d68f8cca70ea8f7056a6f7b4125134b48a3106331dd3db2e77b32a0083fca3c66a348b77699c49e7a SHA512 7df7045df341f03508f1ad795a9117b39c1f4c4cc778c7fd9d78c42e7da662ce244d018084ac9e80d9409cf8b3b5d1ccc25ef4cb71a2b8727398d30a4e962e19 +DIST rust-1.47.0-arm-unknown-linux-gnueabi.tar.xz 133989400 BLAKE2B 301c17d6f9c048f43d460898ca352e189f7770539431721d178239d5cd64e9e62c05a63482049c18d6fe3fbaa463616d64cf6d82f2bd846576dedc6fc19bd3bd SHA512 db9caa96f142145c3f515730a1aee2fb24c9990f7b9b56e277997975409786904c6490609dfb29712acd9bba077acf36103e4d612bc6c2a74581b40fb50d12ad +DIST rust-1.47.0-arm-unknown-linux-gnueabihf.tar.xz 133431024 BLAKE2B ab94ee2961ac3060154834d21a47384dd09a55213f1a7082911e0976ab9e572b5b234e175ad068cee0fa9355ef2d85acd7ebfff109565be013f14c32e61a71ff SHA512 fa0643c4b2eb36c2bcf4c786517d27fee4428114b79565e0da3b5626700275e9368ce6a68e93b4eae9881265ecca474cced25d63f352ffe3c8617a725185cd28 +DIST rust-1.47.0-armv7-unknown-linux-gnueabihf.tar.xz 137060904 BLAKE2B 8e6cbd665cdffcdd059dc4278dfb1647d046a96619f784dfe45299a0c29f1af51de4511b87cb8c0d0d166ba76b484f4249819e22275e2c1775c53b2ee5b1ffb5 SHA512 b207ab7c478dce6db4018527888f539938c8e77b5ceccb460b9d52ffee13a2329d225d03a605b60729cae6254129245bdd69730aebb6ec91dd0c83005cf25253 +DIST rust-1.47.0-i686-unknown-linux-gnu.tar.xz 154793612 BLAKE2B a8063a9241fb9fa8b7f9c430d65fd2353d3a1014e51148c9cd1b5686338ccf5170fbde78cb6f95a9d4db5441392ad4e7bf14e5a39418208937cda4019cf4e2e2 SHA512 551204b4edfc1500aa83108c88b845997bb6befba0dd3401e9ae5294ab27960421f1b3130159946b996171c1d46f7532afa0c3ae767a9318985db0bb7c88dba0 +DIST rust-1.47.0-mips-unknown-linux-gnu.tar.xz 122428884 BLAKE2B 10778716e282f9b74ef1a3daeec70ed1bb4f4dcc4a31baeed90c26f398bbe313df58b62469595ced95c73df9aad4739210add4eb3c6f0f94b5fa3dc937967394 SHA512 0e39ef2cd814474c33adc38658cbc2e84879f0208fbb37c1a4bf3719d3cace071606e7b03fd8464ba80f6328cc0a0bd38ec8e7772cc460b5a2d2d8b704042c49 +DIST rust-1.47.0-mips64-unknown-linux-gnuabi64.tar.xz 125553888 BLAKE2B 27c9f5d860025ceff4acb1e40ecfa0ec4c053ac694e4bec3bab41e2a193492afb8b4ac22ca471d3170ebe5c3e0fce628d0bf8060b5831af10bd99d614caaceb6 SHA512 186324da11997a65586930e5f2422c687a6ad817e3e0a5766caadbd51153cd29dd1e0d472586117c654d5db20e0ea2bd4073e05a94f3197bed2403dc325b31d5 +DIST rust-1.47.0-mipsel-unknown-linux-gnu.tar.xz 122801616 BLAKE2B 667712f3441ce63bcfc245801dd580ba8a9a06e0695b9f9a713baa55d8f9b8ca208a02f043918814490166a4c3dd2cb6ffa0d669b9533845f9c241063ee9b9c1 SHA512 8cd441739a25af20298ed25d877f8da4b81969e6f591d45527b94187808b7ce04ef6106785fc050d1318f71fccd00c295f60cdbf8fb79288aac80d92be9e57c4 +DIST rust-1.47.0-powerpc-unknown-linux-gnu.tar.xz 125781632 BLAKE2B 00e966a5ba83702ee36fc2dadd9d058f655d4ea8b3b0072b61d221508ccddb82efae0f5028768a4744b6c439e0f7080db5f727e9f2f7facd7d57964bc332b5a3 SHA512 8a20462ed79f22b868a3e64ba147b32c32eb0b0a149a7a571cc91ffe1ae9fe2d71a244c910817f3c151464f6c417550923a4f02e9dc433670b38502684bf349f +DIST rust-1.47.0-powerpc64-unknown-linux-gnu.tar.xz 134272040 BLAKE2B c7b4256df6c7a031a53e022ba00999706674e273c041534b75743fee1d366567dcd86fb805ec9997737cff3902641e21269f2a95fef651227cac5da34c947091 SHA512 46fa1c042aebb06db4185fed6ef3bc7772f2a13f2290a20f5499757aae2a05dc984026315be7b5813aac172f52f50565e56aa074d32f6271858590a9ceb9e1c7 +DIST rust-1.47.0-powerpc64le-unknown-linux-gnu.tar.xz 141965604 BLAKE2B b4b7ce862b2201526e6a96249e509faa7bce2d841e571b6dd241c9a82bd9011c92e0918df649ffcce7f3c6c93aa47aa8f66b99e6529b1b3cecbe16622b08e0b2 SHA512 d5c6580861786545f0540cc9591884fb9f2036061bdd451d17cf8bfb427008d365cacd14e5054028c72b83d1d5eb347ab74478a882cbbd7fcc75a7421657561c +DIST rust-1.47.0-s390x-unknown-linux-gnu.tar.xz 146987276 BLAKE2B 1810e7bfbd235613563677449376167700c33960eb57b100e65058f6a00692316db518f2f4b79b39e414f3892c62bb1ec09b0866ff2221641c4a3056659a1668 SHA512 dd5877b6ff5c310ca6aa23c1cc621e6b0675d4c46f5a06b2a0b107641b604a1a2101109ba8e286267bab1158768c601d5d9a922a8da72486c91755ef465720c0 +DIST rust-1.47.0-x86_64-unknown-linux-gnu.tar.xz 150891572 BLAKE2B 45ff02465ba82ae96de25dd616fa08abb2396be21236d2f66f831effb349f39b047a380b38cb83254f27e56cecdbea8478f4de8ccc0aa23b11de2f11a28f501b SHA512 f695986ab8e67636b0e92ca7ea223984121e3c22788434a6f1062690e7932f6b30c0c302160fef96831f821acedaf8a909bd3d00a9aa873c7200d2b8fa39013f +DIST rust-1.47.0-x86_64-unknown-linux-musl.tar.xz 166456672 BLAKE2B d6ccfc574a81ae3e9e6a96805e6863009970b5c480f35ee0d582a204b782fe513b9c6c7094d1adea509de1a3097a8a0524ac00c2186b968f70f390615904eb5a SHA512 f71b162635955ecd8a6ec322818be69c788c18d4e923d84d901916648f2eb58573b1f97b460209294ee64198e76566b78e472f9cbca8665c59444adfc5ae603c DIST rustc-1.45.2-src.tar.xz 98683036 BLAKE2B a4102a5d4744b7ccc9b076aba00c39d69532f777e7d39e0e4ce2033b663b43e27b55034fdb3a1e13379fae9a16bff9e7748865a84507f7388ef0ebf9d421eac7 SHA512 cc6250c0bc844e77ca6dd7ae013e434ed3009b001914114866ed31f28edf3960221454d131e298b15050e3b8153fb8298d509559c2f7307c64611aa8e36b4d25 DIST rustc-1.46.0-src.tar.xz 101868452 BLAKE2B da9798596b124a10d79c236a871228f05e5f571d22c2259328e7026c91e088c85f5de9c0536a16531e0cb10477bfcd16d3ac11467979f5561cb6199442b877ef SHA512 099857f1d295043587a4e2a65ef3e6a90e12c8b6958e98535a1656c113c553f9a9b621aba8a19cf21bd8d2c79d27cbfa4b8e6fabbcb3cbfee23b545be7b450b4 -EBUILD rust-1.44.1.ebuild 14912 BLAKE2B 107391d3f6cbd0974c06398f7b9fec061cca9dd24ffd72ca903d5b9758edc630070b841a5973b0688ea17dc5afe95141874734bd365fa6d9fb283b97df7bf27e SHA512 78456cbe534f7735d3b2400f52ad07cd1a1dd3db5ae8c834d62f8744e4b4f5205d04b83d462d0a25a82f53158c19c7f625792d8c2cfbbdb63bc41f373b2ebf8f -EBUILD rust-1.45.2.ebuild 16608 BLAKE2B 8101d0952c5248d24f0b2cc2809e28526ae79aaacf2cab4d547c513f1d5d5e228af7aed0dbc9b47d0939b357c0952ea229dd05794b77bc62f63a8c8737238b68 SHA512 91807c1ac7af9da469c4ceeaeb04c2e9f24f9543dbfc704ba33c6c0010e45d06fd6828e0619ad10ec3b883dade7278930d5a545822b4c0793cb491c65df03183 -EBUILD rust-1.46.0.ebuild 16613 BLAKE2B 450bf4e179e90977d8cd659a5153662548fef31a250682ce9ed496aa9d72cadce3b4c1f2b5dc68dbef5e0a6b9176af1b2742f0bd918526f924d1cbedd7e7aca0 SHA512 8fc4238dddd6e7062ea92b214c1481eeed89fbf76c358b815a536e2705d2237695f2ce269f2414ad7829dff1297820da835ec8cc25fb7540ff7f3a4df1a3d48d +DIST rustc-1.47.0-src.tar.xz 104143736 BLAKE2B 0454094dde35275488046826da87655e51bf0795481d6d08fd70d644bfc12481bca8641166106ef32f20494906025244715b16ff21a1c023f4bd2818aab42521 SHA512 6ba83c0158f8130ddeae7e070417a2121d8a548c8fe97e28bce116d84048636c75aaee78e0c92cd43a50f5679a1223fc226cc8c5ba9bbd1465e84c5c6034d5c9 +DIST rustc-1.48.0-src.tar.xz 105951736 BLAKE2B 42468fc5ac5e80c4793cfe0913cbb8e43a8def28cc8cf5ed25ab989561e2bf33e155c83e180183362535cbc9008f341eb1273087a2364672b1a4032ac2d6ca45 SHA512 4e12baa6893238a8d336ec9ebe891477d18676f271b32763474fa7a6a8b58fb3187dd4e2aa95bce482989b692cc2e1360221669d6811eec71b326f22a1756c23 +EBUILD rust-1.45.2.ebuild 16637 BLAKE2B 2ac258af9db898a35dd43b7b270dd04cf0bd7b49e679932bf4a1b2185714f6fc038fc8a0fbf12967f23f252a48a5f11fc732214393f20aef0e6d7dece06521d4 SHA512 8263bac9451aabd3376a54863bd38c377ae445814b09c41860c2dd10a5fe900c8117678116c97df40f1b9ca8c6258334c750e4bde4698a260dfb86a34640e015 +EBUILD rust-1.46.0.ebuild 17326 BLAKE2B b43d06f2b122762ce157174cfe821d4d1c93e5050d982ae2a29b9fea8a14744fdea755b5e98f49d66a87d1736a6457172193f4ca7e01cedc3469018daf46d28e SHA512 d1ac91bd59796b6f4b136cddffd404dee48ad00bb9c72b6bd9992b0a9950924c3f65d4df66a59f27b5522b01a54141df4b707db7d285d10cd10b2d1581358fe2 +EBUILD rust-1.47.0-r1.ebuild 17276 BLAKE2B bb68f3ce972e53f596ec16183dc4cfcd8b9d399762124ab2727b294e45924e7fbb514f3dfbd9f3e22ae053d8a18b24f51c225de4dbdfe41f0e35665695bcb9ab SHA512 75019cd09a94d9f5db49b0eccdc7ed34b5fa3c60b6a67a98532fca86bdd4494611d4f8f3e075988edf4e75986ec2ccb2ccee9c74efffacdc590eedff8dc197da +EBUILD rust-1.47.0-r2.ebuild 18039 BLAKE2B c08c3884358c7200abd83da152244ab536fcb3b26731300c3d1dfbb53c10aabdeae9c4bed4e1beac45f9d62859f6289a394624efc906b1af5cc02c4d6e1532bc SHA512 5b98885cfc985d1002c280abf26afad0e7baec5dfa76e7d64dd5f147f312d4fedfee7acac02607d5c1eb3aa68903cac3b4e0f86e56d70c99b7d14c9f5b2bbfdc +EBUILD rust-1.48.0.ebuild 18058 BLAKE2B fa5f821c0ee5de00d9dea69e57c52345126c6ea794f15f6c3781e734cf1042334ba86182c6908ed702c5ff05d80e32018f2eb67f7ccdddc467dd09bf26ff5624 SHA512 4c801349ff26bcdc3a365d098ede87914a3d5aac4091ccbe9496b0b004c0c5eef421d73b556d088b5ffadbdab26751c98f2b25240af9e3b4e92172e502d07806 MISC metadata.xml 1083 BLAKE2B 7a7b093c22dcaef58bd67f9c2fd84a000696b234d2bc27315999bf6751cfd2a79441fd22efc284a542ecc84ce1a12ff9ca3495d249eaffa5bc1722b385c6109e SHA512 bfe8c140753e93db67244c92e9a7d193691ceb67de796c30a851966a1262bc5c897ead6e13d728775fa524215b6851609dcbee582022d9d75bb8d1e6fabc4ef4 diff --git a/dev-lang/rust/files/1.46.0-don-t-create-prefix-at-time-of-check.patch b/dev-lang/rust/files/1.46.0-don-t-create-prefix-at-time-of-check.patch new file mode 100644 index 000000000000..9064a52ac2d3 --- /dev/null +++ b/dev-lang/rust/files/1.46.0-don-t-create-prefix-at-time-of-check.patch @@ -0,0 +1,31 @@ +From 6b31232a9d32529e30765108f30365ac48587ce6 Mon Sep 17 00:00:00 2001 +From: Georgy Yakovlev <gyakovlev@gentoo.org> +Date: Thu, 8 Oct 2020 15:48:33 -0700 +Subject: [PATCH] don't create prefix at time of check + +--- + src/bootstrap/install.rs | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +diff --git a/src/bootstrap/install.rs b/src/bootstrap/install.rs +index d9ee3bc..c5da9ce 100644 +--- a/src/bootstrap/install.rs ++++ b/src/bootstrap/install.rs +@@ -73,12 +73,8 @@ fn install_sh( + let docdir_default = datadir_default.join("doc/rust"); + let libdir_default = PathBuf::from("lib"); + let mandir_default = datadir_default.join("man"); +- let prefix = builder.config.prefix.as_ref().map_or(prefix_default, |p| { +- fs::create_dir_all(p) +- .unwrap_or_else(|err| panic!("could not create {}: {}", p.display(), err)); +- fs::canonicalize(p) +- .unwrap_or_else(|err| panic!("could not canonicalize {}: {}", p.display(), err)) +- }); ++ ++ let prefix = builder.config.prefix.as_ref().unwrap_or(&prefix_default); + let sysconfdir = builder.config.sysconfdir.as_ref().unwrap_or(&sysconfdir_default); + let datadir = builder.config.datadir.as_ref().unwrap_or(&datadir_default); + let docdir = builder.config.docdir.as_ref().unwrap_or(&docdir_default); +-- +2.28.0 + diff --git a/dev-lang/rust/files/1.47.0-ignore-broken-and-non-applicable-tests.patch b/dev-lang/rust/files/1.47.0-ignore-broken-and-non-applicable-tests.patch new file mode 100644 index 000000000000..ff1707f4b8a4 --- /dev/null +++ b/dev-lang/rust/files/1.47.0-ignore-broken-and-non-applicable-tests.patch @@ -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 + diff --git a/dev-lang/rust/files/1.47.0-libressl.patch b/dev-lang/rust/files/1.47.0-libressl.patch new file mode 100644 index 000000000000..07ad0ebc5dc2 --- /dev/null +++ b/dev-lang/rust/files/1.47.0-libressl.patch @@ -0,0 +1,44 @@ +From 0493f57a9878fd4d92fc419358173fd31b95bda8 Mon Sep 17 00:00:00 2001 +From: Georgy Yakovlev <gyakovlev@gentoo.org> +Date: Sun, 11 Oct 2020 22:09:39 -0700 +Subject: [PATCH] Support LibreSSL 3.2.x + +Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org> +--- + vendor/openssl-sys/.cargo-checksum.json | 2 +- + vendor/openssl-sys/build/main.rs | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/vendor/openssl-sys/.cargo-checksum.json b/vendor/openssl-sys/.cargo-checksum.json +index 4c079f5..11beb6e 100644 +--- a/vendor/openssl-sys/.cargo-checksum.json ++++ b/vendor/openssl-sys/.cargo-checksum.json +@@ -1 +1 @@ +-{"files":{"CHANGELOG.md":"17531e8bd93e3bd9ada0d3b4e4d07508d316985a2cbe4df73186ba70d5971923","Cargo.toml":"b71de20a64dc4704f77b8cc8ea9f63e47f2d39f06696900077eefd93a17d16ec","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"949fb3913ec7f94229242978dfeee5e19261b6d7506fc91dcd153bb0d2a84895","build/cfgs.rs":"2b49fbdb045c40bd46bf7e7adfde8c45508e4b51af0080fb934eb1131863d75a","build/expando.c":"c4fa8a4424b2321f1857edfc5ce1ac1f03eda54440367d3142310c0eb5553004","build/find_normal.rs":"0742487bd3faa681232e812c5c96f0e5b83b485ba236a4efda1cd8f5a260b5eb","build/find_vendored.rs":"7bf0e59c5646d72ee5a4392ad970fdf5c20288ddaf54dd86a8caff49583b38f5","build/main.rs":"0d8b960ab71be4e2a08e3ff7e9615a17f7dddcd601b7fdd885bb6f6c5a6fe5f5","src/aes.rs":"822bf666db351fe6ef9607c918081d6ad378fc1cedb05290bb746f86980c6088","src/asn1.rs":"254025cb408dbeff73bee6d06325acba9042cb11db30bdad04eedfb789be84b3","src/bio.rs":"1f38a3ec4029511fecd7a51548965a265f3e7772891b5514e22bfb1d061b3a90","src/bn.rs":"c71b9c79f704a94a889d27bf75e7e5b1f9f10b0df0aeb485aef509cf05d7467f","src/cms.rs":"f21a403fea95e7b7efe0539a429831cfa51c8818adb79c7ebf73ae2a6f2dc87e","src/conf.rs":"511e008c18039f54d856d70b80009426fc7f4ce34fe4304e2c58ebf465031de0","src/crypto.rs":"a1279719ade9704be3d9af55ff679abbe918d525f332ca15810146d45e9080cf","src/dh.rs":"7cc334e86d16b3eae165dfa3a6c8e488bc0fe590c17beda38893d2e9d784d5a6","src/dsa.rs":"ae79baf231681900ea76304285b3ffacf5298c90b8c04d371269cf4adbb5b9fa","src/dtls1.rs":"45e1dbf94a42d587fd948d553dc30187aa6aa2b5b82d554cf725ff36df768aa0","src/ec.rs":"81372dfe497db2fc90457a470a3b8ccb249828b3ce2bf4fd2da8ec42afd6a6b3","src/err.rs":"3edf1379b3277df32e047a52553d243d4a4001111a277cf4b12f7297f2fe2bf0","src/evp.rs":"ae748b7d7a0f74eb21c2750bf571c09f99bb835f23436c247493a66c28fb5c6b","src/hmac.rs":"fa3976d94a1383f300bdec228270afb8b47c97bb019d727c7d59ba783be3c42e","src/lib.rs":"846f03332238caace3dade00a6c15b5ed1773edd601cc72dca2f1339d58b2b7f","src/macros.rs":"638fb9098f6024e82b331eeee50c64cefdb58456dba28ee42560be655a0c2bf6","src/obj_mac.rs":"7203d356f7654c5805600b823eccf8e1d9d9cbce9a01859938612a3f0aae4cdc","src/object.rs":"3e45fb025ccbd6a556aae9738ef8a3b11cc2655ffa9d8422be21699b2e45d6c4","src/ocsp.rs":"1db59566d2f072f7ae981f0c07e1604fcdf60e66845afe0689d588f8e4272115","src/ossl_typ.rs":"f00c3f88f7947f5d13698a2fc796c68eb1bd65b2686f661d29482021170db71f","src/pem.rs":"d3ae2748c53597c91aa1896f18844ccd9ce2dca1627662b8974330e5f1b3f36c","src/pkcs12.rs":"93aab2820008ad90dc346a7dcc02f9201d94bff0bb7d1d71031c097850287c50","src/pkcs7.rs":"5370c8d4bfbf1502fa33aff635cb730e7c87814580f1df9bdb1412a492377813","src/rand.rs":"469601b4fbb56d4dbf5cf5d7bb8483e3bde411edea18601e7d1ed6ef27180fd3","src/rsa.rs":"0e8c1f0bc37620a9208175542143bfd411ae88188974d2d5b37a2b8b77d0e2c8","src/safestack.rs":"6c39e28565d34efad707d77561d4caa99e3f028fcac3a2ef6fd403a78de1190c","src/sha.rs":"1a6b028a63654d2419417a9a8af790cd22409a4643682a0686ecdb9441264eba","src/srtp.rs":"306047f3f31828fe7d15de154b375f071ae07012a94c0b5c909f5fe57962a11b","src/ssl.rs":"bb9bcb4a3b96ce6919236f48dfc5e0ad66f1cef1dce7d989c778d6f28ee6403b","src/ssl3.rs":"9336c816e00847d552dea22587d4ac72ff3cbd469fa5ff750423a19ea11e68eb","src/stack.rs":"1a509907283e5a2bf88cf193ce607f49ce7d2d95547c2ce2abc0fd4567aad334","src/tls1.rs":"60ca3dea1bbfda645bde563b4a878dac129c3f760e3ad572381000fc7a8ef522","src/x509.rs":"31ad553ece8fbb1fda6d8cf43ea0895863f961b6e1171ed05063134d3892f5cc","src/x509_vfy.rs":"5609f6300ab37a4d4755c81f7af1e6bb93a2f1a6f333c6e42f1e73ebf83ddc05","src/x509v3.rs":"30c58ce7d80670cc597d041e0f59862c1100e38743fc9dde2aec6dc811a4a558"},"package":"a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de"} +\ No newline at end of file ++{"files":{"CHANGELOG.md":"17531e8bd93e3bd9ada0d3b4e4d07508d316985a2cbe4df73186ba70d5971923","Cargo.toml":"b71de20a64dc4704f77b8cc8ea9f63e47f2d39f06696900077eefd93a17d16ec","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"949fb3913ec7f94229242978dfeee5e19261b6d7506fc91dcd153bb0d2a84895","build/cfgs.rs":"2b49fbdb045c40bd46bf7e7adfde8c45508e4b51af0080fb934eb1131863d75a","build/expando.c":"c4fa8a4424b2321f1857edfc5ce1ac1f03eda54440367d3142310c0eb5553004","build/find_normal.rs":"0742487bd3faa681232e812c5c96f0e5b83b485ba236a4efda1cd8f5a260b5eb","build/find_vendored.rs":"7bf0e59c5646d72ee5a4392ad970fdf5c20288ddaf54dd86a8caff49583b38f5","build/main.rs":"16dadcb59a2e9f7b4c7f4d6731530533f52df6af9dcc1877bcdad52a5d403385","src/aes.rs":"822bf666db351fe6ef9607c918081d6ad378fc1cedb05290bb746f86980c6088","src/asn1.rs":"254025cb408dbeff73bee6d06325acba9042cb11db30bdad04eedfb789be84b3","src/bio.rs":"1f38a3ec4029511fecd7a51548965a265f3e7772891b5514e22bfb1d061b3a90","src/bn.rs":"c71b9c79f704a94a889d27bf75e7e5b1f9f10b0df0aeb485aef509cf05d7467f","src/cms.rs":"f21a403fea95e7b7efe0539a429831cfa51c8818adb79c7ebf73ae2a6f2dc87e","src/conf.rs":"511e008c18039f54d856d70b80009426fc7f4ce34fe4304e2c58ebf465031de0","src/crypto.rs":"a1279719ade9704be3d9af55ff679abbe918d525f332ca15810146d45e9080cf","src/dh.rs":"7cc334e86d16b3eae165dfa3a6c8e488bc0fe590c17beda38893d2e9d784d5a6","src/dsa.rs":"ae79baf231681900ea76304285b3ffacf5298c90b8c04d371269cf4adbb5b9fa","src/dtls1.rs":"45e1dbf94a42d587fd948d553dc30187aa6aa2b5b82d554cf725ff36df768aa0","src/ec.rs":"81372dfe497db2fc90457a470a3b8ccb249828b3ce2bf4fd2da8ec42afd6a6b3","src/err.rs":"3edf1379b3277df32e047a52553d243d4a4001111a277cf4b12f7297f2fe2bf0","src/evp.rs":"ae748b7d7a0f74eb21c2750bf571c09f99bb835f23436c247493a66c28fb5c6b","src/hmac.rs":"fa3976d94a1383f300bdec228270afb8b47c97bb019d727c7d59ba783be3c42e","src/lib.rs":"846f03332238caace3dade00a6c15b5ed1773edd601cc72dca2f1339d58b2b7f","src/macros.rs":"638fb9098f6024e82b331eeee50c64cefdb58456dba28ee42560be655a0c2bf6","src/obj_mac.rs":"7203d356f7654c5805600b823eccf8e1d9d9cbce9a01859938612a3f0aae4cdc","src/object.rs":"3e45fb025ccbd6a556aae9738ef8a3b11cc2655ffa9d8422be21699b2e45d6c4","src/ocsp.rs":"1db59566d2f072f7ae981f0c07e1604fcdf60e66845afe0689d588f8e4272115","src/ossl_typ.rs":"f00c3f88f7947f5d13698a2fc796c68eb1bd65b2686f661d29482021170db71f","src/pem.rs":"d3ae2748c53597c91aa1896f18844ccd9ce2dca1627662b8974330e5f1b3f36c","src/pkcs12.rs":"93aab2820008ad90dc346a7dcc02f9201d94bff0bb7d1d71031c097850287c50","src/pkcs7.rs":"5370c8d4bfbf1502fa33aff635cb730e7c87814580f1df9bdb1412a492377813","src/rand.rs":"469601b4fbb56d4dbf5cf5d7bb8483e3bde411edea18601e7d1ed6ef27180fd3","src/rsa.rs":"0e8c1f0bc37620a9208175542143bfd411ae88188974d2d5b37a2b8b77d0e2c8","src/safestack.rs":"6c39e28565d34efad707d77561d4caa99e3f028fcac3a2ef6fd403a78de1190c","src/sha.rs":"1a6b028a63654d2419417a9a8af790cd22409a4643682a0686ecdb9441264eba","src/srtp.rs":"306047f3f31828fe7d15de154b375f071ae07012a94c0b5c909f5fe57962a11b","src/ssl.rs":"bb9bcb4a3b96ce6919236f48dfc5e0ad66f1cef1dce7d989c778d6f28ee6403b","src/ssl3.rs":"9336c816e00847d552dea22587d4ac72ff3cbd469fa5ff750423a19ea11e68eb","src/stack.rs":"1a509907283e5a2bf88cf193ce607f49ce7d2d95547c2ce2abc0fd4567aad334","src/tls1.rs":"60ca3dea1bbfda645bde563b4a878dac129c3f760e3ad572381000fc7a8ef522","src/x509.rs":"31ad553ece8fbb1fda6d8cf43ea0895863f961b6e1171ed05063134d3892f5cc","src/x509_vfy.rs":"5609f6300ab37a4d4755c81f7af1e6bb93a2f1a6f333c6e42f1e73ebf83ddc05","src/x509v3.rs":"30c58ce7d80670cc597d041e0f59862c1100e38743fc9dde2aec6dc811a4a558"},"package":"a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de"} +diff --git a/vendor/openssl-sys/build/main.rs b/vendor/openssl-sys/build/main.rs +index 49f26d2..2de8ea5 100644 +--- a/vendor/openssl-sys/build/main.rs ++++ b/vendor/openssl-sys/build/main.rs +@@ -220,7 +220,7 @@ See rust-openssl README for more information: + (3, 0, _) => ('3', '0', 'x'), + (3, 1, 0) => ('3', '1', '0'), + (3, 1, _) => ('3', '1', 'x'), +- (3, 2, 0) => ('3', '2', '0'), ++ (3, 2, _) => ('3', '2', 'x'), + _ => version_error(), + }; + +@@ -261,7 +261,7 @@ fn version_error() -> ! { + " + + This crate is only compatible with OpenSSL 1.0.1 through 1.1.1, or LibreSSL 2.5 +-through 3.2.0, but a different version of OpenSSL was found. The build is now aborting ++through 3.2.x, but a different version of OpenSSL was found. The build is now aborting + due to this version mismatch. + + " +-- +2.28.0 + diff --git a/dev-lang/rust/files/1.47.0-llvm-tensorflow-fix.patch b/dev-lang/rust/files/1.47.0-llvm-tensorflow-fix.patch new file mode 100644 index 000000000000..5b12c15ff40e --- /dev/null +++ b/dev-lang/rust/files/1.47.0-llvm-tensorflow-fix.patch @@ -0,0 +1,55 @@ +From 8dcb88f7705fb3927938dd9bd103efcabafcefb0 Mon Sep 17 00:00:00 2001 +From: Georgy Yakovlev <gyakovlev@gentoo.org> +Date: Tue, 27 Oct 2020 18:20:56 -0700 +Subject: [PATCH] backport D88371, guard `find_library(tensorflow_c_api ...)` + +Differential Revision: https://reviews.llvm.org/D88371 +Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org> +--- + src/llvm-project/llvm/CMakeLists.txt | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +diff --git a/src/llvm-project/llvm/CMakeLists.txt b/src/llvm-project/llvm/CMakeLists.txt +index 1f137f0..4112def 100644 +--- a/src/llvm-project/llvm/CMakeLists.txt ++++ b/src/llvm-project/llvm/CMakeLists.txt +@@ -832,6 +832,11 @@ configure_file( + ${LLVM_INCLUDE_DIR}/llvm/Config/Targets.def + ) + ++# They are not referenced. See set_output_directory(). ++set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/bin ) ++set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} ) ++set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} ) ++ + # For up-to-date instructions for installing the Tensorflow dependency, refer to + # the bot setup script: https://github.com/google/ml-compiler-opt/blob/master/buildbot/buildbot_init.sh + # In this case, the latest C API library is available for download from +@@ -840,9 +845,9 @@ configure_file( + # LLVM_HAVE_TF_API, through llvm-config.h, so that a user of the LLVM library may + # also leverage the dependency. + set(TENSORFLOW_C_LIB_PATH "" CACHE PATH "Path to TensorFlow C library install") +-find_library(tensorflow_c_api tensorflow PATHS ${TENSORFLOW_C_LIB_PATH}/lib) + +-if (tensorflow_c_api) ++if (TENSORFLOW_C_LIB_PATH) ++ find_library(tensorflow_c_api tensorflow PATHS ${TENSORFLOW_C_LIB_PATH}/lib NO_DEFAULT_PATH REQUIRED) + set(LLVM_HAVE_TF_API "ON" CACHE BOOL "Full Tensorflow API available") + include_directories(${TENSORFLOW_C_LIB_PATH}/include) + endif() +@@ -877,12 +882,6 @@ add_custom_target(srpm + COMMAND rpmbuild -bs --define '_topdir ${LLVM_SRPM_DIR}' ${LLVM_SRPM_BINARY_SPECFILE}) + set_target_properties(srpm PROPERTIES FOLDER "Misc") + +- +-# They are not referenced. See set_output_directory(). +-set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/bin ) +-set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} ) +-set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} ) +- + if(APPLE AND DARWIN_LTO_LIBRARY) + set(CMAKE_EXE_LINKER_FLAGS + "${CMAKE_EXE_LINKER_FLAGS} -Wl,-lto_library -Wl,${DARWIN_LTO_LIBRARY}") +-- +2.26.2 + diff --git a/dev-lang/rust/files/1.48.0-gentoo-musl-target-specs.patch b/dev-lang/rust/files/1.48.0-gentoo-musl-target-specs.patch new file mode 100644 index 000000000000..850257f932ea --- /dev/null +++ b/dev-lang/rust/files/1.48.0-gentoo-musl-target-specs.patch @@ -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::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::aarch64_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "aarch64-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(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::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::armv7_unknown_linux_musleabihf::target()?; ++ ++ base.llvm_target = "armv7-gentoo-linux-musleabihf".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(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::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::i686_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "i686-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(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::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::powerpc64_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "powerpc64-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(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::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::powerpc64le_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "powerpc64le-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(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::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::powerpc_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "powerpc-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(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::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::x86_64_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "x86_64-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +-- +2.29.2 + diff --git a/dev-lang/rust/files/gentoo-musl-target-specs.patch b/dev-lang/rust/files/gentoo-musl-target-specs.patch new file mode 100644 index 000000000000..0661a26841b7 --- /dev/null +++ b/dev-lang/rust/files/gentoo-musl-target-specs.patch @@ -0,0 +1,168 @@ +From 9fb44efd4a6270443ca2a06a098c83cf9820cc8b Mon Sep 17 00:00:00 2001 +From: Georgy Yakovlev <gyakovlev@gentoo.org> +Date: Thu, 8 Oct 2020 22:38:54 -0700 +Subject: [PATCH] add gentoo musl target specs + +Directly based on patch by Samuel Holland <samuel@sholland.org> +Found at: https://github.com/smaeul/portage-overlay/blob/master/dev-lang/rust/files/ + +Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org> +--- + src/librustc_target/spec/aarch64_gentoo_linux_musl.rs | 11 +++++++++++ + .../spec/armv7_gentoo_linux_musleabihf.rs | 11 +++++++++++ + src/librustc_target/spec/i686_gentoo_linux_musl.rs | 11 +++++++++++ + src/librustc_target/spec/mod.rs | 8 ++++++++ + .../spec/powerpc64_gentoo_linux_musl.rs | 11 +++++++++++ + .../spec/powerpc64le_gentoo_linux_musl.rs | 11 +++++++++++ + src/librustc_target/spec/powerpc_gentoo_linux_musl.rs | 11 +++++++++++ + src/librustc_target/spec/x86_64_gentoo_linux_musl.rs | 11 +++++++++++ + 8 files changed, 85 insertions(+) + create mode 100644 src/librustc_target/spec/aarch64_gentoo_linux_musl.rs + create mode 100644 src/librustc_target/spec/armv7_gentoo_linux_musleabihf.rs + create mode 100644 src/librustc_target/spec/i686_gentoo_linux_musl.rs + create mode 100644 src/librustc_target/spec/powerpc64_gentoo_linux_musl.rs + create mode 100644 src/librustc_target/spec/powerpc64le_gentoo_linux_musl.rs + create mode 100644 src/librustc_target/spec/powerpc_gentoo_linux_musl.rs + create mode 100644 src/librustc_target/spec/x86_64_gentoo_linux_musl.rs + +diff --git a/src/librustc_target/spec/aarch64_gentoo_linux_musl.rs b/src/librustc_target/spec/aarch64_gentoo_linux_musl.rs +new file mode 100644 +index 0000000..420fe7c +--- /dev/null ++++ b/src/librustc_target/spec/aarch64_gentoo_linux_musl.rs +@@ -0,0 +1,11 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::aarch64_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "aarch64-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/armv7_gentoo_linux_musleabihf.rs b/src/librustc_target/spec/armv7_gentoo_linux_musleabihf.rs +new file mode 100644 +index 0000000..067e2d6 +--- /dev/null ++++ b/src/librustc_target/spec/armv7_gentoo_linux_musleabihf.rs +@@ -0,0 +1,11 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::armv7_unknown_linux_musleabihf::target()?; ++ ++ base.llvm_target = "armv7-gentoo-linux-musleabihf".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/i686_gentoo_linux_musl.rs b/src/librustc_target/spec/i686_gentoo_linux_musl.rs +new file mode 100644 +index 0000000..1cd39cd +--- /dev/null ++++ b/src/librustc_target/spec/i686_gentoo_linux_musl.rs +@@ -0,0 +1,11 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::i686_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "i686-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs +index fa29ff3..a685600 100644 +--- a/src/librustc_target/spec/mod.rs ++++ b/src/librustc_target/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/src/librustc_target/spec/powerpc64_gentoo_linux_musl.rs b/src/librustc_target/spec/powerpc64_gentoo_linux_musl.rs +new file mode 100644 +index 0000000..e840bb2 +--- /dev/null ++++ b/src/librustc_target/spec/powerpc64_gentoo_linux_musl.rs +@@ -0,0 +1,11 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::powerpc64_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "powerpc64-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/powerpc64le_gentoo_linux_musl.rs b/src/librustc_target/spec/powerpc64le_gentoo_linux_musl.rs +new file mode 100644 +index 0000000..1037d82 +--- /dev/null ++++ b/src/librustc_target/spec/powerpc64le_gentoo_linux_musl.rs +@@ -0,0 +1,11 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::powerpc64le_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "powerpc64le-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/powerpc_gentoo_linux_musl.rs b/src/librustc_target/spec/powerpc_gentoo_linux_musl.rs +new file mode 100644 +index 0000000..a623ffe +--- /dev/null ++++ b/src/librustc_target/spec/powerpc_gentoo_linux_musl.rs +@@ -0,0 +1,11 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::powerpc_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "powerpc-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +diff --git a/src/librustc_target/spec/x86_64_gentoo_linux_musl.rs b/src/librustc_target/spec/x86_64_gentoo_linux_musl.rs +new file mode 100644 +index 0000000..f330473 +--- /dev/null ++++ b/src/librustc_target/spec/x86_64_gentoo_linux_musl.rs +@@ -0,0 +1,11 @@ ++use crate::spec::TargetResult; ++ ++pub fn target() -> TargetResult { ++ let mut base = super::x86_64_unknown_linux_musl::target()?; ++ ++ base.llvm_target = "x86_64-gentoo-linux-musl".to_string(); ++ base.target_vendor = "gentoo".to_string(); ++ base.options.crt_static_default = false; ++ ++ Ok(base) ++} +-- +2.28.0 + diff --git a/dev-lang/rust/rust-1.45.2.ebuild b/dev-lang/rust/rust-1.45.2.ebuild index 0bc210cd77e7..022e6bc56ca6 100644 --- a/dev-lang/rust/rust-1.45.2.ebuild +++ b/dev-lang/rust/rust-1.45.2.ebuild @@ -3,7 +3,7 @@ EAPI=7 -PYTHON_COMPAT=( python3_{6,7,8} ) +PYTHON_COMPAT=( python3_{6..9} ) inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing multilib-build python-any-r1 rust-toolchain toolchain-funcs @@ -12,7 +12,7 @@ if [[ ${PV} = *beta* ]]; then 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" + SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz" else ABI_VER="$(ver_cut 1-2)" SLOT="stable/${ABI_VER}" @@ -27,7 +27,7 @@ DESCRIPTION="Systems programming language from Mozilla" HOMEPAGE="https://www.rust-lang.org/" SRC_URI=" - https://static.rust-lang.org/dist/${SRC} -> rustc-${PV}-src.tar.xz + https://static.rust-lang.org/dist/${SRC} !system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) ) " @@ -131,6 +131,7 @@ toml_usex() { boostrap_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_version=( $(eselect --brief rust show 2>/dev/null) ) rustc_version=${rustc_version[0]#rust-bin-} @@ -522,7 +523,7 @@ src_install() { } pkg_postinst() { - eselect rust update --if-unset + eselect rust update 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}." diff --git a/dev-lang/rust/rust-1.46.0.ebuild b/dev-lang/rust/rust-1.46.0.ebuild index 68cc5bb4cb29..3be34e81fda6 100644 --- a/dev-lang/rust/rust-1.46.0.ebuild +++ b/dev-lang/rust/rust-1.46.0.ebuild @@ -3,7 +3,7 @@ EAPI=7 -PYTHON_COMPAT=( python3_{6,7,8} ) +PYTHON_COMPAT=( python3_{6..9} ) inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing multilib-build python-any-r1 rust-toolchain toolchain-funcs @@ -12,13 +12,13 @@ if [[ ${PV} = *beta* ]]; then 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" + 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 ~ppc64 ~x86" + KEYWORDS="amd64 arm arm64 ppc64 x86" fi RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).1" @@ -27,7 +27,7 @@ DESCRIPTION="Systems programming language from Mozilla" HOMEPAGE="https://www.rust-lang.org/" SRC_URI=" - https://static.rust-lang.org/dist/${SRC} -> rustc-${PV}-src.tar.xz + https://static.rust-lang.org/dist/${SRC} !system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) ) " @@ -114,8 +114,7 @@ QA_SONAME=" usr/lib.*/${P}/rustlib/.*/lib/lib.*.so.* " -# tests need a bit more work, currently they are causing multiple -# re-compilations and somewhat fragile. +# still disabled, almost ready to enable RESTRICT="test" PATCHES=( @@ -131,6 +130,7 @@ toml_usex() { boostrap_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_version=( $(eselect --brief rust show 2>/dev/null) ) rustc_version=${rustc_version[0]#rust-bin-} @@ -419,19 +419,55 @@ src_compile() { } src_test() { - 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 \ - src/test/codegen \ - src/test/codegen-units \ - src/test/compile-fail \ - src/test/incremental \ - src/test/mir-opt \ - src/test/pretty \ - src/test/run-fail \ - src/test/run-make \ - src/test/run-make-fulldeps \ - src/test/ui \ - src/test/ui-fulldeps || die + # 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. + # use system-llvm || tests+=( assembly ) + + # fragile/expensive/less important tests + # or tests that require extra build time + # 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 ! nonfatal 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" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi } src_install() { @@ -478,7 +514,7 @@ src_install() { rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) mkdir -p "${ED}/usr/${abi_libdir}/${P}" cp "${ED}/usr/$(get_libdir)/${P}/rustlib/${rust_target}/lib"/*.so \ - "${ED}/usr/${abi_libdir}/${P}" || die + "${ED}/usr/${abi_libdir}/${P}" || die done # versioned libdir/mandir support @@ -522,7 +558,7 @@ src_install() { } pkg_postinst() { - eselect rust update --if-unset + eselect rust update 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}." diff --git a/dev-lang/rust/rust-1.44.1.ebuild b/dev-lang/rust/rust-1.47.0-r1.ebuild index 3ddcdaa9ee15..3b09bae51840 100644 --- a/dev-lang/rust/rust-1.44.1.ebuild +++ b/dev-lang/rust/rust-1.47.0-r1.ebuild @@ -3,7 +3,7 @@ EAPI=7 -PYTHON_COMPAT=( python3_{6,7,8} ) +PYTHON_COMPAT=( python3_{6..9} ) inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing multilib-build python-any-r1 rust-toolchain toolchain-funcs @@ -12,33 +12,34 @@ if [[ ${PV} = *beta* ]]; then 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" + 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 ppc64 x86" + KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86" fi -RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).1" +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} -> rustc-${PV}-src.tar.xz + https://static.rust-lang.org/dist/${SRC} !system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) ) " -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430 +# keep in sync with llvm ebuild of the same version as bundled one. +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-1 BSD-2 BSD-4 UoI-NCSA" -IUSE="clippy cpu_flags_x86_sse2 debug doc libressl miri nightly parallel-compiler rls rustfmt system-bootstrap system-llvm wasm ${ALL_LLVM_TARGETS[*]}" +IUSE="clippy cpu_flags_x86_sse2 debug doc libressl miri nightly parallel-compiler rls rustfmt +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 @@ -46,78 +47,83 @@ IUSE="clippy cpu_flags_x86_sse2 debug doc libressl miri nightly parallel-compile # How to use it: # 1. List all the working slots (with min versions) in ||, newest first. -# 2. Update the := to specify *max* version, e.g. < 11. -# 3. Specify LLVM_MAX_SLOT, e.g. 10. +# 2. Update the := to specify *max* version, e.g. < 12. +# 3. Specify LLVM_MAX_SLOT, e.g. 11. LLVM_DEPEND=" || ( - sys-devel/llvm:10[${LLVM_TARGET_USEDEPS// /,}] - sys-devel/llvm:9[${LLVM_TARGET_USEDEPS// /,}] + sys-devel/llvm:11[${LLVM_TARGET_USEDEPS// /,}] ) - <sys-devel/llvm-11:= + <sys-devel/llvm-12:= wasm? ( sys-devel/lld ) " -LLVM_MAX_SLOT=10 +LLVM_MAX_SLOT=11 BOOTSTRAP_DEPEND="|| ( >=dev-lang/rust-1.$(($(ver_cut 2) - 1)) >=dev-lang/rust-bin-1.$(($(ver_cut 2) - 1)) )" +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=sys-devel/clang-3.5 + ) + system-bootstrap? ( ${BOOTSTRAP_DEPEND} ) + !system-llvm? ( + dev-util/cmake + dev-util/ninja + ) +" + # libgit2 should be at least same as bundled into libgit-sys #707746 -COMMON_DEPEND=" +DEPEND=" >=dev-libs/libgit2-0.99:= net-libs/libssh2:= net-libs/http-parser:= - net-misc/curl:=[ssl] + net-misc/curl:=[http2,ssl] sys-libs/zlib:= !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) - elibc_musl? ( sys-libs/libunwind ) + elibc_musl? ( sys-libs/libunwind:= ) system-llvm? ( ${LLVM_DEPEND} ) " -DEPEND="${COMMON_DEPEND} - ${PYTHON_DEPS} - || ( - >=sys-devel/gcc-4.7 - >=sys-devel/clang-3.5 - ) - system-bootstrap? ( ${BOOTSTRAP_DEPEND} ) - !system-llvm? ( - dev-util/cmake - dev-util/ninja - ) -" - -RDEPEND="${COMMON_DEPEND} - >=app-eselect/eselect-rust-20190311 +RDEPEND="${DEPEND} + app-eselect/eselect-rust " REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) miri? ( nightly ) parallel-compiler? ( nightly ) + test? ( ${ALL_LLVM_TARGETS[*]} ) wasm? ( llvm_targets_WebAssembly ) x86? ( cpu_flags_x86_sse2 ) " +# we don't use cmake.eclass, but can get a warnings +CMAKE_WARN_UNUSED_CLI=no + QA_FLAGS_IGNORED=" - usr/bin/.*-${PV} - usr/lib.*/lib.*.so - usr/lib/rustlib/.*/codegen-backends/librustc_codegen_llvm-llvm.so - usr/lib/rustlib/.*/lib/lib.*.so + usr/lib/${PN}/${PV}/bin/.* + 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.*/lib.*.so - usr/lib.*/librustc_macros.*.s + usr/lib/${PN}/${PV}/lib/lib.*.so.* + usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so " -# tests need a bit more work, currently they are causing multiple -# re-compilations and somewhat fragile. +# causes double bootstrap RESTRICT="test" PATCHES=( - "${FILESDIR}"/0012-Ignore-broken-and-non-applicable-tests.patch - "${FILESDIR}"/1.44.0-libressl.patch + "${FILESDIR}"/1.47.0-libressl.patch + "${FILESDIR}"/1.46.0-don-t-create-prefix-at-time-of-check.patch + "${FILESDIR}"/1.47.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.47.0-llvm-tensorflow-fix.patch + "${FILESDIR}"/gentoo-musl-target-specs.patch ) S="${WORKDIR}/${MY_P}-src" @@ -126,14 +132,42 @@ toml_usex() { usex "$1" true false } +boostrap_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_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 rustc version!" + + 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 + else + einfo "Using rust ${rustc_version} to build" + fi +} + pre_build_checks() { - CHECKREQS_DISK_BUILD="9G" + local M=6144 + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rls 512 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + M=$(( $(usex system-llvm 0 2048) + ${M} )) + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 15 10) * ${M} / 10 )) eshopts_push -s extglob if is-flagq '-g?(gdb)?([1-9])'; then - CHECKREQS_DISK_BUILD="15G" + M=$(( 15 * ${M} / 10 )) fi eshopts_pop - check-reqs_pkg_setup + M=$(( $(usex system-bootstrap 0 1024) + ${M} )) + M=$(( $(usex doc 256 0) + ${M} )) + CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE} } pkg_pretend() { @@ -143,6 +177,7 @@ pkg_pretend() { pkg_setup() { pre_build_checks python-any-r1_pkg_setup + use system-bootstrap && boostrap_rust_version_check # required to link agains system libs, otherwise # crates use bundled sources and compile own static version @@ -212,7 +247,7 @@ src_configure() { rust_target="$(rust_abi)" - cat <<- EOF > "${S}"/config.toml + cat <<- _EOF_ > "${S}"/config.toml [llvm] optimize = $(toml_usex !debug) release-debuginfo = $(toml_usex debug) @@ -240,11 +275,15 @@ src_configure() { profiler = false cargo-native-static = false [install] - prefix = "${EPREFIX}/usr" + prefix = "${EPREFIX}/usr/lib/${PN}/${PV}" + sysconfdir = "etc" + docdir = "share/doc/rust" + bindir = "bin" libdir = "lib" - docdir = "share/doc/${PF}" 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) @@ -259,48 +298,49 @@ src_configure() { optimize-tests = $(toml_usex !debug) codegen-tests = true dist-src = false + remap-debuginfo = true lld = $(usex system-llvm false $(toml_usex wasm)) backtrace-on-ice = true jemalloc = false [dist] src-tarball = false - EOF + _EOF_ for v in $(multilib_get_enabled_abi_pairs); do rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) arch_cflags="$(get_abi_CFLAGS ${v##*.})" - cat <<- EOF >> "${S}"/config.env + cat <<- _EOF_ >> "${S}"/config.env CFLAGS_${rust_target}=${arch_cflags} - EOF + _EOF_ - cat <<- EOF >> "${S}"/config.toml + cat <<- _EOF_ >> "${S}"/config.toml [target.${rust_target}] cc = "$(tc-getBUILD_CC)" cxx = "$(tc-getBUILD_CXX)" linker = "$(tc-getCC)" ar = "$(tc-getAR)" - EOF + _EOF_ # librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true; if use elibc_musl; then - cat <<- EOF >> "${S}"/config.toml + cat <<- _EOF_ >> "${S}"/config.toml crt-static = false - EOF + _EOF_ fi if use system-llvm; then - cat <<- EOF >> "${S}"/config.toml + cat <<- _EOF_ >> "${S}"/config.toml llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" - EOF + _EOF_ fi done if use wasm; then - cat <<- EOF >> "${S}"/config.toml + cat <<- _EOF_ >> "${S}"/config.toml [target.wasm32-unknown-unknown] linker = "$(usex system-llvm lld rust-lld)" - EOF + _EOF_ fi - if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then #whitespace intentionally shifted below + 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 @@ -340,17 +380,17 @@ src_configure() { 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 + cat <<- _EOF_ >> "${S}"/config.toml [target.${cross_rust_target}] cc = "${cross_toolchain}-gcc" cxx = "${cross_toolchain}-g++" linker = "${cross_toolchain}-gcc" ar = "${cross_toolchain}-ar" - EOF + _EOF_ if use system-llvm; then - cat <<- EOF >> "${S}"/config.toml + cat <<- _EOF_ >> "${S}"/config.toml llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" - EOF + _EOF_ fi # append cross target to "normal" target list @@ -361,7 +401,7 @@ src_configure() { sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die ewarn - ewarn "Enabled ${rust_target} rust target" + ewarn "Enabled ${cross_rust_target} rust target" ewarn "Using ${cross_toolchain} cross toolchain" ewarn if ! has_version -b 'sys-devel/binutils[multitarget]' ; then @@ -382,77 +422,139 @@ src_configure() { } src_compile() { + # 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 + "${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die + ) } src_test() { - 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 \ - src/test/codegen \ - src/test/codegen-units \ - src/test/compile-fail \ - src/test/incremental \ - src/test/mir-opt \ - src/test/pretty \ - src/test/run-fail \ - src/test/run-make \ - src/test/run-make-fulldeps \ - src/test/ui \ - src/test/ui-fulldeps || die + # 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 ! ( + 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" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi } src_install() { + # https://github.com/rust-lang/rust/issues/77721 + # also 1.46.0-don-t-create-prefix-at-time-of-check.patch + dodir "/usr/lib/${PN}/${PV}" + ( + IFS=$'\n' env $(cat "${S}"/config.env) DESTDIR="${D}" \ "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml || die + ) # bug #689562, #689160 - rm "${D}/etc/bash_completion.d/cargo" || die - rmdir "${D}"/etc{/bash_completion.d,} || die + rm -v "${D}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${D}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die dobashcomp build/tmp/dist/cargo-image/etc/bash_completion.d/cargo - mv "${ED}/usr/bin/rustc" "${ED}/usr/bin/rustc-${PV}" || die - mv "${ED}/usr/bin/rustdoc" "${ED}/usr/bin/rustdoc-${PV}" || die - mv "${ED}/usr/bin/rust-gdb" "${ED}/usr/bin/rust-gdb-${PV}" || die - mv "${ED}/usr/bin/rust-gdbgui" "${ED}/usr/bin/rust-gdbgui-${PV}" || die - mv "${ED}/usr/bin/rust-lldb" "${ED}/usr/bin/rust-lldb-${PV}" || die - mv "${ED}/usr/bin/cargo" "${ED}/usr/bin/cargo-${PV}" || die - if use clippy; then - mv "${ED}/usr/bin/clippy-driver" "${ED}/usr/bin/clippy-driver-${PV}" || die - mv "${ED}/usr/bin/cargo-clippy" "${ED}/usr/bin/cargo-clippy-${PV}" || die - fi - if use miri; then - mv "${ED}/usr/bin/miri" "${ED}/usr/bin/miri-${PV}" || die - mv "${ED}/usr/bin/cargo-miri" "${ED}/usr/bin/cargo-miri-${PV}" || die - fi - if use rls; then - mv "${ED}/usr/bin/rls" "${ED}/usr/bin/rls-${PV}" || die - fi - if use rustfmt; then - mv "${ED}/usr/bin/rustfmt" "${ED}/usr/bin/rustfmt-${PV}" || die - mv "${ED}/usr/bin/cargo-fmt" "${ED}/usr/bin/cargo-fmt-${PV}" || die - fi + local symlinks=( + cargo + rustc + rustdoc + rust-gdb + rust-gdbgui + rust-lldb + ) - # Move public shared libs to abi specific libdir - # Private and target specific libs MUST stay in /usr/lib/rustlib/${rust_target}/lib - if [[ $(get_libdir) != lib ]]; then - dodir /usr/$(get_libdir) - mv "${ED}/usr/lib"/*.so "${ED}/usr/$(get_libdir)/" || die - fi + use clippy && symlinks+=( clippy-driver cargo-clippy ) + use miri && symlinks+=( miri cargo-miri ) + use rls && symlinks+=( rls ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + + einfo "installing eselect-rust symlinks and paths" + local i + for i in "${symlinks[@]}"; do + # we need realpath on /usr/bin/* symlink return version-appended binary path. + # so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver> + # need to fix eselect-rust to remove this hack. + local ver_i="${i}-${PV}" + mv -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die + ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" "${ED}/usr/lib/${PN}/${PV}/bin/${i}" || die + 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}/share/man" "/usr/lib/${PN}/man-${PV}" + dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}" + dosym "../../lib/${PN}/${PV}/share/doc" "/usr/share/doc/${P}" + + newenvd - "50${P}" <<-_EOF_ + LDPATH="${EPREFIX}/usr/lib/rust/lib" + MANPATH="${EPREFIX}/usr/lib/rust/man" + $(usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '') + _EOF_ - dodoc COPYRIGHT - rm "${ED}/usr/share/doc/${P}"/*.old || die - rm "${ED}/usr/share/doc/${P}/LICENSE-APACHE" || die - rm "${ED}/usr/share/doc/${P}/LICENSE-MIT" || die + rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.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}" + cat <<-_EOF_ > "${T}/provider-${P}" /usr/bin/cargo /usr/bin/rustdoc /usr/bin/rust-gdb /usr/bin/rust-gdbgui /usr/bin/rust-lldb - EOF + /usr/lib/rustlib + /usr/lib/rust/lib + /usr/lib/rust/man + /usr/share/doc/rust + _EOF_ + if use clippy; then echo /usr/bin/clippy-driver >> "${T}/provider-${P}" echo /usr/bin/cargo-clippy >> "${T}/provider-${P}" @@ -474,7 +576,7 @@ src_install() { } pkg_postinst() { - eselect rust update --if-unset + eselect rust update 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}." @@ -486,15 +588,6 @@ pkg_postinst() { 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 - - if use elibc_musl; then - ewarn "${PN} on *-musl targets is configured with crt-static" - ewarn "" - ewarn "you will need to set RUSTFLAGS=\"-C target-feature=-crt-static\" in make.conf" - ewarn "to use it with portage, otherwise you may see failures like" - ewarn "error: cannot produce proc-macro for serde_derive v1.0.98 as the target " - ewarn "x86_64-unknown-linux-musl does not support these crate types" - fi } pkg_postrm() { diff --git a/dev-lang/rust/rust-1.47.0-r2.ebuild b/dev-lang/rust/rust-1.47.0-r2.ebuild new file mode 100644 index 000000000000..a58598ac159d --- /dev/null +++ b/dev-lang/rust/rust-1.47.0-r2.ebuild @@ -0,0 +1,615 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6..9} ) + +inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing multilib-build python-any-r1 rust-toolchain toolchain-funcs + +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 ~ppc64 ~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} + !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 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-1 BSD-2 BSD-4 UoI-NCSA" + +IUSE="clippy cpu_flags_x86_sse2 debug doc libressl miri nightly parallel-compiler rls rustfmt +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: +# 1. List all the working slots (with min versions) in ||, newest first. +# 2. Update the := to specify *max* version, e.g. < 12. +# 3. Specify LLVM_MAX_SLOT, e.g. 11. +LLVM_DEPEND=" + || ( + sys-devel/llvm:11[${LLVM_TARGET_USEDEPS// /,}] + ) + <sys-devel/llvm-12:= + wasm? ( sys-devel/lld ) +" +LLVM_MAX_SLOT=11 + +# 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.txt +BOOTSTRAP_DEPEND="|| + ( + =dev-lang/rust-$(ver_cut 1).$(($(ver_cut 2) - 1))* + =dev-lang/rust-bin-$(ver_cut 1).$(($(ver_cut 2) - 1))* + =dev-lang/rust-$(ver_cut 1).$(ver_cut 2)* + =dev-lang/rust-bin-$(ver_cut 1).$(ver_cut 2)* + ) +" + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=sys-devel/clang-3.5 + ) + system-bootstrap? ( ${BOOTSTRAP_DEPEND} ) + !system-llvm? ( + dev-util/cmake + dev-util/ninja + ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= ) + elibc_musl? ( sys-libs/libunwind:= ) + system-llvm? ( + ${LLVM_DEPEND} + ) +" + +# we need to block older versions due to layout changes. +RDEPEND="${DEPEND} + app-eselect/eselect-rust + !<dev-lang/rust-1.46.0 + !<dev-lang/rust-bin-1.46.0 +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warnings +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + 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 +" + +# causes double bootstrap +RESTRICT="test" + +PATCHES=( + "${FILESDIR}"/1.47.0-libressl.patch + "${FILESDIR}"/1.46.0-don-t-create-prefix-at-time-of-check.patch + "${FILESDIR}"/1.47.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.47.0-llvm-tensorflow-fix.patch + "${FILESDIR}"/gentoo-musl-target-specs.patch +) + +S="${WORKDIR}/${MY_P}-src" + +toml_usex() { + usex "${1}" true false +} + +boostrap_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=6144 + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rls 512 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + M=$(( $(usex system-llvm 0 2048) + ${M} )) + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 15 10) * ${M} / 10 )) + 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} +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + + use system-bootstrap && boostrap_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 +} + +src_prepare() { + if ! use system-bootstrap; then + local rust_stage0_root="${WORKDIR}"/rust-stage0 + local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)" + + "${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \ + --destdir="${rust_stage0_root}" --prefix=/ || die + fi + + default +} + +src_configure() { + 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_targets},\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets="${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/' src/librustc_target/spec/wasm32_base.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + local tools="\"cargo\"," + if use clippy; then + tools="\"clippy\",$tools" + fi + if use miri; then + tools="\"miri\",$tools" + fi + if use rls; then + tools="\"rls\",\"analysis\",\"src\",$tools" + fi + if use rustfmt; then + tools="\"rustfmt\",$tools" + fi + + local rust_stage0_root + if use system-bootstrap; then + rust_stage0_root="$(rustc --print sysroot)" + else + rust_stage0_root="${WORKDIR}"/rust-stage0 + fi + + rust_target="$(rust_abi)" + + cat <<- _EOF_ > "${S}"/config.toml + [llvm] + 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) + [build] + build = "${rust_target}" + host = ["${rust_target}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + docs = $(toml_usex doc) + compiler-docs = $(toml_usex doc) + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = false + 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) + debuginfo-level-rustc = 0 + backtrace = true + incremental = false + default-linker = "$(tc-getCC)" + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + 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)) + backtrace-on-ice = true + jemalloc = false + [dist] + src-tarball = false + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + cat <<- _EOF_ >> "${S}"/config.env + CFLAGS_${rust_target}=${arch_cflags} + _EOF_ + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + cc = "$(tc-getBUILD_CC)" + cxx = "$(tc-getBUILD_CXX)" + linker = "$(tc-getCC)" + ar = "$(tc-getAR)" + _EOF_ + # 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 + _EOF_ + fi + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + done + if use wasm; then + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld 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 + # 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}] + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + 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 + + # 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 settings:" + cat "${S}"/config.toml || die +} + +src_compile() { + # 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 dist -vv --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 ! ( + 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" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + # https://github.com/rust-lang/rust/issues/77721 + # also 1.46.0-don-t-create-prefix-at-time-of-check.patch + dodir "/usr/lib/${PN}/${PV}" + ( + IFS=$'\n' + env $(cat "${S}"/config.env) DESTDIR="${D}" \ + "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml || die + ) + + # bug #689562, #689160 + rm -v "${D}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${D}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + dobashcomp build/tmp/dist/cargo-image/etc/bash_completion.d/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 rls && symlinks+=( rls ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + + 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}/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" + $(usex elibc_musl 'CARGO_TARGET_X86_64_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}/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/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 rls; then + echo /usr/bin/rls >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" +} + +pkg_postinst() { + eselect rust update + + if has_version sys-devel/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 + + 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 +} diff --git a/dev-lang/rust/rust-1.48.0.ebuild b/dev-lang/rust/rust-1.48.0.ebuild new file mode 100644 index 000000000000..be32053aee95 --- /dev/null +++ b/dev-lang/rust/rust-1.48.0.ebuild @@ -0,0 +1,615 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6..9} ) + +inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing multilib-build python-any-r1 rust-toolchain toolchain-funcs + +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 ~ppc64 ~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} + !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 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-1 BSD-2 BSD-4 UoI-NCSA" + +IUSE="clippy cpu_flags_x86_sse2 debug doc libressl miri nightly parallel-compiler rls rustfmt +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: +# 1. List all the working slots (with min versions) in ||, newest first. +# 2. Update the := to specify *max* version, e.g. < 12. +# 3. Specify LLVM_MAX_SLOT, e.g. 11. +LLVM_DEPEND=" + || ( + sys-devel/llvm:11[${LLVM_TARGET_USEDEPS// /,}] + ) + <sys-devel/llvm-12:= + wasm? ( sys-devel/lld ) +" +LLVM_MAX_SLOT=11 + +# 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.txt +BOOTSTRAP_DEPEND="|| + ( + =dev-lang/rust-$(ver_cut 1).$(($(ver_cut 2) - 1))* + =dev-lang/rust-bin-$(ver_cut 1).$(($(ver_cut 2) - 1))* + =dev-lang/rust-$(ver_cut 1).$(ver_cut 2)* + =dev-lang/rust-bin-$(ver_cut 1).$(ver_cut 2)* + ) +" + +BDEPEND="${PYTHON_DEPS} + app-eselect/eselect-rust + || ( + >=sys-devel/gcc-4.7 + >=sys-devel/clang-3.5 + ) + system-bootstrap? ( ${BOOTSTRAP_DEPEND} ) + !system-llvm? ( + dev-util/cmake + dev-util/ninja + ) +" + +DEPEND=" + >=app-arch/xz-utils-5.2 + net-misc/curl:=[http2,ssl] + sys-libs/zlib:= + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= ) + elibc_musl? ( sys-libs/libunwind:= ) + system-llvm? ( + ${LLVM_DEPEND} + ) +" + +# we need to block older versions due to layout changes. +RDEPEND="${DEPEND} + app-eselect/eselect-rust + !<dev-lang/rust-1.47.0-r1 + !<dev-lang/rust-bin-1.47.0-r1 +" + +REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} ) + miri? ( nightly ) + parallel-compiler? ( nightly ) + test? ( ${ALL_LLVM_TARGETS[*]} ) + wasm? ( llvm_targets_WebAssembly ) + x86? ( cpu_flags_x86_sse2 ) +" + +# we don't use cmake.eclass, but can get a warnings +CMAKE_WARN_UNUSED_CLI=no + +QA_FLAGS_IGNORED=" + usr/lib/${PN}/${PV}/bin/.* + 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 +" + +# causes double bootstrap +RESTRICT="test" + +PATCHES=( + "${FILESDIR}"/1.47.0-libressl.patch + "${FILESDIR}"/1.46.0-don-t-create-prefix-at-time-of-check.patch + "${FILESDIR}"/1.47.0-ignore-broken-and-non-applicable-tests.patch + "${FILESDIR}"/1.47.0-llvm-tensorflow-fix.patch + "${FILESDIR}"/1.48.0-gentoo-musl-target-specs.patch +) + +S="${WORKDIR}/${MY_P}-src" + +toml_usex() { + usex "${1}" true false +} + +boostrap_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=6144 + M=$(( $(usex clippy 128 0) + ${M} )) + M=$(( $(usex miri 128 0) + ${M} )) + M=$(( $(usex rls 512 0) + ${M} )) + M=$(( $(usex rustfmt 256 0) + ${M} )) + M=$(( $(usex system-llvm 0 2048) + ${M} )) + M=$(( $(usex wasm 256 0) + ${M} )) + M=$(( $(usex debug 15 10) * ${M} / 10 )) + 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} +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + python-any-r1_pkg_setup + + export LIBGIT2_NO_PKG_CONFIG=1 #749381 + + use system-bootstrap && boostrap_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 +} + +src_prepare() { + if ! use system-bootstrap; then + local rust_stage0_root="${WORKDIR}"/rust-stage0 + local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)" + + "${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \ + --destdir="${rust_stage0_root}" --prefix=/ || die + fi + + default +} + +src_configure() { + 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_targets},\"$(rust_abi $(get_abi_CHOST ${v##*.}))\"" + done + if use wasm; then + rust_targets="${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/wasm32_base.rs || die + fi + fi + rust_targets="${rust_targets#,}" + + local tools="\"cargo\"," + if use clippy; then + tools="\"clippy\",$tools" + fi + if use miri; then + tools="\"miri\",$tools" + fi + if use rls; then + tools="\"rls\",\"analysis\",\"src\",$tools" + fi + if use rustfmt; then + tools="\"rustfmt\",$tools" + fi + + local rust_stage0_root + if use system-bootstrap; then + rust_stage0_root="$(rustc --print sysroot)" + else + rust_stage0_root="${WORKDIR}"/rust-stage0 + fi + + rust_target="$(rust_abi)" + + cat <<- _EOF_ > "${S}"/config.toml + [llvm] + 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) + [build] + build = "${rust_target}" + host = ["${rust_target}"] + target = [${rust_targets}] + cargo = "${rust_stage0_root}/bin/cargo" + rustc = "${rust_stage0_root}/bin/rustc" + docs = $(toml_usex doc) + compiler-docs = $(toml_usex doc) + submodules = false + python = "${EPYTHON}" + locked-deps = true + vendor = true + extended = true + tools = [${tools}] + verbose = 2 + sanitizers = false + profiler = false + 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) + debuginfo-level-rustc = 0 + backtrace = true + incremental = false + default-linker = "$(tc-getCC)" + parallel-compiler = $(toml_usex parallel-compiler) + channel = "$(usex nightly nightly stable)" + 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)) + backtrace-on-ice = true + jemalloc = false + [dist] + src-tarball = false + _EOF_ + + for v in $(multilib_get_enabled_abi_pairs); do + rust_target=$(rust_abi $(get_abi_CHOST ${v##*.})) + arch_cflags="$(get_abi_CFLAGS ${v##*.})" + + cat <<- _EOF_ >> "${S}"/config.env + CFLAGS_${rust_target}=${arch_cflags} + _EOF_ + + cat <<- _EOF_ >> "${S}"/config.toml + [target.${rust_target}] + cc = "$(tc-getBUILD_CC)" + cxx = "$(tc-getBUILD_CXX)" + linker = "$(tc-getCC)" + ar = "$(tc-getAR)" + _EOF_ + # 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 + _EOF_ + fi + if use system-llvm; then + cat <<- _EOF_ >> "${S}"/config.toml + llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config" + _EOF_ + fi + done + if use wasm; then + cat <<- _EOF_ >> "${S}"/config.toml + [target.wasm32-unknown-unknown] + linker = "$(usex system-llvm lld 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 + # 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}] + cc = "${cross_toolchain}-gcc" + cxx = "${cross_toolchain}-g++" + linker = "${cross_toolchain}-gcc" + 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 + + # 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 settings:" + cat "${S}"/config.toml || die +} + +src_compile() { + # 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 dist -vv --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 ! ( + 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" + fi + done + + if [[ ${#failed[@]} -ne 0 ]]; then + eerror "rust_src_test: failure summary: ${failed[@]}" + die "aborting due to test failures" + fi +} + +src_install() { + # https://github.com/rust-lang/rust/issues/77721 + # also 1.46.0-don-t-create-prefix-at-time-of-check.patch + dodir "/usr/lib/${PN}/${PV}" + ( + IFS=$'\n' + env $(cat "${S}"/config.env) DESTDIR="${D}" \ + "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml || die + ) + + # bug #689562, #689160 + rm -v "${D}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die + rmdir -v "${D}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die + dobashcomp build/tmp/dist/cargo-image/etc/bash_completion.d/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 rls && symlinks+=( rls ) + use rustfmt && symlinks+=( rustfmt cargo-fmt ) + + 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}/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" + $(usex elibc_musl 'CARGO_TARGET_X86_64_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}/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/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 rls; then + echo /usr/bin/rls >> "${T}/provider-${P}" + fi + if use rustfmt; then + echo /usr/bin/rustfmt >> "${T}/provider-${P}" + echo /usr/bin/cargo-fmt >> "${T}/provider-${P}" + fi + + insinto /etc/env.d/rust + doins "${T}/provider-${P}" +} + +pkg_postinst() { + eselect rust update + + if has_version sys-devel/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 + + 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 +} |