public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2019-02-20 19:12 Stefan Strogin
  0 siblings, 0 replies; 27+ messages in thread
From: Stefan Strogin @ 2019-02-20 19:12 UTC (permalink / raw
  To: gentoo-commits

commit:     869b017b3da84423a900358c6d58feb507c89016
Author:     Stefan Strogin <stefan.strogin <AT> gmail <DOT> com>
AuthorDate: Wed Feb 20 19:11:26 2019 +0000
Commit:     Stefan Strogin <stefan.strogin <AT> gmail <DOT> com>
CommitDate: Wed Feb 20 19:11:56 2019 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=869b017b

dev-lang/rust: drop; libressl support is in main tree

Package-Manager: Portage-2.3.61, Repoman-2.3.12
Signed-off-by: Stefan Strogin <stefan.strogin <AT> gmail.com>

 dev-lang/rust/Manifest                          |  14 --
 dev-lang/rust/files/1.29.2-clippy-sysroot.patch |  62 -----
 dev-lang/rust/files/1.30.1-clippy-sysroot.patch |  62 -----
 dev-lang/rust/files/1.31.0-libressl.patch       |  16 --
 dev-lang/rust/metadata.xml                      |  16 --
 dev-lang/rust/rust-1.31.0.ebuild                | 300 ------------------------
 6 files changed, 470 deletions(-)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
deleted file mode 100644
index a64d13e..0000000
--- a/dev-lang/rust/Manifest
+++ /dev/null
@@ -1,14 +0,0 @@
-DIST rust-1.30.1-aarch64-unknown-linux-gnu.tar.xz 114223904 BLAKE2B ca3f93d8cb59f5ecc8680ab018f8666a5c0df1bf671af4220c39178a946ce77a05588d91709facd42a1d693120c46c472c4d6dc0b6a5e7d3330b9f0807ff3fcc SHA512 5fb9cb0281cd76b1995bcd6c4dd824f8a4d4c1ffc61a0a54f62b45340b98a7b41cf5ec3d4a8ec370c2603c14f9dc5451ae1a47ea96ebbd520770dfd22cf0ffdc
-DIST rust-1.30.1-arm-unknown-linux-gnueabi.tar.xz 120865688 BLAKE2B 18934c592882ad3608b82ab9aac68412790d02c148c2af0a37a5027ebe059ff697a8556c4dcbf0ac5cf37c6fbd37c51abbf88a3f0ce274742ff1d7ec94f96f04 SHA512 871e0b036273ec62e28712fe1d5d1c74b061eabb59f9cc852e8924df1aaa3797af28d51dde643010920321fa71382ddd70f2d97d25c06999d5663f5209ffc6b7
-DIST rust-1.30.1-arm-unknown-linux-gnueabihf.tar.xz 121114868 BLAKE2B 6410c16e3019b67d2e299b06527db6d7291a1426c4606012234bd8e93b3e3738dda5907aa6d9e48ac25f2a7e06a441f7e42095ec81de01408c235577e0df2df5 SHA512 73ac63f81a86b70ea0378e859b6a913f3f6e2044f1ddcb056c53a18d3f32011a47abf29bf2a84f3a9d6732bec348741662448104e320bcaebf2a3667209fcedb
-DIST rust-1.30.1-armv7-unknown-linux-gnueabihf.tar.xz 122390768 BLAKE2B 39c38b9bf96e94023b9c6d81fce8c341e789f182b59bf1b540a6d22be24e0498c638d0d3aa1433f49e52048795f91f5f4ca707dd8fcb998ea51caa932537b74e SHA512 88f9f23f431cc34d6b7ddc51c2321905df03dc714aab0b3a5e067390de5092b472f8092ba25a5c09666ad9b138efc2f4b625ca86dbe10ddeea213b8e9d70c9b3
-DIST rust-1.30.1-i686-unknown-linux-gnu.tar.xz 143689500 BLAKE2B 0b654570e295c785b074625c8fe7649e1841327fba790e38e08e912ad0602440e08a205318e637c903989bd19bab4c0a726583f2ab457d75ff71e96524251aa0 SHA512 66c56107fd8c83f9c1948137aee09c67633f6f472823696719a22b5f0b0e28925b0a6b6545b8fe4d741b8473ddc49db30fe112fc5b0e6fc63439901ff5462a86
-DIST rust-1.30.1-mips-unknown-linux-gnu.tar.xz 112662912 BLAKE2B ded8631f76ac5fc16cae298f5a7afdb8c451ff95af03c827959bd19484d513066ac387e956577f5ee42369fc5d68c1e2cbf4cfc72c364739eea31643844ba936 SHA512 8a1681f054a57d62050a2d11ae3109e7be4f6638319b059d10612f0be073de63f2dffea79bb29452763fad8a64274367d9bbe5ca0636e78c34a6cdce542118a0
-DIST rust-1.30.1-mips64-unknown-linux-gnuabi64.tar.xz 117355424 BLAKE2B fcc583d99a6b17e1d38d26a48d39768b09c52e6a6fa3cd36d9513bd9385fd4560d06c3a737b69c396b5bb465ae261321dbbaf7bda4378d7e4be165bc889d8b2d SHA512 c18cd513021753d2b8e1a9ea2bf0bd73817e2c81dcf246993b52c7055b3b18d9f20c935dec4281acbd2792a6964dbfb0c05b5cb2075703aaa444352ef8f06d50
-DIST rust-1.30.1-mipsel-unknown-linux-gnu.tar.xz 114622708 BLAKE2B 5d62f6744cb1bf69d7047bb18e246623ee98c94bfa083fd5269bdcf8dd1c2c0824747dd641f703931f0b22fd513ee8a65a4dec103bf479f6a00e72098541a1aa SHA512 3d084c5c986ba379a3213c9662bc6a0e24c9d3a1c4ae4e28c3f807841eacb15dd8fb42bcb190967ba4a9e8e5397b63e6bbd3990bd9826d52a127bd71ac5b361e
-DIST rust-1.30.1-powerpc-unknown-linux-gnu.tar.xz 110375696 BLAKE2B 6ffa7b6b7ae569c7ebf6b0ab43287421e4a5e2ea8654638902e61df42f7e3de7f14c14f2e585d7b3e140f2ebc7a0e1149b814fd5a6d6c0374f9d8059ff3369c3 SHA512 ebbd2c2b160e6e36a03eee205a333cddf0a36cd0ce42135a7e4119469be41b76cedda143cf9e9491ae0d9aaf65e2e927550e2e0358401fc5f657ee02b37959b4
-DIST rust-1.30.1-powerpc64-unknown-linux-gnu.tar.xz 118698168 BLAKE2B 58905ab6c62d4b7fca8954fc507f9105537cdfc2a55a6585b4784a41ce721046c41606eae6066a173a548c4d065db497e187b2e8c9c6cbc0ee589e7731c8f106 SHA512 7eddabec2e1e01ddbc8c7b0c55f2753e506786867f78e79e47d4f273e7c02170caa24470e0f2ecf6c473cfc8c023e189017454e2ad0f3faa96465fdd22bdfd6d
-DIST rust-1.30.1-powerpc64le-unknown-linux-gnu.tar.xz 121569444 BLAKE2B d4d390ea24298cd88d224efe3c1a1dc3a802b678d977bc0aa26197e291547a6ca823a0fe5e35491204a649cb6a5419343a825ef32408aa2638d057b209b1c15c SHA512 b4595f031a006335ac778ec6a07c398fd6cce78ed3c0ed5730a5c06fa3a390dbab1afda0468756330783baa86dafb2f0c7ca7c75b735eb532c268027e22975e6
-DIST rust-1.30.1-s390x-unknown-linux-gnu.tar.xz 124025168 BLAKE2B b4a8df333b093ae111136a6b9005aca7f424f209d629041c4fce1efc7e19b176f6e6325bf3552e8de93faa311ebf065ad4b9f104de3ee412b2a3fda70156c2b0 SHA512 592764d3d5b4d8a2a7628f4969ba5204da4ea63ca92efc17d4f9339274fce00aecc4d1ebb1f4d0499da8559375ad205054b26e12775af622a7112b20b8c8d4fb
-DIST rust-1.30.1-x86_64-unknown-linux-gnu.tar.xz 145148116 BLAKE2B e70d667d880656209c036b72f619b1bd29679878ff4b8865f0453c064c4a8a53a96e73994509637312032e1260eeb0e53f7372ca1526760b1631846ed6a4c571 SHA512 05238b65b5184e3df81dbcf1cc1035a03054ef09a8563fe60877e4f078d0d2cad71aec73c1451196171f39f8e729059e91c7eed7b1402e03801c0b7e81815885
-DIST rustc-1.31.0-src.tar.xz 96914112 BLAKE2B 5e4c5d7724033c756f57794bda273f5c6b481a4a310afc73cafa6a67c2fe3e56cf08ca828e822d91890a6fda917e4c05d4b20f598e50805431d2926a4f1add9c SHA512 38fb8c759a517defd64ca75a22d5deb1fa543fc13f127c73010741c40bc00935bf3b46743a95a22e98e37df5aa21d72203acabaecf8c0b23439e3b5c68f2fbec

diff --git a/dev-lang/rust/files/1.29.2-clippy-sysroot.patch b/dev-lang/rust/files/1.29.2-clippy-sysroot.patch
deleted file mode 100644
index 6a527e5..0000000
--- a/dev-lang/rust/files/1.29.2-clippy-sysroot.patch
+++ /dev/null
@@ -1,62 +0,0 @@
---- a/src/tools/clippy/src/driver.rs	2018-10-04 16:30:42.438486058 +0300
-+++ b/src/tools/clippy/src/driver.rs	2018-10-04 16:31:45.044484028 +0300
-@@ -20,54 +20,22 @@
-         return;
-     }
- 
--    let sys_root = option_env!("SYSROOT")
--        .map(String::from)
--        .or_else(|| std::env::var("SYSROOT").ok())
--        .or_else(|| {
--            let home = option_env!("RUSTUP_HOME").or(option_env!("MULTIRUST_HOME"));
--            let toolchain = option_env!("RUSTUP_TOOLCHAIN").or(option_env!("MULTIRUST_TOOLCHAIN"));
--            home.and_then(|home| toolchain.map(|toolchain| format!("{}/toolchains/{}", home, toolchain)))
--        })
--        .or_else(|| {
--            Command::new("rustc")
--                .arg("--print")
--                .arg("sysroot")
--                .output()
--                .ok()
--                .and_then(|out| String::from_utf8(out.stdout).ok())
--                .map(|s| s.trim().to_owned())
--        })
--        .expect("need to specify SYSROOT env var during clippy compilation, or use rustup or multirust");
--
-     // Setting RUSTC_WRAPPER causes Cargo to pass 'rustc' as the first argument.
-     // We're invoking the compiler programmatically, so we ignore this/
--    let mut orig_args: Vec<String> = env::args().collect();
--    if orig_args.len() <= 1 {
-+    let mut args: Vec<String> = env::args().collect();
-+    if args.len() <= 1 {
-         std::process::exit(1);
-     }
--    if orig_args[1] == "rustc" {
-+    if args[1] == "rustc" {
-         // we still want to be able to invoke it normally though
--        orig_args.remove(1);
-+        args.remove(1);
-     }
--    // this conditional check for the --sysroot flag is there so users can call
--    // `clippy_driver` directly
--    // without having to pass --sysroot or anything
--    let mut args: Vec<String> = if orig_args.iter().any(|s| s == "--sysroot") {
--        orig_args.clone()
--    } else {
--        orig_args
--            .clone()
--            .into_iter()
--            .chain(Some("--sysroot".to_owned()))
--            .chain(Some(sys_root))
--            .collect()
--    };
- 
-     // this check ensures that dependencies are built but not linted and the final
-     // crate is
-     // linted but not built
-     let clippy_enabled = env::var("CLIPPY_TESTS").ok().map_or(false, |val| val == "true")
--        || orig_args.iter().any(|s| s == "--emit=dep-info,metadata");
-+        || args.iter().any(|s| s == "--emit=dep-info,metadata");
- 
-     if clippy_enabled {
-         args.extend_from_slice(&["--cfg".to_owned(), r#"feature="cargo-clippy""#.to_owned()]);

diff --git a/dev-lang/rust/files/1.30.1-clippy-sysroot.patch b/dev-lang/rust/files/1.30.1-clippy-sysroot.patch
deleted file mode 100644
index d38f8ba..0000000
--- a/dev-lang/rust/files/1.30.1-clippy-sysroot.patch
+++ /dev/null
@@ -1,62 +0,0 @@
---- a/src/tools/clippy/src/driver.rs	2018-10-25 20:09:06.143109996 +0300
-+++ b/src/tools/clippy/src/driver.rs	2018-10-25 20:11:09.204106005 +0300
-@@ -29,54 +29,22 @@
-             exit(0);
-         }
- 
--        let sys_root = option_env!("SYSROOT")
--            .map(String::from)
--            .or_else(|| std::env::var("SYSROOT").ok())
--            .or_else(|| {
--                let home = option_env!("RUSTUP_HOME").or(option_env!("MULTIRUST_HOME"));
--                let toolchain = option_env!("RUSTUP_TOOLCHAIN").or(option_env!("MULTIRUST_TOOLCHAIN"));
--                home.and_then(|home| toolchain.map(|toolchain| format!("{}/toolchains/{}", home, toolchain)))
--            })
--            .or_else(|| {
--                Command::new("rustc")
--                    .arg("--print")
--                    .arg("sysroot")
--                    .output()
--                    .ok()
--                    .and_then(|out| String::from_utf8(out.stdout).ok())
--                    .map(|s| s.trim().to_owned())
--            })
--            .expect("need to specify SYSROOT env var during clippy compilation, or use rustup or multirust");
--
-         // Setting RUSTC_WRAPPER causes Cargo to pass 'rustc' as the first argument.
-         // We're invoking the compiler programmatically, so we ignore this/
--        let mut orig_args: Vec<String> = env::args().collect();
--        if orig_args.len() <= 1 {
-+        let mut args: Vec<String> = env::args().collect();
-+        if args.len() <= 1 {
-             std::process::exit(1);
-         }
--        if Path::new(&orig_args[1]).file_stem() == Some("rustc".as_ref()) {
-+        if Path::new(&args[1]).file_stem() == Some("rustc".as_ref()) {
-             // we still want to be able to invoke it normally though
--            orig_args.remove(1);
-+            args.remove(1);
-         }
--        // this conditional check for the --sysroot flag is there so users can call
--        // `clippy_driver` directly
--        // without having to pass --sysroot or anything
--        let mut args: Vec<String> = if orig_args.iter().any(|s| s == "--sysroot") {
--            orig_args.clone()
--        } else {
--            orig_args
--                .clone()
--                .into_iter()
--                .chain(Some("--sysroot".to_owned()))
--                .chain(Some(sys_root))
--                .collect()
--        };
- 
-         // this check ensures that dependencies are built but not linted and the final
-         // crate is
-         // linted but not built
-         let clippy_enabled = env::var("CLIPPY_TESTS").ok().map_or(false, |val| val == "true")
--            || orig_args.iter().any(|s| s == "--emit=dep-info,metadata");
-+            || args.iter().any(|s| s == "--emit=dep-info,metadata");
- 
-         if clippy_enabled {
-             args.extend_from_slice(&["--cfg".to_owned(), r#"feature="cargo-clippy""#.to_owned()]);

diff --git a/dev-lang/rust/files/1.31.0-libressl.patch b/dev-lang/rust/files/1.31.0-libressl.patch
deleted file mode 100644
index a6cb6e7..0000000
--- a/dev-lang/rust/files/1.31.0-libressl.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- a/src/vendor/openssl-sys/build/main.rs	2018-12-12 21:20:52.654853383 -0500
-+++ b/src/vendor/openssl-sys/build/main.rs	2018-12-12 21:25:57.242099308 -0500
-@@ -500,6 +500,7 @@
-             (7, _) => ('7', 'x'),
-             (8, 0) => ('8', '0'),
-             (8, 1) => ('8', '1'),
-+            (8, _) => ('8', 'x'),
-             _ => version_error(),
-         };
- 
---- a/src/vendor/openssl-sys/.cargo-checksum.json	2018-12-12 22:18:51.416492300 -0500
-+++ b/src/vendor/openssl-sys/.cargo-checksum.json	2018-12-12 22:19:32.125006252 -0500
-@@ -1 +1 @@
--{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","Cargo.toml":"e40f8c3ccf6a2b34f50ae9cee3396ac398944ee253c1e5dabac802ee89732ba2","Cargo.toml.orig":"82cf41fb8d0886217e4efe5b7bd69ac9d687ddd38d002b5aeeb5fc073abc0e17","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"96a414be6e7e061a21a9e39a61449039f6791225264032641dd044a1a9b88111","build/cfgs.rs":"fae5176c2b149d190c9611b58c5882312b5c0e483d1a404cfdf850473314a58f","build/main.rs":"f509c63668156ce48b93d05d5483a5bfb112dc8f786ff6296f7801add2db7452","src/aes.rs":"660efd70f809cb2f5dbbf527be8f9592911776bab7dafa1fc4cc72dd9a576b67","src/asn1.rs":"4f12d2f4c2a493888db669d1ecfd55df40861a78cae65957f801ed91dc2cae30","src/bio.rs":"5c6f394a78f258af3babb68330fa3571610476c4c3ba3404359db928f2f706ee","src/bn.rs":"c71b9c79f704a94a889d27bf75e7e5b1f9f10b0df0aeb485aef509cf05d7467f","src/cms.rs":"29aa053b67b47515fd15812aa0a90ff35dd9fa347da2beeba96d6deafeb9d945","src/conf.rs":"5
 11e008c18039f54d856d70b80009426fc7f4ce34fe4304e2c58ebf465031de0","src/crypto.rs":"f6e8a116940755b2b53e3d0d49d1b451fc6e4269831fd1cfcee9d6ed404cf487","src/dh.rs":"520b282b92fa372a75bc16696dc3ee7a9a5752e517a18862182a3e9f5a976d28","src/dsa.rs":"3c294c5c45235497396ac803b723b3a0cb5bd3609f5dec18338b5b014c2adeb9","src/dtls1.rs":"45e1dbf94a42d587fd948d553dc30187aa6aa2b5b82d554cf725ff36df768aa0","src/ec.rs":"b22d27b01a70652384866b3d0d01d2f7a0421b2ba2db9268ed379fef4b1ac034","src/err.rs":"81230711e081277e0b6dae4ff21266052d075688c758c2b0720001849ef9192d","src/evp.rs":"57f094c7fee0a6b0611e7f8829663bff525a607e11a35eb77dc30eb159b2139a","src/hmac.rs":"fa3976d94a1383f300bdec228270afb8b47c97bb019d727c7d59ba783be3c42e","src/lib.rs":"17b5a1faa0fe3ab777c8cb0039a3dffd8922b211bf1330c2cd0c3e02f624353c","src/macros.rs":"a7c95174fd4cfeb42f730c7c0744194009520249888dbf43968571219fd6dfa1","src/obj_mac.rs":"9c20609db7115c9edb99185375426169cb5b7caee839d892b556e92285e65309","src/object.rs":"7539eb2164c3fe2162a339ef
 5b45f1c835010a1522307803815779a01825eed7","src/ocsp.rs":"1db59566d2f072f7ae981f0c07e1604fcdf60e66845afe0689d588f8e4272115","src/ossl_typ.rs":"619177f939328597e4bcf9c41fdf4d0aa9207d779c6e0dafddbe2eab9b1a6a98","src/pem.rs":"3ae1c53dbc126a04c188575294111cc04c215c2f3e031192d5cc05952f011ddf","src/pkcs12.rs":"93aab2820008ad90dc346a7dcc02f9201d94bff0bb7d1d71031c097850287c50","src/pkcs7.rs":"5370c8d4bfbf1502fa33aff635cb730e7c87814580f1df9bdb1412a492377813","src/rand.rs":"156e605ecb45d4e1b7a7c404003ccd19c4a2226cbfe47938ad1dce240ed4369f","src/rsa.rs":"a0bf64f1f8ff9f6e5dbed6c38d8fa2d3d1c5dfcfe6dd3ff79f7737b072ce4681","src/safestack.rs":"6c39e28565d34efad707d77561d4caa99e3f028fcac3a2ef6fd403a78de1190c","src/sha.rs":"05044d221d8d205010a4e3760c0b5c0e2e923e165db0d65f9a8c9bcedaad9961","src/srtp.rs":"306047f3f31828fe7d15de154b375f071ae07012a94c0b5c909f5fe57962a11b","src/ssl.rs":"e69d3b9b8f2f8ae1ed3905a4dbe064ad1b7c1eaf21d7eabb86ecdb5b41e2120a","src/ssl3.rs":"9336c816e00847d552dea22587d4ac72ff3cbd469
 fa5ff750423a19ea11e68eb","src/stack.rs":"1a509907283e5a2bf88cf193ce607f49ce7d2d95547c2ce2abc0fd4567aad334","src/tls1.rs":"fd85a1683064def0a9e07d803b90102229adc1d58fa19cf4e56976f0dd7425b9","src/x509.rs":"839be2feb74755ab7df66a024ad27dfa70ce4f7889229d9152ba999f3a54b914","src/x509_vfy.rs":"5609f6300ab37a4d4755c81f7af1e6bb93a2f1a6f333c6e42f1e73ebf83ddc05","src/x509v3.rs":"66fd646ea4caf5ce81e3c881e88d85462519c4e97a7f82e82ca8ac52ea830ad2"},"package":"ff3d1b390ab1b9700f682ad95a30dc9c0f40dd212ca57266012cfc678b0e365a"}
-\ No newline at end of file
-+{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","Cargo.toml":"e40f8c3ccf6a2b34f50ae9cee3396ac398944ee253c1e5dabac802ee89732ba2","Cargo.toml.orig":"82cf41fb8d0886217e4efe5b7bd69ac9d687ddd38d002b5aeeb5fc073abc0e17","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"96a414be6e7e061a21a9e39a61449039f6791225264032641dd044a1a9b88111","build/cfgs.rs":"fae5176c2b149d190c9611b58c5882312b5c0e483d1a404cfdf850473314a58f","build/main.rs":"f1aa4121f55966d3f98360f1d91e5773f45831647a070fd80e47069d43873c52","src/aes.rs":"660efd70f809cb2f5dbbf527be8f9592911776bab7dafa1fc4cc72dd9a576b67","src/asn1.rs":"4f12d2f4c2a493888db669d1ecfd55df40861a78cae65957f801ed91dc2cae30","src/bio.rs":"5c6f394a78f258af3babb68330fa3571610476c4c3ba3404359db928f2f706ee","src/bn.rs":"c71b9c79f704a94a889d27bf75e7e5b1f9f10b0df0aeb485aef509cf05d7467f","src/cms.rs":"29aa053b67b47515fd15812aa0a90ff35dd9fa347da2beeba96d6deafeb9d945","src/conf.rs":"5
 11e008c18039f54d856d70b80009426fc7f4ce34fe4304e2c58ebf465031de0","src/crypto.rs":"f6e8a116940755b2b53e3d0d49d1b451fc6e4269831fd1cfcee9d6ed404cf487","src/dh.rs":"520b282b92fa372a75bc16696dc3ee7a9a5752e517a18862182a3e9f5a976d28","src/dsa.rs":"3c294c5c45235497396ac803b723b3a0cb5bd3609f5dec18338b5b014c2adeb9","src/dtls1.rs":"45e1dbf94a42d587fd948d553dc30187aa6aa2b5b82d554cf725ff36df768aa0","src/ec.rs":"b22d27b01a70652384866b3d0d01d2f7a0421b2ba2db9268ed379fef4b1ac034","src/err.rs":"81230711e081277e0b6dae4ff21266052d075688c758c2b0720001849ef9192d","src/evp.rs":"57f094c7fee0a6b0611e7f8829663bff525a607e11a35eb77dc30eb159b2139a","src/hmac.rs":"fa3976d94a1383f300bdec228270afb8b47c97bb019d727c7d59ba783be3c42e","src/lib.rs":"17b5a1faa0fe3ab777c8cb0039a3dffd8922b211bf1330c2cd0c3e02f624353c","src/macros.rs":"a7c95174fd4cfeb42f730c7c0744194009520249888dbf43968571219fd6dfa1","src/obj_mac.rs":"9c20609db7115c9edb99185375426169cb5b7caee839d892b556e92285e65309","src/object.rs":"7539eb2164c3fe2162a339ef
 5b45f1c835010a1522307803815779a01825eed7","src/ocsp.rs":"1db59566d2f072f7ae981f0c07e1604fcdf60e66845afe0689d588f8e4272115","src/ossl_typ.rs":"619177f939328597e4bcf9c41fdf4d0aa9207d779c6e0dafddbe2eab9b1a6a98","src/pem.rs":"3ae1c53dbc126a04c188575294111cc04c215c2f3e031192d5cc05952f011ddf","src/pkcs12.rs":"93aab2820008ad90dc346a7dcc02f9201d94bff0bb7d1d71031c097850287c50","src/pkcs7.rs":"5370c8d4bfbf1502fa33aff635cb730e7c87814580f1df9bdb1412a492377813","src/rand.rs":"156e605ecb45d4e1b7a7c404003ccd19c4a2226cbfe47938ad1dce240ed4369f","src/rsa.rs":"a0bf64f1f8ff9f6e5dbed6c38d8fa2d3d1c5dfcfe6dd3ff79f7737b072ce4681","src/safestack.rs":"6c39e28565d34efad707d77561d4caa99e3f028fcac3a2ef6fd403a78de1190c","src/sha.rs":"05044d221d8d205010a4e3760c0b5c0e2e923e165db0d65f9a8c9bcedaad9961","src/srtp.rs":"306047f3f31828fe7d15de154b375f071ae07012a94c0b5c909f5fe57962a11b","src/ssl.rs":"e69d3b9b8f2f8ae1ed3905a4dbe064ad1b7c1eaf21d7eabb86ecdb5b41e2120a","src/ssl3.rs":"9336c816e00847d552dea22587d4ac72ff3cbd469
 fa5ff750423a19ea11e68eb","src/stack.rs":"1a509907283e5a2bf88cf193ce607f49ce7d2d95547c2ce2abc0fd4567aad334","src/tls1.rs":"fd85a1683064def0a9e07d803b90102229adc1d58fa19cf4e56976f0dd7425b9","src/x509.rs":"839be2feb74755ab7df66a024ad27dfa70ce4f7889229d9152ba999f3a54b914","src/x509_vfy.rs":"5609f6300ab37a4d4755c81f7af1e6bb93a2f1a6f333c6e42f1e73ebf83ddc05","src/x509v3.rs":"66fd646ea4caf5ce81e3c881e88d85462519c4e97a7f82e82ca8ac52ea830ad2"},"package":"ff3d1b390ab1b9700f682ad95a30dc9c0f40dd212ca57266012cfc678b0e365a"}

diff --git a/dev-lang/rust/metadata.xml b/dev-lang/rust/metadata.xml
deleted file mode 100644
index f201b57..0000000
--- a/dev-lang/rust/metadata.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-  <maintainer type="project">
-    <email>rust@gentoo.org</email>
-    <name>Rust Project</name>
-  </maintainer>
-  <use>
-    <flag name="clippy">Install clippy component</flag>
-    <flag name="system-llvm">Use the system LLVM install</flag>
-    <flag name="rls">Install rls component</flag>
-    <flag name="rustfmt">Install rustfmt component</flag>
-    <flag name="wasm">Build support for the wasm32-unknown-unknown
-    target</flag>
-  </use>
-</pkgmetadata>

diff --git a/dev-lang/rust/rust-1.31.0.ebuild b/dev-lang/rust/rust-1.31.0.ebuild
deleted file mode 100644
index 263ba55..0000000
--- a/dev-lang/rust/rust-1.31.0.ebuild
+++ /dev/null
@@ -1,300 +0,0 @@
-# Copyright 1999-2018 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-PYTHON_COMPAT=( python2_7 python3_{5,6} pypy )
-
-inherit check-reqs eapi7-ver 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"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="~amd64 ~arm64 ~x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).1"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="https://static.rust-lang.org/dist/${SRC} -> rustc-${PV}-src.tar.xz
-		$(rust_all_arch_uris rust-${RUST_STAGE0_VERSION})"
-
-ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430
-	NVPTX PowerPC Sparc SystemZ 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 +jemalloc libressl rls rustfmt system-llvm wasm ${ALL_LLVM_TARGETS[*]}"
-
-COMMON_DEPEND=">=app-eselect/eselect-rust-0.3_pre20150425
-		jemalloc? ( dev-libs/jemalloc )
-		sys-libs/zlib
-		!libressl? ( dev-libs/openssl:0= )
-		libressl? ( dev-libs/libressl:0= )
-		net-libs/libssh2
-		net-libs/http-parser:=
-		net-misc/curl[ssl]
-		system-llvm? ( >=sys-devel/llvm-6:= )"
-DEPEND="${COMMON_DEPEND}
-	${PYTHON_DEPS}
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	dev-util/cmake"
-RDEPEND="${COMMON_DEPEND}
-	!dev-util/cargo
-	rustfmt? ( !dev-util/rustfmt )"
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-				x86? ( cpu_flags_x86_sse2 )"
-
-S="${WORKDIR}/${MY_P}-src"
-
-PATCHES=(
-	"${FILESDIR}"/1.30.1-clippy-sysroot.patch
-	"${FILESDIR}"/1.31.0-libressl.patch
-)
-
-toml_usex() {
-	usex "$1" true false
-}
-
-pre_build_checks() {
-	CHECKREQS_DISK_BUILD="7G"
-	CHECKREQS_MEMORY="4G"
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		CHECKREQS_DISK_BUILD="10G"
-		CHECKREQS_MEMORY="16G"
-	fi
-	eshopts_pop
-	check-reqs_pkg_setup
-}
-
-pkg_pretend() {
-	pre_build_checks
-}
-
-pkg_setup() {
-	pre_build_checks
-	python-any-r1_pkg_setup
-	if use system-llvm; then
-		llvm_pkg_setup
-	fi
-}
-
-src_prepare() {
-	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
-
-	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\""
-	fi
-	rust_targets="${rust_targets#,}"
-
-	local extended="true" tools="\"cargo\","
-	if use clippy; then
-		tools="\"clippy\",$tools"
-	fi
-	if use rls; then
-		tools="\"rls\",\"analysis\",\"src\",$tools"
-	fi
-	if use rustfmt; then
-		tools="\"rustfmt\",$tools"
-	fi
-
-	local rust_stage0_root="${WORKDIR}"/rust-stage0
-
-	rust_target="$(rust_abi)"
-
-	cat <<- EOF > "${S}"/config.toml
-		[llvm]
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		targets = "${LLVM_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)
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = ${extended}
-		tools = [${tools}]
-		[install]
-		prefix = "${EPREFIX}/usr"
-		libdir = "$(get_libdir)/${P}"
-		docdir = "share/doc/${P}"
-		mandir = "share/${P}/man"
-		[rust]
-		optimize = $(toml_usex !debug)
-		debuginfo = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		use-jemalloc = $(toml_usex jemalloc)
-		default-linker = "$(tc-getCC)"
-		channel = "stable"
-		rpath = false
-		lld = $(toml_usex wasm)
-	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
-		if use system-llvm; then
-			cat <<- EOF >> "${S}"/config.toml
-			    llvm-config = "$(get_llvm_prefix)/bin/llvm-config"
-			EOF
-		fi
-	done
-
-	if use wasm; then
-		cat <<- EOF >> "${S}"/config.toml
-			[target.wasm32-unknown-unknown]
-			linker = "rust-lld"
-		EOF
-	fi
-}
-
-src_compile() {
-	env $(cat "${S}"/config.env)\
-		"${EPYTHON}" ./x.py build --config="${S}"/config.toml -j$(makeopts_jobs) \
-		--exclude src/tools/miri || die # https://github.com/rust-lang/rust/issues/52305
-}
-
-src_install() {
-	local rust_target abi_libdir
-
-	env DESTDIR="${D}" "${EPYTHON}" ./x.py install || die
-
-	mv "${D}/usr/bin/rustc" "${D}/usr/bin/rustc-${PV}" || die
-	mv "${D}/usr/bin/rustdoc" "${D}/usr/bin/rustdoc-${PV}" || die
-	mv "${D}/usr/bin/rust-gdb" "${D}/usr/bin/rust-gdb-${PV}" || die
-	mv "${D}/usr/bin/rust-lldb" "${D}/usr/bin/rust-lldb-${PV}" || die
-	mv "${D}/usr/bin/cargo" "${D}/usr/bin/cargo-${PV}" || die
-	if use clippy; then
-		mv "${D}/usr/bin/clippy-driver" "${D}/usr/bin/clippy-driver-${PV}" || die
-		mv "${D}/usr/bin/cargo-clippy" "${D}/usr/bin/cargo-clippy-${PV}" || die
-	fi
-	if use rls; then
-		mv "${D}/usr/bin/rls" "${D}/usr/bin/rls-${PV}" || die
-	fi
-	if use rustfmt; then
-		mv "${D}/usr/bin/rustfmt" "${D}/usr/bin/rustfmt-${PV}" || die
-		mv "${D}/usr/bin/cargo-fmt" "${D}/usr/bin/cargo-fmt-${PV}" || die
-	fi
-
-	# Copy shared library versions of standard libraries for all targets
-	# into the system's abi-dependent lib directories because the rust
-	# installer only does so for the native ABI.
-	for v in $(multilib_get_enabled_abi_pairs); do
-		if [ ${v##*.} = ${DEFAULT_ABI} ]; then
-			continue
-		fi
-		abi_libdir=$(get_abi_LIBDIR ${v##*.})
-		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
-		mkdir -p "${D}/usr/${abi_libdir}"
-		cp "${D}/usr/$(get_libdir)/${P}/rustlib/${rust_target}/lib"/*.so \
-		   "${D}/usr/${abi_libdir}" || die
-	done
-
-	dodoc COPYRIGHT
-
-	# FIXME:
-	# Really not sure if that env is needed, specailly LDPATH
-	cat <<-EOF > "${T}"/50${P}
-		LDPATH="/usr/$(get_libdir)/${P}"
-		MANPATH="/usr/share/${P}/man"
-	EOF
-	doenvd "${T}"/50${P}
-
-	cat <<-EOF > "${T}/provider-${P}"
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-lldb
-	EOF
-	echo /usr/bin/cargo >> "${T}/provider-${P}"
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${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
-	dodir /etc/env.d/rust
-	insinto /etc/env.d/rust
-	doins "${T}/provider-${P}"
-}
-
-pkg_postinst() {
-	eselect rust update --if-unset
-
-	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}."
-
-	ewarn "cargo is now installed from dev-lang/rust{,-bin} instead of dev-util/cargo."
-	ewarn "This might have resulted in a dangling symlink for /usr/bin/cargo on some"
-	ewarn "systems. This can be resolved by calling 'sudo eselect rust set ${P}'."
-
-	if has_version app-editors/emacs || has_version app-editors/emacs-vcs; 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
-
-	if has_version 'app-shells/zsh'; then
-		elog "install app-shells/rust-zshcomp to get zsh completion for rust."
-	fi
-}
-
-pkg_postrm() {
-	eselect rust unset --if-invalid
-}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2021-06-27  0:33 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2021-06-27  0:33 UTC (permalink / raw
  To: gentoo-commits

commit:     6ebf0cd98d3702562579c9895bad5f4569f8b8b9
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Sat Jun 26 19:01:15 2021 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Sun Jun 27 00:32:34 2021 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=6ebf0cd9

dev-lang/rust: Version bump

Signed-off-by: orbea <orbea <AT> riseup.net>
Closes: https://github.com/gentoo/libressl/pull/345
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 dev-lang/rust/files/1.53.0-miri-vergen.patch       |  53 ++
 dev-lang/rust/files/1.53.0-rustversion-1.0.5.patch | 234 +++++++
 dev-lang/rust/rust-1.53.0.ebuild                   | 680 +++++++++++++++++++++
 3 files changed, 967 insertions(+)

diff --git a/dev-lang/rust/files/1.53.0-miri-vergen.patch b/dev-lang/rust/files/1.53.0-miri-vergen.patch
new file mode 100644
index 0000000..347f147
--- /dev/null
+++ b/dev-lang/rust/files/1.53.0-miri-vergen.patch
@@ -0,0 +1,53 @@
+From 64f128c45687d18d64fc6856a30fde585b007e00 Mon Sep 17 00:00:00 2001
+From: Ralf Jung <post@ralfj.de>
+Date: Sat, 15 May 2021 14:17:30 +0200
+Subject: [PATCH] support building Miri outside a git repo
+
+---
+ cargo-miri/bin.rs   | 14 ++++++++------
+ cargo-miri/build.rs |  2 +-
+ 2 files changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/cargo-miri/bin.rs b/cargo-miri/bin.rs
+index e29bdc771..84447b3a1 100644
+--- a/src/tools/miri/cargo-miri/bin.rs
++++ b/src/tools/miri/cargo-miri/bin.rs
+@@ -6,6 +6,7 @@ use std::io::{self, BufRead, BufReader, BufWriter, Read, Write};
+ use std::ops::Not;
+ use std::path::{Path, PathBuf};
+ use std::process::Command;
++use std::fmt::{Write as _};
+ 
+ use serde::{Deserialize, Serialize};
+ 
+@@ -90,12 +91,13 @@ fn show_help() {
+ }
+ 
+ fn show_version() {
+-    println!(
+-        "miri {} ({} {})",
+-        env!("CARGO_PKG_VERSION"),
+-        env!("VERGEN_GIT_SHA_SHORT"),
+-        env!("VERGEN_GIT_COMMIT_DATE")
+-    );
++    let mut version = format!("miri {}", env!("CARGO_PKG_VERSION"));
++    // Only use `option_env` on vergen variables to ensure the build succeeds
++    // when vergen failed to find the git info.
++    if let Some(sha) = option_env!("VERGEN_GIT_SHA_SHORT") {
++        write!(&mut version, " ({} {})", sha, option_env!("VERGEN_GIT_COMMIT_DATE").unwrap()).unwrap();
++    }
++    println!("{}", version);
+ }
+ 
+ fn show_error(msg: String) -> ! {
+diff --git a/cargo-miri/build.rs b/cargo-miri/build.rs
+index cff135fe4..ebd8e7003 100644
+--- a/src/tools/miri/cargo-miri/build.rs
++++ b/src/tools/miri/cargo-miri/build.rs
+@@ -7,5 +7,5 @@ fn main() {
+     let mut gen_config = vergen::Config::default();
+     *gen_config.git_mut().sha_kind_mut() = vergen::ShaKind::Short;
+     *gen_config.git_mut().commit_timestamp_kind_mut() = vergen::TimestampKind::DateOnly;
+-    vergen(gen_config).expect("Unable to generate vergen keys!");
++    vergen(gen_config).ok(); // Ignore failure (in case we are built outside a git repo)
+ }

diff --git a/dev-lang/rust/files/1.53.0-rustversion-1.0.5.patch b/dev-lang/rust/files/1.53.0-rustversion-1.0.5.patch
new file mode 100644
index 0000000..bc6ae8b
--- /dev/null
+++ b/dev-lang/rust/files/1.53.0-rustversion-1.0.5.patch
@@ -0,0 +1,234 @@
+From 12efa21eb88cb43d3b927952da0c5635373ac92b Mon Sep 17 00:00:00 2001
+From: David Tolnay <dtolnay@gmail.com>
+Date: Thu, 17 Jun 2021 22:34:55 -0700
+Subject: [PATCH] Update rustversion to 1.0.5
+
+---
+ Cargo.lock                                   |  4 +--
+ vendor/rustversion/.cargo-checksum.json      |  2 +-
+ vendor/rustversion/Cargo.toml                |  2 +-
+ vendor/rustversion/build/build.rs            |  6 ++++
+ vendor/rustversion/build/rustc.rs            | 30 +++++++++-----------
+ vendor/rustversion/src/lib.rs                | 15 ++++++++++
+ vendor/rustversion/src/time.rs               | 13 +++++++--
+ vendor/rustversion/tests/test_parse.rs       | 10 +++++++
+ vendor/rustversion/tests/ui/bad-bound.stderr |  4 +--
+ vendor/rustversion/tests/ui/bad-date.stderr  |  4 +--
+ 10 files changed, 63 insertions(+), 27 deletions(-)
+
+diff --git a/Cargo.lock b/Cargo.lock
+index 0939f19cdfe..26a89caf050 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -4582,9 +4582,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "rustversion"
+-version = "1.0.4"
++version = "1.0.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd"
++checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088"
+ 
+ [[package]]
+ name = "ryu"
+diff --git a/vendor/rustversion/.cargo-checksum.json b/vendor/rustversion/.cargo-checksum.json
+index e1277df7b59..0a134695aaf 100644
+--- a/vendor/rustversion/.cargo-checksum.json
++++ b/vendor/rustversion/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"Cargo.toml":"1a91782510461d54726e816ae776042b95c79c9949d49c11b8782caefc22ead2","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"01dc6a1bf499a12bd0bfbbfe4db2ca8460b2c151235bcf2aad2356de4c2ec50a","build/build.rs":"481daf363b7004c90ffc3e012863a4102e9f26b9aaa2a4a295c2dd78f690be28","build/rustc.rs":"4dc8f1764672137bd15758cc19242740b0d6ab99e4a69171ad0999f9112a15a6","src/attr.rs":"9301cd4aff5a9648c057d5d8de9eb66921f0c3a715c51ada4459576bd49c8b19","src/bound.rs":"44bda74d3aacfeeeac9dae2f7eef3acc844d4c3c7eaa9d3e6288e5aeff269dff","src/constfn.rs":"613b8f53b21cc06b4f619fce9000993d3e7873b650701ca01cef1e53bed5b40a","src/date.rs":"454c749a60db8144a706a813e06fe3ae39c981920ba9832ef82f3f9debe1f052","src/error.rs":"cb37102f03ebbaca313d80f9714fe08dfef92fe956789ee87d93eb6121705f4f","src/expr.rs":"8e8ca76f4f5838436d9d7273f499c698bb41f6c15bc07d32ec5c1cb8bd3dd731","sr
 c/iter.rs":"8d4b817b9abc4e817105b673e15f29ef9bb8284a010ce01ac2d83387fe136947","src/lib.rs":"f8347832d8072058dbb4af6b8d67a834a02fe9c5460bbaa26defec4b66317f1b","src/release.rs":"abb8ddd877c39a023bf5e7bd67063d6e4144e79758a8bafa338167f9d15b89f1","src/time.rs":"45fb48ff0a0046a5a1b108b9ce53b14885637ad868ede1d66970379c2b7f16ef","src/token.rs":"824ce765f692db73afa02d3ebb0281c750748035efc98fa547be29d3072665ce","src/version.rs":"afdb048bba95bbb885945eba5527b6bf0eca0105642bfc304c2f82a8b7d556df","tests/compiletest.rs":"0a52a44786aea1c299c695bf948b2ed2081e4cc344e5c2cadceab4eb03d0010d","tests/test_const.rs":"a8297ca6559f895a3b2664964a42b6f82bbbc3c8faa9556a513006e6e1827995","tests/test_eval.rs":"6f0ee3f49c9a0d0c374a4d0e9a9dce753cd9fc2ca7725e000a435dbd5f4a9ce3","tests/test_parse.rs":"fbf9695f4208263743715e6c8b6294dfffee21462a65dfeb9339a70c0e18dbc6","tests/ui/bad-bound.rs":"25bde278fcaabf62868417148a5e5f2006bf589d7ebd7bf6004fb8d78e47594f","tests/ui/bad-bound.stderr":"bc9297f758c2541fb0a8b48d5785f4bb
 cd0d2a07d876ba0baf2fc9de9275e7e6","tests/ui/bad-date.rs":"6e23714dae8b6346fefe50dacd4abba3265248bbadfdd60c739138aa8a0037ba","tests/ui/bad-date.stderr":"1ac3cab13ee900fc8344e8fab21ff4d9cad476aca44925a4c1b2293a6b59b742","tests/ui/bad-not.rs":"f003df8bd245e9dd8edc3a6d94078ee5162fac7a98db881271f0f5b6db98d45d","tests/ui/bad-not.stderr":"d4ef78fae4a82419e737757158796cb103a5920df498956eaf57ed201797b463","tests/ui/bad-version.rs":"f4ea2cd038e6c63deb9c2e3ceffce93dbf179d9ce18c16d88f3b6cd7138a8c8e","tests/ui/bad-version.stderr":"60ed51c62f4c2fb6ff95cff7523cfca379ed434f319da9d82704318588792338","tests/ui/const-not-fn.rs":"10bbe38f0d89391fff0698756e4cfd4e72a41090360393a0c951b67df14d1c35","tests/ui/const-not-fn.stderr":"9551f7f222445b31d7af2415d467301c332d55bb3d5a143846484f2f00047a01"},"package":"cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd"}
+\ No newline at end of file
++{"files":{"Cargo.toml":"a09ee758f816eddff8a8c7fb5be54dd95e74caad18a207251faedd251ecfaf1c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"01dc6a1bf499a12bd0bfbbfe4db2ca8460b2c151235bcf2aad2356de4c2ec50a","build/build.rs":"bae427f344972e6e0e348ec48dce0947274b3ec6cac0938497a8d3da5c9834e5","build/rustc.rs":"3e4acf7ea679f9331dd4e8dbe42a08a312f58379ea1eee5898793a9848d06d8c","src/attr.rs":"9301cd4aff5a9648c057d5d8de9eb66921f0c3a715c51ada4459576bd49c8b19","src/bound.rs":"44bda74d3aacfeeeac9dae2f7eef3acc844d4c3c7eaa9d3e6288e5aeff269dff","src/constfn.rs":"613b8f53b21cc06b4f619fce9000993d3e7873b650701ca01cef1e53bed5b40a","src/date.rs":"454c749a60db8144a706a813e06fe3ae39c981920ba9832ef82f3f9debe1f052","src/error.rs":"cb37102f03ebbaca313d80f9714fe08dfef92fe956789ee87d93eb6121705f4f","src/expr.rs":"8e8ca76f4f5838436d9d7273f499c698bb41f6c15bc07d32ec5c1cb8bd3dd731","sr
 c/iter.rs":"8d4b817b9abc4e817105b673e15f29ef9bb8284a010ce01ac2d83387fe136947","src/lib.rs":"5652f6f84fc80136bd29b2125f7676e80e0df7d40aac274b0658c99cecbd871d","src/release.rs":"abb8ddd877c39a023bf5e7bd67063d6e4144e79758a8bafa338167f9d15b89f1","src/time.rs":"bdd05a743b07a6bbfa0dbc9d4e415e051aba4a51a430c3be1e23447eae298c8b","src/token.rs":"824ce765f692db73afa02d3ebb0281c750748035efc98fa547be29d3072665ce","src/version.rs":"afdb048bba95bbb885945eba5527b6bf0eca0105642bfc304c2f82a8b7d556df","tests/compiletest.rs":"0a52a44786aea1c299c695bf948b2ed2081e4cc344e5c2cadceab4eb03d0010d","tests/test_const.rs":"a8297ca6559f895a3b2664964a42b6f82bbbc3c8faa9556a513006e6e1827995","tests/test_eval.rs":"6f0ee3f49c9a0d0c374a4d0e9a9dce753cd9fc2ca7725e000a435dbd5f4a9ce3","tests/test_parse.rs":"cdfe376020b9391330292968046117b0935c828d73385e8faeb2e333ec897088","tests/ui/bad-bound.rs":"25bde278fcaabf62868417148a5e5f2006bf589d7ebd7bf6004fb8d78e47594f","tests/ui/bad-bound.stderr":"a03dc78b380191c10d3b3406b1fd3208
 bb2609d4c26b9c33ccd335721e3cd072","tests/ui/bad-date.rs":"6e23714dae8b6346fefe50dacd4abba3265248bbadfdd60c739138aa8a0037ba","tests/ui/bad-date.stderr":"3a607fb950a69f7dc1b503295bce53541f9dee9f4674edc5d13ee3a69ff0e8cd","tests/ui/bad-not.rs":"f003df8bd245e9dd8edc3a6d94078ee5162fac7a98db881271f0f5b6db98d45d","tests/ui/bad-not.stderr":"d4ef78fae4a82419e737757158796cb103a5920df498956eaf57ed201797b463","tests/ui/bad-version.rs":"f4ea2cd038e6c63deb9c2e3ceffce93dbf179d9ce18c16d88f3b6cd7138a8c8e","tests/ui/bad-version.stderr":"60ed51c62f4c2fb6ff95cff7523cfca379ed434f319da9d82704318588792338","tests/ui/const-not-fn.rs":"10bbe38f0d89391fff0698756e4cfd4e72a41090360393a0c951b67df14d1c35","tests/ui/const-not-fn.stderr":"9551f7f222445b31d7af2415d467301c332d55bb3d5a143846484f2f00047a01"},"package":"61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088"}
+\ No newline at end of file
+diff --git a/vendor/rustversion/Cargo.toml b/vendor/rustversion/Cargo.toml
+index 56995ff0792..c72b1b2b343 100644
+--- a/vendor/rustversion/Cargo.toml
++++ b/vendor/rustversion/Cargo.toml
+@@ -13,7 +13,7 @@
+ [package]
+ edition = "2018"
+ name = "rustversion"
+-version = "1.0.4"
++version = "1.0.5"
+ authors = ["David Tolnay <dtolnay@gmail.com>"]
+ build = "build/build.rs"
+ description = "Conditional compilation according to rustc compiler version"
+diff --git a/vendor/rustversion/build/build.rs b/vendor/rustversion/build/build.rs
+index 2a8bc4af39f..15312510d68 100644
+--- a/vendor/rustversion/build/build.rs
++++ b/vendor/rustversion/build/build.rs
+@@ -1,3 +1,9 @@
++#![allow(
++    clippy::enum_glob_use,
++    clippy::must_use_candidate,
++    clippy::single_match_else
++)]
++
+ mod rustc;
+ 
+ use std::env;
+diff --git a/vendor/rustversion/build/rustc.rs b/vendor/rustversion/build/rustc.rs
+index 723e6bdd0e2..dfc6a05166f 100644
+--- a/vendor/rustversion/build/rustc.rs
++++ b/vendor/rustversion/build/rustc.rs
+@@ -48,23 +48,21 @@ pub fn parse(string: &str) -> Option<Version> {
+         Some(channel) if channel == "dev" => Dev,
+         Some(channel) if channel.starts_with("beta") => Beta,
+         Some(channel) if channel == "nightly" => match words.next() {
+-            Some(hash) => {
+-                if !hash.starts_with('(') {
+-                    return None;
++            Some(hash) if hash.starts_with('(') => match words.next() {
++                None if hash.ends_with(')') => Dev,
++                Some(date) if date.ends_with(')') => {
++                    let mut date = date[..date.len() - 1].split('-');
++                    let year = date.next()?.parse().ok()?;
++                    let month = date.next()?.parse().ok()?;
++                    let day = date.next()?.parse().ok()?;
++                    match date.next() {
++                        None => Nightly(Date { year, month, day }),
++                        Some(_) => return None,
++                    }
+                 }
+-                let date = words.next()?;
+-                if !date.ends_with(')') {
+-                    return None;
+-                }
+-                let mut date = date[..date.len() - 1].split('-');
+-                let year = date.next()?.parse().ok()?;
+-                let month = date.next()?.parse().ok()?;
+-                let day = date.next()?.parse().ok()?;
+-                match date.next() {
+-                    None => Nightly(Date { year, month, day }),
+-                    Some(_) => return None,
+-                }
+-            }
++                None | Some(_) => return None,
++            },
++            Some(_) => return None,
+             None => Dev,
+         },
+         Some(_) => return None,
+diff --git a/vendor/rustversion/src/lib.rs b/vendor/rustversion/src/lib.rs
+index 2614105dd1a..172eb89382f 100644
+--- a/vendor/rustversion/src/lib.rs
++++ b/vendor/rustversion/src/lib.rs
+@@ -145,6 +145,21 @@
+ //!
+ //! <br>
+ 
++#![allow(
++    clippy::cast_lossless,
++    clippy::cast_possible_truncation,
++    clippy::doc_markdown,
++    clippy::enum_glob_use,
++    clippy::from_iter_instead_of_collect,
++    clippy::module_name_repetitions,
++    clippy::must_use_candidate,
++    clippy::needless_doctest_main,
++    clippy::needless_pass_by_value,
++    clippy::redundant_else,
++    clippy::toplevel_ref_arg,
++    clippy::unreadable_literal
++)]
++
+ extern crate proc_macro;
+ 
+ mod attr;
+diff --git a/vendor/rustversion/src/time.rs b/vendor/rustversion/src/time.rs
+index 1e6dd9066b4..3c21463dd80 100644
+--- a/vendor/rustversion/src/time.rs
++++ b/vendor/rustversion/src/time.rs
+@@ -1,4 +1,5 @@
+ use crate::date::Date;
++use std::env;
+ use std::time::{SystemTime, UNIX_EPOCH};
+ 
+ // Timestamp of 2016-03-01 00:00:00 in UTC.
+@@ -13,14 +14,20 @@
+ 
+ pub fn today() -> Date {
+     let default = Date {
+-        year: 2019,
+-        month: 1,
+-        day: 1,
++        year: 2020,
++        month: 2,
++        day: 25,
+     };
+     try_today().unwrap_or(default)
+ }
+ 
+ fn try_today() -> Option<Date> {
++    if let Some(pkg_name) = env::var_os("CARGO_PKG_NAME") {
++        if pkg_name.to_str() == Some("rustversion-tests") {
++            return None; // Stable date for ui testing.
++        }
++    }
++
+     let now = SystemTime::now();
+     let since_epoch = now.duration_since(UNIX_EPOCH).ok()?;
+     let secs = since_epoch.as_secs();
+diff --git a/vendor/rustversion/tests/test_parse.rs b/vendor/rustversion/tests/test_parse.rs
+index 843bd73d3e5..cb39b3179f5 100644
+--- a/vendor/rustversion/tests/test_parse.rs
++++ b/vendor/rustversion/tests/test_parse.rs
+@@ -1,3 +1,5 @@
++#![allow(clippy::enum_glob_use, clippy::must_use_candidate)]
++
+ include!("../build/rustc.rs");
+ 
+ #[test]
+@@ -76,6 +78,14 @@ fn test_parse() {
+                 }),
+             },
+         ),
++        (
++            "rustc 1.52.1-nightly (gentoo)",
++            Version {
++                minor: 52,
++                patch: 1,
++                channel: Dev,
++            },
++        ),
+     ];
+ 
+     for (string, expected) in cases {
+diff --git a/vendor/rustversion/tests/ui/bad-bound.stderr b/vendor/rustversion/tests/ui/bad-bound.stderr
+index f8c498c8577..2c56acbdb33 100644
+--- a/vendor/rustversion/tests/ui/bad-bound.stderr
++++ b/vendor/rustversion/tests/ui/bad-bound.stderr
+@@ -1,10 +1,10 @@
+-error: expected rustc release number like 1.31, or nightly date like 2020-10-26
++error: expected rustc release number like 1.31, or nightly date like 2020-02-25
+  --> $DIR/bad-bound.rs:1:22
+   |
+ 1 | #[rustversion::since(stable)]
+   |                      ^^^^^^
+ 
+-error: expected rustc release number like 1.31, or nightly date like 2020-10-26
++error: expected rustc release number like 1.31, or nightly date like 2020-02-25
+  --> $DIR/bad-bound.rs:4:26
+   |
+ 4 | #[rustversion::any(since(stable))]
+diff --git a/vendor/rustversion/tests/ui/bad-date.stderr b/vendor/rustversion/tests/ui/bad-date.stderr
+index 734d7889075..c523ccc02bf 100644
+--- a/vendor/rustversion/tests/ui/bad-date.stderr
++++ b/vendor/rustversion/tests/ui/bad-date.stderr
+@@ -1,10 +1,10 @@
+-error: expected nightly date, like 2020-10-26
++error: expected nightly date, like 2020-02-25
+  --> $DIR/bad-date.rs:1:24
+   |
+ 1 | #[rustversion::nightly(stable)]
+   |                        ^^^^^^
+ 
+-error: expected nightly date, like 2020-10-26
++error: expected nightly date, like 2020-02-25
+  --> $DIR/bad-date.rs:4:28
+   |
+ 4 | #[rustversion::any(nightly(stable))]
+-- 
+2.32.0
+

diff --git a/dev-lang/rust/rust-1.53.0.ebuild b/dev-lang/rust/rust-1.53.0.ebuild
new file mode 100644
index 0000000..0507d44
--- /dev/null
+++ b/dev-lang/rust/rust-1.53.0.ebuild
@@ -0,0 +1,680 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7..9} )
+
+inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
+	multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.xz"
+	KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+fi
+
+RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+SRC_URI="
+	https://static.rust-lang.org/dist/${SRC}
+	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
+	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
+"
+
+# 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 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:
+# List all the working slots in LLVM_VALID_SLOTS, newest first.
+LLVM_VALID_SLOTS=( 12 )
+LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
+
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+# (-) usedep needed because we may build with older llvm without that target
+LLVM_DEPEND="|| ( "
+for _s in ${LLVM_VALID_SLOTS[@]}; do
+	LLVM_DEPEND+=" ( "
+	for _x in ${ALL_LLVM_TARGETS[@]}; do
+		LLVM_DEPEND+="
+			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
+	done
+	LLVM_DEPEND+=" )"
+done
+unset _s _x
+LLVM_DEPEND+=" )
+	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
+	wasm? ( sys-devel/lld )
+"
+
+# 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
+RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
+RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
+BOOTSTRAP_DEPEND="||
+	(
+		=dev-lang/rust-"${RUST_DEP_PREV}"
+		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
+		=dev-lang/rust-"${RUST_DEP_CURR}"
+		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
+	)
+"
+
+BDEPEND="${PYTHON_DEPS}
+	app-eselect/eselect-rust
+	|| (
+		>=sys-devel/gcc-4.7
+		>=sys-devel/clang-3.5
+	)
+	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
+	!system-llvm? (
+		>=dev-util/cmake-3.13.4
+		dev-util/ninja
+	)
+	test? ( sys-devel/gdb )
+	verify-sig? ( app-crypt/openpgp-keys-rust )
+"
+
+DEPEND="
+	>=app-arch/xz-utils-5.2
+	net-misc/curl:=[http2,ssl]
+	sys-libs/zlib:=
+	dev-libs/openssl: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}/libexec/.*
+	usr/lib/${PN}/${PV}/lib/lib.*.so
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+	usr/lib/${PN}/${PV}/lib/lib.*.so.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/rust.asc"
+
+PATCHES=(
+	"${FILESDIR}"/1.47.0-libressl.patch
+	"${FILESDIR}"/1.47.0-ignore-broken-and-non-applicable-tests.patch
+	"${FILESDIR}"/1.49.0-gentoo-musl-target-specs.patch
+	"${FILESDIR}"/1.53.0-rustversion-1.0.5.patch # https://github.com/rust-lang/rust/pull/86425
+	"${FILESDIR}"/1.53.0-miri-vergen.patch # https://github.com/rust-lang/rust/issues/84182
+)
+
+S="${WORKDIR}/${MY_P}-src"
+
+toml_usex() {
+	usex "${1}" true false
+}
+
+bootstrap_rust_version_check() {
+	# never call from pkg_pretend. eselect-rust may be not installed yet.
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
+	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
+	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
+		eerror "Rust >=${rustc_wanted} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too old"
+	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
+		eerror "Rust <${rustc_toonew} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too new"
+	else
+		einfo "Using rust ${rustc_version} to build"
+	fi
+}
+
+pre_build_checks() {
+	local M=8192
+	# multiply requirements by 1.5 if we are doing x86-multilib
+	if use amd64; then
+		M=$(( $(usex abi_x86_32 15 10) * ${M} / 10 ))
+	fi
+	M=$(( $(usex clippy 128 0) + ${M} ))
+	M=$(( $(usex miri 128 0) + ${M} ))
+	M=$(( $(usex rls 512 0) + ${M} ))
+	M=$(( $(usex rustfmt 256 0) + ${M} ))
+	# add 2G if we compile llvm and 256M per llvm_target
+	if ! use system-llvm; then
+		M=$(( 2048 + ${M} ))
+		local ltarget
+		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+		done
+	fi
+	M=$(( $(usex wasm 256 0) + ${M} ))
+	M=$(( $(usex debug 2 1) * ${M} ))
+	eshopts_push -s extglob
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		M=$(( 15 * ${M} / 10 ))
+	fi
+	eshopts_pop
+	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
+	M=$(( $(usex doc 256 0) + ${M} ))
+	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+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 && bootstrap_rust_version_check
+
+	if use system-llvm; then
+		llvm_pkg_setup
+
+		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+		export LLVM_LINK_SHARED=1
+		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+	fi
+}
+
+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 \
+			--without=rust-docs --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/wasm_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
+		local printsysroot
+		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
+		rust_stage0_root="${printsysroot}"
+	else
+		rust_stage0_root="${WORKDIR}"/rust-stage0
+	fi
+	# in case of prefix it will be already prefixed, as --print sysroot returns full path
+	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+	rust_target="$(rust_abi)"
+
+	cat <<- _EOF_ > "${S}"/config.toml
+		changelog-seen = 2
+		[llvm]
+		download-ci-llvm = false
+		optimize = $(toml_usex !debug)
+		release-debuginfo = $(toml_usex debug)
+		assertions = $(toml_usex debug)
+		ninja = true
+		targets = "${LLVM_TARGETS// /;}"
+		experimental-targets = ""
+		link-shared = $(toml_usex system-llvm)
+		[build]
+		build-stage = 2
+		test-stage = 2
+		doc-stage = 2
+		build = "${rust_target}"
+		host = ["${rust_target}"]
+		target = [${rust_targets}]
+		cargo = "${rust_stage0_root}/bin/cargo"
+		rustc = "${rust_stage0_root}/bin/rustc"
+		rustfmt = "${rust_stage0_root}/bin/rustfmt"
+		docs = $(toml_usex doc)
+		compiler-docs = false
+		submodules = false
+		python = "${EPYTHON}"
+		locked-deps = true
+		vendor = true
+		extended = true
+		tools = [${tools}]
+		verbose = 2
+		sanitizers = false
+		profiler = 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)
+		debug-assertions-std = $(toml_usex debug)
+		debuginfo-level = $(usex debug 2 0)
+		debuginfo-level-rustc = $(usex debug 2 0)
+		debuginfo-level-std = $(usex debug 2 0)
+		debuginfo-level-tools = $(usex debug 2 0)
+		debuginfo-level-tests = 0
+		backtrace = true
+		incremental = false
+		default-linker = "$(tc-getCC)"
+		parallel-compiler = $(toml_usex parallel-compiler)
+		channel = "$(usex nightly nightly stable)"
+		description = "gentoo"
+		rpath = false
+		verbose-tests = true
+		optimize-tests = $(toml_usex !debug)
+		codegen-tests = true
+		dist-src = false
+		remap-debuginfo = true
+		lld = $(usex system-llvm false $(toml_usex wasm))
+		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+		# https://github.com/rust-lang/rust/issues/74976
+		# https://github.com/rust-lang/rust/issues/76526
+		deny-warnings = $(usex wasm $(usex doc false true) true)
+		backtrace-on-ice = true
+		jemalloc = false
+		[dist]
+		src-tarball = false
+		compression-formats = ["gz"]
+	_EOF_
+
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+		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
+		if [[ "${cross_toolchain}" == *-musl* ]]; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+			_EOF_
+		fi
+
+		# append cross target to "normal" target list
+		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
+		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+		rust_targets="${rust_targets},\"${cross_rust_target}\""
+		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+		ewarn
+		ewarn "Enabled ${cross_rust_target} rust target"
+		ewarn "Using ${cross_toolchain} cross toolchain"
+		ewarn
+		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+			ewarn "'sys-devel/binutils[multitarget]' is not installed"
+			ewarn "'strip' will be unable to strip cross libraries"
+			ewarn "cross targets will be installed with full debug information"
+			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+			ewarn
+			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+			ewarn
+		fi
+	done
+	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+	einfo "Rust configured with the following flags:"
+	echo
+	echo RUSTFLAGS="${RUSTFLAGS:-}"
+	echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
+	echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
+	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+	cat "${S}"/config.env || die
+	echo
+	einfo "config.toml contents:"
+	cat "${S}"/config.toml || die
+	echo
+}
+
+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
+	)
+}
+
+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() {
+	(
+	IFS=$'\n'
+	env $(cat "${S}"/config.env) DESTDIR="${D}" \
+		"${EPYTHON}" ./x.py install	-vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+	)
+
+	# bug #689562, #689160
+	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
+	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+
+	local symlinks=(
+		cargo
+		rustc
+		rustdoc
+		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}/libexec" "/usr/lib/${PN}/libexec-${PV}"
+	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
+	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
+	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+
+	newenvd - "50${P}" <<-_EOF_
+		LDPATH="${EPREFIX}/usr/lib/rust/lib"
+		MANPATH="${EPREFIX}/usr/lib/rust/man"
+		$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
+		$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
+	_EOF_
+
+	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+
+	# note: eselect-rust adds EROOT to all paths below
+	cat <<-_EOF_ > "${T}/provider-${P}"
+		/usr/bin/cargo
+		/usr/bin/rustdoc
+		/usr/bin/rust-gdb
+		/usr/bin/rust-gdbgui
+		/usr/bin/rust-lldb
+		/usr/lib/rustlib
+		/usr/lib/rust/lib
+		/usr/lib/rust/libexec
+		/usr/lib/rust/man
+		/usr/share/doc/rust
+	_EOF_
+
+	if use clippy; then
+		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+	fi
+	if use miri; then
+		echo /usr/bin/miri >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+	fi
+	if use 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
+}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2021-08-20 23:56 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2021-08-20 23:56 UTC (permalink / raw
  To: gentoo-commits

commit:     7143e787e95fae9cfb9969d0596842ea1fe570c0
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Fri Aug 20 19:46:02 2021 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Fri Aug 20 23:56:08 2021 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=7143e787

dev-lang/rust: Version bump for 1.54.0

Signed-off-by: orbea <orbea <AT> riseup.net>
Closes: https://github.com/gentoo/libressl/pull/347
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 dev-lang/rust/files/1.54.0-libressl.patch      |  43 ++
 dev-lang/rust/files/1.54.0-parallel-miri.patch |  43 ++
 dev-lang/rust/rust-1.54.0.ebuild               | 680 +++++++++++++++++++++++++
 3 files changed, 766 insertions(+)

diff --git a/dev-lang/rust/files/1.54.0-libressl.patch b/dev-lang/rust/files/1.54.0-libressl.patch
new file mode 100644
index 0000000..8899786
--- /dev/null
+++ b/dev-lang/rust/files/1.54.0-libressl.patch
@@ -0,0 +1,43 @@
+From 137d2bcff8f7eca2207fe5899ba2bd0c83833dca Mon Sep 17 00:00:00 2001
+From: Stefan Strogin <steils@gentoo.org>
+Date: Fri, 20 Aug 2021 12:23:13 -0700
+Subject: [PATCH] Support LibreSSL 3.3.x
+
+Signed-off-by: orbea <orbea@riseup.net>
+---
+ vendor/openssl-sys/.cargo-checksum.json | 2 +-
+ vendor/openssl-sys/build/main.rs        | 3 ++-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/vendor/openssl-sys/.cargo-checksum.json b/vendor/openssl-sys/.cargo-checksum.json
+index 4e9f9c71b..003be66d4 100644
+--- a/vendor/openssl-sys/.cargo-checksum.json
++++ b/vendor/openssl-sys/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"CHANGELOG.md":"3c38e78f95e359924f839c6f3738c75b91149af81c23688dfaf37618a3332755","Cargo.toml":"d25f5ed8a445b5efc5bb81d51d7409e6b7e0abb90ceffe623dfa0da00c3f4ebb","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"18071782a20c51379733d7c2041c6755a11326d0153d8c7c3073875d7870da42","build/cfgs.rs":"9f92d008cf0db1cc2728f2b67c24a719840a4c8645d11dc560eadd8e9b0adeac","build/expando.c":"14d2de522d6ef7214c3f1ca73b9231229420b8ba95bdcf01cac93bf775aed15e","build/find_normal.rs":"1c5f996f44e77311d7e4c0e6bdfa212de427f569c19c790c119b88d472977700","build/find_vendored.rs":"7bf0e59c5646d72ee5a4392ad970fdf5c20288ddaf54dd86a8caff49583b38f5","build/main.rs":"c7485a16dd676de00d9ef42e3e41c5217cc6d5f5783f492a61b9c118e9f3bf18","src/aes.rs":"822bf666db351fe6ef9607c918081d6ad378fc1cedb05290bb746f86980c6088","src/asn1.rs":"801c254afc76b0c29b756bd86a149361609f82ec33c1f1fad39a512fbe4e87ee","src/bio.rs":"3aac4e38ccf8d832b4156908cd3f1ff9c56f84c05d2f07ed7a3e3fcc
 abe965e9","src/bn.rs":"c71b9c79f704a94a889d27bf75e7e5b1f9f10b0df0aeb485aef509cf05d7467f","src/cms.rs":"f21a403fea95e7b7efe0539a429831cfa51c8818adb79c7ebf73ae2a6f2dc87e","src/conf.rs":"511e008c18039f54d856d70b80009426fc7f4ce34fe4304e2c58ebf465031de0","src/crypto.rs":"a1279719ade9704be3d9af55ff679abbe918d525f332ca15810146d45e9080cf","src/dh.rs":"280fd508756b8013368a4233465f681a1339ad4e415569c14762e5dad0441cbe","src/dsa.rs":"ae79baf231681900ea76304285b3ffacf5298c90b8c04d371269cf4adbb5b9fa","src/dtls1.rs":"45e1dbf94a42d587fd948d553dc30187aa6aa2b5b82d554cf725ff36df768aa0","src/ec.rs":"c215a564373e8de1da63b698fbafc187d738fe90b77f998713a91180e178e350","src/err.rs":"3edf1379b3277df32e047a52553d243d4a4001111a277cf4b12f7297f2fe2bf0","src/evp.rs":"e82deaaf6d76c3dc52fd574fa131ac4f64dc6c5f173cf38dfd0a24b2f878c5be","src/hmac.rs":"fa3976d94a1383f300bdec228270afb8b47c97bb019d727c7d59ba783be3c42e","src/lib.rs":"57291110117331f5d6733da1421267e47cf891e0e0411b0720a04fdbc0686700","src/macros.rs":"7ed99c
 00c53ee12ea92634d4ace0af84845ebf98819869746e7896c8eaff23db","src/obj_mac.rs":"42019b142e523d7695d8c14ee7f72fa4b5702c07dee98fa12e70ab7dfcc95459","src/object.rs":"210d91fc81414da4cd3afa0127cabffef1640fa85e65635bc489e0f721ee929f","src/ocsp.rs":"154e416aa14df8d5aa962f3352ca72bab00716f0834413c78dfa663e0880e9dd","src/ossl_typ.rs":"4379b8327a1efbae1c784ad576c98ac7708bf62cab1c373845d9ca948b5e401b","src/pem.rs":"ba80937125618cd0e7073d69be6aff3b619ede74e227a158cb0a68af27f69640","src/pkcs12.rs":"f1a3f32f128fa8ce94391c1957a0e535387cebc0e25d21743888b172518dd636","src/pkcs7.rs":"0c5a0f85323a1e5a4d7edcc433166de8614b44f545758d926cf95e9626d4af2b","src/rand.rs":"469601b4fbb56d4dbf5cf5d7bb8483e3bde411edea18601e7d1ed6ef27180fd3","src/rsa.rs":"aa984781f19d3e88527bec9db5338b19051313b01589018c5bb86923f058c6c6","src/safestack.rs":"6c39e28565d34efad707d77561d4caa99e3f028fcac3a2ef6fd403a78de1190c","src/sha.rs":"1a6b028a63654d2419417a9a8af790cd22409a4643682a0686ecdb9441264eba","src/srtp.rs":"1c4dee9e6c139cc70
 416207786e385f199321624fb9fbf3cbf39a8160c0c405d","src/ssl.rs":"5970b21a47668f7efb8130f22110d9ab65c571a45681c02d8ab596b7068db963","src/ssl3.rs":"9336c816e00847d552dea22587d4ac72ff3cbd469fa5ff750423a19ea11e68eb","src/stack.rs":"1a509907283e5a2bf88cf193ce607f49ce7d2d95547c2ce2abc0fd4567aad334","src/tls1.rs":"60ca3dea1bbfda645bde563b4a878dac129c3f760e3ad572381000fc7a8ef522","src/x509.rs":"7ffbf8687f650dd9678eab61871913579539f78ebf69f005f07f7a40017b26cb","src/x509_vfy.rs":"a5fc69e3ef3565c8d9196768c0b84bd876edfb019688dc4487dbb88f6a89293d","src/x509v3.rs":"520253195097d134e553c6378c1db2510eae6ccfcab6f6fb08919697bc0f023b"},"package":"313752393519e876837e09e1fa183ddef0be7735868dced3196f4472d536277f"}
+\ No newline at end of file
++{"files":{"CHANGELOG.md":"3c38e78f95e359924f839c6f3738c75b91149af81c23688dfaf37618a3332755","Cargo.toml":"d25f5ed8a445b5efc5bb81d51d7409e6b7e0abb90ceffe623dfa0da00c3f4ebb","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"18071782a20c51379733d7c2041c6755a11326d0153d8c7c3073875d7870da42","build/cfgs.rs":"9f92d008cf0db1cc2728f2b67c24a719840a4c8645d11dc560eadd8e9b0adeac","build/expando.c":"14d2de522d6ef7214c3f1ca73b9231229420b8ba95bdcf01cac93bf775aed15e","build/find_normal.rs":"1c5f996f44e77311d7e4c0e6bdfa212de427f569c19c790c119b88d472977700","build/find_vendored.rs":"7bf0e59c5646d72ee5a4392ad970fdf5c20288ddaf54dd86a8caff49583b38f5","build/main.rs":"93ac710e06c9db872b47de99a61bc4aa058ac99e3d734a27a77332a47cca2f75","src/aes.rs":"822bf666db351fe6ef9607c918081d6ad378fc1cedb05290bb746f86980c6088","src/asn1.rs":"801c254afc76b0c29b756bd86a149361609f82ec33c1f1fad39a512fbe4e87ee","src/bio.rs":"3aac4e38ccf8d832b4156908cd3f1ff9c56f84c05d2f07ed7a3e3fcc
 abe965e9","src/bn.rs":"c71b9c79f704a94a889d27bf75e7e5b1f9f10b0df0aeb485aef509cf05d7467f","src/cms.rs":"f21a403fea95e7b7efe0539a429831cfa51c8818adb79c7ebf73ae2a6f2dc87e","src/conf.rs":"511e008c18039f54d856d70b80009426fc7f4ce34fe4304e2c58ebf465031de0","src/crypto.rs":"a1279719ade9704be3d9af55ff679abbe918d525f332ca15810146d45e9080cf","src/dh.rs":"280fd508756b8013368a4233465f681a1339ad4e415569c14762e5dad0441cbe","src/dsa.rs":"ae79baf231681900ea76304285b3ffacf5298c90b8c04d371269cf4adbb5b9fa","src/dtls1.rs":"45e1dbf94a42d587fd948d553dc30187aa6aa2b5b82d554cf725ff36df768aa0","src/ec.rs":"c215a564373e8de1da63b698fbafc187d738fe90b77f998713a91180e178e350","src/err.rs":"3edf1379b3277df32e047a52553d243d4a4001111a277cf4b12f7297f2fe2bf0","src/evp.rs":"e82deaaf6d76c3dc52fd574fa131ac4f64dc6c5f173cf38dfd0a24b2f878c5be","src/hmac.rs":"fa3976d94a1383f300bdec228270afb8b47c97bb019d727c7d59ba783be3c42e","src/lib.rs":"57291110117331f5d6733da1421267e47cf891e0e0411b0720a04fdbc0686700","src/macros.rs":"7ed99c
 00c53ee12ea92634d4ace0af84845ebf98819869746e7896c8eaff23db","src/obj_mac.rs":"42019b142e523d7695d8c14ee7f72fa4b5702c07dee98fa12e70ab7dfcc95459","src/object.rs":"210d91fc81414da4cd3afa0127cabffef1640fa85e65635bc489e0f721ee929f","src/ocsp.rs":"154e416aa14df8d5aa962f3352ca72bab00716f0834413c78dfa663e0880e9dd","src/ossl_typ.rs":"4379b8327a1efbae1c784ad576c98ac7708bf62cab1c373845d9ca948b5e401b","src/pem.rs":"ba80937125618cd0e7073d69be6aff3b619ede74e227a158cb0a68af27f69640","src/pkcs12.rs":"f1a3f32f128fa8ce94391c1957a0e535387cebc0e25d21743888b172518dd636","src/pkcs7.rs":"0c5a0f85323a1e5a4d7edcc433166de8614b44f545758d926cf95e9626d4af2b","src/rand.rs":"469601b4fbb56d4dbf5cf5d7bb8483e3bde411edea18601e7d1ed6ef27180fd3","src/rsa.rs":"aa984781f19d3e88527bec9db5338b19051313b01589018c5bb86923f058c6c6","src/safestack.rs":"6c39e28565d34efad707d77561d4caa99e3f028fcac3a2ef6fd403a78de1190c","src/sha.rs":"1a6b028a63654d2419417a9a8af790cd22409a4643682a0686ecdb9441264eba","src/srtp.rs":"1c4dee9e6c139cc70
 416207786e385f199321624fb9fbf3cbf39a8160c0c405d","src/ssl.rs":"5970b21a47668f7efb8130f22110d9ab65c571a45681c02d8ab596b7068db963","src/ssl3.rs":"9336c816e00847d552dea22587d4ac72ff3cbd469fa5ff750423a19ea11e68eb","src/stack.rs":"1a509907283e5a2bf88cf193ce607f49ce7d2d95547c2ce2abc0fd4567aad334","src/tls1.rs":"60ca3dea1bbfda645bde563b4a878dac129c3f760e3ad572381000fc7a8ef522","src/x509.rs":"7ffbf8687f650dd9678eab61871913579539f78ebf69f005f07f7a40017b26cb","src/x509_vfy.rs":"a5fc69e3ef3565c8d9196768c0b84bd876edfb019688dc4487dbb88f6a89293d","src/x509v3.rs":"520253195097d134e553c6378c1db2510eae6ccfcab6f6fb08919697bc0f023b"},"package":"313752393519e876837e09e1fa183ddef0be7735868dced3196f4472d536277f"}
+diff --git a/vendor/openssl-sys/build/main.rs b/vendor/openssl-sys/build/main.rs
+index df03e01f6..1d813f7d5 100644
+--- a/vendor/openssl-sys/build/main.rs
++++ b/vendor/openssl-sys/build/main.rs
+@@ -232,6 +232,7 @@ See rust-openssl README for more information:
+             (3, 2, _) => ('3', '2', 'x'),
+             (3, 3, 0) => ('3', '3', '0'),
+             (3, 3, 1) => ('3', '3', '1'),
++            (3, 3, _) => ('3', '3', 'x'),
+             _ => version_error(),
+         };
+ 
+@@ -272,7 +273,7 @@ fn version_error() -> ! {
+         "
+ 
+ This crate is only compatible with OpenSSL 1.0.1 through 1.1.1, or LibreSSL 2.5
+-through 3.3.1, but a different version of OpenSSL was found. The build is now aborting
++through 3.3.x, but a different version of OpenSSL was found. The build is now aborting
+ due to this version mismatch.
+ 
+ "
+-- 
+2.31.1
+

diff --git a/dev-lang/rust/files/1.54.0-parallel-miri.patch b/dev-lang/rust/files/1.54.0-parallel-miri.patch
new file mode 100644
index 0000000..68239d9
--- /dev/null
+++ b/dev-lang/rust/files/1.54.0-parallel-miri.patch
@@ -0,0 +1,43 @@
+From a789b49e4c0e7d742cc39713484596293d844537 Mon Sep 17 00:00:00 2001
+From: hyd-dev <yd-huang@outlook.com>
+Date: Fri, 30 Jul 2021 21:28:34 +0800
+Subject: [PATCH] Use `Lrc` instead of `Rc` in `MiriCompilerCalls::config()`
+
+---
+ src/bin/miri.rs | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/tools/miri/src/bin/miri.rs b/src/tools/miri/src/bin/miri.rs
+index 5a8f07263..18c393815 100644
+--- a/src/tools/miri/src/bin/miri.rs
++++ b/src/tools/miri/src/bin/miri.rs
+@@ -1,5 +1,6 @@
+ #![feature(rustc_private, bool_to_option, stmt_expr_attributes)]
+ 
++extern crate rustc_data_structures;
+ extern crate rustc_driver;
+ extern crate rustc_errors;
+ extern crate rustc_hir;
+@@ -12,12 +13,12 @@ use std::convert::TryFrom;
+ use std::env;
+ use std::num::NonZeroU64;
+ use std::path::PathBuf;
+-use std::rc::Rc;
+ use std::str::FromStr;
+ 
+ use hex::FromHexError;
+ use log::debug;
+ 
++use rustc_data_structures::sync::Lrc;
+ use rustc_driver::Compilation;
+ use rustc_errors::emitter::{ColorConfig, HumanReadableErrorType};
+ use rustc_hir::{self as hir, def_id::LOCAL_CRATE, Node};
+@@ -42,7 +43,7 @@ impl rustc_driver::Callbacks for MiriCompilerCalls {
+                 // HACK: rustc will emit "crate ... required to be available in rlib format, but
+                 // was not found in this form" errors once we use `tcx.dependency_formats()` if
+                 // there's no rlib provided, so setting a dummy path here to workaround those errors.
+-                Rc::make_mut(&mut crate_source).rlib = Some((PathBuf::new(), PathKind::All));
++                Lrc::make_mut(&mut crate_source).rlib = Some((PathBuf::new(), PathKind::All));
+                 crate_source
+             };
+         });

diff --git a/dev-lang/rust/rust-1.54.0.ebuild b/dev-lang/rust/rust-1.54.0.ebuild
new file mode 100644
index 0000000..5295278
--- /dev/null
+++ b/dev-lang/rust/rust-1.54.0.ebuild
@@ -0,0 +1,680 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7..9} )
+
+inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
+	multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.xz"
+	KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+fi
+
+RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+SRC_URI="
+	https://static.rust-lang.org/dist/${SRC}
+	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
+	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
+"
+
+# 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 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:
+# List all the working slots in LLVM_VALID_SLOTS, newest first.
+LLVM_VALID_SLOTS=( 12 )
+LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
+
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+# (-) usedep needed because we may build with older llvm without that target
+LLVM_DEPEND="|| ( "
+for _s in ${LLVM_VALID_SLOTS[@]}; do
+	LLVM_DEPEND+=" ( "
+	for _x in ${ALL_LLVM_TARGETS[@]}; do
+		LLVM_DEPEND+="
+			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
+	done
+	LLVM_DEPEND+=" )"
+done
+unset _s _x
+LLVM_DEPEND+=" )
+	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
+	wasm? ( sys-devel/lld )
+"
+
+# 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
+RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
+RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
+BOOTSTRAP_DEPEND="||
+	(
+		=dev-lang/rust-"${RUST_DEP_PREV}"
+		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
+		=dev-lang/rust-"${RUST_DEP_CURR}"
+		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
+	)
+"
+
+BDEPEND="${PYTHON_DEPS}
+	app-eselect/eselect-rust
+	|| (
+		>=sys-devel/gcc-4.7
+		>=sys-devel/clang-3.5
+	)
+	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
+	!system-llvm? (
+		>=dev-util/cmake-3.13.4
+		dev-util/ninja
+	)
+	test? ( sys-devel/gdb )
+	verify-sig? ( app-crypt/openpgp-keys-rust )
+"
+
+DEPEND="
+	>=app-arch/xz-utils-5.2
+	net-misc/curl:=[http2,ssl]
+	sys-libs/zlib:=
+	dev-libs/openssl: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}/libexec/.*
+	usr/lib/${PN}/${PV}/lib/lib.*.so
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+	usr/lib/${PN}/${PV}/lib/lib.*.so.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+	"${FILESDIR}"/1.47.0-ignore-broken-and-non-applicable-tests.patch
+	"${FILESDIR}"/1.49.0-gentoo-musl-target-specs.patch
+	"${FILESDIR}"/1.53.0-rustversion-1.0.5.patch # https://github.com/rust-lang/rust/pull/86425
+	"${FILESDIR}"/1.54.0-parallel-miri.patch # https://github.com/rust-lang/miri/pull/1863
+	"${FILESDIR}"/1.54.0-libressl.patch
+)
+
+S="${WORKDIR}/${MY_P}-src"
+
+toml_usex() {
+	usex "${1}" true false
+}
+
+bootstrap_rust_version_check() {
+	# never call from pkg_pretend. eselect-rust may be not installed yet.
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
+	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
+	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
+		eerror "Rust >=${rustc_wanted} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too old"
+	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
+		eerror "Rust <${rustc_toonew} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too new"
+	else
+		einfo "Using rust ${rustc_version} to build"
+	fi
+}
+
+pre_build_checks() {
+	local M=4096
+	# multiply requirements by 1.5 if we are doing x86-multilib
+	if use amd64; then
+		M=$(( $(usex abi_x86_32 15 10) * ${M} / 10 ))
+	fi
+	M=$(( $(usex clippy 128 0) + ${M} ))
+	M=$(( $(usex miri 128 0) + ${M} ))
+	M=$(( $(usex rls 512 0) + ${M} ))
+	M=$(( $(usex rustfmt 256 0) + ${M} ))
+	# add 2G if we compile llvm and 256M per llvm_target
+	if ! use system-llvm; then
+		M=$(( 2048 + ${M} ))
+		local ltarget
+		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+		done
+	fi
+	M=$(( $(usex wasm 256 0) + ${M} ))
+	M=$(( $(usex debug 2 1) * ${M} ))
+	eshopts_push -s extglob
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		M=$(( 15 * ${M} / 10 ))
+	fi
+	eshopts_pop
+	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
+	M=$(( $(usex doc 256 0) + ${M} ))
+	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+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 && bootstrap_rust_version_check
+
+	if use system-llvm; then
+		llvm_pkg_setup
+
+		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+		export LLVM_LINK_SHARED=1
+		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+	fi
+}
+
+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 \
+			--without=rust-docs --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/wasm_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
+		local printsysroot
+		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
+		rust_stage0_root="${printsysroot}"
+	else
+		rust_stage0_root="${WORKDIR}"/rust-stage0
+	fi
+	# in case of prefix it will be already prefixed, as --print sysroot returns full path
+	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+	rust_target="$(rust_abi)"
+
+	cat <<- _EOF_ > "${S}"/config.toml
+		changelog-seen = 2
+		[llvm]
+		download-ci-llvm = false
+		optimize = $(toml_usex !debug)
+		release-debuginfo = $(toml_usex debug)
+		assertions = $(toml_usex debug)
+		ninja = true
+		targets = "${LLVM_TARGETS// /;}"
+		experimental-targets = ""
+		link-shared = $(toml_usex system-llvm)
+		[build]
+		build-stage = 2
+		test-stage = 2
+		doc-stage = 2
+		build = "${rust_target}"
+		host = ["${rust_target}"]
+		target = [${rust_targets}]
+		cargo = "${rust_stage0_root}/bin/cargo"
+		rustc = "${rust_stage0_root}/bin/rustc"
+		rustfmt = "${rust_stage0_root}/bin/rustfmt"
+		docs = $(toml_usex doc)
+		compiler-docs = false
+		submodules = false
+		python = "${EPYTHON}"
+		locked-deps = true
+		vendor = true
+		extended = true
+		tools = [${tools}]
+		verbose = 2
+		sanitizers = false
+		profiler = 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)
+		debug-assertions-std = $(toml_usex debug)
+		debuginfo-level = $(usex debug 2 0)
+		debuginfo-level-rustc = $(usex debug 2 0)
+		debuginfo-level-std = $(usex debug 2 0)
+		debuginfo-level-tools = $(usex debug 2 0)
+		debuginfo-level-tests = 0
+		backtrace = true
+		incremental = false
+		default-linker = "$(tc-getCC)"
+		parallel-compiler = $(toml_usex parallel-compiler)
+		channel = "$(usex nightly nightly stable)"
+		description = "gentoo"
+		rpath = false
+		verbose-tests = true
+		optimize-tests = $(toml_usex !debug)
+		codegen-tests = true
+		dist-src = false
+		remap-debuginfo = true
+		lld = $(usex system-llvm false $(toml_usex wasm))
+		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+		# https://github.com/rust-lang/rust/issues/74976
+		# https://github.com/rust-lang/rust/issues/76526
+		deny-warnings = $(usex wasm $(usex doc false true) true)
+		backtrace-on-ice = true
+		jemalloc = false
+		[dist]
+		src-tarball = false
+		compression-formats = ["gz"]
+	_EOF_
+
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+		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
+		if [[ "${cross_toolchain}" == *-musl* ]]; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+			_EOF_
+		fi
+
+		# append cross target to "normal" target list
+		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
+		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+		rust_targets="${rust_targets},\"${cross_rust_target}\""
+		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+		ewarn
+		ewarn "Enabled ${cross_rust_target} rust target"
+		ewarn "Using ${cross_toolchain} cross toolchain"
+		ewarn
+		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+			ewarn "'sys-devel/binutils[multitarget]' is not installed"
+			ewarn "'strip' will be unable to strip cross libraries"
+			ewarn "cross targets will be installed with full debug information"
+			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+			ewarn
+			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+			ewarn
+		fi
+	done
+	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+	einfo "Rust configured with the following flags:"
+	echo
+	echo RUSTFLAGS="${RUSTFLAGS:-}"
+	echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
+	echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
+	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+	cat "${S}"/config.env || die
+	echo
+	einfo "config.toml contents:"
+	cat "${S}"/config.toml || die
+	echo
+}
+
+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
+	)
+}
+
+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() {
+	(
+	IFS=$'\n'
+	env $(cat "${S}"/config.env) DESTDIR="${D}" \
+		"${EPYTHON}" ./x.py install	-vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+	)
+
+	# bug #689562, #689160
+	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
+	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+
+	local symlinks=(
+		cargo
+		rustc
+		rustdoc
+		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}/libexec" "/usr/lib/${PN}/libexec-${PV}"
+	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
+	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
+	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+
+	newenvd - "50${P}" <<-_EOF_
+		LDPATH="${EPREFIX}/usr/lib/rust/lib"
+		MANPATH="${EPREFIX}/usr/lib/rust/man"
+		$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
+		$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
+	_EOF_
+
+	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+
+	# note: eselect-rust adds EROOT to all paths below
+	cat <<-_EOF_ > "${T}/provider-${P}"
+		/usr/bin/cargo
+		/usr/bin/rustdoc
+		/usr/bin/rust-gdb
+		/usr/bin/rust-gdbgui
+		/usr/bin/rust-lldb
+		/usr/lib/rustlib
+		/usr/lib/rust/lib
+		/usr/lib/rust/libexec
+		/usr/lib/rust/man
+		/usr/share/doc/rust
+	_EOF_
+
+	if use clippy; then
+		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+	fi
+	if use miri; then
+		echo /usr/bin/miri >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+	fi
+	if use 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
+}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2021-12-25 23:59 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2021-12-25 23:59 UTC (permalink / raw
  To: gentoo-commits

commit:     2cb55279d1c00b66113f3f7b54926e46fd5341c8
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Fri Dec 24 23:27:52 2021 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Sat Dec 25 23:54:19 2021 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=2cb55279

dev-lang/rust: Update for 1.57.0

Signed-off-by: orbea <orbea <AT> riseup.net>
Closes: https://github.com/gentoo/libressl/pull/370
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 dev-lang/rust/Manifest                         |  34 ++
 dev-lang/rust/files/1.57.0-selfbootstrap.patch |  56 ++
 dev-lang/rust/rust-1.57.0.ebuild               | 688 +++++++++++++++++++++++++
 3 files changed, 778 insertions(+)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 3a33d46..e55c548 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -158,6 +158,38 @@ DIST rust-1.55.0-x86_64-unknown-linux-gnu.tar.xz 139040728 BLAKE2B 1d7905411b556
 DIST rust-1.55.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d454086c93147737c7c144af288394512528e4ce759dc221d7371b62724857fe16e391949b5b4dac436bdcaef8bf817f577e8d951e1f4bae098d687b4a7bdbb5 SHA512 b175e3ddefd036fce29c80c65a86565583167f7859f0941dee6718fd71baa8596f1788a6bed5d992096959e1deda98dc9c10e8cbc896114b7938a05951c29f02
 DIST rust-1.55.0-x86_64-unknown-linux-musl.tar.xz 267291288 BLAKE2B b96e8fa1c8d2e55c07781db37ddd33ec7180cde29c84f5020f2ba0fbf6aa83f9db32723e191c15df765f965d1314a57d12d80e73d20deaab1333afca65bdfac7 SHA512 6fb700d5d17c084fa520b29f3012ac565eaf891705a27c7738a61bb9899bc952f679987ef3790875b5a7adae836c602b394c7e19103f30bbdf5ec82cf3e86567
 DIST rust-1.55.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 5ccf03518eae6406ff66bff108b26988a6a859e5cf88ca44327f9826d880ea26d6e115fb3e63f6a40d1cb15adc25d6f1c056438466095b7223269fb0d74540fe SHA512 8d84a976d9922d28a5ddac0f47258759a4c7542df02fb9ffede4a3e98ceecc6415229f3eb676a22536ffff842c6e7ee35d50d1507f2d818301493ee3a7db9bb5
+DIST rust-1.56.0-aarch64-unknown-linux-gnu.tar.xz 223490136 BLAKE2B 29085e44fbc7337a11d396e452e53c43c0ea2ef53d2bfd6e294c837f890ce4400e9274705764ab40680226010ab502798131b1d717d7a4a1cc590313ec65f8d2 SHA512 858a28c6d74848bed5e731cd785995b095b78375d6b10834b2cca97778d571a9bed2bc2104a924d099297eebe91f9e829d7558acba0a46b31d7cfffad520bc44
+DIST rust-1.56.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7b6bd9c532801b1759524007ea1aa7037303a94cc0571cc3265f4be867d4f69d5a3c732598db01c43716ceaa19717c418ca7d5df6ca030ef014618b849cf72e4 SHA512 d8d05fc573f93a7063bbe54a6785305171b096b8348a44b0e72753a5500d97cd1b903394c0e8fea601e33892592cda6dc667285bb095e4d4fe0c4fff8cf12b46
+DIST rust-1.56.0-aarch64-unknown-linux-musl.tar.xz 219878296 BLAKE2B 5f7b0670820f2ecf8499c47d5731ec371234be923dad2abd261cbb4cb6da39d27a813d7ceaef22aa75f9ffce3067500e6f02c157a517951a0377073847919a6b SHA512 9a1445794558352005921c92d64a454b3270a1052dbd6dc1ff5e407057403b232dea5183920459fd2c9a6f22423c28af60b427c2edcd3f19565e036f918570fa
+DIST rust-1.56.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B fbab4bc200ec56df82cceb8511d5e11c94a64cf2202eac7fd9eb32857ef4f7acd441482ebaea24fa04d4df6709f14852d937b6b62e500609f678044507f3ce68 SHA512 796365d5bbff1f39b46df8353a0ce282c368e649569a202c50e13e1bdf8e280630d38630a752f18dc8da545561675fd5112cefac207cd98adfaf556029514d5d
+DIST rust-1.56.0-arm-unknown-linux-gnueabi.tar.xz 202166060 BLAKE2B 1e73ce9ad86bc9f4f7a920a822829ce12c991e763f09cfdf16d1118ca16ba8f8ef217232eae303fdcfa0eccf5b913b80f771d8236a2fc0bcefa9c9e30f5cb92e SHA512 31ba5c7a8aca7f42789b606775145ef776d03a5b06c46e4336aabdd38f92633e2bc206ad74c28676c52387dd979acf742f56ea49c3de8bab868c98f18242e8b9
+DIST rust-1.56.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B ee433953b9fc732f1e8606b4070d379dfe373b94b702316f10ae5d0802baa7bd6ed19d01c6a4eeb206066a6cfbab7329f76c175c7b76023adacef030ad666f80 SHA512 d64bc0635f9d87323cbce77dfa779a3d360df76ca161cd4b175e5aa63e2a4cfe1c8609b38d678d7ef8bccc011326bc4851dd81b55836223ff84fb85e29cc6364
+DIST rust-1.56.0-arm-unknown-linux-gnueabihf.tar.xz 198940944 BLAKE2B 651932afcf232292611b20ca43a034e2b54060a15b6c4bf0c37c40b2864e59d9ef3ad865cc6a0729b02de34abe23a09e758029860d3d196080fef43268fd2546 SHA512 6e5edb3df13fcd0b4501e78ae55d2b62bca2c696e938f3e913cd15dd1e3fa802bbc813fbe5696cf5bfecf1e9fed99e6c83b23be423a467b084f6f66cf08646cb
+DIST rust-1.56.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 94363ce80bc31d867583484eab662c3a3012019c9e90205959b71df6a8893a92524673246e1c1831b3a228fc75233184bdcea13cb28ed1dafb3b8a0764fc8161 SHA512 2eff4a8d702c88a1e283139a9a435d845a1ba30fd2f2857f8c19c0d19fc94698ad6b6ac87be0b1d3ca4a78a6ad658bc57357c9c84e8983505dc29d080a4041f1
+DIST rust-1.56.0-armv7-unknown-linux-gnueabihf.tar.xz 204645860 BLAKE2B 4d1bcbb704954aa09fe89d0e2d15e886dc5e25c91c24a2239caeae228ebeb94fa40ccd7bacdf67a3b9ecb5aa0cb5b1d54306642d879591675380496142699acc SHA512 952edc69bd1747bcb711ea81c58c580b8b2128722edf851cb0a20e6b85674e9bba0e234e6eacd5e3052480a72d896f2792f1a281ed8e99b23dfe1c51b467e3dd
+DIST rust-1.56.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B be71c4cc8ee6e64e8850cf4c95b6f34c115fc1bfb62890c7f1794a229656fc3be1b54321db1174e7804540ca307360c49d07e45e418bd0ce7e1b1db20bb83da8 SHA512 2e9b2d38beb4199062f87c40875622ea2d914023d0fae2cd631db5f04b423c868089084e8731c3260a180d2d5aed531714ddd3c383f06703cae720942c90ef6f
+DIST rust-1.56.0-i686-unknown-linux-gnu.tar.xz 215611688 BLAKE2B 759781d0e5771cf058eb47ef6f5aa2cf5bc2c692d71ddad6bccf37af62a587cb38f70d23c7ba2ba0bdc07635b6516d2ed63a99497bdd03433bdab16a611e46aa SHA512 6e19d19ec3aa00262c90e66a7be46805b36601f8e13ff3b026479c589965c6006d045c92bc56a063fb284e830220af1124a80df1a2e7850bdfe1cc0fdd149f3b
+DIST rust-1.56.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B c416bfa472174a38631022988de8b6294585a797b764766a9547564e5099f9fe24d46f27d734eb81c82156ccd135fd60c97aa9e13f69dc2a84b9a8554407ebaa SHA512 04a040802634f42fd2d9ea62a26b89d10c44426eb7f00ea4532859903fa89c7dec6dbe37fc572b6986653fb862236ca0d48be87c6febc7983a670c452c145ac5
+DIST rust-1.56.0-mips-unknown-linux-gnu.tar.xz 160762656 BLAKE2B 74a98ca534020c1beea16ed0aae5d55087e52e80743ecb5d4e23861cfa3e39c9f3eb216c948095f76be25a5fe89c47f2e1c7354b5b4f56acdd3532ae3874ee49 SHA512 a6e33f557faa842f3c5fd49223216516c012d4af9b3c5efb3f53778a38f02138e1b522b98ec91bfe523f507ebc932f6966d329f23b36fad6a3d105d4020bce3b
+DIST rust-1.56.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B fd9cf1b07e64c4196e25c023dbd7b5dd9ecc346c3590f8dd4e5d3ed3b03b6b04da90a8549178eed0db0cee2acd5efa4be300da6907cdfa5424acc52ed047696b SHA512 a7278ed6ffa56025257c70e77f5dff3aabed699282e05b01f7f3eba8ca1a813f43f0ee07357518dde78df11fd3600cfd6dbc45757a20850694a0bdd2c079cd20
+DIST rust-1.56.0-mips64-unknown-linux-gnuabi64.tar.xz 165953860 BLAKE2B f02278555bbc3c8169bb4dff02383b8736fea8ca8dbf395aae5d62a10c0a9e25088d1d56b7d6b0fba6d4384f988f55d1d82153ec0038bbef0044fc8316cb7786 SHA512 fec707ddb8ee51700716ec6283f3ecdb910f7ddbd8ad4fef7882595afe5b55b1c8f862240172ed20cc8e07bc8db9682184fcc10ad58d2ef7e4eddb3e54a14dc3
+DIST rust-1.56.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B a1509f1799555bc84ba43eafff55c4e6e62821c3eef27280682210823cfafb627ec28d0b3faf1cf624f88c9bd2e83af1438b8659acdf3d33413d7e95a2271a53 SHA512 6a39541d53229f432090a1304797c1f2c2d203c72ee266a07e408907ed56a1dba15f644a074235dd56058f77bafeb27bde32087546db2a86b64a65bc7bbbd41d
+DIST rust-1.56.0-mipsel-unknown-linux-gnu.tar.xz 164590680 BLAKE2B a5c7c7e1ecb0a6cb079677b1a72c17fb0b141588a6003ec5ad01c54ecfc2d5e1f928246f978e7606b166e8a60c2defa375287931e04fb28da341037cd226040c SHA512 3b05f8f0e624e75608f94cb51be5c032b7ad56c9ee99220cac73a7f8f6c40cc35c3b5f846c2c930398eabdff2622c1d447720063b831006615c1ec4d2c25e01a
+DIST rust-1.56.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5ef21a9b209ec1b88df8cde1444bb5704656d3b435b1a4749ab65a13d0352392030c4ab4b59d71c2c03e554136c55fe44614b65d09fea644b7de572d357ccfdf SHA512 fd9efde43ae9d3427a56cab3128481733e0ee51d14365b8b5e65dbb5173bb11a564a4fdf68ad23ec443ab3371267399aba3ba704f3da41ded038a2d2ee898b46
+DIST rust-1.56.0-powerpc-unknown-linux-gnu.tar.xz 172592208 BLAKE2B 54016cd5f94e2fdba36329e5af7eb161de0485adc4f0e7b7933694bceffde8b101fc778880eb66156851f38cee66303b24095a6928f668d08bcba4277e2f6e92 SHA512 dd5e5a0f073c3de04a605cdfadb19538884ce1a715946e60fdc85408fa09a45d230eb3141ad999c5edb469a789151d5e6c7565743e162f7ce9add99021cb32ec
+DIST rust-1.56.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 56f2c613dcf42d969da0734f7c5d6d544d1a2883b4435e941c0779f9406c9b02a9eb8eeb4d8393cf7abc389ba2df78f05b78dad56848c24df1023971101a9a92 SHA512 a5a933921e9670b3b55a9ffb01d8eb5b7520a7e73bec987a161a7f37d07f9024266566a7059b47592e66f6c1926934ef2306b1e7283e88329e68a124255f07d5
+DIST rust-1.56.0-powerpc64-unknown-linux-gnu.tar.xz 186235644 BLAKE2B 13754e77299dd432adba0773586910a215a8916399ea827a6b5ab5d8866b731ec0af2a0772a8ef83ad897c491add7c513c4f3f06c41c61bd600f2ff742610b3e SHA512 1ad3c1b7da0cb4a697c8bbe8a0580a3a8f01e1a8e415b75ab4798f5425098855ca9c95ec636a36e796d919464f3ed3ca651e8d3811f3adb9b040976422fecaab
+DIST rust-1.56.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 62277bf7ee93ff6ad847cd9c69e89a2bd58f31efd235eafc7c4814c2e465ec24390c4a9fd99fc2c4c53fd994be159720b03ee169486f0c7af31da50b91cec2b0 SHA512 fab2896c285dd6641b5a7e6c8d1a9e96c084b65fe05cb519cc20abef7d5d42dfc0aaa2c61c137c89db26d0701fd4b32dee6453e98651f98b2d63ee34c8627dcd
+DIST rust-1.56.0-powerpc64le-unknown-linux-gnu.tar.xz 195350800 BLAKE2B 2ceeb04ae5a5482ee3908f07dc50e306426fac09aaab154c6235392ca9e403ed36f492dbf23b3f6172e964d2ce7360fc0d19f345ea39cc28874d812e21e22b8f SHA512 bcddee74d0c7c52e7ec17b4b808b0caca764bd6f4ce6235cceed5c93983673c768981cd8403b2a7cb993eb5055625af2679c8635955d4765acd871643eabb6b4
+DIST rust-1.56.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e4085f8f853cfd50e44b0bb8ca70a73fe2cb14827261aef40c98fe399ed2aaee9d29acaabe2d85d51d77ec1ccf6eeb263aba1042c4e06c2b0ff7539ace11368c SHA512 6d21afed2e7eebc11d1713774feb662abaf84d1ad524edd506efb0910654b84828017db6c07248156514a37c176dde48088cf387aebccf6476ecdbdfc961c0dd
+DIST rust-1.56.0-riscv64gc-unknown-linux-gnu.tar.xz 192792856 BLAKE2B 85af51b16ef1f749b1903cf98d4cb5d92d26bb17d5b5c2d493862feb8d21316a2d4aad73f3f9c8e2ef1436544a592d8a8378f3671c4c099b39e6e24f597bd4ba SHA512 ff9959be93e6d4049030d9e07fe6dc8be67fc635698ac37630b0cd8e1e446e6909879a4aaac4b0b08b93dcc2ce7650986d961ae1001fb683b235efc101b7e470
+DIST rust-1.56.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B da4e11a82df51283edc6066d5a54b1f2c5937e1f8a9e45ecc10d1509a7377c630a63c141b413123b01d6df67c0be6c63b0017bfae20b13c654d3a5de98981410 SHA512 2fa854448aa07f2c23bfc6145bab5973e73f0c444dbde8f0f823b6a843f2125773115fd91660906e7dbede25d44bee2ae3873d299ebf75a8123c618afd07fb4d
+DIST rust-1.56.0-s390x-unknown-linux-gnu.tar.xz 194222748 BLAKE2B 4cc8ac554f85ccf0963da9935da46d51640f37346fec2486fea50afabdd881c331c54af6ea15ef76a53d850dc9cbd8cfab8f4125b4749045d985393ead77b1b9 SHA512 8b00ed11f12604c377cafe7c206f8db10980a4c73bfe4b4d1d628ca6fcbb3df0553decd89a9ef775c06e62f446b817d4d51ed7b55bba5f1826e9d384fca7a26d
+DIST rust-1.56.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 443228e6dc0fcf1da9a33a89938710efef0881f835daa2af1b7593e32f90403992b752bcaa321d5241f233faee3773f205a9afa44f12b59978cc84c261b85ba6 SHA512 608a7062e93e7ada52fe9688f2efe1e3caa4d768f0e7be31cf47b8665a8dc550e9287d339da6712366cb68a14868e07e5b68c4a25b86c2bac1fe738f77815b3f
+DIST rust-1.56.0-x86_64-unknown-linux-gnu.tar.xz 147894784 BLAKE2B 6cbdb8a82aba4715d07c41497443a90cbe2bbed32ca95b3a8ca4bfd048334f1158b30f221bdec10bbef2d07344e8a35d4320ba8b991006263a6b764932cdc7e4 SHA512 bfc3a7493c208b35b42f40867286a6b3d97bda1c45983379d4223df31291e046a1214df1f88df2cb6558cafd8912cb8f0bab99a45899321b128e729ad03b9493
+DIST rust-1.56.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e0ed39db46b40631f69fa379a04ec37ba314587a4f081aa1f3251e01b7221ee8732b668cfcc4c24c1a3950f3f8dcfd542a1a73c603cea545b812d5d3a9527055 SHA512 3e9d0b159684a496e29c9e40af11f16f5ef5cadd8bc4852018a953310e77a4e29db6c14ffcc86198908aa4998550c83cfd3f2cc42e007122d56167d664776c44
+DIST rust-1.56.0-x86_64-unknown-linux-musl.tar.xz 255010720 BLAKE2B 286e91cbf001de6f888bd82139e6711b32f03d45c599f26b01f60222d98c3521a1933b3b9b7f8c46fa79d481780dc8dc47e5e24985b721a6998d620b446c38b4 SHA512 fb5a914a25ef3cb39393207a75c40f1313740167062feb4cda4084e738f4e93a51624a8a9591acc18553cfd6e2e232984c8c84acc3dfd77fbe38b17085850881
+DIST rust-1.56.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B bb7cfc775c1c44569276e687028e9a7ffac31577310052d9c354179a541ee13b0ca00a025e994e03ab17086d0abe6dda6845ed1cb10879425439c7651bdc9269 SHA512 cb23d98cfb1b59fcccaec575145b6f38846f3f49b16a3be199b06d6198b1db13720157ca65a01f6ef76abf742507bba39776d130f0fd03aa228acf5917457f7d
 DIST rustc-1.52.1-src.tar.xz 115109508 BLAKE2B c5d73f5884037d287d88ba9fdaf63a36678b692e1b510920045797ab29f1660f05cda901e19411ff83ec3084c4130034c269976b1056220f3e629cff116d07f0 SHA512 55f5053ce40d4eba4663052817aef6a6275139ca229c89cd1ec44711458b412720203301d8c7975aac5720a91fcaf21847f8184f641cbb0004f722520283c73c
 DIST rustc-1.52.1-src.tar.xz.asc 801 BLAKE2B ea2f89289b4d9cf90a0d10148bf3494805c00e7822cc98addf0b602c35e4635bb1963d79168b395a5f7c7bd024070284fccd19757982daa0d554dcac166fd4d7 SHA512 0d692a085c017b03b8a135a28f7e6f1d7e05642d2e99f0f1fbc397e766bb8fed4b4c6b4c9157b79d9bb0c4229607dbc35711cd463c62a9966a4efb6f197de7d3
 DIST rustc-1.53.0-src.tar.xz 115686332 BLAKE2B fa068f89d42f927fdc79ee31aad1386eaf2aa596a060e059c5a1a73fe48c48d008fc952cd6c7912b743e41d77a94b205639eed0f728b2539b62f18a772cabfe3 SHA512 70485cf7a0f7fc36ee31644e546374079dc387a85b44e5e793707fd0a4d7ca05d311291e78b86db955485d8f21c47ff9e1908acc4da68ba04929287213a40c24
@@ -168,3 +200,5 @@ DIST rustc-1.55.0-src.tar.xz 117197580 BLAKE2B 8d9739ce7571146aee0e07c6287de9a8c
 DIST rustc-1.55.0-src.tar.xz.asc 801 BLAKE2B 5b4ba951ed7ed56c7bd9c71df89cc1e966485d77411016ad71a811ad8e21b88295deec08f24f65afdb163e69ee0fe19288bcc64d18fe272bea51319caddb66b2 SHA512 9bc858ce26cc069cafaefe6165cb15a07e144ad6d6312bcbe115a0a51fec6e281d3e8a7977e958d7fa10e77139548d57396b1552a2802ec74b7bc6ac641e7ae4
 DIST rustc-1.56.1-src.tar.xz 121798264 BLAKE2B 09677b0332022f28a0d80949a6735929dbf64276f7eb57195d8c33e6c80f13c903432ff77d8834093ab551677618fb1d385f2300e2b1b4c064f9c245c696be32 SHA512 193468e211cde9ebc5f6e30b8e3733b79bd8710fe6dd45c7ed8d4392f91010d30466787afd4d0b2041cd7dd994924fee8ad111048824e248bd994959e55bf15f
 DIST rustc-1.56.1-src.tar.xz.asc 801 BLAKE2B 70ed1c26971e864aa6cc9b05eb52c4a140d0d0cccb3ff66d4a13e1b1dbac958c5369f76524c4702311566ed26aff635f5e3d35d9da71d96e070f5f0e978dc2ba SHA512 f997e7962ef8b283c19c97d8b898f3642f1a58c89a9cc5470cf88682263a42e2054d670c12bf93c41e81edf8324a5b51453f402a74bccb7744c7f463cf689aa8
+DIST rustc-1.57.0-src.tar.xz 122681768 BLAKE2B 739fe2c34b01bb0c6beeb7717badeb2ba12f00b91831977bf0d8782d806071f8ed696e94bf51d53509ae6e5c5773544b2dcf4187e81682c2f765d0975c64ca7d SHA512 7903bcfc7c1db208da5d5991bd5b7f55dbe5917d4814274a8badf0d3b767211e81f8626c355ea93142f236abf116d5921c0b542ef309fbe84ece1ce84e5af30f
+DIST rustc-1.57.0-src.tar.xz.asc 801 BLAKE2B e5c2e91999d8d2bcb5be36ddc8559a59fc53445f639bd179239489f9fd2a2f00f2191cdbb2000b73866fbb332b51be090e95e348a3573676dc24e00cdbb071fa SHA512 fcf1393a1be3c585447e08078b804e7ffcddcb47d87877c13526592e317b889b15ad1786baef5d6adf020631a6773a9dd31c04779f475a528b28871920a4641f

diff --git a/dev-lang/rust/files/1.57.0-selfbootstrap.patch b/dev-lang/rust/files/1.57.0-selfbootstrap.patch
new file mode 100644
index 0000000..e30d0ee
--- /dev/null
+++ b/dev-lang/rust/files/1.57.0-selfbootstrap.patch
@@ -0,0 +1,56 @@
+From aca8bcb48feca8c87b9af4e440835992d3f6d470 Mon Sep 17 00:00:00 2001
+From: Pietro Albini <pietro.albini@ferrous-systems.com>
+Date: Tue, 19 Oct 2021 09:29:19 +0200
+Subject: [PATCH] remove "field is never read" warning
+
+---
+ src/bootstrap/lib.rs              | 1 -
+ src/bootstrap/metadata.rs         | 3 +--
+ src/tools/bump-stage0/src/main.rs | 1 -
+ 3 files changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs
+index 2d4e152789724..3b3c8a9227d95 100644
+--- a/src/bootstrap/lib.rs
++++ b/src/bootstrap/lib.rs
+@@ -277,7 +277,6 @@ pub struct Build {
+ struct Crate {
+     name: Interned<String>,
+     deps: HashSet<Interned<String>>,
+-    id: String,
+     path: PathBuf,
+ }
+ 
+diff --git a/src/bootstrap/metadata.rs b/src/bootstrap/metadata.rs
+index a38391c7b88f2..65e229697dc87 100644
+--- a/src/bootstrap/metadata.rs
++++ b/src/bootstrap/metadata.rs
+@@ -14,7 +14,6 @@ struct Output {
+ 
+ #[derive(Deserialize)]
+ struct Package {
+-    id: String,
+     name: String,
+     source: Option<String>,
+     manifest_path: String,
+@@ -50,7 +49,7 @@ pub fn build(build: &mut Build) {
+                 .filter(|dep| dep.source.is_none())
+                 .map(|dep| INTERNER.intern_string(dep.name))
+                 .collect();
+-            build.crates.insert(name, Crate { name, id: package.id, deps, path });
++            build.crates.insert(name, Crate { name, deps, path });
+         }
+     }
+ }
+diff --git a/src/tools/bump-stage0/src/main.rs b/src/tools/bump-stage0/src/main.rs
+index 96d3c87384331..d6364e28fef97 100644
+--- a/src/tools/bump-stage0/src/main.rs
++++ b/src/tools/bump-stage0/src/main.rs
+@@ -196,7 +196,6 @@ struct ManifestPackage {
+ 
+ #[derive(Debug, serde::Deserialize)]
+ struct ManifestTargetPackage {
+-    available: bool,
+     url: Option<String>,
+     hash: Option<String>,
+     xz_url: Option<String>,

diff --git a/dev-lang/rust/rust-1.57.0.ebuild b/dev-lang/rust/rust-1.57.0.ebuild
new file mode 100644
index 0000000..5a064d8
--- /dev/null
+++ b/dev-lang/rust/rust-1.57.0.ebuild
@@ -0,0 +1,688 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7..10} )
+
+inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
+	multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.xz"
+	KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+fi
+
+RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+SRC_URI="
+	https://static.rust-lang.org/dist/${SRC}
+	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
+	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
+"
+
+# 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 miri nightly parallel-compiler rls rustfmt rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+
+# Please keep the LLVM dependency block separate. Since LLVM is slotted,
+# we need to *really* make sure we're not pulling more than one slot
+# simultaneously.
+
+# How to use it:
+# List all the working slots in LLVM_VALID_SLOTS, newest first.
+LLVM_VALID_SLOTS=( 13 )
+LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
+
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+# (-) usedep needed because we may build with older llvm without that target
+LLVM_DEPEND="|| ( "
+for _s in ${LLVM_VALID_SLOTS[@]}; do
+	LLVM_DEPEND+=" ( "
+	for _x in ${ALL_LLVM_TARGETS[@]}; do
+		LLVM_DEPEND+="
+			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
+	done
+	LLVM_DEPEND+=" )"
+done
+unset _s _x
+LLVM_DEPEND+=" )
+	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
+	wasm? ( sys-devel/lld )
+"
+
+# 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
+RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
+RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
+BOOTSTRAP_DEPEND="||
+	(
+		=dev-lang/rust-"${RUST_DEP_PREV}"
+		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
+		=dev-lang/rust-"${RUST_DEP_CURR}"
+		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
+	)
+"
+
+BDEPEND="${PYTHON_DEPS}
+	app-eselect/eselect-rust
+	|| (
+		>=sys-devel/gcc-4.7
+		>=sys-devel/clang-3.5
+	)
+	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
+	!system-llvm? (
+		>=dev-util/cmake-3.13.4
+		dev-util/ninja
+	)
+	test? ( sys-devel/gdb )
+	verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+	>=app-arch/xz-utils-5.2
+	net-misc/curl:=[http2,ssl]
+	sys-libs/zlib:=
+	dev-libs/openssl:0=
+	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 )
+	rls? ( rust-src )
+	test? ( ${ALL_LLVM_TARGETS[*]} )
+	wasm? ( llvm_targets_WebAssembly )
+	x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warnings
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+	usr/lib/${PN}/${PV}/bin/.*
+	usr/lib/${PN}/${PV}/libexec/.*
+	usr/lib/${PN}/${PV}/lib/lib.*.so
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+	usr/lib/${PN}/${PV}/lib/lib.*.so.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+	"${FILESDIR}"/1.55.0-libressl.patch
+	"${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
+	"${FILESDIR}"/1.49.0-gentoo-musl-target-specs.patch
+	"${FILESDIR}"/1.57.0-selfbootstrap.patch
+)
+
+S="${WORKDIR}/${MY_P}-src"
+
+toml_usex() {
+	usex "${1}" true false
+}
+
+bootstrap_rust_version_check() {
+	# never call from pkg_pretend. eselect-rust may be not installed yet.
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
+	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
+	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
+		eerror "Rust >=${rustc_wanted} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too old"
+	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
+		eerror "Rust <${rustc_toonew} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too new"
+	else
+		einfo "Using rust ${rustc_version} to build"
+	fi
+}
+
+pre_build_checks() {
+	local M=4096
+	# multiply requirements by 1.5 if we are doing x86-multilib
+	if use amd64; then
+		M=$(( $(usex abi_x86_32 15 10) * ${M} / 10 ))
+	fi
+	M=$(( $(usex clippy 128 0) + ${M} ))
+	M=$(( $(usex miri 128 0) + ${M} ))
+	M=$(( $(usex rls 512 0) + ${M} ))
+	M=$(( $(usex rustfmt 256 0) + ${M} ))
+	# add 2G if we compile llvm and 256M per llvm_target
+	if ! use system-llvm; then
+		M=$(( 2048 + ${M} ))
+		local ltarget
+		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+		done
+	fi
+	M=$(( $(usex wasm 256 0) + ${M} ))
+	M=$(( $(usex debug 2 1) * ${M} ))
+	eshopts_push -s extglob
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		M=$(( 15 * ${M} / 10 ))
+	fi
+	eshopts_pop
+	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
+	M=$(( $(usex doc 256 0) + ${M} ))
+	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+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 && bootstrap_rust_version_check
+
+	if use system-llvm; then
+		llvm_pkg_setup
+
+		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+		export LLVM_LINK_SHARED=1
+		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+	fi
+}
+
+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 \
+			--without=rust-docs --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/wasm_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\",$tools"
+	fi
+	if use rustfmt; then
+		tools="\"rustfmt\",$tools"
+	fi
+	if use rust-src; then
+		tools="\"src\",$tools"
+	fi
+
+	local rust_stage0_root
+	if use system-bootstrap; then
+		local printsysroot
+		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
+		rust_stage0_root="${printsysroot}"
+	else
+		rust_stage0_root="${WORKDIR}"/rust-stage0
+	fi
+	# in case of prefix it will be already prefixed, as --print sysroot returns full path
+	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+	rust_target="$(rust_abi)"
+
+	cat <<- _EOF_ > "${S}"/config.toml
+		changelog-seen = 2
+		[llvm]
+		download-ci-llvm = false
+		optimize = $(toml_usex !debug)
+		release-debuginfo = $(toml_usex debug)
+		assertions = $(toml_usex debug)
+		ninja = true
+		targets = "${LLVM_TARGETS// /;}"
+		experimental-targets = ""
+		link-shared = $(toml_usex system-llvm)
+		[build]
+		build-stage = 2
+		test-stage = 2
+		doc-stage = 2
+		build = "${rust_target}"
+		host = ["${rust_target}"]
+		target = [${rust_targets}]
+		cargo = "${rust_stage0_root}/bin/cargo"
+		rustc = "${rust_stage0_root}/bin/rustc"
+		rustfmt = "${rust_stage0_root}/bin/rustfmt"
+		docs = $(toml_usex doc)
+		compiler-docs = false
+		submodules = false
+		python = "${EPYTHON}"
+		locked-deps = true
+		vendor = true
+		extended = true
+		tools = [${tools}]
+		verbose = 2
+		sanitizers = false
+		profiler = 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)
+		debug-assertions-std = $(toml_usex debug)
+		debuginfo-level = $(usex debug 2 0)
+		debuginfo-level-rustc = $(usex debug 2 0)
+		debuginfo-level-std = $(usex debug 2 0)
+		debuginfo-level-tools = $(usex debug 2 0)
+		debuginfo-level-tests = 0
+		backtrace = true
+		incremental = false
+		default-linker = "$(tc-getCC)"
+		parallel-compiler = $(toml_usex parallel-compiler)
+		channel = "$(usex nightly nightly stable)"
+		description = "gentoo"
+		rpath = false
+		verbose-tests = true
+		optimize-tests = $(toml_usex !debug)
+		codegen-tests = true
+		dist-src = false
+		remap-debuginfo = true
+		lld = $(usex system-llvm false $(toml_usex wasm))
+		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+		# https://github.com/rust-lang/rust/issues/74976
+		# https://github.com/rust-lang/rust/issues/76526
+		deny-warnings = $(usex wasm $(usex doc false true) true)
+		backtrace-on-ice = true
+		jemalloc = false
+		[dist]
+		src-tarball = false
+		compression-formats = ["gz"]
+	_EOF_
+
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+		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
+		if [[ "${cross_toolchain}" == *-musl* ]]; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+			_EOF_
+		fi
+
+		# append cross target to "normal" target list
+		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
+		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+		rust_targets="${rust_targets},\"${cross_rust_target}\""
+		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+		ewarn
+		ewarn "Enabled ${cross_rust_target} rust target"
+		ewarn "Using ${cross_toolchain} cross toolchain"
+		ewarn
+		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+			ewarn "'sys-devel/binutils[multitarget]' is not installed"
+			ewarn "'strip' will be unable to strip cross libraries"
+			ewarn "cross targets will be installed with full debug information"
+			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+			ewarn
+			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+			ewarn
+		fi
+	done
+	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+	einfo "Rust configured with the following flags:"
+	echo
+	echo RUSTFLAGS="${RUSTFLAGS:-}"
+	echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
+	echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
+	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+	cat "${S}"/config.env || die
+	echo
+	einfo "config.toml contents:"
+	cat "${S}"/config.toml || die
+	echo
+}
+
+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
+	)
+}
+
+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() {
+	(
+	IFS=$'\n'
+	env $(cat "${S}"/config.env) DESTDIR="${D}" \
+		"${EPYTHON}" ./x.py install	-vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+	)
+
+	# bug #689562, #689160
+	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
+	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+
+	local symlinks=(
+		cargo
+		rustc
+		rustdoc
+		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}/libexec" "/usr/lib/${PN}/libexec-${PV}"
+	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
+	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
+	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+
+	newenvd - "50${P}" <<-_EOF_
+		LDPATH="${EPREFIX}/usr/lib/rust/lib"
+		MANPATH="${EPREFIX}/usr/lib/rust/man"
+		$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
+		$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
+	_EOF_
+
+	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+
+	# note: eselect-rust adds EROOT to all paths below
+	cat <<-_EOF_ > "${T}/provider-${P}"
+		/usr/bin/cargo
+		/usr/bin/rustdoc
+		/usr/bin/rust-gdb
+		/usr/bin/rust-gdbgui
+		/usr/bin/rust-lldb
+		/usr/lib/rustlib
+		/usr/lib/rust/lib
+		/usr/lib/rust/libexec
+		/usr/lib/rust/man
+		/usr/share/doc/rust
+	_EOF_
+
+	if use clippy; then
+		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+	fi
+	if use miri; then
+		echo /usr/bin/miri >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+	fi
+	if use 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
+}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2022-01-15 19:13 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2022-01-15 19:13 UTC (permalink / raw
  To: gentoo-commits

commit:     f1fee78db8c5c9b10b90d41a267daac8474ff597
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Sat Jan 15 04:26:44 2022 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Sat Jan 15 19:12:40 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=f1fee78d

dev-lang/rust: Remove old version and patches

Signed-off-by: orbea <orbea <AT> riseup.net>
Closes: https://github.com/gentoo/libressl/pull/376
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 dev-lang/rust/Manifest                             |  34 --
 dev-lang/rust/files/1.51.0-bootstrap-panic.patch   |  43 --
 dev-lang/rust/files/1.51.0-slow-doc-install.patch  |  92 ---
 .../rust/files/rustc-1.51.0-backport-pr81728.patch | 181 ------
 .../rust/files/rustc-1.51.0-backport-pr81741.patch |  44 --
 .../rust/files/rustc-1.51.0-backport-pr82289.patch |  96 ---
 .../rust/files/rustc-1.51.0-backport-pr82292.patch | 120 ----
 .../rust/files/rustc-1.51.0-backport-pr83629.patch | 142 -----
 dev-lang/rust/rust-1.52.1.ebuild                   | 677 ---------------------
 9 files changed, 1429 deletions(-)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 1342d4f..c8dda48 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -1,35 +1,3 @@
-DIST rust-1.51.0-aarch64-unknown-linux-gnu.tar.xz 208849064 BLAKE2B 1570536f63237ce04222f78c8c1d0592b3d0bacb62e2a1e2b87f9cd74c8d304837f9259c154e6ddfc5d0fc36c1d69aba34cb27d41346d4e7400ad1950ff19f8f SHA512 2af31290e1065a4611f34e6cc8c62ee494c222becfb21ec6707059c119069b0adf0eec23e56bad4a3cc8690b2556309ec58cbd9003a959983689cc46c7c63361
-DIST rust-1.51.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B cc2cef574740ea5eb632235dca2889a7c6a6941169ac011d3a888cdefb8e5a5af5bb9ade93207ccb6adc82eb6ae1b5ed605954cea2561163c538fcbbcdb647f8 SHA512 43abb6e19c1ca905cb2d047503f4473584e06b8daecff3b6e45ac93dadc2c7f37118e3b66124180a9951b2f5eedf212174a37c661a7775600bd200eb089801f9
-DIST rust-1.51.0-aarch64-unknown-linux-musl.tar.xz 209607568 BLAKE2B 8a8d677fac5aa68be8b689bd999894f0b51910d50d86d70db4cc9b60695703dd74b68578b72d9d410d2d163aebd3fbab0993ebf79486a103ef588cb849dc2038 SHA512 d7ca480f4e07f88a49b475d2fcd132126defff21c26a665d1b444b97ce5e44404f9106bb844a5e35d4933a51c2d8a5aabc8ee42a2515c02a559c81937920be4d
-DIST rust-1.51.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 0759b58a1647b0c0a29fc295edb31e793a0688d6a4b6eb8febe4364421f53cd1f4c0555abf7c8d4fb25bd7c15c9aeaa8d520390d8d3b61c213a591ccee7b9887 SHA512 bc2135b94f9c4e7b2616d886e84a268f52404abed2b827bdca5ab8f98071801e171234f18aa27a367b5dbd0df0e207b0aac8a30be59fff807ff70f21279614e2
-DIST rust-1.51.0-arm-unknown-linux-gnueabi.tar.xz 194362256 BLAKE2B 20c1559d3b1f32c9ca6f5e9740dff0d9fd859be33ca58d59733fff1566ed0b75dd398facbcd15c8d7c862bee945198b0235973d5f683fd78f82cca52429b269c SHA512 fadb5084152b6fa148c1d584c8ba766201012c0a70bdf273f5d4b89b249d7f520997b12809a0db68c9d1d76283fee892f83b6ef687cbb025c08960ffff7e5eea
-DIST rust-1.51.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 546fad9428e7261ef78e92d6542ebcd2b1b11c54bb4dc1fbcb7ca622551e6b4fc443f16305f9f37572ff2f24e5dfab491fadf3a128e009c77aa0218b271bbe5e SHA512 580954dde6e5a89a9a16d0b93570275e81f488f0a77952cd4e3878894f9865f2a128bac2aaf0567ffc9e7cf9809808088a819bf7b0e54d8fa6224abe677d1732
-DIST rust-1.51.0-arm-unknown-linux-gnueabihf.tar.xz 193918308 BLAKE2B 6799652205422d96c95949a4afa8a321a8a4e0cd42543f321898fdba5b27bb645f9eeb50edb63a43902cc74026a786c12a22af67313bc6ac0843b1e638077d64 SHA512 cd0dba1ebdff9692aef0026d94da38ba7856b64004404b75d0d385b8f9f53eed1ddd0e900e49cda60fc5190fe305d96f6f00d0053f4409479ab991fafa90338c
-DIST rust-1.51.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 41cad50cdebc0cb4e59f6c914b30b071dd7a70b6278c03a7349eb51a9ec6976fbaeacaea96f13e8ad91a283a3de4f548cf8e352179359f5697520813bc47e274 SHA512 d74a183dba390ea053ee746575788481e3970572e61b7b55acff521c8f4a9da5a3f4e3feff5c3b26162acdc00eed1c4240a4fbdcac3fa117455ac49d8ce62985
-DIST rust-1.51.0-armv7-unknown-linux-gnueabihf.tar.xz 197028040 BLAKE2B 801526d0fc9cdfc25a63227afdfc1bf9e0e6fa0b80f6306d86b68ca16adf4996b755b6ade1a4e898bfaf25565b5b49a358a9ed364bfe5d67c308744814a843de SHA512 c602dcc7fd1343b310f5e3074bf63f2428ca7c15cdce8999fa4655de5a4bda5a13255fc12bee3d0632f6cb93220a883fb36d24061dca6795d23afa9f8fdae57f
-DIST rust-1.51.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B dd94fb91fb6dba9788b178ea74b73c0df78f496d6f57382969836ade9aacda1696f363c4cef8126426040620ef934a2f2681d89d5e3a703d9114d8d152abb6f8 SHA512 40a3f61341ec996650b6e4e8552007b822b7990b2154483a7d7a7dcbae4eb2913d4ffb5319037256ff5931ee01320d1c3ce307aa7c9fd90a782646de4edcd2e9
-DIST rust-1.51.0-i686-unknown-linux-gnu.tar.xz 213348860 BLAKE2B bd6c1d5ce9f20b961e3db8c69b022402acbdf06029e0802863292bcac89b0f88e6e6d02f625be52e8753d772aad8ac01125ff6832072b5d3d41a9ec7bf5c6a6f SHA512 05d08e44827dcba8197667deb9a7f3584465085ce1b79a38deb138849a07c716646a70f1cc2cee02b41c45ec7c3a3b7800a3fae62ebe04d6f72f017a5d722bab
-DIST rust-1.51.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B c09c5ce8df8834758cf8049872142104023af24f31a2efc97ee201e6b2db56c1b7dd1baccd608ca1f3de416efd162408a01170fff9b7070cac80df32fa30012d SHA512 6aad34b773cfe0ec30f80dacb7482247515ed1e7025a322d22ce7a2b1a6dc49929f71b9c3a6bd05622b70dd8f37fde5cc809ac32c4724b98098630158dddcfdf
-DIST rust-1.51.0-mips-unknown-linux-gnu.tar.xz 155944968 BLAKE2B ab9ad78f147b439beec9e92e643cc48814666c5e8fa244981d0919237844006aa2879a4058145d0bdafe89793402e65982d9fd3f0c6253f6a1805bf3381b4caf SHA512 378cfacfc66f1e8a4aeeb3715db9d3cefb4582db8a3b8fc62f05ac50a16db302b250c1696605c17cebe75923010b361b3a9883f7567a26cdcd60fc8379d2d7b3
-DIST rust-1.51.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d072b66f210244c3cb534a040679ee5c5433703fe309a05565a91b4cc8fd50b0e09320067dc48a7255aa0561ca6029fcab3ef4b782f40097a9646c5c77727344 SHA512 c7f1789e577c89397c59e288d2351fdb08bb9626df9d2a4d15c13a1474b67f8474be27d9f8a13fb55c53f9a17e47825b84473f487fa3866a8e30e4141b26aaa6
-DIST rust-1.51.0-mips64-unknown-linux-gnuabi64.tar.xz 161859704 BLAKE2B a60484b7d009633763f10be8affc33715992f6eee5643d147078840675c900be0ff7f9bd985680836dc7d8467d7d118863cb5bed0f85bb135f0e352318946f32 SHA512 e99437a1b79e8821f6c1eaea92a8c5348e6fb4aa1a4fecbfecc950bf71fd7cd58712d336a67e00f95554bb01565f1daa1221699e142e9e673d8ce2cbb8910008
-DIST rust-1.51.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 85aca04845291448d9ec9c5b37f556e890155574982496d8967829b56b3c4caab1aa40c71e007392a05337ca917a70aa107007cf5c73c8eb8fa95bbcb6f7debf SHA512 4ebd8e0bad5c66a12bfb606f6b28aa63430af5e6344ce91d2be958f1f479fad0d5af6a53006999a321cacfea50fc623629f633f95ff747790c2702aa8dfe9c76
-DIST rust-1.51.0-mipsel-unknown-linux-gnu.tar.xz 159164156 BLAKE2B ccccc1e8abf529f9f023cd793dd78c9bfece359a770e03cfae808ac017ae0171ca0dbabb870c5ad57670a9ec562c393d2ffef3490e46423420be6a9a20cc8937 SHA512 31aecea3016e30dd610b610b86ec23f9832061abfbc55c7e43d942d4b0e8e521aecb37306bdb4a810ddcfc4e9d9a6cf057d6802d053ce9abf1cad401b6440d67
-DIST rust-1.51.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e61e17518d7d326f188b84855b771c7bc2d7f23347dfadaf0783b4fcbb7dfd233ed2262c6ffa75b55baee7e83e94b5c47d24b937e540c6a2892b20d320fcefbb SHA512 e0ffb031f600a58a2f7a76b1b26f5453e9de4d4edf6652d75d0cdd92e4495844601d56b521482e172c72b7463ab667ea65e610baa4f68c5f59333dd8f3cf1155
-DIST rust-1.51.0-powerpc-unknown-linux-gnu.tar.xz 167534676 BLAKE2B 5c74ebaf5d5e736bbfb8d963faff6d0fa5725017c738c4a5adf4b4e8c812ff8234b9e03e1a6ba2b6ab718469541e8c398e095ae22f155ccf9290e50ae0595a52 SHA512 9984e464a4e7d18042a8a2d99d26c4436a0ae2b2d281d5c8a42aedb0b78ab5e72f2392ea96e84b2f5892d772d28ee2feb89636f8d1a060a30098faa4e7f259eb
-DIST rust-1.51.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B c8ee6ea39b19cb160527145aeb32206eef6665df1e2c3ce690a136ead20b8114a5806b209a926da7608ffce94e6d65910b7a282cb353345a83a8e2b589df489f SHA512 886c62e4592568ad7b966f933641236ce59a037b65a00e0bfab6d2d6bb62cf994cdd8e392dd2f51b9c958e4e3c0c3763b9dec6be5a4faf27aac5d8d0a225abe2
-DIST rust-1.51.0-powerpc64-unknown-linux-gnu.tar.xz 182726600 BLAKE2B d9051eea2d9486b6b4d858a3f6730210de5aac958853de82b3f822b3e0decd1b8a9a9b371b250ffde9ac19be4ccbe09e58c51a78b7e1fb2dd48e61c8a902e5b5 SHA512 4c1864a81d4c32bd95e0381454beae2a1d5b4cb47196821e64fc261133acfa2fa1e514dd6cdb68551559c4da2a2483edf5c6c14246adbea85c3027f88d401e06
-DIST rust-1.51.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e1fe8c5764cb11f722893c7efcfb76d5f17ee80a104ede360fedbc8cd1e2996246e0a770959398a524ae55bdfb075dedb2c2583816bd3de28034dddbf248a54c SHA512 3b7e3f15f5a2a4876175a26d7b4332d4a6847a565d5de4c2cb67c52cf26308215286777ea9d89366543ddd1ce353d6a920153549b6641ffeae8e9954470aecfc
-DIST rust-1.51.0-powerpc64le-unknown-linux-gnu.tar.xz 192084372 BLAKE2B d127c1827956c7594da5b69346168504b22726e176f03172b599e0a0fae2400e273684090f1d0fd05c33f193b3918c98ccd64c3647b0577b51431c3409083b2f SHA512 b53a741d1d75637fb31ddb0364e1f91427c3818ca145f819b906d13c32c638ae77fbaa567a6220b6bf69f38cc00d2b95615778a86f4acadd63efe2e62b1b01ef
-DIST rust-1.51.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f79f8e1ad8cb0dbc6e1cb45fab2bd19a03d1939518529841155e7a00d9a42e3eb2539ae424c68af7140399a2b37c6ff5a00c55f0467ce4acf6fd7b1ddf525a63 SHA512 785ab118197d53b5f4512cdb07e6277c9ff58b9e53610dcce1c9f928cac8a20b1fbaaa7acad8cbe4370a3fe6dda5f726e8021e8987688a9ec242f73ed8d12adb
-DIST rust-1.51.0-riscv64gc-unknown-linux-gnu.tar.xz 179131092 BLAKE2B 1d8cc335cfc434871e1916793974eabd14fa96f49ee9b0f9ae004326c405dbadccd0249ff28dddfecb9921cae4e886f4114a8221e09fd7944f2d2e96bdb12bd2 SHA512 7fb76c3ddc952b43320bf3497d890ff79aa5634df22f38958835cd1d4044bef44257af22d7473675afb42a7c2fc9ac713f210d6bfe1e61ed56d5265f58add540
-DIST rust-1.51.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b0cbee67d6bc37ccdcdf2c563667f3b3e4ec7377e5c86b627cfbbd7385425508778bd67887f46067476ffbf3b5f2719d6b5490d2fe5261db5e7f4da4bbc94be1 SHA512 fdf1ed20eec719435a557be8e6bf6766b0b56e27fa49c65b2c412875a1c76919ff6d6a4d8d14bafa8aa96eb42deca65869db6ca5d2b61a84a0af07dbeb1e9ae9
-DIST rust-1.51.0-s390x-unknown-linux-gnu.tar.xz 191632144 BLAKE2B d1690825f59e8ed1ed4855556ff36c05efbc941097744e31fd9207309087d53880d418f737aa0cb9371b973c9c3d56f05ed03533df04402242194ef13b8d608d SHA512 a72ad31c6306f939c4f963133ddc0b3fabc9e506bdff5e318f5275658b7271a675a51d208d306d94fb01739cbcf0f62f018fc7490ca6db54b301852202749d16
-DIST rust-1.51.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 355e753ddca453ca36a8c1e4f361e9655bdb54f856a642be3d4024772266ed1771a2673ab1026c64bbf7ac8d1fc30fb1924a939cc3ea290e98b137edb48bbf6a SHA512 89bf145b8e620eac99b0fe4a79ee205a04550c664bba1e22a7611ef37736cca3cb911ac89659126e0c6fa60e4dbfdf0dd54a8693e496d4c37e4f7d3f518e2740
-DIST rust-1.51.0-x86_64-unknown-linux-gnu.tar.xz 147543532 BLAKE2B 44ac97f6b650e65de257b362121091176e02fac60aa534ec83ddbc4e16eb32f7a4a7999cc28eac446f5790572552fee5c2589350cb6d159a946d90007d85c7db SHA512 9f95045119bcd5ef7be54f5b5bdc9ebc6bd6c48437d90762a1cfbc03281882f81087e1877eecae9573ba5e7cd7c11ef5fed979034c57f45b6547cbfeb11eef6d
-DIST rust-1.51.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 033c41c165cf50a63479d1352a33abe94a63d9730f02016d09bf2e8a8804587d4fc802c047e7417e0befca2d5df5ca8c79a714ec1c1fb389240b6e8931fb9e9b SHA512 e314a7db9aaff445b67f828bf9a98705032071928e2102524c0c720a3b8feb292b8c6766838b92da2d213e93bf53fb780fc856b0370238fbb7e20431d2de6d5c
-DIST rust-1.51.0-x86_64-unknown-linux-musl.tar.xz 233773068 BLAKE2B cc9de90b967cc81005ce5c897d3fd6dc4e3880be96ac82c41382d19a8aca0244845830db7a33eaef85b6bdef0c00ae02c0390db932fa49f76e362af2c68edb56 SHA512 d8df3c4c3de435629986e21bc6b31edfb73cba394e76cf87ee98d2936f73aef60c988d020da7ec1188f6448eacad9d5aefed073f4f88ffa2eaac54ac7e3cb3f7
-DIST rust-1.51.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 2e2c20fe99b33e5361b1945f54b77d5e8acad34d1be9cadfd1971b2882e38bc4403a5a67769a74fdd7ab21434784f03084780ef827e26318168bf5d531f9e9bd SHA512 42392e8283a28d58d4874dbf97caa0377f27c6599c272c715fcdefee48551004d491f0509f2894f5696a2820f11dbb333e3bf878cbdf24b0c58add4a493acecc
 DIST rust-1.52.0-aarch64-unknown-linux-gnu.tar.xz 215549836 BLAKE2B d4179cc67772cd6b92085d68f4bb9de006fca7d8470a56766ac5d94a0379ae675d18c5275ec2ed1eab71274ce4f416a77f3ce74d849a1d4118b5a7ddec205a3c SHA512 7a26e14be6b27c7084c7c85b312341ab991c2df91ea53128f14707a4c725dd03ba7df30b9e9fcef39a509ab4f5d5feb028b99d6d9ffcc059996ed29b83eb90b9
 DIST rust-1.52.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e66afc44186f48548dffcd7c6d7d92b4fbecea48bf3f7970d211844b5401a2556a138993517d049265109146a48856c7106616100ed63a5fa3f263d7023af6b6 SHA512 75ff89cd071641b01f4d483aca5997f6b3857d477b6fb40e6fdf11ff2ecdca74618cc59a9f0d1d2f942bde2d9a8738ac6f821d21d79f3ed85830ef530636a607
 DIST rust-1.52.0-aarch64-unknown-linux-musl.tar.xz 214159336 BLAKE2B 1b2afb80df6bf75d516127f07d57d12d876f12879c1d87059ab1c40ee1325ddb4e0c22f2fa185dab72f7633bce7d2ff5ed92ce4e88d4e118ac80630a061ec0c4 SHA512 9461c7272ac3e2c854e8e5f24cd57e5d648a3f923a9413eebd9f45a143d27378bc09c4d30ee7a1773a56baa31066dcc9f955b0805ce9f47d81b52e47a3a3e369
@@ -222,8 +190,6 @@ DIST rust-1.57.0-x86_64-unknown-linux-gnu.tar.xz 151033748 BLAKE2B 61ecece6a8aa3
 DIST rust-1.57.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B ea41b27fd25cc75efac73203688ee0882767fc76a2fe09b5e424c42467d3e332463c5560cc58f3b20f6e4b44289a25cfb0d36e38a7a9a7b3950ef875a59dc9ae SHA512 8b955bfce6c130e4b95054b98646f7f9b89e621256759ee1ff533df5f777312dd7adbb192ee0076c9b9baa6883a74a9def50ef598ba8c707762290d465c9a8b7
 DIST rust-1.57.0-x86_64-unknown-linux-musl.tar.xz 260333980 BLAKE2B 75342ae8637355e714d5217d78604cfa6a601d3f9bc0ed4667ff0ca57c6521567b19b9bdb10f79761e2e5fd21ca10e12f3fae0c65791118fdb0c35f8f88349f4 SHA512 204ed493528757b8e3e8df13d062c9ae74c75c3e3adc1a2efc0dfc33d2525629168a558dd32653f44a4365191bf203a4415a77152276288a8e122e6bd587394a
 DIST rust-1.57.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 506400c3ea70469cbda0e492e85d41b7f94fba790ec19d1c3491bf4a00d283f97c8fb37319ad6c4a43b22a2195c21d1b9e3c16a5b2a9a82833ff61ad49bdc793 SHA512 793369dc7a854c48a72d81446a0c8eb9d83a071af77758e0bcbb8e4d518fb87c5a23c085202b9b427a02bdd772ad9c82724b34295b851f26f384c3e801bf9a04
-DIST rustc-1.52.1-src.tar.xz 115109508 BLAKE2B c5d73f5884037d287d88ba9fdaf63a36678b692e1b510920045797ab29f1660f05cda901e19411ff83ec3084c4130034c269976b1056220f3e629cff116d07f0 SHA512 55f5053ce40d4eba4663052817aef6a6275139ca229c89cd1ec44711458b412720203301d8c7975aac5720a91fcaf21847f8184f641cbb0004f722520283c73c
-DIST rustc-1.52.1-src.tar.xz.asc 801 BLAKE2B ea2f89289b4d9cf90a0d10148bf3494805c00e7822cc98addf0b602c35e4635bb1963d79168b395a5f7c7bd024070284fccd19757982daa0d554dcac166fd4d7 SHA512 0d692a085c017b03b8a135a28f7e6f1d7e05642d2e99f0f1fbc397e766bb8fed4b4c6b4c9157b79d9bb0c4229607dbc35711cd463c62a9966a4efb6f197de7d3
 DIST rustc-1.53.0-src.tar.xz 115686332 BLAKE2B fa068f89d42f927fdc79ee31aad1386eaf2aa596a060e059c5a1a73fe48c48d008fc952cd6c7912b743e41d77a94b205639eed0f728b2539b62f18a772cabfe3 SHA512 70485cf7a0f7fc36ee31644e546374079dc387a85b44e5e793707fd0a4d7ca05d311291e78b86db955485d8f21c47ff9e1908acc4da68ba04929287213a40c24
 DIST rustc-1.53.0-src.tar.xz.asc 801 BLAKE2B 75d3aa4122968f10a119f7a04df897f496588c7a1a2ddf1ea2222099c9efb0e320f5677a26c3271f86e7f500120664485f54c6025ae3c6df30d2b0fe758f5826 SHA512 e337579b9ab4febca4594c2c5d42c279b51cfc745c383be9a430204188311a25319c04c73fde34fdb2bb98a88bfd8daaddc67765834330e6c279a6e5a5648247
 DIST rustc-1.54.0-src.tar.xz 116286856 BLAKE2B 5ac47822646a0b6205f09282168b4d4ddcace9f6bc8f242c890327ca4074626f129514f8bcae5c5556015745f718990cce490658076f5cd3526623439540416b SHA512 5162f85b43ca2c5af93fdbfb2597d75df8a838f7fcc025a5298499ce1043db50f1ea2fbba753e47ce5daad3d80d4b612acf6527ef902c34117763e687fdbbcfa

diff --git a/dev-lang/rust/files/1.51.0-bootstrap-panic.patch b/dev-lang/rust/files/1.51.0-bootstrap-panic.patch
deleted file mode 100644
index 529d5a1..0000000
--- a/dev-lang/rust/files/1.51.0-bootstrap-panic.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 31c93397bde772764cda3058e16f9cef61895090 Mon Sep 17 00:00:00 2001
-From: Joshua Nelson <jyn514@gmail.com>
-Date: Mon, 8 Feb 2021 22:51:21 -0500
-Subject: [PATCH] Use format string in bootstrap panic instead of a string
- directly
-
-This fixes the following warning when compiling with nightly:
-
-```
-warning: panic message is not a string literal
-    --> src/bootstrap/builder.rs:1515:24
-     |
-1515 |                 panic!(out);
-     |                        ^^^
-     |
-     = note: `#[warn(non_fmt_panic)]` on by default
-     = note: this is no longer accepted in Rust 2021
-help: add a "{}" format string to Display the message
-     |
-1515 |                 panic!("{}", out);
-     |                        ^^^^^
-help: or use std::panic::panic_any instead
-     |
-1515 |                 std::panic::panic_any(out);
-     |                 ^^^^^^^^^^^^^^^^^^^^^^
-```
----
- src/bootstrap/builder.rs | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
-index f1a160250dbe1..0f5fcb4af400d 100644
---- a/src/bootstrap/builder.rs
-+++ b/src/bootstrap/builder.rs
-@@ -1490,7 +1490,7 @@ impl<'a> Builder<'a> {
-                 for el in stack.iter().rev() {
-                     out += &format!("\t{:?}\n", el);
-                 }
--                panic!(out);
-+                panic!("{}", out);
-             }
-             if let Some(out) = self.cache.get(&step) {
-                 self.verbose(&format!("{}c {:?}", "  ".repeat(stack.len()), step));

diff --git a/dev-lang/rust/files/1.51.0-slow-doc-install.patch b/dev-lang/rust/files/1.51.0-slow-doc-install.patch
deleted file mode 100644
index 4aa7a71..0000000
--- a/dev-lang/rust/files/1.51.0-slow-doc-install.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 6dfd700c595a8853fd58349c38c4768b922a2e85 Mon Sep 17 00:00:00 2001
-From: Anders Kaseorg <andersk@mit.edu>
-Date: Sat, 17 Apr 2021 22:20:36 -0700
-Subject: [PATCH] bootstrap: Restore missing --bulk-dirs for rust-docs,
- rustc-docs
-
-The --bulk-dirs argument was removed for rust-docs in commit
-c768ce138427b1844c1f6594daba9c0e33928032 and rustc-docs in commit
-8ca46fc7a83734c9622f11f25d16b82316f44bcc (#79788), presumably by
-mistake; that slowed down installation of rust-docs from under a
-second to some twenty *minutes*.  Restoring --bulk-dirs reverses this
-slowdown.
-
-Fixes #80684.
-
-Signed-off-by: Anders Kaseorg <andersk@mit.edu>
----
- src/bootstrap/dist.rs    |  4 ++--
- src/bootstrap/tarball.rs | 17 +++++++++++++++++
- 2 files changed, 19 insertions(+), 2 deletions(-)
-
-diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs
-index 38ebe0e52083d..aee3c8324bc11 100644
---- a/src/bootstrap/dist.rs
-+++ b/src/bootstrap/dist.rs
-@@ -74,7 +74,7 @@ impl Step for Docs {
- 
-         let mut tarball = Tarball::new(builder, "rust-docs", &host.triple);
-         tarball.set_product_name("Rust Documentation");
--        tarball.add_dir(&builder.doc_out(host), dest);
-+        tarball.add_bulk_dir(&builder.doc_out(host), dest);
-         tarball.add_file(&builder.src.join("src/doc/robots.txt"), dest, 0o644);
-         Some(tarball.generate())
-     }
-@@ -107,7 +107,7 @@ impl Step for RustcDocs {
- 
-         let mut tarball = Tarball::new(builder, "rustc-docs", &host.triple);
-         tarball.set_product_name("Rustc Documentation");
--        tarball.add_dir(&builder.compiler_doc_out(host), "share/doc/rust/html/rustc");
-+        tarball.add_bulk_dir(&builder.compiler_doc_out(host), "share/doc/rust/html/rustc");
-         Some(tarball.generate())
-     }
- }
-diff --git a/src/bootstrap/tarball.rs b/src/bootstrap/tarball.rs
-index b02d7e062a524..9ff5c2327e0f7 100644
---- a/src/bootstrap/tarball.rs
-+++ b/src/bootstrap/tarball.rs
-@@ -99,6 +99,7 @@ pub(crate) struct Tarball<'a> {
-     temp_dir: PathBuf,
-     image_dir: PathBuf,
-     overlay_dir: PathBuf,
-+    bulk_dirs: Vec<PathBuf>,
- 
-     include_target_in_component_name: bool,
-     is_preview: bool,
-@@ -137,6 +138,7 @@ impl<'a> Tarball<'a> {
-             temp_dir,
-             image_dir,
-             overlay_dir,
-+            bulk_dirs: Vec::new(),
- 
-             include_target_in_component_name: false,
-             is_preview: false,
-@@ -201,6 +203,11 @@ impl<'a> Tarball<'a> {
-         self.builder.cp_r(src.as_ref(), &dest);
-     }
- 
-+    pub(crate) fn add_bulk_dir(&mut self, src: impl AsRef<Path>, dest: impl AsRef<Path>) {
-+        self.bulk_dirs.push(dest.as_ref().to_path_buf());
-+        self.add_dir(src, dest);
-+    }
-+
-     pub(crate) fn generate(self) -> GeneratedTarball {
-         let mut component_name = self.component.clone();
-         if self.is_preview {
-@@ -221,6 +228,16 @@ impl<'a> Tarball<'a> {
-                 .arg("--image-dir")
-                 .arg(&this.image_dir)
-                 .arg(format!("--component-name={}", &component_name));
-+
-+            if let Some((dir, dirs)) = this.bulk_dirs.split_first() {
-+                let mut arg = dir.as_os_str().to_os_string();
-+                for dir in dirs {
-+                    arg.push(",");
-+                    arg.push(dir);
-+                }
-+                cmd.arg("--bulk-dirs").arg(&arg);
-+            }
-+
-             this.non_bare_args(cmd);
-         })
-     }

diff --git a/dev-lang/rust/files/rustc-1.51.0-backport-pr81728.patch b/dev-lang/rust/files/rustc-1.51.0-backport-pr81728.patch
deleted file mode 100644
index 20373f4..0000000
--- a/dev-lang/rust/files/rustc-1.51.0-backport-pr81728.patch
+++ /dev/null
@@ -1,181 +0,0 @@
-From 70f17ca715d3d7e2fd79cc909b95fd3a6357c13e Mon Sep 17 00:00:00 2001
-From: Yechan Bae <yechan@gatech.edu>
-Date: Wed, 3 Feb 2021 16:36:33 -0500
-Subject: [PATCH 1/2] Fixes #80335
-
----
- library/alloc/src/str.rs   | 42 ++++++++++++++++++++++----------------
- library/alloc/tests/str.rs | 30 +++++++++++++++++++++++++++
- 2 files changed, 54 insertions(+), 18 deletions(-)
-
-diff --git a/library/alloc/src/str.rs b/library/alloc/src/str.rs
-index 70e0c7dba5ea..a7584c6b6510 100644
---- a/library/alloc/src/str.rs
-+++ b/library/alloc/src/str.rs
-@@ -90,8 +90,8 @@ fn join(slice: &Self, sep: &str) -> String {
-     }
- }
- 
--macro_rules! spezialize_for_lengths {
--    ($separator:expr, $target:expr, $iter:expr; $($num:expr),*) => {
-+macro_rules! specialize_for_lengths {
-+    ($separator:expr, $target:expr, $iter:expr; $($num:expr),*) => {{
-         let mut target = $target;
-         let iter = $iter;
-         let sep_bytes = $separator;
-@@ -102,7 +102,8 @@ macro_rules! spezialize_for_lengths {
-                 $num => {
-                     for s in iter {
-                         copy_slice_and_advance!(target, sep_bytes);
--                        copy_slice_and_advance!(target, s.borrow().as_ref());
-+                        let content_bytes = s.borrow().as_ref();
-+                        copy_slice_and_advance!(target, content_bytes);
-                     }
-                 },
-             )*
-@@ -110,11 +111,13 @@ macro_rules! spezialize_for_lengths {
-                 // arbitrary non-zero size fallback
-                 for s in iter {
-                     copy_slice_and_advance!(target, sep_bytes);
--                    copy_slice_and_advance!(target, s.borrow().as_ref());
-+                    let content_bytes = s.borrow().as_ref();
-+                    copy_slice_and_advance!(target, content_bytes);
-                 }
-             }
-         }
--    };
-+        target
-+    }}
- }
- 
- macro_rules! copy_slice_and_advance {
-@@ -153,7 +156,7 @@ fn join_generic_copy<B, T, S>(slice: &[S], sep: &[T]) -> Vec<T>
-     // if the `len` calculation overflows, we'll panic
-     // we would have run out of memory anyway and the rest of the function requires
-     // the entire Vec pre-allocated for safety
--    let len = sep_len
-+    let reserved_len = sep_len
-         .checked_mul(iter.len())
-         .and_then(|n| {
-             slice.iter().map(|s| s.borrow().as_ref().len()).try_fold(n, usize::checked_add)
-@@ -161,22 +164,25 @@ fn join_generic_copy<B, T, S>(slice: &[S], sep: &[T]) -> Vec<T>
-         .expect("attempt to join into collection with len > usize::MAX");
- 
-     // crucial for safety
--    let mut result = Vec::with_capacity(len);
--    assert!(result.capacity() >= len);
-+    let mut result = Vec::with_capacity(reserved_len);
-+    debug_assert!(result.capacity() >= reserved_len);
- 
-     result.extend_from_slice(first.borrow().as_ref());
- 
-     unsafe {
--        {
--            let pos = result.len();
--            let target = result.get_unchecked_mut(pos..len);
--
--            // copy separator and slices over without bounds checks
--            // generate loops with hardcoded offsets for small separators
--            // massive improvements possible (~ x2)
--            spezialize_for_lengths!(sep, target, iter; 0, 1, 2, 3, 4);
--        }
--        result.set_len(len);
-+        let pos = result.len();
-+        let target = result.get_unchecked_mut(pos..reserved_len);
-+
-+        // copy separator and slices over without bounds checks
-+        // generate loops with hardcoded offsets for small separators
-+        // massive improvements possible (~ x2)
-+        let remain = specialize_for_lengths!(sep, target, iter; 0, 1, 2, 3, 4);
-+
-+        // issue #80335: A weird borrow implementation can return different
-+        // slices for the length calculation and the actual copy, so
-+        // `remain.len()` might be non-zero.
-+        let result_len = reserved_len - remain.len();
-+        result.set_len(result_len);
-     }
-     result
- }
-diff --git a/library/alloc/tests/str.rs b/library/alloc/tests/str.rs
-index 604835e6cc4a..6df8d8c2f354 100644
---- a/library/alloc/tests/str.rs
-+++ b/library/alloc/tests/str.rs
-@@ -160,6 +160,36 @@ fn test_join_for_different_lengths_with_long_separator() {
-     test_join!("~~~~~a~~~~~bc", ["", "a", "bc"], "~~~~~");
- }
- 
-+#[test]
-+fn test_join_isue_80335() {
-+    use core::{borrow::Borrow, cell::Cell};
-+
-+    struct WeirdBorrow {
-+        state: Cell<bool>,
-+    }
-+
-+    impl Default for WeirdBorrow {
-+        fn default() -> Self {
-+            WeirdBorrow { state: Cell::new(false) }
-+        }
-+    }
-+
-+    impl Borrow<str> for WeirdBorrow {
-+        fn borrow(&self) -> &str {
-+            let state = self.state.get();
-+            if state {
-+                "0"
-+            } else {
-+                self.state.set(true);
-+                "123456"
-+            }
-+        }
-+    }
-+
-+    let arr: [WeirdBorrow; 3] = Default::default();
-+    test_join!("0-0-0", arr, "-");
-+}
-+
- #[test]
- #[cfg_attr(miri, ignore)] // Miri is too slow
- fn test_unsafe_slice() {
--- 
-2.31.1
-
-
-From 10020817d2e6756be1ff2ac3c182af97cf7fe904 Mon Sep 17 00:00:00 2001
-From: Yechan Bae <yechan@gatech.edu>
-Date: Sat, 20 Mar 2021 13:42:54 -0400
-Subject: [PATCH 2/2] Update the comment
-
----
- library/alloc/src/str.rs | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/library/alloc/src/str.rs b/library/alloc/src/str.rs
-index a7584c6b6510..4d1e876457b8 100644
---- a/library/alloc/src/str.rs
-+++ b/library/alloc/src/str.rs
-@@ -163,7 +163,7 @@ fn join_generic_copy<B, T, S>(slice: &[S], sep: &[T]) -> Vec<T>
-         })
-         .expect("attempt to join into collection with len > usize::MAX");
- 
--    // crucial for safety
-+    // prepare an uninitialized buffer
-     let mut result = Vec::with_capacity(reserved_len);
-     debug_assert!(result.capacity() >= reserved_len);
- 
-@@ -178,9 +178,9 @@ fn join_generic_copy<B, T, S>(slice: &[S], sep: &[T]) -> Vec<T>
-         // massive improvements possible (~ x2)
-         let remain = specialize_for_lengths!(sep, target, iter; 0, 1, 2, 3, 4);
- 
--        // issue #80335: A weird borrow implementation can return different
--        // slices for the length calculation and the actual copy, so
--        // `remain.len()` might be non-zero.
-+        // A weird borrow implementation may return different
-+        // slices for the length calculation and the actual copy.
-+        // Make sure we don't expose uninitialized bytes to the caller.
-         let result_len = reserved_len - remain.len();
-         result.set_len(result_len);
-     }
--- 
-2.31.1
-

diff --git a/dev-lang/rust/files/rustc-1.51.0-backport-pr81741.patch b/dev-lang/rust/files/rustc-1.51.0-backport-pr81741.patch
deleted file mode 100644
index 8ef22ee..0000000
--- a/dev-lang/rust/files/rustc-1.51.0-backport-pr81741.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 40d3f2d7ef5835317fe9df9ecc01f4c363def4fd Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
-Date: Thu, 4 Feb 2021 10:23:01 +0200
-Subject: [PATCH] Increment `self.index` before calling
- `Iterator::self.a.__iterator_get_unchecked` in `Zip` `TrustedRandomAccess`
- specialization
-
-Otherwise if `Iterator::self.a.__iterator_get_unchecked` panics the
-index would not have been incremented yet and another call to
-`Iterator::next` would read from the same index again, which is not
-allowed according to the API contract of `TrustedRandomAccess` for
-`!Clone`.
-
-Fixes https://github.com/rust-lang/rust/issues/81740
-
-(cherry picked from commit 86a4b27475aab52b998c15f5758540697cc9cff0)
----
- library/core/src/iter/adapters/zip.rs | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/library/core/src/iter/adapters/zip.rs b/library/core/src/iter/adapters/zip.rs
-index 98b8dca96140..9f9835345200 100644
---- a/library/core/src/iter/adapters/zip.rs
-+++ b/library/core/src/iter/adapters/zip.rs
-@@ -198,12 +198,13 @@ fn next(&mut self) -> Option<(A::Item, B::Item)> {
-                 Some((self.a.__iterator_get_unchecked(i), self.b.__iterator_get_unchecked(i)))
-             }
-         } else if A::may_have_side_effect() && self.index < self.a.size() {
-+            let i = self.index;
-+            self.index += 1;
-             // match the base implementation's potential side effects
--            // SAFETY: we just checked that `self.index` < `self.a.len()`
-+            // SAFETY: we just checked that `i` < `self.a.len()`
-             unsafe {
--                self.a.__iterator_get_unchecked(self.index);
-+                self.a.__iterator_get_unchecked(i);
-             }
--            self.index += 1;
-             None
-         } else {
-             None
--- 
-2.31.1
-

diff --git a/dev-lang/rust/files/rustc-1.51.0-backport-pr82289.patch b/dev-lang/rust/files/rustc-1.51.0-backport-pr82289.patch
deleted file mode 100644
index 5cf5433..0000000
--- a/dev-lang/rust/files/rustc-1.51.0-backport-pr82289.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 5222e2ba2d97cd716a379b4ae6bc62c5f7c2dd36 Mon Sep 17 00:00:00 2001
-From: Giacomo Stevanato <giaco.stevanato@gmail.com>
-Date: Fri, 19 Feb 2021 12:15:37 +0100
-Subject: [PATCH 1/3] Increment self.len in specialized ZipImpl to avoid
- underflow in size_hint
-
-(cherry picked from commit 66a260617a88ed1ad55a46f03c5a90d5ad3004d3)
----
- library/core/src/iter/adapters/zip.rs | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/library/core/src/iter/adapters/zip.rs b/library/core/src/iter/adapters/zip.rs
-index 9f9835345200..f08bfac837fe 100644
---- a/library/core/src/iter/adapters/zip.rs
-+++ b/library/core/src/iter/adapters/zip.rs
-@@ -200,6 +200,7 @@ fn next(&mut self) -> Option<(A::Item, B::Item)> {
-         } else if A::may_have_side_effect() && self.index < self.a.size() {
-             let i = self.index;
-             self.index += 1;
-+            self.len += 1;
-             // match the base implementation's potential side effects
-             // SAFETY: we just checked that `i` < `self.a.len()`
-             unsafe {
--- 
-2.31.1
-
-
-From d39669fc8282830a374d19d204f7b4ee8eb1e381 Mon Sep 17 00:00:00 2001
-From: Giacomo Stevanato <giaco.stevanato@gmail.com>
-Date: Fri, 19 Feb 2021 12:16:12 +0100
-Subject: [PATCH 2/3] Add test for underflow in specialized Zip's size_hint
-
-(cherry picked from commit 8b9ac4d4155c74db5b317046033ab9c05a09e351)
----
- library/core/tests/iter/adapters/zip.rs | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
-
-diff --git a/library/core/tests/iter/adapters/zip.rs b/library/core/tests/iter/adapters/zip.rs
-index 1fce0951e365..a59771039295 100644
---- a/library/core/tests/iter/adapters/zip.rs
-+++ b/library/core/tests/iter/adapters/zip.rs
-@@ -245,3 +245,23 @@ fn test_double_ended_zip() {
-     assert_eq!(it.next_back(), Some((3, 3)));
-     assert_eq!(it.next(), None);
- }
-+
-+#[test]
-+fn test_issue_82282() {
-+    fn overflowed_zip(arr: &[i32]) -> impl Iterator<Item = (i32, &())> {
-+        static UNIT_EMPTY_ARR: [(); 0] = [];
-+
-+        let mapped = arr.into_iter().map(|i| *i);
-+        let mut zipped = mapped.zip(UNIT_EMPTY_ARR.iter());
-+        zipped.next();
-+        zipped
-+    }
-+
-+    let arr = [1, 2, 3];
-+    let zip = overflowed_zip(&arr).zip(overflowed_zip(&arr));
-+
-+    assert_eq!(zip.size_hint(), (0, Some(0)));
-+    for _ in zip {
-+        panic!();
-+    }
-+}
--- 
-2.31.1
-
-
-From 4b382167dd5ed5a6eac0cf314bfb86e3704b6e76 Mon Sep 17 00:00:00 2001
-From: Giacomo Stevanato <giaco.stevanato@gmail.com>
-Date: Fri, 19 Feb 2021 12:17:48 +0100
-Subject: [PATCH 3/3] Remove useless comparison since now self.index <=
- self.len is an invariant
-
-(cherry picked from commit aeb4ea739efb70e0002a4a9c4c7b8027dd0620b3)
----
- library/core/src/iter/adapters/zip.rs | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/library/core/src/iter/adapters/zip.rs b/library/core/src/iter/adapters/zip.rs
-index f08bfac837fe..dcbcb1ce7200 100644
---- a/library/core/src/iter/adapters/zip.rs
-+++ b/library/core/src/iter/adapters/zip.rs
-@@ -261,7 +261,7 @@ fn next_back(&mut self) -> Option<(A::Item, B::Item)>
-             if sz_a != sz_b {
-                 let sz_a = self.a.size();
-                 if a_side_effect && sz_a > self.len {
--                    for _ in 0..sz_a - cmp::max(self.len, self.index) {
-+                    for _ in 0..sz_a - self.len {
-                         self.a.next_back();
-                     }
-                 }
--- 
-2.31.1
-

diff --git a/dev-lang/rust/files/rustc-1.51.0-backport-pr82292.patch b/dev-lang/rust/files/rustc-1.51.0-backport-pr82292.patch
deleted file mode 100644
index 4baf72a..0000000
--- a/dev-lang/rust/files/rustc-1.51.0-backport-pr82292.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 0babb88efc4d36f3defafc3c3c0343793fa05d52 Mon Sep 17 00:00:00 2001
-From: Giacomo Stevanato <giaco.stevanato@gmail.com>
-Date: Wed, 3 Mar 2021 21:09:01 +0100
-Subject: [PATCH 1/2] Prevent Zip specialization from calling
- __iterator_get_unchecked twice with the same index after calling next_back
-
-(cherry picked from commit 2371914a05f8f2763dffe6e2511d0870bcd6b461)
----
- library/core/src/iter/adapters/zip.rs | 13 +++++++++----
- 1 file changed, 9 insertions(+), 4 deletions(-)
-
-diff --git a/library/core/src/iter/adapters/zip.rs b/library/core/src/iter/adapters/zip.rs
-index dcbcb1ce7200..7dac0c63ca2d 100644
---- a/library/core/src/iter/adapters/zip.rs
-+++ b/library/core/src/iter/adapters/zip.rs
-@@ -13,9 +13,10 @@
- pub struct Zip<A, B> {
-     a: A,
-     b: B,
--    // index and len are only used by the specialized version of zip
-+    // index, len and a_len are only used by the specialized version of zip
-     index: usize,
-     len: usize,
-+    a_len: usize,
- }
- impl<A: Iterator, B: Iterator> Zip<A, B> {
-     pub(in crate::iter) fn new(a: A, b: B) -> Zip<A, B> {
-@@ -110,6 +111,7 @@ impl<A, B> ZipImpl<A, B> for Zip<A, B>
-             b,
-             index: 0, // unused
-             len: 0,   // unused
-+            a_len: 0, // unused
-         }
-     }
- 
-@@ -184,8 +186,9 @@ impl<A, B> ZipImpl<A, B> for Zip<A, B>
-     B: TrustedRandomAccess + Iterator,
- {
-     fn new(a: A, b: B) -> Self {
--        let len = cmp::min(a.size(), b.size());
--        Zip { a, b, index: 0, len }
-+        let a_len = a.size();
-+        let len = cmp::min(a_len, b.size());
-+        Zip { a, b, index: 0, len, a_len }
-     }
- 
-     #[inline]
-@@ -197,7 +200,7 @@ fn next(&mut self) -> Option<(A::Item, B::Item)> {
-             unsafe {
-                 Some((self.a.__iterator_get_unchecked(i), self.b.__iterator_get_unchecked(i)))
-             }
--        } else if A::may_have_side_effect() && self.index < self.a.size() {
-+        } else if A::may_have_side_effect() && self.index < self.a_len {
-             let i = self.index;
-             self.index += 1;
-             self.len += 1;
-@@ -264,6 +267,7 @@ fn next_back(&mut self) -> Option<(A::Item, B::Item)>
-                     for _ in 0..sz_a - self.len {
-                         self.a.next_back();
-                     }
-+                    self.a_len = self.len;
-                 }
-                 let sz_b = self.b.size();
-                 if b_side_effect && sz_b > self.len {
-@@ -275,6 +279,7 @@ fn next_back(&mut self) -> Option<(A::Item, B::Item)>
-         }
-         if self.index < self.len {
-             self.len -= 1;
-+            self.a_len -= 1;
-             let i = self.len;
-             // SAFETY: `i` is smaller than the previous value of `self.len`,
-             // which is also smaller than or equal to `self.a.len()` and `self.b.len()`
--- 
-2.31.1
-
-
-From 19af66a6f3e2bbb4780bb9eae7eb53bd13e3dd0f Mon Sep 17 00:00:00 2001
-From: Giacomo Stevanato <giaco.stevanato@gmail.com>
-Date: Fri, 19 Feb 2021 15:25:09 +0100
-Subject: [PATCH 2/2] Add relevant test
-
-(cherry picked from commit c1bfb9a78db6d481be1d03355672712c766e20b0)
----
- library/core/tests/iter/adapters/zip.rs | 23 +++++++++++++++++++++++
- 1 file changed, 23 insertions(+)
-
-diff --git a/library/core/tests/iter/adapters/zip.rs b/library/core/tests/iter/adapters/zip.rs
-index a59771039295..000c15f72c88 100644
---- a/library/core/tests/iter/adapters/zip.rs
-+++ b/library/core/tests/iter/adapters/zip.rs
-@@ -265,3 +265,26 @@ fn overflowed_zip(arr: &[i32]) -> impl Iterator<Item = (i32, &())> {
-         panic!();
-     }
- }
-+
-+#[test]
-+fn test_issue_82291() {
-+    use std::cell::Cell;
-+
-+    let mut v1 = [()];
-+    let v2 = [()];
-+
-+    let called = Cell::new(0);
-+
-+    let mut zip = v1
-+        .iter_mut()
-+        .map(|r| {
-+            called.set(called.get() + 1);
-+            r
-+        })
-+        .zip(&v2);
-+
-+    zip.next_back();
-+    assert_eq!(called.get(), 1);
-+    zip.next();
-+    assert_eq!(called.get(), 1);
-+}
--- 
-2.31.1
-

diff --git a/dev-lang/rust/files/rustc-1.51.0-backport-pr83629.patch b/dev-lang/rust/files/rustc-1.51.0-backport-pr83629.patch
deleted file mode 100644
index 7f68d95..0000000
--- a/dev-lang/rust/files/rustc-1.51.0-backport-pr83629.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From 3834e7b7393bf1a0d7df02ccd1d2e896c1465769 Mon Sep 17 00:00:00 2001
-From: The8472 <git@infinite-source.de>
-Date: Mon, 29 Mar 2021 04:22:34 +0200
-Subject: [PATCH 1/2] add testcase for double-drop during Vec in-place
- collection
-
----
- library/alloc/tests/vec.rs | 38 +++++++++++++++++++++++++++++++++++++-
- 1 file changed, 37 insertions(+), 1 deletion(-)
-
-diff --git a/library/alloc/tests/vec.rs b/library/alloc/tests/vec.rs
-index 5c7ff67bc621..4cdb7eefcdf1 100644
---- a/library/alloc/tests/vec.rs
-+++ b/library/alloc/tests/vec.rs
-@@ -954,7 +954,7 @@ fn test_from_iter_specialization_head_tail_drop() {
- }
- 
- #[test]
--fn test_from_iter_specialization_panic_drop() {
-+fn test_from_iter_specialization_panic_during_iteration_drops() {
-     let drop_count: Vec<_> = (0..=2).map(|_| Rc::new(())).collect();
-     let src: Vec<_> = drop_count.iter().cloned().collect();
-     let iter = src.into_iter();
-@@ -977,6 +977,42 @@ fn test_from_iter_specialization_panic_drop() {
-     );
- }
- 
-+#[test]
-+fn test_from_iter_specialization_panic_during_drop_leaks() {
-+    static mut DROP_COUNTER: usize = 0;
-+
-+    #[derive(Debug)]
-+    enum Droppable {
-+        DroppedTwice(Box<i32>),
-+        PanicOnDrop,
-+    }
-+
-+    impl Drop for Droppable {
-+        fn drop(&mut self) {
-+            match self {
-+                Droppable::DroppedTwice(_) => {
-+                    unsafe {
-+                        DROP_COUNTER += 1;
-+                    }
-+                    println!("Dropping!")
-+                }
-+                Droppable::PanicOnDrop => {
-+                    if !std::thread::panicking() {
-+                        panic!();
-+                    }
-+                }
-+            }
-+        }
-+    }
-+
-+    let _ = std::panic::catch_unwind(AssertUnwindSafe(|| {
-+        let v = vec![Droppable::DroppedTwice(Box::new(123)), Droppable::PanicOnDrop];
-+        let _ = v.into_iter().take(0).collect::<Vec<_>>();
-+    }));
-+
-+    assert_eq!(unsafe { DROP_COUNTER }, 1);
-+}
-+
- #[test]
- fn test_cow_from() {
-     let borrowed: &[_] = &["borrowed", "(slice)"];
--- 
-2.31.1
-
-
-From 8e2706343e1ce1c5a2d3a2ceaaaa010aaeb21d93 Mon Sep 17 00:00:00 2001
-From: The8472 <git@infinite-source.de>
-Date: Mon, 29 Mar 2021 04:22:48 +0200
-Subject: [PATCH 2/2] fix double-drop in in-place collect specialization
-
----
- library/alloc/src/vec/into_iter.rs          | 27 ++++++++++++++-------
- library/alloc/src/vec/source_iter_marker.rs |  4 +--
- 2 files changed, 20 insertions(+), 11 deletions(-)
-
-diff --git a/library/alloc/src/vec/into_iter.rs b/library/alloc/src/vec/into_iter.rs
-index f131d06bb18f..74adced53f6d 100644
---- a/library/alloc/src/vec/into_iter.rs
-+++ b/library/alloc/src/vec/into_iter.rs
-@@ -85,20 +85,29 @@ fn as_raw_mut_slice(&mut self) -> *mut [T] {
-         ptr::slice_from_raw_parts_mut(self.ptr as *mut T, self.len())
-     }
- 
--    pub(super) fn drop_remaining(&mut self) {
--        unsafe {
--            ptr::drop_in_place(self.as_mut_slice());
--        }
--        self.ptr = self.end;
--    }
-+    /// Drops remaining elements and relinquishes the backing allocation.
-+    ///
-+    /// This is roughly equivalent to the following, but more efficient
-+    ///
-+    /// ```
-+    /// # let mut into_iter = Vec::<u8>::with_capacity(10).into_iter();
-+    /// (&mut into_iter).for_each(core::mem::drop);
-+    /// unsafe { core::ptr::write(&mut into_iter, Vec::new().into_iter()); }
-+    /// ```
-+    pub(super) fn forget_allocation_drop_remaining(&mut self) {
-+        let remaining = self.as_raw_mut_slice();
- 
--    /// Relinquishes the backing allocation, equivalent to
--    /// `ptr::write(&mut self, Vec::new().into_iter())`
--    pub(super) fn forget_allocation(&mut self) {
-+        // overwrite the individual fields instead of creating a new
-+        // struct and then overwriting &mut self.
-+        // this creates less assembly
-         self.cap = 0;
-         self.buf = unsafe { NonNull::new_unchecked(RawVec::NEW.ptr()) };
-         self.ptr = self.buf.as_ptr();
-         self.end = self.buf.as_ptr();
-+
-+        unsafe {
-+            ptr::drop_in_place(remaining);
-+        }
-     }
- }
- 
-diff --git a/library/alloc/src/vec/source_iter_marker.rs b/library/alloc/src/vec/source_iter_marker.rs
-index 8c0e95559fa1..9301f7a5184e 100644
---- a/library/alloc/src/vec/source_iter_marker.rs
-+++ b/library/alloc/src/vec/source_iter_marker.rs
-@@ -78,9 +78,9 @@ impl<T, I> SpecFromIter<T, I> for Vec<T>
-         }
- 
-         // drop any remaining values at the tail of the source
--        src.drop_remaining();
-         // but prevent drop of the allocation itself once IntoIter goes out of scope
--        src.forget_allocation();
-+        // if the drop panics then we also leak any elements collected into dst_buf
-+        src.forget_allocation_drop_remaining();
- 
-         let vec = unsafe {
-             let len = dst.offset_from(dst_buf) as usize;
--- 
-2.31.1
-

diff --git a/dev-lang/rust/rust-1.52.1.ebuild b/dev-lang/rust/rust-1.52.1.ebuild
deleted file mode 100644
index f1b3385..0000000
--- a/dev-lang/rust/rust-1.52.1.ebuild
+++ /dev/null
@@ -1,677 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python3_{7..9} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="amd64 arm arm64 ppc64 ~riscv x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# 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 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:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 12 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-	wasm? ( sys-devel/lld )
-"
-
-# 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-3.13.4
-		dev-util/ninja
-	)
-	test? ( sys-devel/gdb )
-	verify-sig? ( app-crypt/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl: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}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.47.0-libressl.patch
-	"${FILESDIR}"/1.47.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.49.0-gentoo-musl-target-specs.patch
-	"${FILESDIR}"/1.51.0-slow-doc-install.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.5 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 15 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rls 512 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-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 && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-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 \
-			--without=rust-docs --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
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	cat <<- _EOF_ > "${S}"/config.toml
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		[build]
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = 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)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		[dist]
-		src-tarball = false
-		compression-formats = ["gz"]
-	_EOF_
-
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
-		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
-
-		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
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo "RUSTFLAGS=\"${RUSTFLAGS:-}\""
-	echo "RUSTFLAGS_BOOTSTRAP=\"${RUSTFLAGS_BOOTSTRAP:-}\""
-	echo "RUSTFLAGS_NOT_BOOTSTRAP=\"${RUSTFLAGS_NOT_BOOTSTRAP:-}\""
-	cat "${S}"/config.env || die
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-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() {
-	(
-	IFS=$'\n'
-	env $(cat "${S}"/config.env) DESTDIR="${D}" \
-		"${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-	)
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		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}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-		$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-		$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use 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
-}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2022-03-19 22:15 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2022-03-19 22:15 UTC (permalink / raw
  To: gentoo-commits

commit:     d705234ad47ca3eb8e6e06680d744359e2ddd5fe
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Thu Mar 17 00:00:34 2022 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Sat Mar 19 22:14:38 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=d705234a

dev-lang/rust: Bump for version 1.59.0

Signed-off-by: orbea <orbea <AT> riseup.net>
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 dev-lang/rust/Manifest                    |  34 ++
 dev-lang/rust/files/1.59.0-libressl.patch |  57 +++
 dev-lang/rust/rust-1.59.0.ebuild          | 706 ++++++++++++++++++++++++++++++
 3 files changed, 797 insertions(+)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index d82be72..3f42478 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -190,6 +190,38 @@ DIST rust-1.57.0-x86_64-unknown-linux-gnu.tar.xz 151033748 BLAKE2B 61ecece6a8aa3
 DIST rust-1.57.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B ea41b27fd25cc75efac73203688ee0882767fc76a2fe09b5e424c42467d3e332463c5560cc58f3b20f6e4b44289a25cfb0d36e38a7a9a7b3950ef875a59dc9ae SHA512 8b955bfce6c130e4b95054b98646f7f9b89e621256759ee1ff533df5f777312dd7adbb192ee0076c9b9baa6883a74a9def50ef598ba8c707762290d465c9a8b7
 DIST rust-1.57.0-x86_64-unknown-linux-musl.tar.xz 260333980 BLAKE2B 75342ae8637355e714d5217d78604cfa6a601d3f9bc0ed4667ff0ca57c6521567b19b9bdb10f79761e2e5fd21ca10e12f3fae0c65791118fdb0c35f8f88349f4 SHA512 204ed493528757b8e3e8df13d062c9ae74c75c3e3adc1a2efc0dfc33d2525629168a558dd32653f44a4365191bf203a4415a77152276288a8e122e6bd587394a
 DIST rust-1.57.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 506400c3ea70469cbda0e492e85d41b7f94fba790ec19d1c3491bf4a00d283f97c8fb37319ad6c4a43b22a2195c21d1b9e3c16a5b2a9a82833ff61ad49bdc793 SHA512 793369dc7a854c48a72d81446a0c8eb9d83a071af77758e0bcbb8e4d518fb87c5a23c085202b9b427a02bdd772ad9c82724b34295b851f26f384c3e801bf9a04
+DIST rust-1.58.1-aarch64-unknown-linux-gnu.tar.xz 229585460 BLAKE2B 301b201cb40249005a1a8adf34ffdb0bacd22e1d919a24dec9bb8331c2243de1b7cc312c91a87fc9e11091cd9ad517347ff09143000d9de051b3c9a6e0780f9d SHA512 04e2cf2116e16fa293c7f2d29816012520b41df44b54657e289e7affbb91af5a5001d140a49aab1286451b93e93b0171edea77f61f01085136d1be1a3baac4a2
+DIST rust-1.58.1-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6da55597fddd643350c73f28a15dcfa935529c0878a199819b9bad6f3ea2542f9021e24bc1a6c8724ff14d36007c00f8906dd1aeaff33b0a99ef6982e8f711b3 SHA512 57debe0afe52c3af3eb53e4efe70ba194ddad449d9952174f8a775531b83f8ab0d66462e7bdd06712547e8f675d330a151d20d183daefe1dda2f0e3805695714
+DIST rust-1.58.1-aarch64-unknown-linux-musl.tar.xz 226068748 BLAKE2B 7f9680b0ad3f9a8349f3032f63d23b6d96ab43245d3025d0e4307a29b4353fd2408e7de572a10a77b261634b8fd4e9e6054ba9955b2440b608fdad2c88c12bfa SHA512 6400221a8ae04aea91f9df0f8d82585bcd380f22e80fe813eaa1cadbf592c5207665ad008d938b399e34fc2cb0485b16f993f94d431c290a69a696a4faf89e05
+DIST rust-1.58.1-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B fd22d8a3157a11df45e166b8c961a435bedb079254c1d7f0a738adc1065169a03c897a32bf8781802ca48bcb983c761e6985e532c0d76e90c3684752d8cff9d1 SHA512 54fffa8120fc6b86c57faffdc7857adb89e5fd217b0e753e76e6fadc54aa086243cb7ba3c2c49ec4f44ea8538223312469908d24add2d28203f41c16e9224204
+DIST rust-1.58.1-arm-unknown-linux-gnueabi.tar.xz 206480968 BLAKE2B 32ab78a1567d31bb1b5ca36fcb14fd1b002675baab0f688f931cef6524ffcee4257e00fa25a848f73f25656ae0b58beb0e862f1a36d4d5fad016316af3d1ab2a SHA512 94e7cf238235e845761e53fb5802ef0ce3a02c4675001cf67d05bc565403ec1d54293557d73dce7396147381c331ebfb0313e473289c05b65541f836dd8b4e6b
+DIST rust-1.58.1-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B db3275db531d78d728b33678be3869738009b65985aa3ad4f38aaa853cc1b84a1d2a89f98e203f697c457425547b80ad5826e7c820d49c767b5cd1df2db93bdd SHA512 fcca26b6b0dd2e7529efc93d1c4fdfcdf55c85f40bc247b3af9741403a085bc6808cd304ba535786dd2debbf4952c9d9fab62eaa61f1d3d8e59ce78bda992eb0
+DIST rust-1.58.1-arm-unknown-linux-gnueabihf.tar.xz 206545444 BLAKE2B 203a562ac448e7efc4fd519d98937f2deeb70c931611a6f0efc87947f5c48cf0c0cb85358fb9ce1dce49bdcde015fd2d5fd5f3b149d7370c05649579522d228c SHA512 5c0404d878300c1a47597bdadff7fe93c3b0a115320dbf5299dfb4fd06ad322217f4b630429a9db3a5ef54c56706c1ebdf512fcd663f379f1c2df0cf3612459e
+DIST rust-1.58.1-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B bf26f6540d96d124bb503b6e38acd87dc16ad16c5214559edd26f4f4f94f1f06a7059a09a7ee504721130576d6ddc5c7b2550f7bc0edffcef37bae3c0abb618c SHA512 1fa1e533adb1e355411cfb706b7c47712454547966bdf07687d9b563cf5dba9b4419d646227719a9362eb923c597f8461c194e56efcbed699610faa209985df2
+DIST rust-1.58.1-armv7-unknown-linux-gnueabihf.tar.xz 212381428 BLAKE2B 0cbc4ace0b7693de1898f160d5e76c7ff993aa8e8135a094b23dff736326ff7616471068f02a064d2b88c816fbf6f943fdaf82629dcda0e0e07b6a4a3941fcef SHA512 c1dabf7281c754d3c89044b1277618b0e928efbecde47ed98133d3f8664722d5b3dfb5fbf485cfb4c98c53d3101b192070c5c41e4395cd8563b0e8415abdf2a1
+DIST rust-1.58.1-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 85f3892a41dd381250219cb0c0c8e70b3902e5356ad34066a6db319193dd580e609975e38356097b7ca0907d62d188459c5a72783c95e77f1d08a50ae8673458 SHA512 70a2269b8326ed8b5e53dbd6698237c4d843086a139c4f4ddd6e04625f0defbcaff46149981e5a1502d56da1393b01bc0c6f74fa8e6ff407f6eb45cc5638ed41
+DIST rust-1.58.1-i686-unknown-linux-gnu.tar.xz 224773372 BLAKE2B d90db8b20611f6430759399bbccd0359f2b64ba9b9aa50312ce51dd4a43728897ab5c31d3c6bbee892db8e6e500a19184eb325a312231458cf99bad7c6f04b58 SHA512 0cfccc77cf62002ad99751744ae5a910d48c142d596eb88e187fc061c4b3a8cc1d99634802bc06b0302c41bb3462a17453af1beab6ca694a1535a1b20e10fa47
+DIST rust-1.58.1-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 1fc809defcfeb240f756b3e7158d3e747b2e21ea81f3029618c58c4070070a2068603a4e93f7928a9ec3d120d7b2c7cd944d1ae03ebff1b9d5baea823dba54b7 SHA512 aba1f533227794755ca81c2bd8a3bd35fd9ad4affe5bd39430e0329310fe6c6f813fa7d95790958c61c6b22a4e4fea3488e406f05fa30c27eb6871f71e2e6e5d
+DIST rust-1.58.1-mips-unknown-linux-gnu.tar.xz 164572088 BLAKE2B 117dcc6483652c3f18436e185b44d605e64b9b31634484ead2d86c1caf6ec47a53eeded5dd766e2410ce59dfcd3f7e71ccf924afab0f34988e00e4c9324a5f13 SHA512 08df5ca03f786aae814b7a22a7d05e18107a1f185338880ea1b58df23d6b1d5c9f2359650ad38c30058a2d2d6f8ae32dffc3926ff47fd3342049c2251eb48463
+DIST rust-1.58.1-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 275a43c158a444c3ab27f1e45a9de294a059c21edf7280482303b83f6b0eb65d309021a82c49410b5b24828b88f65888529e95b01886ad20f2f4c187f595b788 SHA512 c70800d0629f92e4640a64a276575b5d6c1e92c2f1b6c7ca025c98a93a2665cbd7192d2fb697c421adc34fe397297c4cb78e21b38f27fa4261483cbf423f933d
+DIST rust-1.58.1-mips64-unknown-linux-gnuabi64.tar.xz 170025876 BLAKE2B 05cac890ccb9e37faeb3d995555b6f7f52281619101f033038ef056e7ee75b0c5eb2bd14357c1f8b0f5e96b9e2877514ee870bd75be1b28dce4906be95e6e3b9 SHA512 7d2fc1f0787f828fed72b1681f2668bce7cf25a87a01a818dfec18eda0fb63fb4a5e4aad8115e93dc4c8398641db4a476dfcaea07e6826fdcea727118c64e286
+DIST rust-1.58.1-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B fc25396963178a21a5b0a999e8dd3c9520b3056483ddde1f8a284747a078db0dfb0e808f2292704680e37c5cb2db990ad8311efdc0b32e2a65fd93d389c2a09c SHA512 32ab00c666c33ab53a975e9abffb7645d2101e8f508ea67d2e63b1ec01b4785e384bfe2966ca237b5494e34c2abd15e509835fa161709ddbe1c69845f26a6f43
+DIST rust-1.58.1-mipsel-unknown-linux-gnu.tar.xz 169136184 BLAKE2B ae698d08e2592b32b5a0927536e1c2a506c2782f9449fe20242d2ebbc5cbccb2d3a53874b973d88898157b233a88ed80987e2e83a316c05c0d478b1021c49c41 SHA512 ccb13dbb41c92956a437d0879fe9d3ad0a2aac88fa1b761e3b68a6536e389ed4997d1682730b2078fe01e68df0ef64bbe43dd2d64595dbb4ed388fe59e1d6dec
+DIST rust-1.58.1-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6b14cb176bb33207aed7a01de755390df0f71163940fa8121b51dccefb018cb4dd1cfe9efc359f6bb941104b8b08db0cb5a94c3af880058e59904884c5dff3e4 SHA512 1e30495303f9c6289223a2970d419a70885a866468717254b3efa5124e21cb06830692cfadca33ced94a383d1b9af43b70c08235e935ee491a1de50eafba96b1
+DIST rust-1.58.1-powerpc-unknown-linux-gnu.tar.xz 183853716 BLAKE2B a2b98d2c55b5bda8647301536bc8e95b72f98f41018f9b7574f85756d2cd2980fc3a3e995bdd0ed5226b7f18357c5aa3c2f8a05b1679d3dceeae6dfac7484f15 SHA512 5b9010bc3685889411fab6a06727a320123029c037a01cbd5b69f037a87ed595362b698264954b2d3dc2adbaf422fd54d7b56d81512b62147c1922aae77afa22
+DIST rust-1.58.1-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B c428bb51fdc740ea9499a1a853f4be93a53c23e59d5142d33bf103ac46e32716505eea3e45174ac3b88ffa12caa4dc010dc2d02093f397ce45b4af27f5c4191a SHA512 b3ac66cc88c75f77f7f9632c2104f45a6a730a83b75bd7b531dab833e8e5b512ef06bfea433111302f64321b688f0817b95c5eac9fddd8ff44bb49934a616eea
+DIST rust-1.58.1-powerpc64-unknown-linux-gnu.tar.xz 194177236 BLAKE2B bb0c23288014207123345deb06e40a45221d0149e8563c374810892b68cc2b5838b5c3f8c630522723daa633c5fbf72aed16e977313a6d1ce27697c22552681e SHA512 8a089c44d2f50d4677a6aa82e6308d47451ca588243e0df3fbbfd13768002f0caaabeca0d6a7f113b8f63477565296e5cb89f27760621a327cf9cb5b4999eeb5
+DIST rust-1.58.1-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b94fe36ab1896bfee3d7e7f2b17dad05d33c672407955fe45758d167bb1fb4df4d33040e6d18dfa966d33133e181ef9a0e7dd04784ed80e30b38175a901859e5 SHA512 6edd981ded134e0c2e6198014ff37868d7e71d0d2185284c28a35450ab226ffd460faeb29e8aea6d5e75a2fa94874e01c9987f1f1470efe061859d06f3d3e605
+DIST rust-1.58.1-powerpc64le-unknown-linux-gnu.tar.xz 203175404 BLAKE2B 53ebdad5859fa7a5e2cd79ea31595aef65a8cc54e11d887f04385500aeac6dd886273f7736271aeb71c70e0d512fd986f09b54ed1a9c744432688eb71c74edb0 SHA512 abaa2b749987b4a1dbc20cc3dfdccc694bce0d1e126d8e9c03dfdcaf85c5be2a2d28f9877ccdaec847c499d7044f955a70f454dafb24dc59ecb5854807eb2289
+DIST rust-1.58.1-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d5cdf7cfca4d881931a08bf67ca1c08fafda621746b01b8e12e41cd88f5ba8107c1bc86b70f84eed4e6137f6d92ae712740b57505705c7bfd3454d8ca1131eb7 SHA512 39a9649ac0645ea6df93cef59baa6d197b9cfdf88f0c1b3846e52369c8e3e293ecf9327cfa6b5457be65896380c13445ad05c3a0cc213da0ed9bba3c12ae9b8a
+DIST rust-1.58.1-riscv64gc-unknown-linux-gnu.tar.xz 196828436 BLAKE2B 9b38c585146f0832d9bc1bebbdab086f351bc88c27817e44ff251c1566b80ee5e573b59764a22802d246023ade332f861096f2e68504c7b64400754ed2676695 SHA512 d268e5a45542f7684d52b694baf5c9b504837fa43d2f5a298e3fb4e335bc6789cdb868651614fbcc1d55c13ded1b2134d57103f46b098d0a8d4a7fd58fb10b03
+DIST rust-1.58.1-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7b234a9fe76cf39177ebc6ad54799bce80fef97151c257b58ae08321c5fe427dd5b5a70627b5a4011e32560f63f6f7b6fddb42e58728004406aec6a9e7597eed SHA512 ee4a1c52cc623dd1858ce8d363f0aaccd58b8bed27a0838f399f1b5cc51f0c123d98056147a266f45724b6a25b09b11c7224c4bc01f208ff7d77e906c850aebf
+DIST rust-1.58.1-s390x-unknown-linux-gnu.tar.xz 198204996 BLAKE2B f6f325a10aa9c16510b77b7729410d08d09b83dadff3b8ef7e06642d8c6a50a153eb17cef338fe3e3b7efa3a48ae0e318414aea794f2f488d6f59852310bbbf0 SHA512 31ce8b53c50063c9409191beab28f67ab804549b5eb4d6bfaf42a3342ccb2f4dc039e3afffe22d87664917481e943018c0d1239e7dd0a62af34c44a975f69303
+DIST rust-1.58.1-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 995a6ce146b758bcad983fc8d7a8613b0da172c7e62a0b73d206cfd461e1046d024a8431ac287b5c267b215128542bf20d796b072ab1aed348787f50013a1118 SHA512 d7af25ef9bb92952949e7f91a13d5e910f32134b962e6432bd10ed885be451eb99c518213d9dd4c425c40ea43fa2722d6ea7c357ab0ec63b8ca4f7d020412979
+DIST rust-1.58.1-x86_64-unknown-linux-gnu.tar.xz 150229600 BLAKE2B 056e5a646d6758ac88e2b2b9309dbe0e9d23a285be31ba009eed936c82923ad9615874b8689ef926b14335d6c5255df41b5879794e6f0982b90553273487853d SHA512 7a61ecc8ff49769847ed4021c57279c16f261aa21469da426023fadab3820d0d962edc0fb04861ae23c8dcf821fc3ab99c2d469ba827dad30c1acc995732605c
+DIST rust-1.58.1-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b86d3d2cbf27594dfe55fe2ff52523a9dff08d08ddd30526172f9e07760c2f854698eb8153cb9894588d75759a3d0bb7887756d005a2c69aa9cfeec8e7dee678 SHA512 82dcb22efb94bb19f2338e9cb46e3f6da3d189fe6bff12bf1ec870197d395c2ad58bd15705aa7f3cde38e5ec0266e20eb2e45761e0f55b13261d3e6b14dce60f
+DIST rust-1.58.1-x86_64-unknown-linux-musl.tar.xz 262511608 BLAKE2B f2ca664fe1ab0614f13ce9d7764eed935b107b393830ad14b64d8b05e032feeec57dd04cdc963ad3eea2cb23558beeb1975722be93412d4ff8fd3a75d2bbb896 SHA512 d064464333a64f91b8a30f267ecfe2b4dc5be6d639bc9f064efa86a54478c8de7156166236b7ff8d96bf8fc8cbbeebf7ac17d8b5dabf24d72e189dbbd8ae0819
+DIST rust-1.58.1-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 9c58a08b4e5d609230b5aae52fe7eec2dd6a0cc0eb8c257068ac2585918aba6cbe3263a6480860d34a117d3e2ee835fc8d8b1702296369c3a4e0f660f46bd62e SHA512 6c294cbbbf22940e36278e92d5095dbfee0df741694188ef1e6df7740bbe770ffb5b2467bab12825045ebf7d6fb12eebb1ce7edbb32d0afcb114c57e814fe5d7
 DIST rustc-1.53.0-src.tar.xz 115686332 BLAKE2B fa068f89d42f927fdc79ee31aad1386eaf2aa596a060e059c5a1a73fe48c48d008fc952cd6c7912b743e41d77a94b205639eed0f728b2539b62f18a772cabfe3 SHA512 70485cf7a0f7fc36ee31644e546374079dc387a85b44e5e793707fd0a4d7ca05d311291e78b86db955485d8f21c47ff9e1908acc4da68ba04929287213a40c24
 DIST rustc-1.53.0-src.tar.xz.asc 801 BLAKE2B 75d3aa4122968f10a119f7a04df897f496588c7a1a2ddf1ea2222099c9efb0e320f5677a26c3271f86e7f500120664485f54c6025ae3c6df30d2b0fe758f5826 SHA512 e337579b9ab4febca4594c2c5d42c279b51cfc745c383be9a430204188311a25319c04c73fde34fdb2bb98a88bfd8daaddc67765834330e6c279a6e5a5648247
 DIST rustc-1.54.0-src.tar.xz 116286856 BLAKE2B 5ac47822646a0b6205f09282168b4d4ddcace9f6bc8f242c890327ca4074626f129514f8bcae5c5556015745f718990cce490658076f5cd3526623439540416b SHA512 5162f85b43ca2c5af93fdbfb2597d75df8a838f7fcc025a5298499ce1043db50f1ea2fbba753e47ce5daad3d80d4b612acf6527ef902c34117763e687fdbbcfa
@@ -204,3 +236,5 @@ DIST rustc-1.58.0-src.tar.xz 124348768 BLAKE2B e5a0d919a1ca1202e218cec3da93fc69c
 DIST rustc-1.58.0-src.tar.xz.asc 801 BLAKE2B d8b3ae366d20e0a27b53973e0d215c0fd5f596116ede15ac0e729db4a92fff6c602fc3893674863040a97abaaab36b351413e87a2c6d77f823fcda5805d23daa SHA512 e4bffe84637b2708d00fae091e3eb868063a8f65da918a847ef7db3f1edd35f96068489cae77238decfc134f4456cf6e3122f993e61f1e4986d3ec7f029d7125
 DIST rustc-1.58.1-src.tar.xz 124353160 BLAKE2B 686c7272db544ad46f7fb01b4e05f24f4e08ff959a000cadfaef5d8fc413b93f5ed839077bc9715defc7a0a179af091f65c7a5d7104b0b3153f0654c237c094b SHA512 eff3279d2e519343cea542a9ae2daab592e44f35af344e33ff43ed55fc7c824511790d1991dd36a603d12465de8c3688e7194c2b9557f288c587ffa04738c2ce
 DIST rustc-1.58.1-src.tar.xz.asc 801 BLAKE2B f0b600a503b0ca777dd5d690dca7252ecc6d7d49ca4a9cc8edc0647038f727e9052a861f9868292f837d78d6b02efe9ed5efa85843262c44cf6f73254cc7c9b0 SHA512 983c1ffdc4febf8bce6efc123c76b13f233772bc0a152ffaeb7ebf8f1f7b82a6b5d653407a4d293953d6fbf62c0df4ff4d398a1133061b53ae0f85317a14380b
+DIST rustc-1.59.0-src.tar.xz 128942756 BLAKE2B b28114f14c9a0fec7db56fde79a985360fd8438c3b14eede49ed12e540c2636be960d0fd800c569af193886ac76fe8bf604d5dae59214ae08cb0cc6cc0ca404e SHA512 acace866871d13a55d365f65d7e15c192c3cd33096862571df6317e066b7474d668b95ae281e0244967778c05f1e33966c3c55616218bd25d3770a2b2d4f0365
+DIST rustc-1.59.0-src.tar.xz.asc 801 BLAKE2B 061701c4fdbde930798f9f938ca3642204ae4a2ad9396937ca7d604268813d6d68f4979f20d35abdbbfeec0bb389acd86c9d3d84256db85861f6b11e3dbef80e SHA512 1b90bc01f9d68ba1f70591c4ae707295d7727b790d170a0b757d654684e59d3c26c45b66a21f9ac762debb6867494660c73daaf10be9bd567a38be44c0009f72

diff --git a/dev-lang/rust/files/1.59.0-libressl.patch b/dev-lang/rust/files/1.59.0-libressl.patch
new file mode 100644
index 0000000..e81457f
--- /dev/null
+++ b/dev-lang/rust/files/1.59.0-libressl.patch
@@ -0,0 +1,57 @@
+From 264834b5f033572c979d9109b4b76aa0a2ae2946 Mon Sep 17 00:00:00 2001
+From: orbea <orbea@riseup.net>
+Date: Wed, 16 Mar 2022 14:02:41 -0700
+Subject: [PATCH] Support LibreSSL 3.4.x and 3.5.x
+
+---
+ vendor/libssh2-sys/.cargo-checksum.json | 2 +-
+ vendor/libssh2-sys/build.rs             | 1 +
+ vendor/openssl-sys/.cargo-checksum.json | 2 +-
+ vendor/openssl-sys/build/main.rs        | 3 ++-
+ 4 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/vendor/libssh2-sys/.cargo-checksum.json b/vendor/libssh2-sys/.cargo-checksum.json
+index 8ca0bd076..4fd273b88 100644
+--- a/vendor/libssh2-sys/.cargo-checksum.json
++++ b/vendor/libssh2-sys/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"Cargo.toml":"8981208d3829e782a076099f6d686d1eb3714102e0af7de70822f972ee9f0eda","build.rs":"7d5ca02f34cffe51db3568c500c9a8a70cef879871a0f466e3344142644acf12","lib.rs":"3f59dd52a499c4d707114626a44123f3c969c999599ea527dc04d221cfbf460d","libssh2/CMakeLists.txt":"8530be1d6db3715344fae1900fe73d8e2294930bef33019657064dfc6094cd0f","libssh2/COPYING":"859e60d760a3446ecaf777339f1eef98c527aea40714384d24b882a83ffdd23a","libssh2/Makefile.OpenSSL.inc":"8e82af68b172ddccf94c65c1b4e38b69b3b7f027cc14a54b6d660c5f2bcd4de9","libssh2/Makefile.WinCNG.inc":"79243be1029a0df52a5e79b3dceb80ac462f2e735e25445e38852610bee62f34","libssh2/Makefile.am":"955114c8c455346542067604795f344a693afa544c7efa813abb3b1dbccc59ea","libssh2/Makefile.inc":"3ba04a6366787cd65119ca3a4720ad31267e32d94b49763e123d85bbbc303ce1","libssh2/Makefile.libgcrypt.inc":"3d71dbe94c906d07c70eb8c7eae80fe5ae014565d7a9446bd39b659e91b73b71","libssh2/Makefile.mbedTLS.inc":"18bf8364aaef158a27b65be88ac1fd74af0cbd336930b6ce611b62dab77feebc","li
 bssh2/Makefile.os400qc3.inc":"ac9b0e1731f7dfa20e3987e108a4c5896e6095638ec545c8f2ac64c35b63a455","libssh2/NEWS":"9418b9c8dcafc633c2c16372b2b21ceb70a06243756af21eff173a4b379101d1","libssh2/NMakefile":"2d1cbda9bccd886de3c99dae77f09ac75a7f09f1834272b4a9154d2a0ae9a81a","libssh2/README":"428a810c75712693e66d2104ab64b976992a2670109959a8f771a609022ed25e","libssh2/README.md":"74b0076905edb7acfe526b1ea367aa567ced0599d5a3be8e8aa22c1ca847e269","libssh2/RELEASE-NOTES":"9a88e3e26281797ee09f09cd04e4bd753837b02366dcaf34885b800742bc862f","libssh2/acinclude.m4":"38b4ba61f1ccd764daa1c249fff189e4a897f71e19ead71690f5bcbe25d9d541","libssh2/appveyor.yml":"499cdf346619e52967be12e833561fe2b9eec7a50214b25b8195d67b21eb7262","libssh2/buildconf":"c2102a17b8f50f0d56d20639c05c70347a4e6ac5dcec351c6f851371e2a68a71","libssh2/ci/appveyor/docker-bridge.bat":"24121ac7d7c852358b4d6a7f319e1b593d294a97c027175f8085c741d7792887","libssh2/ci/appveyor/docker-bridge.ps1":"c96ed6844515850165b15790791f80a666f606a1931243fec3eb3a0
 7f7531ead","libssh2/ci/checksrc.pl":"879e805b57e2e86f6894a6a4e395daf1c1c048ee5984e109be74afc750782567","libssh2/ci/checksrc.sh":"a435be07f99eaac5b59f9cf68d88e3541c9fbed09177d0874078c22547edd5e9","libssh2/ci/ossfuzz.sh":"34e596139edfe9aa0a52b73ac1ef860a69968f88b1ed6f0dbdfff3832d08a7d6","libssh2/cmake/CheckFunctionExistsMayNeedLibrary.cmake":"60a8d1afe9a3b71cedb782ac6187a9a041d2792006a7eb3379bc42a9fcb95a4d","libssh2/cmake/CheckNonblockingSocketSupport.cmake":"443b9824a1d7f7cc0a9c1b740ca9824f82f73ac7f0294aa2c1e3192aa3cb5e0d","libssh2/cmake/CopyRuntimeDependencies.cmake":"5a146613512f467192e7917561b305e31d52a85b3f216d5e3c6ca6d2261e9b03","libssh2/cmake/FindLibgcrypt.cmake":"af65a3a8ea63eb935b1602b2b75c7c993558f9118e8c12cf9f2d4614977d8c53","libssh2/cmake/FindmbedTLS.cmake":"db4ad3046a838c325ff39f3f083a2de39c3bcde4c69670610ce27b23c758c50d","libssh2/cmake/SocketLibraries.cmake":"857615772ee6a1b79826eb18889def1a626296262db78def698286930e3c6cbf","libssh2/cmake/Toolchain-Linux-32.cmake":"fc7c2
 718c2e628fe28db38406fb57e9380d202dce8b4d615ef8b818984c37a32","libssh2/cmake/max_warnings.cmake":"1a14b62c40d327d69ad1531e3372523310e642779da33c3865e6fc67df46835b","libssh2/config.rpath":"aa48652ef1709d015f0e627eb5d18d1c198d81c29d5f89a81362512fcba72b01","libssh2/configure.ac":"1a24a7b81c127f3cfe154ede0aad567341c0743178d3f3b41ad59f3fa24c7269","libssh2/docs/AUTHORS":"12228e95c6b41c76d00b6ca8f2bf7bfb3372f3f32b6c62f34882530b9406f26d","libssh2/docs/BINDINGS":"c711b535a9462815d564995eb84b997261fb9a2db4ef82a8c9b3f926dd7498b2","libssh2/docs/CMakeLists.txt":"0cd132f7148c6807399141a611723f6083499751d8a3e326f06879e57bf2c369","libssh2/docs/HACKING":"5d2563866dc4fcc8a4ab352676e3d64b918b75e0a73ce7776b9eef7e8949d3b0","libssh2/docs/HACKING-CRYPTO":"88452e1dab1160dbd7d800c5d1c3b6651bca884b18aea476c6ad0b1fd387edba","libssh2/docs/INSTALL_AUTOTOOLS":"6ca4765ca5ca117514e41067ce05cc24504aa29eab9a76bb9cc1ecc87c3280b1","libssh2/docs/INSTALL_CMAKE.md":"266b25dbe613f02e4662467c23ad80bb42a35ef9d579933ddb2d7b1d
 038089d0","libssh2/docs/Makefile.am":"16050bb16175b6c34dd246fb10628975dc7563412b926a10818e3f85efb6e7ca","libssh2/docs/SECURITY.md":"4314c11322a9970bed60130a2e11a0eb79c9de719a7c7c2cb227356d9771ba2f","libssh2/docs/TODO":"e3a304f76129bdb90371439567dffe2a8841e3a5c326f71000490a11241bc9b0","libssh2/docs/libssh2_agent_connect.3":"5fe15d3e781382a8e935048dd266a89e9c3b63800d4714ceec6c78c512e49f20","libssh2/docs/libssh2_agent_disconnect.3":"e2d1a3af99d888e310c6e22227e11b0a42f1d265451a9e13ac787fe0b8075426","libssh2/docs/libssh2_agent_free.3":"332b5fb986c013ba363bd18d5e39c01a047d79fb22acf673291f1e19b4d8292a","libssh2/docs/libssh2_agent_get_identity.3":"acdccde633dda1740ba043fb3f2b3aed884923c74ff3e2ad2f01d5a6b87955f1","libssh2/docs/libssh2_agent_get_identity_path.3":"148b43bc669d3300b3fbf09ae57050a15ce074c8730ecef78e97ee9309ea179f","libssh2/docs/libssh2_agent_init.3":"09029ddc71d63085dd6ccf92062ce6e31f0d54a1eb40d06587713814ddb4ee5d","libssh2/docs/libssh2_agent_list_identities.3":"a498d332ea55486e
 b1c234468a8cf3c1886eb6b98bdd527a1b44fd06683e7ea2","libssh2/docs/libssh2_agent_set_identity_path.3":"b60fb7e972fc2b420ff0a7452ddbf12597dbc9cb075920da16ee9c0eef7f8425","libssh2/docs/libssh2_agent_userauth.3":"d2119c63fa5bd1a05385bd176a1c8d2ee0139aebec92addd1601edc948f17855","libssh2/docs/libssh2_banner_set.3":"1bd7a8bd59cb74d90cfed26c41701788afe7c0a667f686c5154cd0615d586422","libssh2/docs/libssh2_base64_decode.3":"c48f88f5a6405738bc146161bf442e02c02073e0b9957f5d4bc3bd425bee82e1","libssh2/docs/libssh2_channel_close.3":"e348d7548693066f863dde9a6c7dd21bf394aca51c1cae1c4999309eedfb4451","libssh2/docs/libssh2_channel_direct_tcpip.3":"3a67560c5846880066344d5581840a26a8509854fcf20fda79f9b2156e58757d","libssh2/docs/libssh2_channel_direct_tcpip_ex.3":"5a7665c77afd8aa509c03d5059ece42adb912979e0fab608034e4554e3106439","libssh2/docs/libssh2_channel_eof.3":"7ad4590d1dfccf35bd2f7393e0d14b4247c3108ee2f48685b505c0dd9516e011","libssh2/docs/libssh2_channel_exec.3":"e7f79363e4fa61ce0c00f59e4e97cbc3101f5
 5e2025b1156551aaf50c8522b87","libssh2/docs/libssh2_channel_flush.3":"fcaf2b8577ae6b8196313977d0686175a807fcccd3f3fce433028384da0f7bdd","libssh2/docs/libssh2_channel_flush_ex.3":"a0a60e2c15e2fd19e8399ce45736470782090455856b6a97cab7b9e8cb56b160","libssh2/docs/libssh2_channel_flush_stderr.3":"4f590d465d647b416c583c2b16693a3364e84da2400dfe7f9ffe1928577ca3ae","libssh2/docs/libssh2_channel_forward_accept.3":"4f0621fe2a6aef5fefd50197974beb6e6c89dc41841b1d6052f885a773557ed8","libssh2/docs/libssh2_channel_forward_cancel.3":"230ff1688acf2f4a7ac5d687ca46bd39458192a0662b3b8fa6edd8217c25117f","libssh2/docs/libssh2_channel_forward_listen.3":"fac440afa8233b6d3982b349d56c177ba9fec09464f1c5a5bf40ce32d600197d","libssh2/docs/libssh2_channel_forward_listen_ex.3":"49c5374f3b5c56213fe9a43ef4592cd51097cd1c9017fcb3be97c94847e8efcf","libssh2/docs/libssh2_channel_free.3":"a7e649756ff4a20b0f5bb6bc9f4647ecaff885c8745e9c304cc697c2c677196b","libssh2/docs/libssh2_channel_get_exit_signal.3":"89557c3203331e1d21773b
 557659a0f21e1ecbcee90c372de3b6e159c7b78a7d","libssh2/docs/libssh2_channel_get_exit_status.3":"d374651f3f72f3f179c37b4a44b815a1bdd998f803a121fc8bc5544c397224c8","libssh2/docs/libssh2_channel_handle_extended_data.3":"c8ba2c032cd2cd8fc5877845df624712457dcf1c092975f3c713fe75794fd42b","libssh2/docs/libssh2_channel_handle_extended_data2.3":"17269accf920a28af6bd14770f94067083e2dfa56df4e08663844d0cebb78052","libssh2/docs/libssh2_channel_ignore_extended_data.3":"c00c30e1aa01c699c92c30c98e9ab8e543cb2fb23376b650627c56ecc3a1f275","libssh2/docs/libssh2_channel_open_ex.3":"a4153c3de3d2cb9a2faaa39eeb9b638c829db2cf4aa4a0e0a2cbd51098626e79","libssh2/docs/libssh2_channel_open_session.3":"63ee8e3220149933ebf5219335cf5b9fb107e23808137f782e8846b191ecf629","libssh2/docs/libssh2_channel_process_startup.3":"1023352b8152e5a1a2ccf2bc899e9539fbecaa2dff69ebb68ada088da38fc6b9","libssh2/docs/libssh2_channel_read.3":"1ddb492b078cab328e718563f2fc5dc3fd737078ba272d078f94e554e2938080","libssh2/docs/libssh2_channel_r
 ead_ex.3":"931e1fad6ff1d629ed2b523c75e645a16344be8afebc0e2f50144ac8394146e2","libssh2/docs/libssh2_channel_read_stderr.3":"6b3a6db85f2fdb26a07b95d6046127f3d5c709e6ee4bd72d66b9109e10ca8e1b","libssh2/docs/libssh2_channel_receive_window_adjust.3":"01a3e1d79fce062cba8fefee6b8fe7ca81a1ad7a3c8cccf12801d7f80fd6265a","libssh2/docs/libssh2_channel_receive_window_adjust2.3":"451f2632b8c786a16e87940f2fcb978e9d88fee27cb997c192c9e671b72b27eb","libssh2/docs/libssh2_channel_request_auth_agent.3":"9217dcc14a2c6bee93f5754b2fed7827b3dbb8efc335d7fbf4908e8a531570b4","libssh2/docs/libssh2_channel_request_pty.3":"f7b4d6780a1b6ed5518e425751f55d9930a5bfa8e92dc0458ccdb06d7786ecbe","libssh2/docs/libssh2_channel_request_pty_ex.3":"ab2af9c02a3d127ba99cf27f0496643eb30810edb38a94f7df488f41041ec105","libssh2/docs/libssh2_channel_request_pty_size.3":"5ae6ade5d71da8ce3a31fd804c32600f54a3385b07cb8ed6ac90157a9a1ada26","libssh2/docs/libssh2_channel_request_pty_size_ex.3":"4b296b3a64b71c1842c0f12c70fe866734bc18f51e3907
 acfa3f04c4a997bda3","libssh2/docs/libssh2_channel_send_eof.3":"a83be7ac2b428f6d41df423e38c52d01f86b9fcafde2010336c7a57323808b6c","libssh2/docs/libssh2_channel_set_blocking.3":"767637f9629f9b7bbbe24c3f3e13be0a83174f1542a63fe7daba350beb369447","libssh2/docs/libssh2_channel_setenv.3":"fc8773714c44358cf215d80dfdfeea082cc84ae0f33575d17a7825ffb785b02d","libssh2/docs/libssh2_channel_setenv_ex.3":"d4641d1a3054af1fb1aa4819de5ce002b434e56745118d843adc70d902505447","libssh2/docs/libssh2_channel_shell.3":"e2986078e39068dd61d6d3df0d9e54adb0a489e55ba8051ae6ce3ad5f3c2c191","libssh2/docs/libssh2_channel_subsystem.3":"16e48c8ad515baef23e1ea94895cf0d2c6d397c133adcbbd20300304b64cab4a","libssh2/docs/libssh2_channel_wait_closed.3":"8f7ad8093832b4b343b04eefe492e94a18be6f496e2074037f93b99683296663","libssh2/docs/libssh2_channel_wait_eof.3":"a96b063c1d90129420db176063ea4cb66f1b913a2d2b5ada2f3364eeda2d6543","libssh2/docs/libssh2_channel_window_read.3":"085331a4fb18dd396b016629ad241a7bf03afe78b0a09fec701aa8b
 e526fab2b","libssh2/docs/libssh2_channel_window_read_ex.3":"9faf5e32cc4e1fe69fa2e57dc31cbdf3f0e7bfcea339f3b7196f535bbe6be2e2","libssh2/docs/libssh2_channel_window_write.3":"6daa6fd8d4f74957c709695bd74a741e7808e057cda1a0954e76f92f793d61c4","libssh2/docs/libssh2_channel_window_write_ex.3":"052d12745f7a8a634ba0b3b36cf0a592c2425caf0679aaaca4776b664bd2d5c0","libssh2/docs/libssh2_channel_write.3":"30bfc0efb86bf513f721200a89c9139687d58483826924b9b401797de74b6387","libssh2/docs/libssh2_channel_write_ex.3":"5ee6d5afe244e2839353ed8d7d6688bfde3f090bf951afec404bf486d6f78aac","libssh2/docs/libssh2_channel_write_stderr.3":"e15a48affe5a5044a2b70bf6fc1e3c6a1dc61c10c4440db4828080fe55e5a0f2","libssh2/docs/libssh2_channel_x11_req.3":"e10544721e6dae96d4542abe07b43767ae6fff49a5bc87381aaf72be7d45f51c","libssh2/docs/libssh2_channel_x11_req_ex.3":"ece17b293092b2319ea237a2855a4b9b7c89c6954ecfedbd837d3d02ce4d7a13","libssh2/docs/libssh2_exit.3":"104af206d55e98ffa72ae0c5a505523220c8d6e1de27a37a5139093476d5ede5
 ","libssh2/docs/libssh2_free.3":"8abbc67b852f9fabe09eb84540b610304d896721a04a4bee1e9d0e8f8f08c999","libssh2/docs/libssh2_hostkey_hash.3":"82070c7634690b4bddc49f3c83b343c6f792c902e0e48247d055eaf3284f80e6","libssh2/docs/libssh2_init.3":"926b4044a52cf71dac8ac23cdf51d6e76bc92f5a3a72c65371549e18826c1cc7","libssh2/docs/libssh2_keepalive_config.3":"7ebbb7cdc900d6d6188afc537c05c60a115030609d96571ac447ac396991adc0","libssh2/docs/libssh2_keepalive_send.3":"86ac214dd4c086239d59ac6582926f72544c788ad2fbf3ccc4e678b4109d32a4","libssh2/docs/libssh2_knownhost_add.3":"29a052f853cd3f19efc12612d4e3224271bdc91b10cf6b73e866d7018d25f07b","libssh2/docs/libssh2_knownhost_addc.3":"c5a2b8510dc1df43311f17073e7e720232f7a7e25d9ba7ae80efe2f26a133297","libssh2/docs/libssh2_knownhost_check.3":"2059d72130dc5b99c6faa8b399166a8495cf02b71313d6648778b11b0adab631","libssh2/docs/libssh2_knownhost_checkp.3":"88cac561cc381008f64d4c879bbe626afd669090648441c134cae83a5ea082a9","libssh2/docs/libssh2_knownhost_del.3":"34fbfa2954
 6d2bf0edc380270937658f818d2600e4bdc658d5ce28c7d255e1ef","libssh2/docs/libssh2_knownhost_free.3":"3e319da43cb185d73dc215a75351f330de2194608a1b12b8e0b623c900d4d96e","libssh2/docs/libssh2_knownhost_get.3":"fc04784b136786dafb210e018e758d5272c8d9d531c4fc5baac9f7b90f65bfd2","libssh2/docs/libssh2_knownhost_init.3":"509721c49287e0232b3cfeb41a8d4b44a45a195222a5694baf9d728c77225abc","libssh2/docs/libssh2_knownhost_readfile.3":"6d72d5be2d5dd56b125c1107632c58d5e8a692871182f3f883f5662f39d7dfff","libssh2/docs/libssh2_knownhost_readline.3":"e259eaedbe587c06a74ada7c1cf5bf28a168edfff2a60919985aa6c7a15e56f1","libssh2/docs/libssh2_knownhost_writefile.3":"5ef6daaf96128c0b756c9faf38b5fd60697fa93504a5cb9ce7139a3dc14f7254","libssh2/docs/libssh2_knownhost_writeline.3":"32c23d5b4393297935c3fa6e03d57a3bc1d904e5e469cf775bb0516f9f885147","libssh2/docs/libssh2_poll.3":"c4a377bc2be1c2789de7a57fa42baa51cfbb0bf4121153ee9cd5201507a8c2b0","libssh2/docs/libssh2_poll_channel_read.3":"5b3df35e57c3252fc63e819c69cc6405bd
 fd14c546b5cfc2a521563bcc9cb420","libssh2/docs/libssh2_publickey_add.3":"2e7c2772fb78b750b5aa94c7bd38c100e52493f6fb050762af924e26ab2605dd","libssh2/docs/libssh2_publickey_add_ex.3":"76e23274e8b4756b03359b0fb5bcd05becba4cca1212ae2c164a32c2f10ee50f","libssh2/docs/libssh2_publickey_init.3":"5643aa57554f8daacbbff9e539c68cd1093172bd86d859109e6446ccc91a85d4","libssh2/docs/libssh2_publickey_list_fetch.3":"975705aa9fc187961fbab91751a5f41412a30d73d65bfe54862285061afc6c29","libssh2/docs/libssh2_publickey_list_free.3":"5eba2104f91fb101014441df437c695b9b0b1e106b6268d623f886de6c237503","libssh2/docs/libssh2_publickey_remove.3":"69423e4d9d6b76388f6160eb473e82449700569d449911163609c8b1c629ed43","libssh2/docs/libssh2_publickey_remove_ex.3":"5c1632ac1685361577a4ddfd1f6257ecfc012225e1e8c2b126f93add0b5b6190","libssh2/docs/libssh2_publickey_shutdown.3":"b152e6c493896da374b7b93468b23d7012e6232db06c331c158f9057b8053994","libssh2/docs/libssh2_scp_recv.3":"e3af95d4147fb29a893ee80c8af430b7df1d77048d814c50052
 43c02fe221e18","libssh2/docs/libssh2_scp_recv2.3":"9fc689585ec209d13e5a7c5db6750e07b171103bd29d3522424f6d812473b95e","libssh2/docs/libssh2_scp_send.3":"0b72a5932217f8e561840de2ce3e5077bb40e7631b1dfb6f439d4a2413f83cfd","libssh2/docs/libssh2_scp_send64.3":"3225083c74987af71d4a2947a7852ac810fd87ab12532492f286d7e7d7547456","libssh2/docs/libssh2_scp_send_ex.3":"07818e45119b15208123655f945e1927c0971d21ae6d410fd26944b86cd41745","libssh2/docs/libssh2_session_abstract.3":"56b29e317d2676d842f3854d8ffd89723a40992897b962d9ae07b56b2373a727","libssh2/docs/libssh2_session_banner_get.3":"78804fe78c70c1fcc408a493564c989f3d3da36bf56d14344df150bfc65570c5","libssh2/docs/libssh2_session_banner_set.3":"c058557ca5d9633b560e05492212b52ee3f6477dae79f75c8ab4996828d88f09","libssh2/docs/libssh2_session_block_directions.3":"0006e5c9788d8b2c3976274b715ab712fedb6ee4d3caa09071b62b846b7d44ed","libssh2/docs/libssh2_session_callback_set.3":"6c33ad4047e740e5d020ba14cc5ce06beb0bf02b4b2f88c1ab7fd79e6e5f1b8b","libssh2/do
 cs/libssh2_session_disconnect.3":"382845fee521c18828a9611c286919218fe51a4a3185f37f5c6e8a10a081db66","libssh2/docs/libssh2_session_disconnect_ex.3":"5ed79115477f25aa8cf5998bf46eadc2383fd6e4eacee32622d961d4080ffa11","libssh2/docs/libssh2_session_flag.3":"18317502888f1b7da8ef132500e009c8eed72cec5ddffbeda575a4c5093d8b74","libssh2/docs/libssh2_session_free.3":"7fd404b4fb4c5e955cb2b8fee9b72a89864351e63c553e56a80dfc2af8bf200b","libssh2/docs/libssh2_session_get_blocking.3":"947a5fe43a518c13ba5049d820084ec6eede2bc3687923e67b28a75297431378","libssh2/docs/libssh2_session_get_timeout.3":"4e808b2407358466171f2546c5220def1db4460a16d1f24c60a4a5186d6c0606","libssh2/docs/libssh2_session_handshake.3":"fcb9fc145dc6f3b29871dcbe9c3d27529790e1cd3e20643c8aacb3d3d628fb5b","libssh2/docs/libssh2_session_hostkey.3":"0df40e6f599dacefcebf30b19331e4ce0abfad5bce75f5cffc8f4b7947bca5c6","libssh2/docs/libssh2_session_init.3":"ce1a0e9ecc5a17d607437b01f4ee94d5a0d8c5dbc8a04f1e26d3b74daedae57a","libssh2/docs/libssh2_ses
 sion_init_ex.3":"2c169699aedd0f9ca16fb71a90618738dcdfa5b2b70d857a39c60896ba62b86b","libssh2/docs/libssh2_session_last_errno.3":"fe92e9c94ecb5fa33bbf51f866bb62bc4a1e5c3ea153dbaf34aa6553cd477ebf","libssh2/docs/libssh2_session_last_error.3":"b14e30dc25d7daaf46ef119176af947efabfad29eff7f726635f2adb6260e97a","libssh2/docs/libssh2_session_method_pref.3":"6946c31e6d51b612852bed10d4ea869093a048f6d41131addbcb9c4dbbd767e5","libssh2/docs/libssh2_session_methods.3":"d1aaa1586bf15dad4e9f92828592b80d604280b30a3d0e21a71f5124fd1eb560","libssh2/docs/libssh2_session_set_blocking.3":"33c01981b30ead73c614fcb6f7f224a39d6e849e6a9bccc9b8dd463719e1a39d","libssh2/docs/libssh2_session_set_last_error.3":"147c7ad527163e73f3fe285d16c980de60bba09813535a7623a1e0a037cfd1cd","libssh2/docs/libssh2_session_set_timeout.3":"eae71fab2f62942d4e5b66d93a7f49347a08ad1afdfc9a81ce8fcc0d0a9b0068","libssh2/docs/libssh2_session_startup.3":"425118593ad0eaf0688c686d9b75f12b7cdb23d330445077907c6e2023cfef77","libssh2/docs/libssh2_se
 ssion_supported_algs.3":"a2fe37982e0f274bcaeea77ad33ca8fa06ea9377aa4e8196c3a8a827e2906b74","libssh2/docs/libssh2_sftp_close.3":"95f03395996cb7b2652cab241a7d91d0c57bec6d4d8f8097b2932acb56eb7bff","libssh2/docs/libssh2_sftp_close_handle.3":"c813fa985be5105cc3cacaf23dc01f0442628c005e629115992a280597301368","libssh2/docs/libssh2_sftp_closedir.3":"1230d8cc661c016991f32b757b11ee6ddd1ac551e5522c5e009f21ef624dfdc4","libssh2/docs/libssh2_sftp_fsetstat.3":"a7ab72ebfca8d295a2b48f2c14d831568042ef6a0528e590faa99f5e2dd00675","libssh2/docs/libssh2_sftp_fstat.3":"e354ea4b96d512a34db42be2eaaa2c7fb0bfed554e726aa79db7f45ade1f9dd1","libssh2/docs/libssh2_sftp_fstat_ex.3":"2446ac64b425dbaf115b37d29107b66fc0291c2ebd17898669c406a4fd57b78b","libssh2/docs/libssh2_sftp_fstatvfs.3":"a10a9bf1dda75b0e97966ed003d183728a8ded895eece58e458980bc742f7a39","libssh2/docs/libssh2_sftp_fsync.3":"bee468765b5d4a09a3b473eba0cf436328f29806953bc1f998d8bc97d2a3049f","libssh2/docs/libssh2_sftp_get_channel.3":"90e527f9eb6b0d177603
 28f6e3842f74d1d173fe88a7c9ec2357ca471e9c0f41","libssh2/docs/libssh2_sftp_init.3":"585d782936f71157d141474c94c897d7ea292580445550c25c8fd44f5e03052f","libssh2/docs/libssh2_sftp_last_error.3":"8e7b2fa2c5fe4792a39a5c1c24baf041c970e3021511b36e59979ed64a18b4c7","libssh2/docs/libssh2_sftp_lstat.3":"a01353b26374401029f5094a24beca08988ea201ca2197fef2b14f30bb2658e5","libssh2/docs/libssh2_sftp_mkdir.3":"14e04b070a6c351e2af6bd68f73a408e2982e9a358d5d2af5a46d8b422d27ce3","libssh2/docs/libssh2_sftp_mkdir_ex.3":"44c17758d2b0336f94c4004bdd2debf9e1632ba12c6db6df495c09a71a58e59f","libssh2/docs/libssh2_sftp_open.3":"af9a8c90999412d3371218f59859ff91c6a83eabee75f1712adf94c5bceaf1d6","libssh2/docs/libssh2_sftp_open_ex.3":"11661fbcec142d9afee722f5ce779bd32f6e0a2b2dc45558c3bd47292105231d","libssh2/docs/libssh2_sftp_opendir.3":"62639f60918835e08f3c00d708cb32af319b9a56d3c2cb33ad409b60b347b31d","libssh2/docs/libssh2_sftp_read.3":"1d0435c740470b8a6a427da4331b576833eead72f9d976001d8a1f55fcf24815","libssh2/docs/l
 ibssh2_sftp_readdir.3":"0e98293f67ae019adf8c5e17fa9f31f3e34b082c55ccd2119ee424f30c337fc7","libssh2/docs/libssh2_sftp_readdir_ex.3":"7f9a2bda1d49d12040796015a842b592decfb076230ee9c8260c31e7b12dd2cc","libssh2/docs/libssh2_sftp_readlink.3":"1834815d254c351664cacf38c06a4b232f099787cc09a41ef719a1ff242e4064","libssh2/docs/libssh2_sftp_realpath.3":"6b8e75bf89724998c414487d93f8c4899a3b1f4deba50806a798fdf9f9405bab","libssh2/docs/libssh2_sftp_rename.3":"eb87a9b1c94f38913c0cb62a3a474fe8c8f3cb0a874c61ced396a2d8bb92e510","libssh2/docs/libssh2_sftp_rename_ex.3":"12d2e70027755937df6de8b0836f75509f4fc5f1a5428fe5a92ae3eb23ff4b54","libssh2/docs/libssh2_sftp_rewind.3":"4caf86de2f35e2925ee637a68f7cfc2e76dab54571ada06495a0574e549c6a7c","libssh2/docs/libssh2_sftp_rmdir.3":"86a1935b7bb291041eaa7c0788f417c6398b39fd208b6bb478329299ae72a49f","libssh2/docs/libssh2_sftp_rmdir_ex.3":"17029aa15ef3e1c862731a7ee52e8f730dc8951e62e1c0539b922dbcd66810b0","libssh2/docs/libssh2_sftp_seek.3":"546a134db735df610032fa982d3
 c8c1013ced779e21faeff261d71041bcde8bc","libssh2/docs/libssh2_sftp_seek64.3":"07df7a2c8c9d75b198fa60909baa31e1c883002337a4c6b7a1b3a9c6ceb3a594","libssh2/docs/libssh2_sftp_setstat.3":"39c7f5d489ea5ceb51bd9c7de237464f5c510f3ce0983e57f7b69207ef957e01","libssh2/docs/libssh2_sftp_shutdown.3":"48bf057f1836924e3e5009890cb6e63ec9d11d0aa19abc258c75ee7c7bd097b9","libssh2/docs/libssh2_sftp_stat.3":"7fa4495645b580c216ca2279168b6b2f7c9c73a973dabf1997c02a0409d8c042","libssh2/docs/libssh2_sftp_stat_ex.3":"fd19ff075f44a1713d765330d069fd63cffd8b2dbc09ce9170d926f25d5f70c3","libssh2/docs/libssh2_sftp_statvfs.3":"5762f9ff7d56f44164db57fd048daa60173794c4e7a58ab2fb255e29f0ca2bb8","libssh2/docs/libssh2_sftp_symlink.3":"ae7ea167057c307552405124ad54ee488db7354e7caa974334e88f5b2104c88a","libssh2/docs/libssh2_sftp_symlink_ex.3":"7e22a39bb97548428cddc8a9cf3bc7a1ff57cde878b337a7e177730bf5c51d01","libssh2/docs/libssh2_sftp_tell.3":"ce22525601570f33d91469170d43470a8a9decf0b35ae82c2cea72fff1dc8d8f","libssh2/docs/li
 bssh2_sftp_tell64.3":"db5faf0fd28de4738e3062555c1d6981c2b272d7b89bd85e3e83d2a03237472f","libssh2/docs/libssh2_sftp_unlink.3":"d8c4c60c41e81149fe14a4a00cc114d3f7bb4799ceea4895c67d79363da3ae7c","libssh2/docs/libssh2_sftp_unlink_ex.3":"64b0723444b716d2b809a3b481024523fc8c62ab45d3ec4274040abf824cf611","libssh2/docs/libssh2_sftp_write.3":"a4706e9d6dabcde2aeccba27f7d7d5a3cef33dd21f4bf66bf5b181c3e8a3f9ef","libssh2/docs/libssh2_trace.3":"636417e1798bce85c2058cad56493919c608d426acaac409ec1a489bdef90fe2","libssh2/docs/libssh2_trace_sethandler.3":"b37355eff49dacc9916818db61258f21665fb68993e57ca9040db056453bf8bd","libssh2/docs/libssh2_userauth_authenticated.3":"81115e3ac2549eadafc5ab8c73462d1c5565593106c4d995a920f718e5dd451e","libssh2/docs/libssh2_userauth_hostbased_fromfile.3":"265670d504f8db399e9253af673264b92ae8cc3593912e9b2e6aee436d02fdfe","libssh2/docs/libssh2_userauth_hostbased_fromfile_ex.3":"a71631a3eb07ac88ee21beeabaf6aaccb7e93378c98eed228fa27f1575b04a64","libssh2/docs/libssh2_userauth
 _keyboard_interactive.3":"17d55c3ba83fc9b7a2fa1dbf0e0d1886deb87616298b6bf424b5ac7d63d0da39","libssh2/docs/libssh2_userauth_keyboard_interactive_ex.3":"d62646af0cf3257fa4a599a676f5237c1ab4d07d56b9b66745fe786f640e6afb","libssh2/docs/libssh2_userauth_list.3":"af6928a269c96480a6ea3a3452af7029577f69485fee36ecdd9dde48b4956a5d","libssh2/docs/libssh2_userauth_password.3":"4c8103bb95903b0b2ee6c2b1d0b3eac150ab31314ec023424ab564d29b1678a9","libssh2/docs/libssh2_userauth_password_ex.3":"afa13d3bb9bbdb3672e014aec922b2953556842b69fb602e8dc97f10d569f5d0","libssh2/docs/libssh2_userauth_publickey.3":"874ece028410feb1bb33d481ab2789e6fadc9a9974cf4e0a72517b4c3fb81861","libssh2/docs/libssh2_userauth_publickey_fromfile.3":"6864fc6411955179866986cf95f75ff41a022a4b60ceb177cf503da45a67b88d","libssh2/docs/libssh2_userauth_publickey_fromfile_ex.3":"060d36d8a06538035e0d7c678f78db16d68ad6f930c958ef3c1bd46f96f9ed39","libssh2/docs/libssh2_userauth_publickey_frommemory.3":"5022660ab3c6c7f596b92e887debb3c580dc21f64
 be71b76c83c033c0fe36ef9","libssh2/docs/libssh2_version.3":"d3feeb9f870be0dacc7616c44dffae9abddcd22eec9cc8c18a0526af723ffce8","libssh2/docs/template.3":"740b501cbdd74773bdb93c8a4d1ae1e175f3593c0eb93844ea2cad0c61e14463","libssh2/example/CMakeLists.txt":"f8cc011f16f189f485ed9060d71de862616c254dcfc1fafe49ff6425a4d89757","libssh2/example/Makefile.am":"0e7c6f2ea9a65a6eb253d721cabc8df573cd4d2606ddc7bd7499b701380157a6","libssh2/example/direct_tcpip.c":"1a335122f9e28b3883587768e8332f3883b462def477f8651b83fc1392e96dca","libssh2/example/libssh2_config_cmake.h.in":"115c1b79ea918a83de959f0f50eb98c2ce252b21b566b9ad56f3c23b68e48ae7","libssh2/example/scp.c":"87736832ddc36e80b52ed6b7f1c87eedcb57d739c80dcff5bbf2d610bfc7f7c4","libssh2/example/scp_nonblock.c":"dfa78c57e18acdb437f3a643dbace70802aa7d2d504adcd47ed63f744189e822","libssh2/example/scp_write.c":"3a3c4dfb3c4688558716a364cf0f4d8b767bf30c59cc6b352394a2d698370930","libssh2/example/scp_write_nonblock.c":"8071bf056b72eee39bbb1ee173193a79e6ac8a28127
 24b3e31bb919c6b8ba370","libssh2/example/sftp.c":"6a0bcb5ec7b3066cd040bfc29243fcb36f8375575db17415974a20c29892f6b8","libssh2/example/sftp_RW_nonblock.c":"a2eac2e5433d8e63fd416dd8d0b1424536b4dae701360bf9ec3024495d8c6eb9","libssh2/example/sftp_append.c":"e9aa3ad34d7c9aa119a841e16e99657aa28596b184ff38d09df3a1319dfbf9bd","libssh2/example/sftp_mkdir.c":"51f94316a6fc8ce1c6de9bff0599fa95a950a1424e94b676410d76b1e1edc879","libssh2/example/sftp_mkdir_nonblock.c":"0fb08ab3d217af555d7512693a56c63094642247054def280cbcb08e2a3612c4","libssh2/example/sftp_nonblock.c":"c7236ccc7897e1abd3d9176a33cbd059327d30fc95c7803f7e5f99bf3c448a3f","libssh2/example/sftp_write.c":"7e972aa778422c962ba0ebd2fbae109865b334e33c371ae94a8634e74ffd5473","libssh2/example/sftp_write_nonblock.c":"6b18c9371c2ed1e22b005232f80b99959cc68f2e0dc1351fa73d678e7c64a329","libssh2/example/sftp_write_sliding.c":"b88419136786cd31709d9466b0e4a131b990bbd425096276e5699559863d4bd7","libssh2/example/sftpdir.c":"d186de774a29db36a87fe2f66011acb5c
 5847316791c98f39dc2749a4c448209","libssh2/example/sftpdir_nonblock.c":"6282ae10e701e48063a793ab2e7a819be77f7267dd7ec29264339c41c5dad8ab","libssh2/example/ssh2.c":"2789139110316e87a06b4d6132fb86081c545084358a3ddf6bb5128423eaed49","libssh2/example/ssh2_agent.c":"3184d5a396a9067279ec16070c699a8baffdc02c70930f8cbecbd1cbbd489d84","libssh2/example/ssh2_agent_forwarding.c":"2db3d78ce1c5bdb2453f7d22cdff09cf1dc3e40aceb8a54faffe6f76af88d1c3","libssh2/example/ssh2_echo.c":"91c519486541145f579c550fddb5ffde5933ba0aaf22366ee8aec50c0cfe4933","libssh2/example/ssh2_exec.c":"67afd0ef23627c87eef2e4424967eef26f8154ce50c357cad85f7d3764fcd5b9","libssh2/example/subsystem_netconf.c":"9b076de4366e11ca81e88d60f6dc41ff3ad897d3096f148ce4ce00102d7256b0","libssh2/example/tcpip-forward.c":"0a929eec2a7274e7592ded5f63230de45c1f30578ce92ea14a010a33b231ac42","libssh2/example/x11.c":"310b0aef741a513db213a895fbf772076e35c2ee83eb4ad1f300493ef6b5b436","libssh2/get_ver.awk":"ac9314659d618e57f0d57e9cb2dc5ab14ca342f099de673
 8e93d58b91f698f14","libssh2/git2news.pl":"26cad7a3870941f21348bfdffd05fff7a1e1c650b8e38fe469bab3a2a221f26c","libssh2/include/libssh2.h":"fe2c560b62960a968414c47f9fe640f4a4bcce5340a51a94083d1cc547c98a4e","libssh2/include/libssh2_publickey.h":"2d419bdfbc155cec62cc23d7cb87f3d9361c4f26ce3b3910c74cef715bd2e70b","libssh2/include/libssh2_sftp.h":"8a0c63c323edc42286cc608f9a53cebe46ac91432e1080a8520ab69d3caeadbf","libssh2/libssh2-style.el":"14bd86ae83b499f88b47f57cee18f1a7f4f41650e16e34af4b8ff03970c3c059","libssh2/libssh2.pc.in":"a2c375f048235970c995e4a091fca2cb500574151c356f7682d44deeb90623a0","libssh2/m4/autobuild.m4":"37dfd034b5ea52bede69c54901b818a461ae73e2ab1e28c61c229a87f24a1817","libssh2/m4/lib-ld.m4":"18c4c458009da32c9daf0ea332a539e5edc82ba009b6c2faac004626313f00e5","libssh2/m4/lib-link.m4":"d7aab3772e5b60d3ec57ae8dc66d9b762f5c68ef1e8516df25fadfa8bdfef379","libssh2/m4/lib-prefix.m4":"4797426d11dad1e5e4fdbc8bcbc8b10d9750f47bcb74e4c07a953a15265e902c","libssh2/maketgz":"3a5878c78f38abff
 9158f88cebd11394a5998dd2ea3803a4aa5b4bfa885e46d4","libssh2/nw/GNUmakefile":"d6afc1888b0fdfcb50b29a3d7080a4183de41a444c7063db93a1b56d533d8dd8","libssh2/nw/keepscreen.c":"f95e6f4851f16bde13e51a1f4f6f405a142c6a7940beda74de8058db2f170ef6","libssh2/nw/nwlib.c":"d81b0ad6d05938507ebc3c0510021e889a2d68a74d50709df981d2339798eb78","libssh2/nw/test/GNUmakefile":"fb00a4a6776f14c1789ac8abc0b0136b79813177221355fbd3c5b1907da938e2","libssh2/os400/README400":"f5ce6d4f86e2334f5c271020195fb0964083e19e2f44dea4c4d62e7a9bc9f4da","libssh2/os400/ccsid.c":"07d12155f5b9b2be9e5477fc2818a7e98183eedc247370de04d718eef506fdb8","libssh2/os400/include/alloca.h":"f2b4c60ed1f78832b9141cb64e5d1d8e187d90afcb5f9f1d56dcf3f9e185d236","libssh2/os400/include/stdio.h":"ce35104d75377458c0c38aded5375141abf22e71215ef7533a482ceec279c731","libssh2/os400/include/sys/socket.h":"05599c77ea5f79337a77e7b24f4d63f40b929884141fbb66f356d825c09c8dfb","libssh2/os400/initscript.sh":"b27631198e5eea8048684f8fae95ef27eef1f712742265022bf4eb1ebfe
 589cd","libssh2/os400/libssh2_ccsid.h":"13a0b3c9165d7ef27ce242c64ae191f876a1fdd65f0b4d768cc3235c2509910d","libssh2/os400/libssh2_config.h":"d5615c238ab5642d19c29a04f6e18ef0a1675043861cbe3eebac2297e5acae09","libssh2/os400/libssh2rpg/libssh2.rpgle.in":"0ce3e5bb7c33bb6dcf960af6267b4c0e3cc16259ae881724624c9fafbcc090e6","libssh2/os400/libssh2rpg/libssh2_ccsid.rpgle.in":"439d9e4c68c9b20a618e305e51f54f817a9cc51dd37b62f5792232048ed3ff80","libssh2/os400/libssh2rpg/libssh2_publickey.rpgle":"b138035c36feb1816c6a99b1d98daff7997b05d02325cad1d9909f983e4a330e","libssh2/os400/libssh2rpg/libssh2_sftp.rpgle":"7d6fcfc290b07c8bafbbdfcf61e19456ab6961afe23a0aa142110052a33e7ace","libssh2/os400/macros.h":"38360f3613c00f49178996cf53d2519009a0b3fab161db7aebff143149730c5a","libssh2/os400/make-include.sh":"c75efa9eba5bcaa1e75f60110dd463c2c6866b486186db705d49518c1b0fd8cf","libssh2/os400/make-rpg.sh":"41cce97d1dec97571160c98967db4ab27af9c7890cf4f7aa238b3d6b6aa69eee","libssh2/os400/make-src.sh":"c750bd85a5153b10c
 61c069a7d1ec253ec3587554f2da60a144dc4246ff50e67","libssh2/os400/make.sh":"07f221c0d6a9e7b1c55e5d1cc8e3babe7edb6b4bad3063827b55265bec9456e4","libssh2/os400/os400sys.c":"2c9bc9de576376b0a37c401c64b59990e2f74ceafdb0a8c6555fb8de5be2b01a","libssh2/src/CMakeLists.txt":"30b56cd9854ab0b20d1527f368b35c341ce8bed37708f316edef8e7a229f06a1","libssh2/src/Makefile.am":"5e0e38d3203bf1f1e0f1acc57b98591a4de80cd5efa26e5dde6b7348f2df1a68","libssh2/src/NMakefile":"bad4819608f02f282aae84462a7c3f1d1b199ee0fc86abdc9ab7326ee6482576","libssh2/src/agent.c":"7bbe43a2a9bbc1e6d4c2ff6f2c10d5b9d46920148c10b1788f355b760303862b","libssh2/src/agent.h":"1348e28650ce7f4350e4e1b92e26d7c45e729fe3b9cd68db716e40a64ea15269","libssh2/src/agent_win.c":"1c8d67a82e21c539c62f3a0b4c715fba81ca40cee588588d5e4f1abb389966b1","libssh2/src/bcrypt_pbkdf.c":"76b4d9244aa61fba7db31f4763336d890d5025f9f62f3bb1369eb3b0986fca6f","libssh2/src/blf.h":"db4921417d17d79529c393528e541bad14434777eba8cc131ed74f0317dabfe3","libssh2/src/blowfish.c":"830
 d5c2b3ac01b1a96253cd78304af11bbfef822a0e59bbf12d0d370f0f0f43f","libssh2/src/channel.c":"de351bd081fea82da9d1bc613bb4cce9a1b08bcf18839433b073b4ea5075c077","libssh2/src/channel.h":"3be8e8b444461111fe0d35b21137ffcd4f681c1357616e0db4908bd434e97bbc","libssh2/src/comp.c":"0fd0cfb6b74e2d94a2da15b27e8e99e42f277dd12fd27ccf17bf566ad8009993","libssh2/src/comp.h":"7aa028c23316132522362bc9f397e22bae94e9e620eb80ac12a2009278532926","libssh2/src/crypt.c":"04e3683e3a16046aa7736b2401bdebea1feffc1e7fb928952dbd53adcc5a493e","libssh2/src/crypto.h":"37d8b6726c771d88cee1928391ec5b5126617fc1f04f7e705b8fb041a8fe91cc","libssh2/src/global.c":"9551963ca2fb9c321703db04952d9b05e2e6049e12d8bf6ba6e9291920b87a37","libssh2/src/hostkey.c":"1ff0d3709396e9d0c4061968a7159bbf00af7c3fedc37ec32c4f8cea682dd492","libssh2/src/keepalive.c":"acc373252f0624126226e2528897757da61c870374d5905df29a17fa185214ef","libssh2/src/kex.c":"6fbb83649de7afcb197c285f41f6d2c0576e17bee93d6d51fb85421a21af8258","libssh2/src/knownhost.c":"2ef607c0b
 b2ef7ec9a4cf41158813ca8c62c55ace046a02a2b862cfdede25e75","libssh2/src/libgcrypt.c":"cbbd92a4b70d620517458412390519d40f1e153a882be8d5fe6c5de6d3570336","libssh2/src/libgcrypt.h":"46d7c65c53b1e355327e1b314d5841d41cb5426faee36ab6bbc0b7b48871b9d0","libssh2/src/libssh2.pc.in":"46db28ee6987b9f399c0e3b02dd5374fef2831fd4051109a478e85832e1913df","libssh2/src/libssh2_config_cmake.h.in":"07fe4470fd1643c51e5f2a868b053d733aaee891f1f886f4b8b848fb70db76cb","libssh2/src/libssh2_priv.h":"7cf354751d204d0ae1d3bf8bddbcfe38bebdf792217c34f9ea00947c57fc992d","libssh2/src/mac.c":"3ff6c3d22e5e9a0cc2d69b2f840606f560b83b9d40e276927d0854c20ec35b27","libssh2/src/mac.h":"ead9c368cf6700776d6083363a275e26d0e89de665b40b48fed1f5cd6d783b3b","libssh2/src/mbedtls.c":"3566fc0fc5d2a658780673741678f811e1a4fbc99aebaaeb2419c65b5887c2a7","libssh2/src/mbedtls.h":"e28d5e7b08c0d67f1d8e3e2d2fb7fef69df049cf8e188a7760abd7b50d91c7e7","libssh2/src/misc.c":"64f7a580f0cf00d6cba86de4fd5cf156cba038b2a321efa8504236991edff50f","libssh2/src
 /misc.h":"4bcc54e2280af4e4934e7c14a32e839bc9d09dc33b52b9a75f27366215a61556","libssh2/src/openssl.c":"126dbf0e4676f84a1acb46b154d2d32f42cb47a81f157a16ff1391a02c615baf","libssh2/src/openssl.h":"5dc71961f26506a53b7d724d385e5ba42ce75c83e00862041697e0f015a98166","libssh2/src/os400qc3.c":"f017c70d602941aca07f6fbe5fd55cc9bb8ce6c1d33fdb4e6f408d99edfdec03","libssh2/src/os400qc3.h":"e2d33622b00442fb2e2fcbb26fff7ee3bd997270f89a98a323bfed618956b28b","libssh2/src/packet.c":"e5b3f9dc190f9491a9746dd91e7da8d2f6639ef1a1e62552556753539fc1ddca","libssh2/src/packet.h":"cbd3fe922ff28675f6f39b31131d7832a07263356d0e7d55197e40d5fe244577","libssh2/src/pem.c":"d1adf7211b744554b8c41180c87e8d0aca2a7babceee91c75032e68655e41e22","libssh2/src/publickey.c":"3e1579cdc688dee088294975ee4b09316cc68cd9083ea6170a8d4726d820ea6c","libssh2/src/scp.c":"ef7120de5d824d9d4135b846021af8f42c44ff790dacabc8c4d23bb702abd81c","libssh2/src/session.c":"3d1ab27b52be357e36fa337e7461828029690cda8c69a705222dab2228d85065","libssh2/src/sess
 ion.h":"c3918ff057ebdb51116d7552e27b9f7d18461e1fbba4c1b635465dff909d4623","libssh2/src/sftp.c":"9090319e2732c400a344c78f3e9695ca6e1a3466159ffdae3e3c5f52b10b9586","libssh2/src/sftp.h":"3b4d6460b857e32707116814f1ddc10dbfa5f804e407883e77bdad6c36db8c14","libssh2/src/transport.c":"4116293d9afceb3a8ea8de6a09bb3af42604632b3536f305240b7564be0555fc","libssh2/src/transport.h":"4a57bc5ecc21db41729319d8fd34808f042cfa7d155be306ec2165f2d81f010c","libssh2/src/userauth.c":"144ce811b1acf4be50bba03eee53a625fd5199815d04436858316912168fe05f","libssh2/src/userauth.h":"7d930eb690721808c6d89ba917045827118a3b98b04333935d8e91b49f651b84","libssh2/src/version.c":"544a1389f5a6bde4ec263991d994da3d9529cae5635aab6730702a6575bcc0c5","libssh2/src/wincng.c":"ba1fa277b369df2b51d23f354ecf28a4987ce0a0d29023e6af5ffeafbc4cd359","libssh2/src/wincng.h":"7bbc6e35d281bee22d52883c728b626336d3ec8a4ce6fb384f96bb8b1cfaca8f","libssh2/tests/CMakeLists.txt":"717707a250f05fb65e7009f696c70bd86d7d2ec16883127781b617d0c692cd82","libssh2
 /tests/Makefile.am":"d9f4abf187cfd058373c570fff74009dadfdc9c96f84375ed5649114f0d8369f","libssh2/tests/etc/host":"6eb0f1bb23d7877ddcd502159e6673c053b5ea1846630f21651ab58ea25d7a6f","libssh2/tests/etc/host.pub":"0e2479a973fbaf1f7f5dfebb111e2b199ee59c0dcfdf646d26760eba0b8b2aa8","libssh2/tests/etc/sshd_config":"2ad4ea47ddb633c7a2e000f2d6619d08bf643591f26a7a0b92d0befe518ee951","libssh2/tests/etc/user":"776aebc0c12e466e4b65f1a44ae5235dd70687ab03f283aa3d9a6df70d3bdbbf","libssh2/tests/etc/user.pub":"39bc4445c24c32fe5e64a6ee02025f3508b4334b2813e1a87c40d44ebc5f8c1d","libssh2/tests/key_dsa":"2e5b8a618e853eff7b3e0d2928203529fe18a3ae62b46a82ccd48a750819b8c2","libssh2/tests/key_dsa.pub":"12aecbb237794fc79d4a96cebad1c4badaa1902b3f1788cca83b28a1f977b895","libssh2/tests/key_dsa_wrong":"21f66160d72789400c5420f460fb716cde82b5afc5c09f3f7512d310e3c8e0b2","libssh2/tests/key_dsa_wrong.pub":"0274eed003e62413aa894abad044296c6fb3cc19450457a282674ed3836518ea","libssh2/tests/key_ecdsa":"8fb4d570516afc175869de76
 86125a828e18c38ddd4c2524c5a8d05c95ba7e7d","libssh2/tests/key_ecdsa.pub":"bc756bc47e3afd11437cd40ebe8ce5c8fca92ee03c6e3f01b6c5b44001bbc7c6","libssh2/tests/key_ed25519":"18e808415d2f344a20b7cefac12f0df0af4e404f446f5c690000c21987ce8795","libssh2/tests/key_ed25519.pub":"e52bcbcbdcdbf547a121e92bbb6f5342375719988e33ffe7f228dd2b935c98ba","libssh2/tests/key_ed25519_encrypted":"fd1e9378f94f2d5514e16f32fcf175e8303433750c81f2def3814d5bd44a13e3","libssh2/tests/key_ed25519_encrypted.pub":"7ceb4062d5fe17f190eb32c894e4cfd76e00db7c1b16de7516df8f910649469d","libssh2/tests/key_rsa":"9d8f4c955624a4af6fcb754e74e2abe1d3e7fe6340f6063617cd58bf122a2d59","libssh2/tests/key_rsa.pub":"4293f28b7033d459618b277374d7e932869964de131bba1d427030cb5e70c297","libssh2/tests/key_rsa_encrypted":"fc3872744c7bf6db2df4ab2ea5701370cd8bd39367d659eaeae49b2dbe7bca34","libssh2/tests/key_rsa_encrypted.pub":"1f340ccab8b86e51d4ee7585d61d5e49e3a32338ba9eeca65988a1d751112c5e","libssh2/tests/key_rsa_openssh":"a146196a5b2189b40bc00bdcd
 1958165106ca21e72a7d02c0a7f95a6dd926487","libssh2/tests/key_rsa_openssh.pub":"d564da6c612286603a83af006c3a6efe53885a2417aa25f234818612e16bea66","libssh2/tests/libssh2_config_cmake.h.in":"193a748944f6bccd3787b1c3958ddf95c1c7ad9b25e5b8f4b42cb48987e34668","libssh2/tests/mansyntax.sh":"71c56796eaa4008910b3d67b885b9a7e2c018d0f88be4bb290334afb9ff23bde","libssh2/tests/openssh_fixture.c":"7c17b8373b09dfe53489e96854fa89f6e6e3c13eac838f79179f38ad6323a501","libssh2/tests/openssh_fixture.h":"21935165166ce4518c6534070cc506fcd85ece95238fef29e6b0be784c05d7c0","libssh2/tests/openssh_server/Dockerfile":"fe4f6271644f6a29af0e077902cb7cc80b6226ef0e1976438dcd74148d26823c","libssh2/tests/openssh_server/authorized_keys":"58c4cf998535eb4123eddf7cae7da4413eed50e3827320187380ec7925fcf61e","libssh2/tests/openssh_server/ca_ecdsa":"14e72246d3990d345c30cd3d06c5c7ba9496057d94da2f5a6f14a7c636663206","libssh2/tests/openssh_server/ca_ecdsa.pub":"2925ca6bb4d280aec3dd68041efc2f06e959295932a26f73a263c939c03e3220","libs
 sh2/tests/openssh_server/ssh_host_ecdsa_key":"03753b2b4942081d1f33201a193487ebd5a577e0bfde45f7e03a1de5ae404688","libssh2/tests/openssh_server/ssh_host_ed25519_key":"18e808415d2f344a20b7cefac12f0df0af4e404f446f5c690000c21987ce8795","libssh2/tests/openssh_server/ssh_host_rsa_key":"11a57dc115ca17203d6382ad6fdcd8df33bd0f23ff6bf38ee4a697260ffd1a11","libssh2/tests/ossfuzz/Makefile.am":"049665a167b9f4cd664b12884ae4470c0b0b2077931a056ed55d61784b230d88","libssh2/tests/ossfuzz/ossfuzz.sh":"6fde8ca30e3dfc0ade9da4d06f5e34f73a51c6fea72e3a1348cf5ced10b73d80","libssh2/tests/ossfuzz/ssh2_client_fuzzer.cc":"accadbd90783a3e7fa2311e749aab641f53851a14a17c2e8464bf85c1a5e887a","libssh2/tests/ossfuzz/standaloneengine.cc":"f6eb3ebf7e14252339a21fb887a08b2e7638a7ac77f706ed80508b2c0d54d81d","libssh2/tests/ossfuzz/testinput.h":"ce435e13e87abeec0a297ef3b566268496ecbd517c1d09dfa2232dcbbec9be2c","libssh2/tests/runner.c":"696b83fd77bca60560c1609212c59ad986bf151cf72520b63d23643111a7ce4e","libssh2/tests/session_fixt
 ure.c":"0e81e1d8e9999d24120fd8be8b26cf6984578c504f46d009cb816fce50412762","libssh2/tests/session_fixture.h":"d4f098a586b5f7dd0f3785b86933c08096bc12a2e55f07fff470db6fc7bbd076","libssh2/tests/signed_key_ecdsa":"796da5d8d420f644f47feffffb0357ac99b299471e4d757f21b6cc8bfefe8f0d","libssh2/tests/signed_key_ecdsa-cert.pub":"0f2e6d1b46874a01cc36ed766533301622d64fa88988575ca77eee56da7b3952","libssh2/tests/signed_key_ecdsa.pub":"d6b6f80d9117f896b99933eba19b012f55068ed8b77956f1a7b0510026c2876f","libssh2/tests/simple.c":"4afdeef598aa669b5cd0e7388dcf2e579f2c0f9c954face71d366250101d270f","libssh2/tests/ssh2.c":"3a8605fd3dd6151c569bc12c07ecdc33de7d704b6224da2dedfe3c76494e015b","libssh2/tests/ssh2.sh":"7bbe65ee20f4e47e9264bd74700cca16ee066aba5fb9e4e42f46e1cfdae4930e","libssh2/tests/sshd_fixture.sh.in":"c8b93076f66222f73329472ec151b210e55b39024de5d3c18a4c609b65d13b7e","libssh2/tests/sshdwrap":"21649ba440cd534f4bfd52c0a8de339565768b373c172dca106cffcc8bd06e09","libssh2/tests/test_agent_forward_succeeds
 .c":"a5b9f9009c6818b86f235debc2ee15de5ceb0cfe1d9b539270167058afb4e6ac","libssh2/tests/test_hostkey.c":"f1059c3ac304332342f39f32288afa3f61f9bdbd5d617fe6052491b20bc0672b","libssh2/tests/test_hostkey_hash.c":"e745d8b4ad92c858dc588e3494e183f47d591c1ef2a13b63e2122f478545093a","libssh2/tests/test_keyboard_interactive_auth_fails_with_wrong_response.c":"f585a7df65a87fc4905f0b165531beb41455486919ed3aebbe9804ba5795b9c7","libssh2/tests/test_keyboard_interactive_auth_succeeds_with_correct_response.c":"8a112c876cb2786eed61de0f68f0a93ee3840269d8d6610e8ebeeb9a66c43533","libssh2/tests/test_password_auth_fails_with_wrong_password.c":"e3d588d9c6850ab69bd7674d2027563ff9f1491740637506d80875e66609974d","libssh2/tests/test_password_auth_fails_with_wrong_username.c":"c91608bdda3a83a62876725ae2d7002ccb3332bcbacfc9c9578e7488c0ed4cef","libssh2/tests/test_password_auth_succeeds_with_correct_credentials.c":"80d253225d68bcb7dc4b94b53374aa4de86c6995481de0974b6284bf87a91583","libssh2/tests/test_public_key_auth_fa
 ils_with_wrong_key.c":"104b08aa9bb5f1006e07e59dece417a2d6a5f60ef6c3f8dc62b6a8af95d413e0","libssh2/tests/test_public_key_auth_succeeds_with_correct_dsa_key.c":"4b397de742f0d2fb15e86d20451f109fedd1ba28b0622496a2d030f9e9f9ea5a","libssh2/tests/test_public_key_auth_succeeds_with_correct_ecdsa_key.c":"53bd6d99a243aaedc20f7de5c974c7c04e38090a415d338cef2d7357d7644912","libssh2/tests/test_public_key_auth_succeeds_with_correct_ed25519_key.c":"207f499812271669d2a9ff5a286761a45840de9230c07bf72426fcd59a682317","libssh2/tests/test_public_key_auth_succeeds_with_correct_ed25519_key_from_mem.c":"4dd0a8251a41d0dd68490fb7abb9b0a1cc190af1603815f3050e29e2a7d6bc8a","libssh2/tests/test_public_key_auth_succeeds_with_correct_encrypted_ed25519_key.c":"6e5c107ad53c144892c54459f89ef2cf8a25cbf977bbd978e4517cb5959a2565","libssh2/tests/test_public_key_auth_succeeds_with_correct_encrypted_rsa_key.c":"dbc95a803a54364604ab379b512fc98c33d791a1df4e33e4027b881ecc2e75ed","libssh2/tests/test_public_key_auth_succeeds_with
 _correct_rsa_key.c":"93cdd2513af42d46552baa273401910dedd014951f836175ec98b827532c5b6e","libssh2/tests/test_public_key_auth_succeeds_with_correct_rsa_openssh_key.c":"4e6d3ace02cce1ba8c1b4b6e5d774a8a4d259eef8314fe6c3ae0d6003a87dcd8","libssh2/tests/test_public_key_auth_succeeds_with_correct_signed_ecdsa_key.c":"f16a0dc74d16f0d27f10867f0ddd5b306fc4b16b2bd8e401a5451ce71c7649f5","libssh2/vms/libssh2_config.h":"1c5c4ba6ab33bd1d9e4ce0d84e1107ced89d27a80e8505e1b428fa942edefedc","libssh2/vms/libssh2_make_example.dcl":"7726a5d4f07d522aa712da8a6ca7b998cd93ca950aaa544a5eed1790dc69c775","libssh2/vms/libssh2_make_help.dcl":"9d04ddc32831abf63b7e042dd0677da83599f11497d364b02cbe780419e248e4","libssh2/vms/libssh2_make_kit.dcl":"e7c23c9db4583f6944cd8973cd813a6d65749170417b8384f94db69597f81f1d","libssh2/vms/libssh2_make_lib.dcl":"1549134cd4a4bdf2543f900ea9c811de1c67895e1e830f7ddfb384e7601f56a4","libssh2/vms/man2help.c":"ae61cab505a4a9c87bdd103506ba9a36fd7ba92714edd9f67d022d8a9474e6bc","libssh2/vms/readm
 e.vms":"30b5d682da37cf16352152daa682cb04c56e1044c77fc4c4da77bdc9709c33b8","libssh2/win32/GNUmakefile":"0c120532da875411df50b2f4483add53afd9345b2f4eab5f3c6ca5ccf7b17eb9","libssh2/win32/Makefile.Watcom":"475b8b37143bad986386ca1d2c777e9f8e46d0172ca4e9f70c613c84bbdece4f","libssh2/win32/config.mk":"e2172a92c5b5b9f2215c5c11128009cb6ba8a1f25402990c1f7e8ae78449d289","libssh2/win32/libssh2.dsw":"b16e14f1e5ed93f52e450b03d18691bd15a17b13b69486551c61b455cf823d98","libssh2/win32/libssh2.rc":"29a25c29ed977ba78619a59bc858508caa6f0849607c02da8fa7fe71b6fb7195","libssh2/win32/libssh2_config.h":"d5e704c80aca43c33698bd45059eecde05b098049192bb9f0640af593cdb2cb7","libssh2/win32/msvcproj.foot":"85c21ad71a2ae878242d9b370e96dbcb7433b77dc9fa4d1fc903ce0582e0f62d","libssh2/win32/msvcproj.head":"3a9edda7c4f545c43178c826cb0a83f9e2f38ed61cbe6b3002b9683cfebb4fb1","libssh2/win32/rules.mk":"5f68dc0a3ef0f61d783289c98c00419a0a76a2b866ecd0f86404ca1d3effc12a","libssh2/win32/test/GNUmakefile":"e2c77b03fa88a88d90fe1dcb6c0
 95935ba99b03b56a78f101a373ff208e1369a","libssh2/win32/tests.dsp":"73710a110000074bb299c9b780fb4fdc9e7a7edcefe19428de89c33d65e77841"},"package":"b094a36eb4b8b8c8a7b4b8ae43b2944502be3e59cd87687595cf6b0a71b3f4ca"}
+\ No newline at end of file
++{"files":{"Cargo.toml":"8981208d3829e782a076099f6d686d1eb3714102e0af7de70822f972ee9f0eda","build.rs":"e9eef35f1c18dd9844960d1d315e84ad99a05ab1247f0f54e3c2eab244988256","lib.rs":"3f59dd52a499c4d707114626a44123f3c969c999599ea527dc04d221cfbf460d","libssh2/CMakeLists.txt":"8530be1d6db3715344fae1900fe73d8e2294930bef33019657064dfc6094cd0f","libssh2/COPYING":"859e60d760a3446ecaf777339f1eef98c527aea40714384d24b882a83ffdd23a","libssh2/Makefile.OpenSSL.inc":"8e82af68b172ddccf94c65c1b4e38b69b3b7f027cc14a54b6d660c5f2bcd4de9","libssh2/Makefile.WinCNG.inc":"79243be1029a0df52a5e79b3dceb80ac462f2e735e25445e38852610bee62f34","libssh2/Makefile.am":"955114c8c455346542067604795f344a693afa544c7efa813abb3b1dbccc59ea","libssh2/Makefile.inc":"3ba04a6366787cd65119ca3a4720ad31267e32d94b49763e123d85bbbc303ce1","libssh2/Makefile.libgcrypt.inc":"3d71dbe94c906d07c70eb8c7eae80fe5ae014565d7a9446bd39b659e91b73b71","libssh2/Makefile.mbedTLS.inc":"18bf8364aaef158a27b65be88ac1fd74af0cbd336930b6ce611b62dab77feebc","li
 bssh2/Makefile.os400qc3.inc":"ac9b0e1731f7dfa20e3987e108a4c5896e6095638ec545c8f2ac64c35b63a455","libssh2/NEWS":"9418b9c8dcafc633c2c16372b2b21ceb70a06243756af21eff173a4b379101d1","libssh2/NMakefile":"2d1cbda9bccd886de3c99dae77f09ac75a7f09f1834272b4a9154d2a0ae9a81a","libssh2/README":"428a810c75712693e66d2104ab64b976992a2670109959a8f771a609022ed25e","libssh2/README.md":"74b0076905edb7acfe526b1ea367aa567ced0599d5a3be8e8aa22c1ca847e269","libssh2/RELEASE-NOTES":"9a88e3e26281797ee09f09cd04e4bd753837b02366dcaf34885b800742bc862f","libssh2/acinclude.m4":"38b4ba61f1ccd764daa1c249fff189e4a897f71e19ead71690f5bcbe25d9d541","libssh2/appveyor.yml":"499cdf346619e52967be12e833561fe2b9eec7a50214b25b8195d67b21eb7262","libssh2/buildconf":"c2102a17b8f50f0d56d20639c05c70347a4e6ac5dcec351c6f851371e2a68a71","libssh2/ci/appveyor/docker-bridge.bat":"24121ac7d7c852358b4d6a7f319e1b593d294a97c027175f8085c741d7792887","libssh2/ci/appveyor/docker-bridge.ps1":"c96ed6844515850165b15790791f80a666f606a1931243fec3eb3a0
 7f7531ead","libssh2/ci/checksrc.pl":"879e805b57e2e86f6894a6a4e395daf1c1c048ee5984e109be74afc750782567","libssh2/ci/checksrc.sh":"a435be07f99eaac5b59f9cf68d88e3541c9fbed09177d0874078c22547edd5e9","libssh2/ci/ossfuzz.sh":"34e596139edfe9aa0a52b73ac1ef860a69968f88b1ed6f0dbdfff3832d08a7d6","libssh2/cmake/CheckFunctionExistsMayNeedLibrary.cmake":"60a8d1afe9a3b71cedb782ac6187a9a041d2792006a7eb3379bc42a9fcb95a4d","libssh2/cmake/CheckNonblockingSocketSupport.cmake":"443b9824a1d7f7cc0a9c1b740ca9824f82f73ac7f0294aa2c1e3192aa3cb5e0d","libssh2/cmake/CopyRuntimeDependencies.cmake":"5a146613512f467192e7917561b305e31d52a85b3f216d5e3c6ca6d2261e9b03","libssh2/cmake/FindLibgcrypt.cmake":"af65a3a8ea63eb935b1602b2b75c7c993558f9118e8c12cf9f2d4614977d8c53","libssh2/cmake/FindmbedTLS.cmake":"db4ad3046a838c325ff39f3f083a2de39c3bcde4c69670610ce27b23c758c50d","libssh2/cmake/SocketLibraries.cmake":"857615772ee6a1b79826eb18889def1a626296262db78def698286930e3c6cbf","libssh2/cmake/Toolchain-Linux-32.cmake":"fc7c2
 718c2e628fe28db38406fb57e9380d202dce8b4d615ef8b818984c37a32","libssh2/cmake/max_warnings.cmake":"1a14b62c40d327d69ad1531e3372523310e642779da33c3865e6fc67df46835b","libssh2/config.rpath":"aa48652ef1709d015f0e627eb5d18d1c198d81c29d5f89a81362512fcba72b01","libssh2/configure.ac":"1a24a7b81c127f3cfe154ede0aad567341c0743178d3f3b41ad59f3fa24c7269","libssh2/docs/AUTHORS":"12228e95c6b41c76d00b6ca8f2bf7bfb3372f3f32b6c62f34882530b9406f26d","libssh2/docs/BINDINGS":"c711b535a9462815d564995eb84b997261fb9a2db4ef82a8c9b3f926dd7498b2","libssh2/docs/CMakeLists.txt":"0cd132f7148c6807399141a611723f6083499751d8a3e326f06879e57bf2c369","libssh2/docs/HACKING":"5d2563866dc4fcc8a4ab352676e3d64b918b75e0a73ce7776b9eef7e8949d3b0","libssh2/docs/HACKING-CRYPTO":"88452e1dab1160dbd7d800c5d1c3b6651bca884b18aea476c6ad0b1fd387edba","libssh2/docs/INSTALL_AUTOTOOLS":"6ca4765ca5ca117514e41067ce05cc24504aa29eab9a76bb9cc1ecc87c3280b1","libssh2/docs/INSTALL_CMAKE.md":"266b25dbe613f02e4662467c23ad80bb42a35ef9d579933ddb2d7b1d
 038089d0","libssh2/docs/Makefile.am":"16050bb16175b6c34dd246fb10628975dc7563412b926a10818e3f85efb6e7ca","libssh2/docs/SECURITY.md":"4314c11322a9970bed60130a2e11a0eb79c9de719a7c7c2cb227356d9771ba2f","libssh2/docs/TODO":"e3a304f76129bdb90371439567dffe2a8841e3a5c326f71000490a11241bc9b0","libssh2/docs/libssh2_agent_connect.3":"5fe15d3e781382a8e935048dd266a89e9c3b63800d4714ceec6c78c512e49f20","libssh2/docs/libssh2_agent_disconnect.3":"e2d1a3af99d888e310c6e22227e11b0a42f1d265451a9e13ac787fe0b8075426","libssh2/docs/libssh2_agent_free.3":"332b5fb986c013ba363bd18d5e39c01a047d79fb22acf673291f1e19b4d8292a","libssh2/docs/libssh2_agent_get_identity.3":"acdccde633dda1740ba043fb3f2b3aed884923c74ff3e2ad2f01d5a6b87955f1","libssh2/docs/libssh2_agent_get_identity_path.3":"148b43bc669d3300b3fbf09ae57050a15ce074c8730ecef78e97ee9309ea179f","libssh2/docs/libssh2_agent_init.3":"09029ddc71d63085dd6ccf92062ce6e31f0d54a1eb40d06587713814ddb4ee5d","libssh2/docs/libssh2_agent_list_identities.3":"a498d332ea55486e
 b1c234468a8cf3c1886eb6b98bdd527a1b44fd06683e7ea2","libssh2/docs/libssh2_agent_set_identity_path.3":"b60fb7e972fc2b420ff0a7452ddbf12597dbc9cb075920da16ee9c0eef7f8425","libssh2/docs/libssh2_agent_userauth.3":"d2119c63fa5bd1a05385bd176a1c8d2ee0139aebec92addd1601edc948f17855","libssh2/docs/libssh2_banner_set.3":"1bd7a8bd59cb74d90cfed26c41701788afe7c0a667f686c5154cd0615d586422","libssh2/docs/libssh2_base64_decode.3":"c48f88f5a6405738bc146161bf442e02c02073e0b9957f5d4bc3bd425bee82e1","libssh2/docs/libssh2_channel_close.3":"e348d7548693066f863dde9a6c7dd21bf394aca51c1cae1c4999309eedfb4451","libssh2/docs/libssh2_channel_direct_tcpip.3":"3a67560c5846880066344d5581840a26a8509854fcf20fda79f9b2156e58757d","libssh2/docs/libssh2_channel_direct_tcpip_ex.3":"5a7665c77afd8aa509c03d5059ece42adb912979e0fab608034e4554e3106439","libssh2/docs/libssh2_channel_eof.3":"7ad4590d1dfccf35bd2f7393e0d14b4247c3108ee2f48685b505c0dd9516e011","libssh2/docs/libssh2_channel_exec.3":"e7f79363e4fa61ce0c00f59e4e97cbc3101f5
 5e2025b1156551aaf50c8522b87","libssh2/docs/libssh2_channel_flush.3":"fcaf2b8577ae6b8196313977d0686175a807fcccd3f3fce433028384da0f7bdd","libssh2/docs/libssh2_channel_flush_ex.3":"a0a60e2c15e2fd19e8399ce45736470782090455856b6a97cab7b9e8cb56b160","libssh2/docs/libssh2_channel_flush_stderr.3":"4f590d465d647b416c583c2b16693a3364e84da2400dfe7f9ffe1928577ca3ae","libssh2/docs/libssh2_channel_forward_accept.3":"4f0621fe2a6aef5fefd50197974beb6e6c89dc41841b1d6052f885a773557ed8","libssh2/docs/libssh2_channel_forward_cancel.3":"230ff1688acf2f4a7ac5d687ca46bd39458192a0662b3b8fa6edd8217c25117f","libssh2/docs/libssh2_channel_forward_listen.3":"fac440afa8233b6d3982b349d56c177ba9fec09464f1c5a5bf40ce32d600197d","libssh2/docs/libssh2_channel_forward_listen_ex.3":"49c5374f3b5c56213fe9a43ef4592cd51097cd1c9017fcb3be97c94847e8efcf","libssh2/docs/libssh2_channel_free.3":"a7e649756ff4a20b0f5bb6bc9f4647ecaff885c8745e9c304cc697c2c677196b","libssh2/docs/libssh2_channel_get_exit_signal.3":"89557c3203331e1d21773b
 557659a0f21e1ecbcee90c372de3b6e159c7b78a7d","libssh2/docs/libssh2_channel_get_exit_status.3":"d374651f3f72f3f179c37b4a44b815a1bdd998f803a121fc8bc5544c397224c8","libssh2/docs/libssh2_channel_handle_extended_data.3":"c8ba2c032cd2cd8fc5877845df624712457dcf1c092975f3c713fe75794fd42b","libssh2/docs/libssh2_channel_handle_extended_data2.3":"17269accf920a28af6bd14770f94067083e2dfa56df4e08663844d0cebb78052","libssh2/docs/libssh2_channel_ignore_extended_data.3":"c00c30e1aa01c699c92c30c98e9ab8e543cb2fb23376b650627c56ecc3a1f275","libssh2/docs/libssh2_channel_open_ex.3":"a4153c3de3d2cb9a2faaa39eeb9b638c829db2cf4aa4a0e0a2cbd51098626e79","libssh2/docs/libssh2_channel_open_session.3":"63ee8e3220149933ebf5219335cf5b9fb107e23808137f782e8846b191ecf629","libssh2/docs/libssh2_channel_process_startup.3":"1023352b8152e5a1a2ccf2bc899e9539fbecaa2dff69ebb68ada088da38fc6b9","libssh2/docs/libssh2_channel_read.3":"1ddb492b078cab328e718563f2fc5dc3fd737078ba272d078f94e554e2938080","libssh2/docs/libssh2_channel_r
 ead_ex.3":"931e1fad6ff1d629ed2b523c75e645a16344be8afebc0e2f50144ac8394146e2","libssh2/docs/libssh2_channel_read_stderr.3":"6b3a6db85f2fdb26a07b95d6046127f3d5c709e6ee4bd72d66b9109e10ca8e1b","libssh2/docs/libssh2_channel_receive_window_adjust.3":"01a3e1d79fce062cba8fefee6b8fe7ca81a1ad7a3c8cccf12801d7f80fd6265a","libssh2/docs/libssh2_channel_receive_window_adjust2.3":"451f2632b8c786a16e87940f2fcb978e9d88fee27cb997c192c9e671b72b27eb","libssh2/docs/libssh2_channel_request_auth_agent.3":"9217dcc14a2c6bee93f5754b2fed7827b3dbb8efc335d7fbf4908e8a531570b4","libssh2/docs/libssh2_channel_request_pty.3":"f7b4d6780a1b6ed5518e425751f55d9930a5bfa8e92dc0458ccdb06d7786ecbe","libssh2/docs/libssh2_channel_request_pty_ex.3":"ab2af9c02a3d127ba99cf27f0496643eb30810edb38a94f7df488f41041ec105","libssh2/docs/libssh2_channel_request_pty_size.3":"5ae6ade5d71da8ce3a31fd804c32600f54a3385b07cb8ed6ac90157a9a1ada26","libssh2/docs/libssh2_channel_request_pty_size_ex.3":"4b296b3a64b71c1842c0f12c70fe866734bc18f51e3907
 acfa3f04c4a997bda3","libssh2/docs/libssh2_channel_send_eof.3":"a83be7ac2b428f6d41df423e38c52d01f86b9fcafde2010336c7a57323808b6c","libssh2/docs/libssh2_channel_set_blocking.3":"767637f9629f9b7bbbe24c3f3e13be0a83174f1542a63fe7daba350beb369447","libssh2/docs/libssh2_channel_setenv.3":"fc8773714c44358cf215d80dfdfeea082cc84ae0f33575d17a7825ffb785b02d","libssh2/docs/libssh2_channel_setenv_ex.3":"d4641d1a3054af1fb1aa4819de5ce002b434e56745118d843adc70d902505447","libssh2/docs/libssh2_channel_shell.3":"e2986078e39068dd61d6d3df0d9e54adb0a489e55ba8051ae6ce3ad5f3c2c191","libssh2/docs/libssh2_channel_subsystem.3":"16e48c8ad515baef23e1ea94895cf0d2c6d397c133adcbbd20300304b64cab4a","libssh2/docs/libssh2_channel_wait_closed.3":"8f7ad8093832b4b343b04eefe492e94a18be6f496e2074037f93b99683296663","libssh2/docs/libssh2_channel_wait_eof.3":"a96b063c1d90129420db176063ea4cb66f1b913a2d2b5ada2f3364eeda2d6543","libssh2/docs/libssh2_channel_window_read.3":"085331a4fb18dd396b016629ad241a7bf03afe78b0a09fec701aa8b
 e526fab2b","libssh2/docs/libssh2_channel_window_read_ex.3":"9faf5e32cc4e1fe69fa2e57dc31cbdf3f0e7bfcea339f3b7196f535bbe6be2e2","libssh2/docs/libssh2_channel_window_write.3":"6daa6fd8d4f74957c709695bd74a741e7808e057cda1a0954e76f92f793d61c4","libssh2/docs/libssh2_channel_window_write_ex.3":"052d12745f7a8a634ba0b3b36cf0a592c2425caf0679aaaca4776b664bd2d5c0","libssh2/docs/libssh2_channel_write.3":"30bfc0efb86bf513f721200a89c9139687d58483826924b9b401797de74b6387","libssh2/docs/libssh2_channel_write_ex.3":"5ee6d5afe244e2839353ed8d7d6688bfde3f090bf951afec404bf486d6f78aac","libssh2/docs/libssh2_channel_write_stderr.3":"e15a48affe5a5044a2b70bf6fc1e3c6a1dc61c10c4440db4828080fe55e5a0f2","libssh2/docs/libssh2_channel_x11_req.3":"e10544721e6dae96d4542abe07b43767ae6fff49a5bc87381aaf72be7d45f51c","libssh2/docs/libssh2_channel_x11_req_ex.3":"ece17b293092b2319ea237a2855a4b9b7c89c6954ecfedbd837d3d02ce4d7a13","libssh2/docs/libssh2_exit.3":"104af206d55e98ffa72ae0c5a505523220c8d6e1de27a37a5139093476d5ede5
 ","libssh2/docs/libssh2_free.3":"8abbc67b852f9fabe09eb84540b610304d896721a04a4bee1e9d0e8f8f08c999","libssh2/docs/libssh2_hostkey_hash.3":"82070c7634690b4bddc49f3c83b343c6f792c902e0e48247d055eaf3284f80e6","libssh2/docs/libssh2_init.3":"926b4044a52cf71dac8ac23cdf51d6e76bc92f5a3a72c65371549e18826c1cc7","libssh2/docs/libssh2_keepalive_config.3":"7ebbb7cdc900d6d6188afc537c05c60a115030609d96571ac447ac396991adc0","libssh2/docs/libssh2_keepalive_send.3":"86ac214dd4c086239d59ac6582926f72544c788ad2fbf3ccc4e678b4109d32a4","libssh2/docs/libssh2_knownhost_add.3":"29a052f853cd3f19efc12612d4e3224271bdc91b10cf6b73e866d7018d25f07b","libssh2/docs/libssh2_knownhost_addc.3":"c5a2b8510dc1df43311f17073e7e720232f7a7e25d9ba7ae80efe2f26a133297","libssh2/docs/libssh2_knownhost_check.3":"2059d72130dc5b99c6faa8b399166a8495cf02b71313d6648778b11b0adab631","libssh2/docs/libssh2_knownhost_checkp.3":"88cac561cc381008f64d4c879bbe626afd669090648441c134cae83a5ea082a9","libssh2/docs/libssh2_knownhost_del.3":"34fbfa2954
 6d2bf0edc380270937658f818d2600e4bdc658d5ce28c7d255e1ef","libssh2/docs/libssh2_knownhost_free.3":"3e319da43cb185d73dc215a75351f330de2194608a1b12b8e0b623c900d4d96e","libssh2/docs/libssh2_knownhost_get.3":"fc04784b136786dafb210e018e758d5272c8d9d531c4fc5baac9f7b90f65bfd2","libssh2/docs/libssh2_knownhost_init.3":"509721c49287e0232b3cfeb41a8d4b44a45a195222a5694baf9d728c77225abc","libssh2/docs/libssh2_knownhost_readfile.3":"6d72d5be2d5dd56b125c1107632c58d5e8a692871182f3f883f5662f39d7dfff","libssh2/docs/libssh2_knownhost_readline.3":"e259eaedbe587c06a74ada7c1cf5bf28a168edfff2a60919985aa6c7a15e56f1","libssh2/docs/libssh2_knownhost_writefile.3":"5ef6daaf96128c0b756c9faf38b5fd60697fa93504a5cb9ce7139a3dc14f7254","libssh2/docs/libssh2_knownhost_writeline.3":"32c23d5b4393297935c3fa6e03d57a3bc1d904e5e469cf775bb0516f9f885147","libssh2/docs/libssh2_poll.3":"c4a377bc2be1c2789de7a57fa42baa51cfbb0bf4121153ee9cd5201507a8c2b0","libssh2/docs/libssh2_poll_channel_read.3":"5b3df35e57c3252fc63e819c69cc6405bd
 fd14c546b5cfc2a521563bcc9cb420","libssh2/docs/libssh2_publickey_add.3":"2e7c2772fb78b750b5aa94c7bd38c100e52493f6fb050762af924e26ab2605dd","libssh2/docs/libssh2_publickey_add_ex.3":"76e23274e8b4756b03359b0fb5bcd05becba4cca1212ae2c164a32c2f10ee50f","libssh2/docs/libssh2_publickey_init.3":"5643aa57554f8daacbbff9e539c68cd1093172bd86d859109e6446ccc91a85d4","libssh2/docs/libssh2_publickey_list_fetch.3":"975705aa9fc187961fbab91751a5f41412a30d73d65bfe54862285061afc6c29","libssh2/docs/libssh2_publickey_list_free.3":"5eba2104f91fb101014441df437c695b9b0b1e106b6268d623f886de6c237503","libssh2/docs/libssh2_publickey_remove.3":"69423e4d9d6b76388f6160eb473e82449700569d449911163609c8b1c629ed43","libssh2/docs/libssh2_publickey_remove_ex.3":"5c1632ac1685361577a4ddfd1f6257ecfc012225e1e8c2b126f93add0b5b6190","libssh2/docs/libssh2_publickey_shutdown.3":"b152e6c493896da374b7b93468b23d7012e6232db06c331c158f9057b8053994","libssh2/docs/libssh2_scp_recv.3":"e3af95d4147fb29a893ee80c8af430b7df1d77048d814c50052
 43c02fe221e18","libssh2/docs/libssh2_scp_recv2.3":"9fc689585ec209d13e5a7c5db6750e07b171103bd29d3522424f6d812473b95e","libssh2/docs/libssh2_scp_send.3":"0b72a5932217f8e561840de2ce3e5077bb40e7631b1dfb6f439d4a2413f83cfd","libssh2/docs/libssh2_scp_send64.3":"3225083c74987af71d4a2947a7852ac810fd87ab12532492f286d7e7d7547456","libssh2/docs/libssh2_scp_send_ex.3":"07818e45119b15208123655f945e1927c0971d21ae6d410fd26944b86cd41745","libssh2/docs/libssh2_session_abstract.3":"56b29e317d2676d842f3854d8ffd89723a40992897b962d9ae07b56b2373a727","libssh2/docs/libssh2_session_banner_get.3":"78804fe78c70c1fcc408a493564c989f3d3da36bf56d14344df150bfc65570c5","libssh2/docs/libssh2_session_banner_set.3":"c058557ca5d9633b560e05492212b52ee3f6477dae79f75c8ab4996828d88f09","libssh2/docs/libssh2_session_block_directions.3":"0006e5c9788d8b2c3976274b715ab712fedb6ee4d3caa09071b62b846b7d44ed","libssh2/docs/libssh2_session_callback_set.3":"6c33ad4047e740e5d020ba14cc5ce06beb0bf02b4b2f88c1ab7fd79e6e5f1b8b","libssh2/do
 cs/libssh2_session_disconnect.3":"382845fee521c18828a9611c286919218fe51a4a3185f37f5c6e8a10a081db66","libssh2/docs/libssh2_session_disconnect_ex.3":"5ed79115477f25aa8cf5998bf46eadc2383fd6e4eacee32622d961d4080ffa11","libssh2/docs/libssh2_session_flag.3":"18317502888f1b7da8ef132500e009c8eed72cec5ddffbeda575a4c5093d8b74","libssh2/docs/libssh2_session_free.3":"7fd404b4fb4c5e955cb2b8fee9b72a89864351e63c553e56a80dfc2af8bf200b","libssh2/docs/libssh2_session_get_blocking.3":"947a5fe43a518c13ba5049d820084ec6eede2bc3687923e67b28a75297431378","libssh2/docs/libssh2_session_get_timeout.3":"4e808b2407358466171f2546c5220def1db4460a16d1f24c60a4a5186d6c0606","libssh2/docs/libssh2_session_handshake.3":"fcb9fc145dc6f3b29871dcbe9c3d27529790e1cd3e20643c8aacb3d3d628fb5b","libssh2/docs/libssh2_session_hostkey.3":"0df40e6f599dacefcebf30b19331e4ce0abfad5bce75f5cffc8f4b7947bca5c6","libssh2/docs/libssh2_session_init.3":"ce1a0e9ecc5a17d607437b01f4ee94d5a0d8c5dbc8a04f1e26d3b74daedae57a","libssh2/docs/libssh2_ses
 sion_init_ex.3":"2c169699aedd0f9ca16fb71a90618738dcdfa5b2b70d857a39c60896ba62b86b","libssh2/docs/libssh2_session_last_errno.3":"fe92e9c94ecb5fa33bbf51f866bb62bc4a1e5c3ea153dbaf34aa6553cd477ebf","libssh2/docs/libssh2_session_last_error.3":"b14e30dc25d7daaf46ef119176af947efabfad29eff7f726635f2adb6260e97a","libssh2/docs/libssh2_session_method_pref.3":"6946c31e6d51b612852bed10d4ea869093a048f6d41131addbcb9c4dbbd767e5","libssh2/docs/libssh2_session_methods.3":"d1aaa1586bf15dad4e9f92828592b80d604280b30a3d0e21a71f5124fd1eb560","libssh2/docs/libssh2_session_set_blocking.3":"33c01981b30ead73c614fcb6f7f224a39d6e849e6a9bccc9b8dd463719e1a39d","libssh2/docs/libssh2_session_set_last_error.3":"147c7ad527163e73f3fe285d16c980de60bba09813535a7623a1e0a037cfd1cd","libssh2/docs/libssh2_session_set_timeout.3":"eae71fab2f62942d4e5b66d93a7f49347a08ad1afdfc9a81ce8fcc0d0a9b0068","libssh2/docs/libssh2_session_startup.3":"425118593ad0eaf0688c686d9b75f12b7cdb23d330445077907c6e2023cfef77","libssh2/docs/libssh2_se
 ssion_supported_algs.3":"a2fe37982e0f274bcaeea77ad33ca8fa06ea9377aa4e8196c3a8a827e2906b74","libssh2/docs/libssh2_sftp_close.3":"95f03395996cb7b2652cab241a7d91d0c57bec6d4d8f8097b2932acb56eb7bff","libssh2/docs/libssh2_sftp_close_handle.3":"c813fa985be5105cc3cacaf23dc01f0442628c005e629115992a280597301368","libssh2/docs/libssh2_sftp_closedir.3":"1230d8cc661c016991f32b757b11ee6ddd1ac551e5522c5e009f21ef624dfdc4","libssh2/docs/libssh2_sftp_fsetstat.3":"a7ab72ebfca8d295a2b48f2c14d831568042ef6a0528e590faa99f5e2dd00675","libssh2/docs/libssh2_sftp_fstat.3":"e354ea4b96d512a34db42be2eaaa2c7fb0bfed554e726aa79db7f45ade1f9dd1","libssh2/docs/libssh2_sftp_fstat_ex.3":"2446ac64b425dbaf115b37d29107b66fc0291c2ebd17898669c406a4fd57b78b","libssh2/docs/libssh2_sftp_fstatvfs.3":"a10a9bf1dda75b0e97966ed003d183728a8ded895eece58e458980bc742f7a39","libssh2/docs/libssh2_sftp_fsync.3":"bee468765b5d4a09a3b473eba0cf436328f29806953bc1f998d8bc97d2a3049f","libssh2/docs/libssh2_sftp_get_channel.3":"90e527f9eb6b0d177603
 28f6e3842f74d1d173fe88a7c9ec2357ca471e9c0f41","libssh2/docs/libssh2_sftp_init.3":"585d782936f71157d141474c94c897d7ea292580445550c25c8fd44f5e03052f","libssh2/docs/libssh2_sftp_last_error.3":"8e7b2fa2c5fe4792a39a5c1c24baf041c970e3021511b36e59979ed64a18b4c7","libssh2/docs/libssh2_sftp_lstat.3":"a01353b26374401029f5094a24beca08988ea201ca2197fef2b14f30bb2658e5","libssh2/docs/libssh2_sftp_mkdir.3":"14e04b070a6c351e2af6bd68f73a408e2982e9a358d5d2af5a46d8b422d27ce3","libssh2/docs/libssh2_sftp_mkdir_ex.3":"44c17758d2b0336f94c4004bdd2debf9e1632ba12c6db6df495c09a71a58e59f","libssh2/docs/libssh2_sftp_open.3":"af9a8c90999412d3371218f59859ff91c6a83eabee75f1712adf94c5bceaf1d6","libssh2/docs/libssh2_sftp_open_ex.3":"11661fbcec142d9afee722f5ce779bd32f6e0a2b2dc45558c3bd47292105231d","libssh2/docs/libssh2_sftp_opendir.3":"62639f60918835e08f3c00d708cb32af319b9a56d3c2cb33ad409b60b347b31d","libssh2/docs/libssh2_sftp_read.3":"1d0435c740470b8a6a427da4331b576833eead72f9d976001d8a1f55fcf24815","libssh2/docs/l
 ibssh2_sftp_readdir.3":"0e98293f67ae019adf8c5e17fa9f31f3e34b082c55ccd2119ee424f30c337fc7","libssh2/docs/libssh2_sftp_readdir_ex.3":"7f9a2bda1d49d12040796015a842b592decfb076230ee9c8260c31e7b12dd2cc","libssh2/docs/libssh2_sftp_readlink.3":"1834815d254c351664cacf38c06a4b232f099787cc09a41ef719a1ff242e4064","libssh2/docs/libssh2_sftp_realpath.3":"6b8e75bf89724998c414487d93f8c4899a3b1f4deba50806a798fdf9f9405bab","libssh2/docs/libssh2_sftp_rename.3":"eb87a9b1c94f38913c0cb62a3a474fe8c8f3cb0a874c61ced396a2d8bb92e510","libssh2/docs/libssh2_sftp_rename_ex.3":"12d2e70027755937df6de8b0836f75509f4fc5f1a5428fe5a92ae3eb23ff4b54","libssh2/docs/libssh2_sftp_rewind.3":"4caf86de2f35e2925ee637a68f7cfc2e76dab54571ada06495a0574e549c6a7c","libssh2/docs/libssh2_sftp_rmdir.3":"86a1935b7bb291041eaa7c0788f417c6398b39fd208b6bb478329299ae72a49f","libssh2/docs/libssh2_sftp_rmdir_ex.3":"17029aa15ef3e1c862731a7ee52e8f730dc8951e62e1c0539b922dbcd66810b0","libssh2/docs/libssh2_sftp_seek.3":"546a134db735df610032fa982d3
 c8c1013ced779e21faeff261d71041bcde8bc","libssh2/docs/libssh2_sftp_seek64.3":"07df7a2c8c9d75b198fa60909baa31e1c883002337a4c6b7a1b3a9c6ceb3a594","libssh2/docs/libssh2_sftp_setstat.3":"39c7f5d489ea5ceb51bd9c7de237464f5c510f3ce0983e57f7b69207ef957e01","libssh2/docs/libssh2_sftp_shutdown.3":"48bf057f1836924e3e5009890cb6e63ec9d11d0aa19abc258c75ee7c7bd097b9","libssh2/docs/libssh2_sftp_stat.3":"7fa4495645b580c216ca2279168b6b2f7c9c73a973dabf1997c02a0409d8c042","libssh2/docs/libssh2_sftp_stat_ex.3":"fd19ff075f44a1713d765330d069fd63cffd8b2dbc09ce9170d926f25d5f70c3","libssh2/docs/libssh2_sftp_statvfs.3":"5762f9ff7d56f44164db57fd048daa60173794c4e7a58ab2fb255e29f0ca2bb8","libssh2/docs/libssh2_sftp_symlink.3":"ae7ea167057c307552405124ad54ee488db7354e7caa974334e88f5b2104c88a","libssh2/docs/libssh2_sftp_symlink_ex.3":"7e22a39bb97548428cddc8a9cf3bc7a1ff57cde878b337a7e177730bf5c51d01","libssh2/docs/libssh2_sftp_tell.3":"ce22525601570f33d91469170d43470a8a9decf0b35ae82c2cea72fff1dc8d8f","libssh2/docs/li
 bssh2_sftp_tell64.3":"db5faf0fd28de4738e3062555c1d6981c2b272d7b89bd85e3e83d2a03237472f","libssh2/docs/libssh2_sftp_unlink.3":"d8c4c60c41e81149fe14a4a00cc114d3f7bb4799ceea4895c67d79363da3ae7c","libssh2/docs/libssh2_sftp_unlink_ex.3":"64b0723444b716d2b809a3b481024523fc8c62ab45d3ec4274040abf824cf611","libssh2/docs/libssh2_sftp_write.3":"a4706e9d6dabcde2aeccba27f7d7d5a3cef33dd21f4bf66bf5b181c3e8a3f9ef","libssh2/docs/libssh2_trace.3":"636417e1798bce85c2058cad56493919c608d426acaac409ec1a489bdef90fe2","libssh2/docs/libssh2_trace_sethandler.3":"b37355eff49dacc9916818db61258f21665fb68993e57ca9040db056453bf8bd","libssh2/docs/libssh2_userauth_authenticated.3":"81115e3ac2549eadafc5ab8c73462d1c5565593106c4d995a920f718e5dd451e","libssh2/docs/libssh2_userauth_hostbased_fromfile.3":"265670d504f8db399e9253af673264b92ae8cc3593912e9b2e6aee436d02fdfe","libssh2/docs/libssh2_userauth_hostbased_fromfile_ex.3":"a71631a3eb07ac88ee21beeabaf6aaccb7e93378c98eed228fa27f1575b04a64","libssh2/docs/libssh2_userauth
 _keyboard_interactive.3":"17d55c3ba83fc9b7a2fa1dbf0e0d1886deb87616298b6bf424b5ac7d63d0da39","libssh2/docs/libssh2_userauth_keyboard_interactive_ex.3":"d62646af0cf3257fa4a599a676f5237c1ab4d07d56b9b66745fe786f640e6afb","libssh2/docs/libssh2_userauth_list.3":"af6928a269c96480a6ea3a3452af7029577f69485fee36ecdd9dde48b4956a5d","libssh2/docs/libssh2_userauth_password.3":"4c8103bb95903b0b2ee6c2b1d0b3eac150ab31314ec023424ab564d29b1678a9","libssh2/docs/libssh2_userauth_password_ex.3":"afa13d3bb9bbdb3672e014aec922b2953556842b69fb602e8dc97f10d569f5d0","libssh2/docs/libssh2_userauth_publickey.3":"874ece028410feb1bb33d481ab2789e6fadc9a9974cf4e0a72517b4c3fb81861","libssh2/docs/libssh2_userauth_publickey_fromfile.3":"6864fc6411955179866986cf95f75ff41a022a4b60ceb177cf503da45a67b88d","libssh2/docs/libssh2_userauth_publickey_fromfile_ex.3":"060d36d8a06538035e0d7c678f78db16d68ad6f930c958ef3c1bd46f96f9ed39","libssh2/docs/libssh2_userauth_publickey_frommemory.3":"5022660ab3c6c7f596b92e887debb3c580dc21f64
 be71b76c83c033c0fe36ef9","libssh2/docs/libssh2_version.3":"d3feeb9f870be0dacc7616c44dffae9abddcd22eec9cc8c18a0526af723ffce8","libssh2/docs/template.3":"740b501cbdd74773bdb93c8a4d1ae1e175f3593c0eb93844ea2cad0c61e14463","libssh2/example/CMakeLists.txt":"f8cc011f16f189f485ed9060d71de862616c254dcfc1fafe49ff6425a4d89757","libssh2/example/Makefile.am":"0e7c6f2ea9a65a6eb253d721cabc8df573cd4d2606ddc7bd7499b701380157a6","libssh2/example/direct_tcpip.c":"1a335122f9e28b3883587768e8332f3883b462def477f8651b83fc1392e96dca","libssh2/example/libssh2_config_cmake.h.in":"115c1b79ea918a83de959f0f50eb98c2ce252b21b566b9ad56f3c23b68e48ae7","libssh2/example/scp.c":"87736832ddc36e80b52ed6b7f1c87eedcb57d739c80dcff5bbf2d610bfc7f7c4","libssh2/example/scp_nonblock.c":"dfa78c57e18acdb437f3a643dbace70802aa7d2d504adcd47ed63f744189e822","libssh2/example/scp_write.c":"3a3c4dfb3c4688558716a364cf0f4d8b767bf30c59cc6b352394a2d698370930","libssh2/example/scp_write_nonblock.c":"8071bf056b72eee39bbb1ee173193a79e6ac8a28127
 24b3e31bb919c6b8ba370","libssh2/example/sftp.c":"6a0bcb5ec7b3066cd040bfc29243fcb36f8375575db17415974a20c29892f6b8","libssh2/example/sftp_RW_nonblock.c":"a2eac2e5433d8e63fd416dd8d0b1424536b4dae701360bf9ec3024495d8c6eb9","libssh2/example/sftp_append.c":"e9aa3ad34d7c9aa119a841e16e99657aa28596b184ff38d09df3a1319dfbf9bd","libssh2/example/sftp_mkdir.c":"51f94316a6fc8ce1c6de9bff0599fa95a950a1424e94b676410d76b1e1edc879","libssh2/example/sftp_mkdir_nonblock.c":"0fb08ab3d217af555d7512693a56c63094642247054def280cbcb08e2a3612c4","libssh2/example/sftp_nonblock.c":"c7236ccc7897e1abd3d9176a33cbd059327d30fc95c7803f7e5f99bf3c448a3f","libssh2/example/sftp_write.c":"7e972aa778422c962ba0ebd2fbae109865b334e33c371ae94a8634e74ffd5473","libssh2/example/sftp_write_nonblock.c":"6b18c9371c2ed1e22b005232f80b99959cc68f2e0dc1351fa73d678e7c64a329","libssh2/example/sftp_write_sliding.c":"b88419136786cd31709d9466b0e4a131b990bbd425096276e5699559863d4bd7","libssh2/example/sftpdir.c":"d186de774a29db36a87fe2f66011acb5c
 5847316791c98f39dc2749a4c448209","libssh2/example/sftpdir_nonblock.c":"6282ae10e701e48063a793ab2e7a819be77f7267dd7ec29264339c41c5dad8ab","libssh2/example/ssh2.c":"2789139110316e87a06b4d6132fb86081c545084358a3ddf6bb5128423eaed49","libssh2/example/ssh2_agent.c":"3184d5a396a9067279ec16070c699a8baffdc02c70930f8cbecbd1cbbd489d84","libssh2/example/ssh2_agent_forwarding.c":"2db3d78ce1c5bdb2453f7d22cdff09cf1dc3e40aceb8a54faffe6f76af88d1c3","libssh2/example/ssh2_echo.c":"91c519486541145f579c550fddb5ffde5933ba0aaf22366ee8aec50c0cfe4933","libssh2/example/ssh2_exec.c":"67afd0ef23627c87eef2e4424967eef26f8154ce50c357cad85f7d3764fcd5b9","libssh2/example/subsystem_netconf.c":"9b076de4366e11ca81e88d60f6dc41ff3ad897d3096f148ce4ce00102d7256b0","libssh2/example/tcpip-forward.c":"0a929eec2a7274e7592ded5f63230de45c1f30578ce92ea14a010a33b231ac42","libssh2/example/x11.c":"310b0aef741a513db213a895fbf772076e35c2ee83eb4ad1f300493ef6b5b436","libssh2/get_ver.awk":"ac9314659d618e57f0d57e9cb2dc5ab14ca342f099de673
 8e93d58b91f698f14","libssh2/git2news.pl":"26cad7a3870941f21348bfdffd05fff7a1e1c650b8e38fe469bab3a2a221f26c","libssh2/include/libssh2.h":"fe2c560b62960a968414c47f9fe640f4a4bcce5340a51a94083d1cc547c98a4e","libssh2/include/libssh2_publickey.h":"2d419bdfbc155cec62cc23d7cb87f3d9361c4f26ce3b3910c74cef715bd2e70b","libssh2/include/libssh2_sftp.h":"8a0c63c323edc42286cc608f9a53cebe46ac91432e1080a8520ab69d3caeadbf","libssh2/libssh2-style.el":"14bd86ae83b499f88b47f57cee18f1a7f4f41650e16e34af4b8ff03970c3c059","libssh2/libssh2.pc.in":"a2c375f048235970c995e4a091fca2cb500574151c356f7682d44deeb90623a0","libssh2/m4/autobuild.m4":"37dfd034b5ea52bede69c54901b818a461ae73e2ab1e28c61c229a87f24a1817","libssh2/m4/lib-ld.m4":"18c4c458009da32c9daf0ea332a539e5edc82ba009b6c2faac004626313f00e5","libssh2/m4/lib-link.m4":"d7aab3772e5b60d3ec57ae8dc66d9b762f5c68ef1e8516df25fadfa8bdfef379","libssh2/m4/lib-prefix.m4":"4797426d11dad1e5e4fdbc8bcbc8b10d9750f47bcb74e4c07a953a15265e902c","libssh2/maketgz":"3a5878c78f38abff
 9158f88cebd11394a5998dd2ea3803a4aa5b4bfa885e46d4","libssh2/nw/GNUmakefile":"d6afc1888b0fdfcb50b29a3d7080a4183de41a444c7063db93a1b56d533d8dd8","libssh2/nw/keepscreen.c":"f95e6f4851f16bde13e51a1f4f6f405a142c6a7940beda74de8058db2f170ef6","libssh2/nw/nwlib.c":"d81b0ad6d05938507ebc3c0510021e889a2d68a74d50709df981d2339798eb78","libssh2/nw/test/GNUmakefile":"fb00a4a6776f14c1789ac8abc0b0136b79813177221355fbd3c5b1907da938e2","libssh2/os400/README400":"f5ce6d4f86e2334f5c271020195fb0964083e19e2f44dea4c4d62e7a9bc9f4da","libssh2/os400/ccsid.c":"07d12155f5b9b2be9e5477fc2818a7e98183eedc247370de04d718eef506fdb8","libssh2/os400/include/alloca.h":"f2b4c60ed1f78832b9141cb64e5d1d8e187d90afcb5f9f1d56dcf3f9e185d236","libssh2/os400/include/stdio.h":"ce35104d75377458c0c38aded5375141abf22e71215ef7533a482ceec279c731","libssh2/os400/include/sys/socket.h":"05599c77ea5f79337a77e7b24f4d63f40b929884141fbb66f356d825c09c8dfb","libssh2/os400/initscript.sh":"b27631198e5eea8048684f8fae95ef27eef1f712742265022bf4eb1ebfe
 589cd","libssh2/os400/libssh2_ccsid.h":"13a0b3c9165d7ef27ce242c64ae191f876a1fdd65f0b4d768cc3235c2509910d","libssh2/os400/libssh2_config.h":"d5615c238ab5642d19c29a04f6e18ef0a1675043861cbe3eebac2297e5acae09","libssh2/os400/libssh2rpg/libssh2.rpgle.in":"0ce3e5bb7c33bb6dcf960af6267b4c0e3cc16259ae881724624c9fafbcc090e6","libssh2/os400/libssh2rpg/libssh2_ccsid.rpgle.in":"439d9e4c68c9b20a618e305e51f54f817a9cc51dd37b62f5792232048ed3ff80","libssh2/os400/libssh2rpg/libssh2_publickey.rpgle":"b138035c36feb1816c6a99b1d98daff7997b05d02325cad1d9909f983e4a330e","libssh2/os400/libssh2rpg/libssh2_sftp.rpgle":"7d6fcfc290b07c8bafbbdfcf61e19456ab6961afe23a0aa142110052a33e7ace","libssh2/os400/macros.h":"38360f3613c00f49178996cf53d2519009a0b3fab161db7aebff143149730c5a","libssh2/os400/make-include.sh":"c75efa9eba5bcaa1e75f60110dd463c2c6866b486186db705d49518c1b0fd8cf","libssh2/os400/make-rpg.sh":"41cce97d1dec97571160c98967db4ab27af9c7890cf4f7aa238b3d6b6aa69eee","libssh2/os400/make-src.sh":"c750bd85a5153b10c
 61c069a7d1ec253ec3587554f2da60a144dc4246ff50e67","libssh2/os400/make.sh":"07f221c0d6a9e7b1c55e5d1cc8e3babe7edb6b4bad3063827b55265bec9456e4","libssh2/os400/os400sys.c":"2c9bc9de576376b0a37c401c64b59990e2f74ceafdb0a8c6555fb8de5be2b01a","libssh2/src/CMakeLists.txt":"30b56cd9854ab0b20d1527f368b35c341ce8bed37708f316edef8e7a229f06a1","libssh2/src/Makefile.am":"5e0e38d3203bf1f1e0f1acc57b98591a4de80cd5efa26e5dde6b7348f2df1a68","libssh2/src/NMakefile":"bad4819608f02f282aae84462a7c3f1d1b199ee0fc86abdc9ab7326ee6482576","libssh2/src/agent.c":"7bbe43a2a9bbc1e6d4c2ff6f2c10d5b9d46920148c10b1788f355b760303862b","libssh2/src/agent.h":"1348e28650ce7f4350e4e1b92e26d7c45e729fe3b9cd68db716e40a64ea15269","libssh2/src/agent_win.c":"1c8d67a82e21c539c62f3a0b4c715fba81ca40cee588588d5e4f1abb389966b1","libssh2/src/bcrypt_pbkdf.c":"76b4d9244aa61fba7db31f4763336d890d5025f9f62f3bb1369eb3b0986fca6f","libssh2/src/blf.h":"db4921417d17d79529c393528e541bad14434777eba8cc131ed74f0317dabfe3","libssh2/src/blowfish.c":"830
 d5c2b3ac01b1a96253cd78304af11bbfef822a0e59bbf12d0d370f0f0f43f","libssh2/src/channel.c":"de351bd081fea82da9d1bc613bb4cce9a1b08bcf18839433b073b4ea5075c077","libssh2/src/channel.h":"3be8e8b444461111fe0d35b21137ffcd4f681c1357616e0db4908bd434e97bbc","libssh2/src/comp.c":"0fd0cfb6b74e2d94a2da15b27e8e99e42f277dd12fd27ccf17bf566ad8009993","libssh2/src/comp.h":"7aa028c23316132522362bc9f397e22bae94e9e620eb80ac12a2009278532926","libssh2/src/crypt.c":"04e3683e3a16046aa7736b2401bdebea1feffc1e7fb928952dbd53adcc5a493e","libssh2/src/crypto.h":"37d8b6726c771d88cee1928391ec5b5126617fc1f04f7e705b8fb041a8fe91cc","libssh2/src/global.c":"9551963ca2fb9c321703db04952d9b05e2e6049e12d8bf6ba6e9291920b87a37","libssh2/src/hostkey.c":"1ff0d3709396e9d0c4061968a7159bbf00af7c3fedc37ec32c4f8cea682dd492","libssh2/src/keepalive.c":"acc373252f0624126226e2528897757da61c870374d5905df29a17fa185214ef","libssh2/src/kex.c":"6fbb83649de7afcb197c285f41f6d2c0576e17bee93d6d51fb85421a21af8258","libssh2/src/knownhost.c":"2ef607c0b
 b2ef7ec9a4cf41158813ca8c62c55ace046a02a2b862cfdede25e75","libssh2/src/libgcrypt.c":"cbbd92a4b70d620517458412390519d40f1e153a882be8d5fe6c5de6d3570336","libssh2/src/libgcrypt.h":"46d7c65c53b1e355327e1b314d5841d41cb5426faee36ab6bbc0b7b48871b9d0","libssh2/src/libssh2.pc.in":"46db28ee6987b9f399c0e3b02dd5374fef2831fd4051109a478e85832e1913df","libssh2/src/libssh2_config_cmake.h.in":"07fe4470fd1643c51e5f2a868b053d733aaee891f1f886f4b8b848fb70db76cb","libssh2/src/libssh2_priv.h":"7cf354751d204d0ae1d3bf8bddbcfe38bebdf792217c34f9ea00947c57fc992d","libssh2/src/mac.c":"3ff6c3d22e5e9a0cc2d69b2f840606f560b83b9d40e276927d0854c20ec35b27","libssh2/src/mac.h":"ead9c368cf6700776d6083363a275e26d0e89de665b40b48fed1f5cd6d783b3b","libssh2/src/mbedtls.c":"3566fc0fc5d2a658780673741678f811e1a4fbc99aebaaeb2419c65b5887c2a7","libssh2/src/mbedtls.h":"e28d5e7b08c0d67f1d8e3e2d2fb7fef69df049cf8e188a7760abd7b50d91c7e7","libssh2/src/misc.c":"64f7a580f0cf00d6cba86de4fd5cf156cba038b2a321efa8504236991edff50f","libssh2/src
 /misc.h":"4bcc54e2280af4e4934e7c14a32e839bc9d09dc33b52b9a75f27366215a61556","libssh2/src/openssl.c":"126dbf0e4676f84a1acb46b154d2d32f42cb47a81f157a16ff1391a02c615baf","libssh2/src/openssl.h":"5dc71961f26506a53b7d724d385e5ba42ce75c83e00862041697e0f015a98166","libssh2/src/os400qc3.c":"f017c70d602941aca07f6fbe5fd55cc9bb8ce6c1d33fdb4e6f408d99edfdec03","libssh2/src/os400qc3.h":"e2d33622b00442fb2e2fcbb26fff7ee3bd997270f89a98a323bfed618956b28b","libssh2/src/packet.c":"e5b3f9dc190f9491a9746dd91e7da8d2f6639ef1a1e62552556753539fc1ddca","libssh2/src/packet.h":"cbd3fe922ff28675f6f39b31131d7832a07263356d0e7d55197e40d5fe244577","libssh2/src/pem.c":"d1adf7211b744554b8c41180c87e8d0aca2a7babceee91c75032e68655e41e22","libssh2/src/publickey.c":"3e1579cdc688dee088294975ee4b09316cc68cd9083ea6170a8d4726d820ea6c","libssh2/src/scp.c":"ef7120de5d824d9d4135b846021af8f42c44ff790dacabc8c4d23bb702abd81c","libssh2/src/session.c":"3d1ab27b52be357e36fa337e7461828029690cda8c69a705222dab2228d85065","libssh2/src/sess
 ion.h":"c3918ff057ebdb51116d7552e27b9f7d18461e1fbba4c1b635465dff909d4623","libssh2/src/sftp.c":"9090319e2732c400a344c78f3e9695ca6e1a3466159ffdae3e3c5f52b10b9586","libssh2/src/sftp.h":"3b4d6460b857e32707116814f1ddc10dbfa5f804e407883e77bdad6c36db8c14","libssh2/src/transport.c":"4116293d9afceb3a8ea8de6a09bb3af42604632b3536f305240b7564be0555fc","libssh2/src/transport.h":"4a57bc5ecc21db41729319d8fd34808f042cfa7d155be306ec2165f2d81f010c","libssh2/src/userauth.c":"144ce811b1acf4be50bba03eee53a625fd5199815d04436858316912168fe05f","libssh2/src/userauth.h":"7d930eb690721808c6d89ba917045827118a3b98b04333935d8e91b49f651b84","libssh2/src/version.c":"544a1389f5a6bde4ec263991d994da3d9529cae5635aab6730702a6575bcc0c5","libssh2/src/wincng.c":"ba1fa277b369df2b51d23f354ecf28a4987ce0a0d29023e6af5ffeafbc4cd359","libssh2/src/wincng.h":"7bbc6e35d281bee22d52883c728b626336d3ec8a4ce6fb384f96bb8b1cfaca8f","libssh2/tests/CMakeLists.txt":"717707a250f05fb65e7009f696c70bd86d7d2ec16883127781b617d0c692cd82","libssh2
 /tests/Makefile.am":"d9f4abf187cfd058373c570fff74009dadfdc9c96f84375ed5649114f0d8369f","libssh2/tests/etc/host":"6eb0f1bb23d7877ddcd502159e6673c053b5ea1846630f21651ab58ea25d7a6f","libssh2/tests/etc/host.pub":"0e2479a973fbaf1f7f5dfebb111e2b199ee59c0dcfdf646d26760eba0b8b2aa8","libssh2/tests/etc/sshd_config":"2ad4ea47ddb633c7a2e000f2d6619d08bf643591f26a7a0b92d0befe518ee951","libssh2/tests/etc/user":"776aebc0c12e466e4b65f1a44ae5235dd70687ab03f283aa3d9a6df70d3bdbbf","libssh2/tests/etc/user.pub":"39bc4445c24c32fe5e64a6ee02025f3508b4334b2813e1a87c40d44ebc5f8c1d","libssh2/tests/key_dsa":"2e5b8a618e853eff7b3e0d2928203529fe18a3ae62b46a82ccd48a750819b8c2","libssh2/tests/key_dsa.pub":"12aecbb237794fc79d4a96cebad1c4badaa1902b3f1788cca83b28a1f977b895","libssh2/tests/key_dsa_wrong":"21f66160d72789400c5420f460fb716cde82b5afc5c09f3f7512d310e3c8e0b2","libssh2/tests/key_dsa_wrong.pub":"0274eed003e62413aa894abad044296c6fb3cc19450457a282674ed3836518ea","libssh2/tests/key_ecdsa":"8fb4d570516afc175869de76
 86125a828e18c38ddd4c2524c5a8d05c95ba7e7d","libssh2/tests/key_ecdsa.pub":"bc756bc47e3afd11437cd40ebe8ce5c8fca92ee03c6e3f01b6c5b44001bbc7c6","libssh2/tests/key_ed25519":"18e808415d2f344a20b7cefac12f0df0af4e404f446f5c690000c21987ce8795","libssh2/tests/key_ed25519.pub":"e52bcbcbdcdbf547a121e92bbb6f5342375719988e33ffe7f228dd2b935c98ba","libssh2/tests/key_ed25519_encrypted":"fd1e9378f94f2d5514e16f32fcf175e8303433750c81f2def3814d5bd44a13e3","libssh2/tests/key_ed25519_encrypted.pub":"7ceb4062d5fe17f190eb32c894e4cfd76e00db7c1b16de7516df8f910649469d","libssh2/tests/key_rsa":"9d8f4c955624a4af6fcb754e74e2abe1d3e7fe6340f6063617cd58bf122a2d59","libssh2/tests/key_rsa.pub":"4293f28b7033d459618b277374d7e932869964de131bba1d427030cb5e70c297","libssh2/tests/key_rsa_encrypted":"fc3872744c7bf6db2df4ab2ea5701370cd8bd39367d659eaeae49b2dbe7bca34","libssh2/tests/key_rsa_encrypted.pub":"1f340ccab8b86e51d4ee7585d61d5e49e3a32338ba9eeca65988a1d751112c5e","libssh2/tests/key_rsa_openssh":"a146196a5b2189b40bc00bdcd
 1958165106ca21e72a7d02c0a7f95a6dd926487","libssh2/tests/key_rsa_openssh.pub":"d564da6c612286603a83af006c3a6efe53885a2417aa25f234818612e16bea66","libssh2/tests/libssh2_config_cmake.h.in":"193a748944f6bccd3787b1c3958ddf95c1c7ad9b25e5b8f4b42cb48987e34668","libssh2/tests/mansyntax.sh":"71c56796eaa4008910b3d67b885b9a7e2c018d0f88be4bb290334afb9ff23bde","libssh2/tests/openssh_fixture.c":"7c17b8373b09dfe53489e96854fa89f6e6e3c13eac838f79179f38ad6323a501","libssh2/tests/openssh_fixture.h":"21935165166ce4518c6534070cc506fcd85ece95238fef29e6b0be784c05d7c0","libssh2/tests/openssh_server/Dockerfile":"fe4f6271644f6a29af0e077902cb7cc80b6226ef0e1976438dcd74148d26823c","libssh2/tests/openssh_server/authorized_keys":"58c4cf998535eb4123eddf7cae7da4413eed50e3827320187380ec7925fcf61e","libssh2/tests/openssh_server/ca_ecdsa":"14e72246d3990d345c30cd3d06c5c7ba9496057d94da2f5a6f14a7c636663206","libssh2/tests/openssh_server/ca_ecdsa.pub":"2925ca6bb4d280aec3dd68041efc2f06e959295932a26f73a263c939c03e3220","libs
 sh2/tests/openssh_server/ssh_host_ecdsa_key":"03753b2b4942081d1f33201a193487ebd5a577e0bfde45f7e03a1de5ae404688","libssh2/tests/openssh_server/ssh_host_ed25519_key":"18e808415d2f344a20b7cefac12f0df0af4e404f446f5c690000c21987ce8795","libssh2/tests/openssh_server/ssh_host_rsa_key":"11a57dc115ca17203d6382ad6fdcd8df33bd0f23ff6bf38ee4a697260ffd1a11","libssh2/tests/ossfuzz/Makefile.am":"049665a167b9f4cd664b12884ae4470c0b0b2077931a056ed55d61784b230d88","libssh2/tests/ossfuzz/ossfuzz.sh":"6fde8ca30e3dfc0ade9da4d06f5e34f73a51c6fea72e3a1348cf5ced10b73d80","libssh2/tests/ossfuzz/ssh2_client_fuzzer.cc":"accadbd90783a3e7fa2311e749aab641f53851a14a17c2e8464bf85c1a5e887a","libssh2/tests/ossfuzz/standaloneengine.cc":"f6eb3ebf7e14252339a21fb887a08b2e7638a7ac77f706ed80508b2c0d54d81d","libssh2/tests/ossfuzz/testinput.h":"ce435e13e87abeec0a297ef3b566268496ecbd517c1d09dfa2232dcbbec9be2c","libssh2/tests/runner.c":"696b83fd77bca60560c1609212c59ad986bf151cf72520b63d23643111a7ce4e","libssh2/tests/session_fixt
 ure.c":"0e81e1d8e9999d24120fd8be8b26cf6984578c504f46d009cb816fce50412762","libssh2/tests/session_fixture.h":"d4f098a586b5f7dd0f3785b86933c08096bc12a2e55f07fff470db6fc7bbd076","libssh2/tests/signed_key_ecdsa":"796da5d8d420f644f47feffffb0357ac99b299471e4d757f21b6cc8bfefe8f0d","libssh2/tests/signed_key_ecdsa-cert.pub":"0f2e6d1b46874a01cc36ed766533301622d64fa88988575ca77eee56da7b3952","libssh2/tests/signed_key_ecdsa.pub":"d6b6f80d9117f896b99933eba19b012f55068ed8b77956f1a7b0510026c2876f","libssh2/tests/simple.c":"4afdeef598aa669b5cd0e7388dcf2e579f2c0f9c954face71d366250101d270f","libssh2/tests/ssh2.c":"3a8605fd3dd6151c569bc12c07ecdc33de7d704b6224da2dedfe3c76494e015b","libssh2/tests/ssh2.sh":"7bbe65ee20f4e47e9264bd74700cca16ee066aba5fb9e4e42f46e1cfdae4930e","libssh2/tests/sshd_fixture.sh.in":"c8b93076f66222f73329472ec151b210e55b39024de5d3c18a4c609b65d13b7e","libssh2/tests/sshdwrap":"21649ba440cd534f4bfd52c0a8de339565768b373c172dca106cffcc8bd06e09","libssh2/tests/test_agent_forward_succeeds
 .c":"a5b9f9009c6818b86f235debc2ee15de5ceb0cfe1d9b539270167058afb4e6ac","libssh2/tests/test_hostkey.c":"f1059c3ac304332342f39f32288afa3f61f9bdbd5d617fe6052491b20bc0672b","libssh2/tests/test_hostkey_hash.c":"e745d8b4ad92c858dc588e3494e183f47d591c1ef2a13b63e2122f478545093a","libssh2/tests/test_keyboard_interactive_auth_fails_with_wrong_response.c":"f585a7df65a87fc4905f0b165531beb41455486919ed3aebbe9804ba5795b9c7","libssh2/tests/test_keyboard_interactive_auth_succeeds_with_correct_response.c":"8a112c876cb2786eed61de0f68f0a93ee3840269d8d6610e8ebeeb9a66c43533","libssh2/tests/test_password_auth_fails_with_wrong_password.c":"e3d588d9c6850ab69bd7674d2027563ff9f1491740637506d80875e66609974d","libssh2/tests/test_password_auth_fails_with_wrong_username.c":"c91608bdda3a83a62876725ae2d7002ccb3332bcbacfc9c9578e7488c0ed4cef","libssh2/tests/test_password_auth_succeeds_with_correct_credentials.c":"80d253225d68bcb7dc4b94b53374aa4de86c6995481de0974b6284bf87a91583","libssh2/tests/test_public_key_auth_fa
 ils_with_wrong_key.c":"104b08aa9bb5f1006e07e59dece417a2d6a5f60ef6c3f8dc62b6a8af95d413e0","libssh2/tests/test_public_key_auth_succeeds_with_correct_dsa_key.c":"4b397de742f0d2fb15e86d20451f109fedd1ba28b0622496a2d030f9e9f9ea5a","libssh2/tests/test_public_key_auth_succeeds_with_correct_ecdsa_key.c":"53bd6d99a243aaedc20f7de5c974c7c04e38090a415d338cef2d7357d7644912","libssh2/tests/test_public_key_auth_succeeds_with_correct_ed25519_key.c":"207f499812271669d2a9ff5a286761a45840de9230c07bf72426fcd59a682317","libssh2/tests/test_public_key_auth_succeeds_with_correct_ed25519_key_from_mem.c":"4dd0a8251a41d0dd68490fb7abb9b0a1cc190af1603815f3050e29e2a7d6bc8a","libssh2/tests/test_public_key_auth_succeeds_with_correct_encrypted_ed25519_key.c":"6e5c107ad53c144892c54459f89ef2cf8a25cbf977bbd978e4517cb5959a2565","libssh2/tests/test_public_key_auth_succeeds_with_correct_encrypted_rsa_key.c":"dbc95a803a54364604ab379b512fc98c33d791a1df4e33e4027b881ecc2e75ed","libssh2/tests/test_public_key_auth_succeeds_with
 _correct_rsa_key.c":"93cdd2513af42d46552baa273401910dedd014951f836175ec98b827532c5b6e","libssh2/tests/test_public_key_auth_succeeds_with_correct_rsa_openssh_key.c":"4e6d3ace02cce1ba8c1b4b6e5d774a8a4d259eef8314fe6c3ae0d6003a87dcd8","libssh2/tests/test_public_key_auth_succeeds_with_correct_signed_ecdsa_key.c":"f16a0dc74d16f0d27f10867f0ddd5b306fc4b16b2bd8e401a5451ce71c7649f5","libssh2/vms/libssh2_config.h":"1c5c4ba6ab33bd1d9e4ce0d84e1107ced89d27a80e8505e1b428fa942edefedc","libssh2/vms/libssh2_make_example.dcl":"7726a5d4f07d522aa712da8a6ca7b998cd93ca950aaa544a5eed1790dc69c775","libssh2/vms/libssh2_make_help.dcl":"9d04ddc32831abf63b7e042dd0677da83599f11497d364b02cbe780419e248e4","libssh2/vms/libssh2_make_kit.dcl":"e7c23c9db4583f6944cd8973cd813a6d65749170417b8384f94db69597f81f1d","libssh2/vms/libssh2_make_lib.dcl":"1549134cd4a4bdf2543f900ea9c811de1c67895e1e830f7ddfb384e7601f56a4","libssh2/vms/man2help.c":"ae61cab505a4a9c87bdd103506ba9a36fd7ba92714edd9f67d022d8a9474e6bc","libssh2/vms/readm
 e.vms":"30b5d682da37cf16352152daa682cb04c56e1044c77fc4c4da77bdc9709c33b8","libssh2/win32/GNUmakefile":"0c120532da875411df50b2f4483add53afd9345b2f4eab5f3c6ca5ccf7b17eb9","libssh2/win32/Makefile.Watcom":"475b8b37143bad986386ca1d2c777e9f8e46d0172ca4e9f70c613c84bbdece4f","libssh2/win32/config.mk":"e2172a92c5b5b9f2215c5c11128009cb6ba8a1f25402990c1f7e8ae78449d289","libssh2/win32/libssh2.dsw":"b16e14f1e5ed93f52e450b03d18691bd15a17b13b69486551c61b455cf823d98","libssh2/win32/libssh2.rc":"29a25c29ed977ba78619a59bc858508caa6f0849607c02da8fa7fe71b6fb7195","libssh2/win32/libssh2_config.h":"d5e704c80aca43c33698bd45059eecde05b098049192bb9f0640af593cdb2cb7","libssh2/win32/msvcproj.foot":"85c21ad71a2ae878242d9b370e96dbcb7433b77dc9fa4d1fc903ce0582e0f62d","libssh2/win32/msvcproj.head":"3a9edda7c4f545c43178c826cb0a83f9e2f38ed61cbe6b3002b9683cfebb4fb1","libssh2/win32/rules.mk":"5f68dc0a3ef0f61d783289c98c00419a0a76a2b866ecd0f86404ca1d3effc12a","libssh2/win32/test/GNUmakefile":"e2c77b03fa88a88d90fe1dcb6c0
 95935ba99b03b56a78f101a373ff208e1369a","libssh2/win32/tests.dsp":"73710a110000074bb299c9b780fb4fdc9e7a7edcefe19428de89c33d65e77841"},"package":"b094a36eb4b8b8c8a7b4b8ae43b2944502be3e59cd87687595cf6b0a71b3f4ca"}
+diff --git a/vendor/libssh2-sys/build.rs b/vendor/libssh2-sys/build.rs
+index d1d33dc00..7f826638f 100644
+--- a/vendor/libssh2-sys/build.rs
++++ b/vendor/libssh2-sys/build.rs
+@@ -121,6 +121,7 @@ fn main() {
+         cfg.define("HAVE_EVP_AES_128_CTR", None);
+         cfg.define("HAVE_POLL", None);
+         cfg.define("HAVE_GETTIMEOFDAY", None);
++        cfg.define("HAVE_OPAQUE_STRUCTS", None);
+ 
+         cfg.file("libssh2/src/openssl.c");
+ 
+diff --git a/vendor/openssl-sys/.cargo-checksum.json b/vendor/openssl-sys/.cargo-checksum.json
+index 8c15ebcd2..2aeac0baa 100644
+--- a/vendor/openssl-sys/.cargo-checksum.json
++++ b/vendor/openssl-sys/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"CHANGELOG.md":"6ee4e524e49a4e8cd3164701bf18fbc641c7a014b756b5de6b3ccc11fa588c70","Cargo.toml":"1a6b84bb11588fb0fa8d28741ab548726cef34e546de3dd2280be1d8139f292d","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"c5ddde25c2756a1115daaa671fb4297cdc83bf23009c8356ba65b5311d0dd30d","build/cfgs.rs":"193f81ffdf211f056599072e8910d59c2134d3df85fed9ca693bc59f82cb73d4","build/expando.c":"d6f6f9f7d9f79d03b96740fe378e6d4fd38e9447abf7839e62a5fae3eea49c14","build/find_normal.rs":"b6bc74f91a52bb592e14c085061b477722d7f72eaa33a7590fb01da46cd35b7c","build/find_vendored.rs":"7bf0e59c5646d72ee5a4392ad970fdf5c20288ddaf54dd86a8caff49583b38f5","build/main.rs":"c6e1ba232c3334a726707561c7cb0c87c841c75b1848880ce03c689f5d9b2b69","src/aes.rs":"822bf666db351fe6ef9607c918081d6ad378fc1cedb05290bb746f86980c6088","src/asn1.rs":"801c254afc76b0c29b756bd86a149361609f82ec33c1f1fad39a512fbe4e87ee","src/bio.rs":"3aac4e38ccf8d832b4156908cd3f1ff9c56f84c05d2f07ed7a3e3fcc
 abe965e9","src/bn.rs":"c71b9c79f704a94a889d27bf75e7e5b1f9f10b0df0aeb485aef509cf05d7467f","src/cms.rs":"1e1500367732915e756ba7dcee4a0691ba4fab770e0cef88267b74111e99e127","src/conf.rs":"511e008c18039f54d856d70b80009426fc7f4ce34fe4304e2c58ebf465031de0","src/crypto.rs":"fa513478e5c4a1e9d54081a9c79d48400f726c7047e776aa3f1adc023d6600be","src/dh.rs":"fb3b539eec4434b448b30df19e2e2ac5ffc3bd11bb817c7fb9090186ec3b0146","src/dsa.rs":"ae79baf231681900ea76304285b3ffacf5298c90b8c04d371269cf4adbb5b9fa","src/dtls1.rs":"0477022d5bcf2b7a620c70ece4da08a2958be3eca5a57127c89d79525c692ebd","src/ec.rs":"018a2ab377804bb735206e88d0561ab16098e29007d1a1fd0d565c8e492544c2","src/err.rs":"9e6c84a170dce46db74414a64b9e1855845afbd8180100a2d9412f7509f69284","src/evp.rs":"c947ddf745e4fc761f2b4b7886246f96163f41ff8ccc3c822e46ad38169d2c94","src/hmac.rs":"fa3976d94a1383f300bdec228270afb8b47c97bb019d727c7d59ba783be3c42e","src/lib.rs":"19ddf11d94bf469abb3f453a6b38886f6ccea4bc6004477f36b200516f5fee44","src/macros.rs":"7ed99c
 00c53ee12ea92634d4ace0af84845ebf98819869746e7896c8eaff23db","src/obj_mac.rs":"42019b142e523d7695d8c14ee7f72fa4b5702c07dee98fa12e70ab7dfcc95459","src/object.rs":"9ec1a26968e3efc87b24f287b92331fa38eaca048a3919e6514f48d38c7df9a6","src/ocsp.rs":"614492810c5fadd0c1c4bb5eda165fb7e744eed7b04ae61d582446f5013e733a","src/ossl_typ.rs":"0d8dd0f82ef08672ab3c5059d2335b7eaad2d5afc0a20dbf26c2476c99dcae8e","src/pem.rs":"c92d1d31e6f70f6704f148e370a8b4228d6305b51fd3be907c49014a8bfe14ba","src/pkcs12.rs":"4c3c1cf2e716454c5fc94c3d5e1174922c57b9de796253799437dc13303a68d1","src/pkcs7.rs":"726614946784f919db88fd5282ec66d5b9df2edafc98ade9614758e109176b31","src/rand.rs":"c771057f37c64406aa750f36397fa877caf330a8c725e49356c7081c2b2fdd67","src/rsa.rs":"d45d421339b903b0d33817e93be5e939964431f9caed343e5c4490382cfad5b1","src/safestack.rs":"6c39e28565d34efad707d77561d4caa99e3f028fcac3a2ef6fd403a78de1190c","src/sha.rs":"16a4c77cbc38926b8f8eee07b0beae8dc12cbdc8cfa599d4db66fa84a7b3871d","src/srtp.rs":"1c4dee9e6c139cc70
 416207786e385f199321624fb9fbf3cbf39a8160c0c405d","src/ssl.rs":"f0dd56aef28630ba8359e49538664160b54f58e255cca1f5c239f23aa820de1b","src/ssl3.rs":"9336c816e00847d552dea22587d4ac72ff3cbd469fa5ff750423a19ea11e68eb","src/stack.rs":"1a509907283e5a2bf88cf193ce607f49ce7d2d95547c2ce2abc0fd4567aad334","src/tls1.rs":"60ca3dea1bbfda645bde563b4a878dac129c3f760e3ad572381000fc7a8ef522","src/types.rs":"0b9bafc6f5fd373ec8c01e49339f7fe7ef1d76e44d60cda59f60c06982b4070e","src/x509.rs":"785bcb26166b8f39e616e5ab9a0358814773e96de51b40fd5ae62b45a2edcda6","src/x509_vfy.rs":"e530e2fd91e959715265b40fba95576bb53ddcb4e2c6586c2192098e0e8b1cc1","src/x509v3.rs":"520253195097d134e553c6378c1db2510eae6ccfcab6f6fb08919697bc0f023b"},"package":"7a7907e3bfa08bb85105209cdfcb6c63d109f8f6c1ed6ca318fff5c1853fbc1d"}
+\ No newline at end of file
++{"files":{"CHANGELOG.md":"6ee4e524e49a4e8cd3164701bf18fbc641c7a014b756b5de6b3ccc11fa588c70","Cargo.toml":"1a6b84bb11588fb0fa8d28741ab548726cef34e546de3dd2280be1d8139f292d","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"c5ddde25c2756a1115daaa671fb4297cdc83bf23009c8356ba65b5311d0dd30d","build/cfgs.rs":"193f81ffdf211f056599072e8910d59c2134d3df85fed9ca693bc59f82cb73d4","build/expando.c":"d6f6f9f7d9f79d03b96740fe378e6d4fd38e9447abf7839e62a5fae3eea49c14","build/find_normal.rs":"b6bc74f91a52bb592e14c085061b477722d7f72eaa33a7590fb01da46cd35b7c","build/find_vendored.rs":"7bf0e59c5646d72ee5a4392ad970fdf5c20288ddaf54dd86a8caff49583b38f5","build/main.rs":"137b9977adead26cc29c7c7ef2501516fd4b8540335e3b8b2690e5a6354ad202","src/aes.rs":"822bf666db351fe6ef9607c918081d6ad378fc1cedb05290bb746f86980c6088","src/asn1.rs":"801c254afc76b0c29b756bd86a149361609f82ec33c1f1fad39a512fbe4e87ee","src/bio.rs":"3aac4e38ccf8d832b4156908cd3f1ff9c56f84c05d2f07ed7a3e3fcc
 abe965e9","src/bn.rs":"c71b9c79f704a94a889d27bf75e7e5b1f9f10b0df0aeb485aef509cf05d7467f","src/cms.rs":"1e1500367732915e756ba7dcee4a0691ba4fab770e0cef88267b74111e99e127","src/conf.rs":"511e008c18039f54d856d70b80009426fc7f4ce34fe4304e2c58ebf465031de0","src/crypto.rs":"fa513478e5c4a1e9d54081a9c79d48400f726c7047e776aa3f1adc023d6600be","src/dh.rs":"fb3b539eec4434b448b30df19e2e2ac5ffc3bd11bb817c7fb9090186ec3b0146","src/dsa.rs":"ae79baf231681900ea76304285b3ffacf5298c90b8c04d371269cf4adbb5b9fa","src/dtls1.rs":"0477022d5bcf2b7a620c70ece4da08a2958be3eca5a57127c89d79525c692ebd","src/ec.rs":"018a2ab377804bb735206e88d0561ab16098e29007d1a1fd0d565c8e492544c2","src/err.rs":"9e6c84a170dce46db74414a64b9e1855845afbd8180100a2d9412f7509f69284","src/evp.rs":"c947ddf745e4fc761f2b4b7886246f96163f41ff8ccc3c822e46ad38169d2c94","src/hmac.rs":"fa3976d94a1383f300bdec228270afb8b47c97bb019d727c7d59ba783be3c42e","src/lib.rs":"19ddf11d94bf469abb3f453a6b38886f6ccea4bc6004477f36b200516f5fee44","src/macros.rs":"7ed99c
 00c53ee12ea92634d4ace0af84845ebf98819869746e7896c8eaff23db","src/obj_mac.rs":"42019b142e523d7695d8c14ee7f72fa4b5702c07dee98fa12e70ab7dfcc95459","src/object.rs":"9ec1a26968e3efc87b24f287b92331fa38eaca048a3919e6514f48d38c7df9a6","src/ocsp.rs":"614492810c5fadd0c1c4bb5eda165fb7e744eed7b04ae61d582446f5013e733a","src/ossl_typ.rs":"0d8dd0f82ef08672ab3c5059d2335b7eaad2d5afc0a20dbf26c2476c99dcae8e","src/pem.rs":"c92d1d31e6f70f6704f148e370a8b4228d6305b51fd3be907c49014a8bfe14ba","src/pkcs12.rs":"4c3c1cf2e716454c5fc94c3d5e1174922c57b9de796253799437dc13303a68d1","src/pkcs7.rs":"726614946784f919db88fd5282ec66d5b9df2edafc98ade9614758e109176b31","src/rand.rs":"c771057f37c64406aa750f36397fa877caf330a8c725e49356c7081c2b2fdd67","src/rsa.rs":"d45d421339b903b0d33817e93be5e939964431f9caed343e5c4490382cfad5b1","src/safestack.rs":"6c39e28565d34efad707d77561d4caa99e3f028fcac3a2ef6fd403a78de1190c","src/sha.rs":"16a4c77cbc38926b8f8eee07b0beae8dc12cbdc8cfa599d4db66fa84a7b3871d","src/srtp.rs":"1c4dee9e6c139cc70
 416207786e385f199321624fb9fbf3cbf39a8160c0c405d","src/ssl.rs":"f0dd56aef28630ba8359e49538664160b54f58e255cca1f5c239f23aa820de1b","src/ssl3.rs":"9336c816e00847d552dea22587d4ac72ff3cbd469fa5ff750423a19ea11e68eb","src/stack.rs":"1a509907283e5a2bf88cf193ce607f49ce7d2d95547c2ce2abc0fd4567aad334","src/tls1.rs":"60ca3dea1bbfda645bde563b4a878dac129c3f760e3ad572381000fc7a8ef522","src/types.rs":"0b9bafc6f5fd373ec8c01e49339f7fe7ef1d76e44d60cda59f60c06982b4070e","src/x509.rs":"785bcb26166b8f39e616e5ab9a0358814773e96de51b40fd5ae62b45a2edcda6","src/x509_vfy.rs":"e530e2fd91e959715265b40fba95576bb53ddcb4e2c6586c2192098e0e8b1cc1","src/x509v3.rs":"520253195097d134e553c6378c1db2510eae6ccfcab6f6fb08919697bc0f023b"},"package":"7a7907e3bfa08bb85105209cdfcb6c63d109f8f6c1ed6ca318fff5c1853fbc1d"}
+diff --git a/vendor/openssl-sys/build/main.rs b/vendor/openssl-sys/build/main.rs
+index 88752d995..7cfa6e159 100644
+--- a/vendor/openssl-sys/build/main.rs
++++ b/vendor/openssl-sys/build/main.rs
+@@ -236,7 +236,8 @@ See rust-openssl README for more information:
+             (3, 2, _) => ('3', '2', 'x'),
+             (3, 3, 0) => ('3', '3', '0'),
+             (3, 3, 1) => ('3', '3', '1'),
+-            (3, 3, _) => ('3', '3', 'x'),
++            (3, 4, _) => ('3', '4', 'x'),
++            (3, 5, _) => ('3', '5', 'x'),
+             _ => version_error(),
+         };
+ 
+-- 
+2.34.1
+

diff --git a/dev-lang/rust/rust-1.59.0.ebuild b/dev-lang/rust/rust-1.59.0.ebuild
new file mode 100644
index 0000000..8234b82
--- /dev/null
+++ b/dev-lang/rust/rust-1.59.0.ebuild
@@ -0,0 +1,706 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7..10} )
+
+inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
+	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.xz"
+	KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+fi
+
+RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).1"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+SRC_URI="
+	https://static.rust-lang.org/dist/${SRC}
+	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
+	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
+"
+
+# 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 dist doc miri nightly parallel-compiler rls rustfmt rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+
+# Please keep the LLVM dependency block separate. Since LLVM is slotted,
+# we need to *really* make sure we're not pulling more than one slot
+# simultaneously.
+
+# How to use it:
+# List all the working slots in LLVM_VALID_SLOTS, newest first.
+LLVM_VALID_SLOTS=( 13 )
+LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
+
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+# (-) usedep needed because we may build with older llvm without that target
+LLVM_DEPEND="|| ( "
+for _s in ${LLVM_VALID_SLOTS[@]}; do
+	LLVM_DEPEND+=" ( "
+	for _x in ${ALL_LLVM_TARGETS[@]}; do
+		LLVM_DEPEND+="
+			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
+	done
+	LLVM_DEPEND+=" )"
+done
+unset _s _x
+LLVM_DEPEND+=" )
+	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
+	wasm? ( sys-devel/lld )
+"
+
+# 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
+RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
+RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
+BOOTSTRAP_DEPEND="||
+	(
+		=dev-lang/rust-"${RUST_DEP_PREV}"
+		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
+		=dev-lang/rust-"${RUST_DEP_CURR}"
+		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
+	)
+"
+
+BDEPEND="${PYTHON_DEPS}
+	app-eselect/eselect-rust
+	|| (
+		>=sys-devel/gcc-4.7
+		>=sys-devel/clang-3.5
+	)
+	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
+	!system-llvm? (
+		>=dev-util/cmake-3.13.4
+		dev-util/ninja
+	)
+	test? ( sys-devel/gdb )
+	verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+	>=app-arch/xz-utils-5.2
+	net-misc/curl:=[http2,ssl]
+	sys-libs/zlib:=
+	dev-libs/openssl:0=
+	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 )
+	rls? ( rust-src )
+	test? ( ${ALL_LLVM_TARGETS[*]} )
+	wasm? ( llvm_targets_WebAssembly )
+	x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+	usr/lib/${PN}/${PV}/bin/.*
+	usr/lib/${PN}/${PV}/libexec/.*
+	usr/lib/${PN}/${PV}/lib/lib.*.so
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+	usr/lib/${PN}/${PV}/lib/lib.*.so.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+	"${FILESDIR}"/1.59.0-libressl.patch
+	"${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
+	"${FILESDIR}"/1.49.0-gentoo-musl-target-specs.patch
+)
+
+S="${WORKDIR}/${MY_P}-src"
+
+toml_usex() {
+	usex "${1}" true false
+}
+
+bootstrap_rust_version_check() {
+	# never call from pkg_pretend. eselect-rust may be not installed yet.
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
+	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
+	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
+		eerror "Rust >=${rustc_wanted} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too old"
+	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
+		eerror "Rust <${rustc_toonew} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too new"
+	else
+		einfo "Using rust ${rustc_version} to build"
+	fi
+}
+
+pre_build_checks() {
+	local M=4096
+	# multiply requirements by 1.5 if we are doing x86-multilib
+	if use amd64; then
+		M=$(( $(usex abi_x86_32 15 10) * ${M} / 10 ))
+	fi
+	M=$(( $(usex clippy 128 0) + ${M} ))
+	M=$(( $(usex miri 128 0) + ${M} ))
+	M=$(( $(usex rls 512 0) + ${M} ))
+	M=$(( $(usex rustfmt 256 0) + ${M} ))
+	# add 2G if we compile llvm and 256M per llvm_target
+	if ! use system-llvm; then
+		M=$(( 2048 + ${M} ))
+		local ltarget
+		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+		done
+	fi
+	M=$(( $(usex wasm 256 0) + ${M} ))
+	M=$(( $(usex debug 2 1) * ${M} ))
+	eshopts_push -s extglob
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		M=$(( 15 * ${M} / 10 ))
+	fi
+	eshopts_pop
+	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
+	M=$(( $(usex doc 256 0) + ${M} ))
+	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+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 && bootstrap_rust_version_check
+
+	if use system-llvm; then
+		llvm_pkg_setup
+
+		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+		export LLVM_LINK_SHARED=1
+		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+	fi
+}
+
+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 \
+			--without=rust-docs --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/wasm_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\",$tools"
+	fi
+	if use rustfmt; then
+		tools="\"rustfmt\",$tools"
+	fi
+	if use rust-src; then
+		tools="\"src\",$tools"
+	fi
+
+	local rust_stage0_root
+	if use system-bootstrap; then
+		local printsysroot
+		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
+		rust_stage0_root="${printsysroot}"
+	else
+		rust_stage0_root="${WORKDIR}"/rust-stage0
+	fi
+	# in case of prefix it will be already prefixed, as --print sysroot returns full path
+	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+	rust_target="$(rust_abi)"
+
+	cat <<- _EOF_ > "${S}"/config.toml
+		changelog-seen = 2
+		[llvm]
+		download-ci-llvm = false
+		optimize = $(toml_usex !debug)
+		release-debuginfo = $(toml_usex debug)
+		assertions = $(toml_usex debug)
+		ninja = true
+		targets = "${LLVM_TARGETS// /;}"
+		experimental-targets = ""
+		link-shared = $(toml_usex system-llvm)
+		$(case "${rust_target}" in
+			i586-*-linux-*)
+				# https://github.com/rust-lang/rust/issues/93059
+				echo 'cflags = "-fcf-protection=none"'
+				echo 'cxxflags = "-fcf-protection=none"'
+				echo 'ldflags = "-fcf-protection=none"'
+				;;
+		esac)
+		[build]
+		build-stage = 2
+		test-stage = 2
+		doc-stage = 2
+		build = "${rust_target}"
+		host = ["${rust_target}"]
+		target = [${rust_targets}]
+		cargo = "${rust_stage0_root}/bin/cargo"
+		rustc = "${rust_stage0_root}/bin/rustc"
+		rustfmt = "${rust_stage0_root}/bin/rustfmt"
+		docs = $(toml_usex doc)
+		compiler-docs = false
+		submodules = false
+		python = "${EPYTHON}"
+		locked-deps = true
+		vendor = true
+		extended = true
+		tools = [${tools}]
+		verbose = 2
+		sanitizers = false
+		profiler = 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)
+		debug-assertions-std = $(toml_usex debug)
+		debuginfo-level = $(usex debug 2 0)
+		debuginfo-level-rustc = $(usex debug 2 0)
+		debuginfo-level-std = $(usex debug 2 0)
+		debuginfo-level-tools = $(usex debug 2 0)
+		debuginfo-level-tests = 0
+		backtrace = true
+		incremental = false
+		default-linker = "$(tc-getCC)"
+		parallel-compiler = $(toml_usex parallel-compiler)
+		channel = "$(usex nightly nightly stable)"
+		description = "gentoo"
+		rpath = false
+		verbose-tests = true
+		optimize-tests = $(toml_usex !debug)
+		codegen-tests = true
+		dist-src = false
+		remap-debuginfo = true
+		lld = $(usex system-llvm false $(toml_usex wasm))
+		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+		# https://github.com/rust-lang/rust/issues/74976
+		# https://github.com/rust-lang/rust/issues/76526
+		deny-warnings = $(usex wasm $(usex doc false true) true)
+		backtrace-on-ice = true
+		jemalloc = false
+		[dist]
+		src-tarball = false
+		compression-formats = ["xz"]
+	_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}]
+			ar = "$(tc-getAR)"
+			cc = "$(tc-getCC)"
+			cxx = "$(tc-getCXX)"
+			linker = "$(tc-getCC)"
+			ranlib = "$(tc-getRANLIB)"
+		_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}]
+			ar = "${cross_toolchain}-ar"
+			cc = "${cross_toolchain}-gcc"
+			cxx = "${cross_toolchain}-g++"
+			linker = "${cross_toolchain}-gcc"
+			ranlib = "${cross_toolchain}-ranlib"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		if [[ "${cross_toolchain}" == *-musl* ]]; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+			_EOF_
+		fi
+
+		# append cross target to "normal" target list
+		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
+		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+		rust_targets="${rust_targets},\"${cross_rust_target}\""
+		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+		ewarn
+		ewarn "Enabled ${cross_rust_target} rust target"
+		ewarn "Using ${cross_toolchain} cross toolchain"
+		ewarn
+		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+			ewarn "'sys-devel/binutils[multitarget]' is not installed"
+			ewarn "'strip' will be unable to strip cross libraries"
+			ewarn "cross targets will be installed with full debug information"
+			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+			ewarn
+			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+			ewarn
+		fi
+	done
+	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+	einfo "Rust configured with the following flags:"
+	echo
+	echo RUSTFLAGS="${RUSTFLAGS:-}"
+	echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
+	echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
+	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+	cat "${S}"/config.env || die
+	echo
+	einfo "config.toml contents:"
+	cat "${S}"/config.toml || die
+	echo
+}
+
+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
+	)
+}
+
+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() {
+	(
+	IFS=$'\n'
+	env $(cat "${S}"/config.env) DESTDIR="${D}" \
+		"${EPYTHON}" ./x.py install	-vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+	)
+
+	# bug #689562, #689160
+	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
+	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+
+	local symlinks=(
+		cargo
+		rustc
+		rustdoc
+		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}/libexec" "/usr/lib/${PN}/libexec-${PV}"
+	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
+	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
+	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+
+	newenvd - "50${P}" <<-_EOF_
+		LDPATH="${EPREFIX}/usr/lib/rust/lib"
+		MANPATH="${EPREFIX}/usr/lib/rust/man"
+		$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
+		$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
+	_EOF_
+
+	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+
+	# note: eselect-rust adds EROOT to all paths below
+	cat <<-_EOF_ > "${T}/provider-${P}"
+		/usr/bin/cargo
+		/usr/bin/rustdoc
+		/usr/bin/rust-gdb
+		/usr/bin/rust-gdbgui
+		/usr/bin/rust-lldb
+		/usr/lib/rustlib
+		/usr/lib/rust/lib
+		/usr/lib/rust/libexec
+		/usr/lib/rust/man
+		/usr/share/doc/rust
+	_EOF_
+
+	if use clippy; then
+		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+	fi
+	if use miri; then
+		echo /usr/bin/miri >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+	fi
+	if use 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}"
+
+	if use dist; then
+		insinto "/usr/lib/${PN}/${PV}/dist"
+		doins -r "${S}/build/dist/."
+	fi
+}
+
+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
+}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2022-06-02  1:44 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2022-06-02  1:44 UTC (permalink / raw
  To: gentoo-commits

commit:     fa9d9ec18a62e14cd7f06ad703e989fcaa3bb907
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Wed Jun  1 22:29:42 2022 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Thu Jun  2 01:43:58 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=fa9d9ec1

dev-lang/rust: Updated for version 1.61.0-r1

Signed-off-by: orbea <orbea <AT> riseup.net>
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 dev-lang/rust/Manifest                             |  34 +
 .../files/1.61.0-gentoo-musl-target-specs.patch    | 166 +++++
 .../rust/files/1.61.0-llvm_addrspacecast.patch     |  52 ++
 .../files/1.61.0-llvm_selectInterleaveCount.patch  |  66 ++
 dev-lang/rust/files/1.61.0-miri-cow.patch          |  98 +++
 dev-lang/rust/rust-1.61.0-r1.ebuild                | 730 +++++++++++++++++++++
 6 files changed, 1146 insertions(+)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 69aba14..b10f97d 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -94,9 +94,43 @@ DIST rust-1.59.0-x86_64-unknown-linux-gnu.tar.xz 151858140 BLAKE2B 80eda8c19361b
 DIST rust-1.59.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B cd4387ad25b7f000395e336cdc92916ee7260cbf98a397ce02514444c8d2b35c653012ae6a9f1d5598155c06db573e1fe1a3f0bde1693863855dc17c18b478f5 SHA512 0b6790f0aa531a8251e1a19e0adfdb16bfd39fcec40b83094c26b7169f833114cc8679e2955fcc5359b05cd67564827aa231c521f81d4c41d561e9ef44eea713
 DIST rust-1.59.0-x86_64-unknown-linux-musl.tar.xz 246630236 BLAKE2B c9fe24e92055b2e765a8d96181c7c14a0db329f98e006ea2ade285078cad64fa2ef3419d26f30339685cfbcee672bb5e263dd183c960aa0067a27a0b36fe6fbd SHA512 40a711c015fa8eb07aaa11b0698f20886928230a8441cc7523572c7c2768a52557daf5c02bdf61430dcb9a912b8eeda499794af28f269b319ca7fef848ae4cdd
 DIST rust-1.59.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 1a96c49754b8670d243d1ad43478d4df8b4f4997490fa9691e3947260d469c7dc9bab192a20fd2ee0592e15785fb059644404d77d716d86b54038d0a76feaf6e SHA512 0c67f2be31fae00a318b5a6184c60f10f80ca5275a5d9dad4459d94aef2fe65624dd7789987d506b691666ac8f7357143fa6bb8207cd5b13b28692aa909a1636
+DIST rust-1.60.0-aarch64-unknown-linux-gnu.tar.xz 225778104 BLAKE2B fafd690b1d6b161ba12f2e885e8dacd672999e34523634a2dc198363b6d46c9a5df9628052d4c76fe9c179f0d2d21eed6c9986cbf1cad0d95f42ec89edd6bcb3 SHA512 0357abc2f0e3512cbb0b113a7e80e5475ecaaa18f4713d08c1923567ba7ee35cb286e0b62ef564f56b88b183d31462743d041bc733b86c91eccaea29c9bdd61f
+DIST rust-1.60.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7ee4ca6c179fa41841b8da143582f3454073c62286043cc395611495149a097a48fd885f56ae3dd62220788cc4e235e0a2af9400797090e0e027f4133af275a4 SHA512 9059bf5cae423d0dcfaaed56f03a30c998962af3c0f84377bc3af9fed25afedb91f4dc2f40c51fa8d1360330c1a8fccba88b94f069500894fcd7b8ce7fc9b736
+DIST rust-1.60.0-aarch64-unknown-linux-musl.tar.xz 218828768 BLAKE2B b6cef5702c0bdc53cad81eb06b09213e90c1ecb89e2734b5bdbbf93969f809d5eec03f802cbaa15ddcd6b0a4a8f02b6027e232a13111a0002efac455ca42e8e7 SHA512 39de2073c1c393f4675c374b0bd7a75daa7c84e5635b9c50606da0ad7478e828120319a9fc79b534b88570a0408eb1745dbc0f7f4d15825e5f995e16752c5d10
+DIST rust-1.60.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 655bb6cccc79034f83557b1336d6052523dd25420f9b54ca746946c259026a1e9dce8b5e84d6800dfbbc423dce3413d566de45c9f3424f24330d732f3702d2b5 SHA512 ce3131c15a31eb41b6905c3197bd3989a436ea503f9285146dc1c87c1e1f5bc6a606fb3a7ee52fe564bf8196d5eb71fd8325f63a36956d1a2b29d285ff84874f
+DIST rust-1.60.0-arm-unknown-linux-gnueabi.tar.xz 199199568 BLAKE2B 9fbae45558e5b5ee6c0f025430e355ccf2c9bcf8584eb3ca763e5eccd19a9a89b5b466fbcfa0182810b2bdf764a8ece9277a7bf9b9ae1792e442b6930d769c76 SHA512 b14e1e6e3ca58840f2b44473ea7e20afe61f813c6bce7a380d97cf32d9e915a0e369ca1709b2d7207f38ccc4d19db8268412e4dc991cb23612989111677d9fac
+DIST rust-1.60.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B c79602c7ebfd8789d5c4a8800462b62104f20bfbb9cd07a62ea02faa4721c291de0cd2e877ccaa586c83efd60daaeeb9bf1b6aa0d50c9e8cbbf1e1c76beb8f8b SHA512 58ac1ceec97354aeb020bb8380c0950237052c84188259740335cac235556e7db620ac17861adb065adf4eb90f5dd67af64c7f5247fc5d965633a949eac41de2
+DIST rust-1.60.0-arm-unknown-linux-gnueabihf.tar.xz 199155728 BLAKE2B d7bb8b89acc6ae96e9dc88753e03d213456204f1e42e9142c3cf307e68c3fe9039271a87b95f2dd37255249e91239d28571b0eacfaee533c8be2f1f33ee0ed09 SHA512 8b4e8fc0824001973bb508341d10b81b5c9ca785e07be2bd9a9cd14a4337983a75dd0e224518adea717a6645a94a7af9c3a51f226acada05d98dc2ee925753c1
+DIST rust-1.60.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 3976db6e470d120b17b782eb47e8b13d019891a9ae77d0c160ab00dad266a285e72426f4918e0918817243e77f5243a1d840190611d906a259de0592e85b1eae SHA512 e363c8e0dfde0b044a3f7a3a7d9b0f589684019f4a7a81ad5d39ca40662c8b9350dffe26cd8e7f7df5b39b04cb543777e066b71b0b5da393bb2310c51720e3c9
+DIST rust-1.60.0-armv7-unknown-linux-gnueabihf.tar.xz 204846992 BLAKE2B 1781fcc2f7e079c68230154523e69d4211aac4248a09e10ff05237f67c6d82db91aa3e933d057f68a9c2adbf71be0dd91a053442e0777862f597a7202909c62c SHA512 6cc28ac4430acef8929ec9f9acfef8fa3f0c79758fdd612eb3d0e762986ae7722c3b92dd687be754453a86ecc253341efe2e517e41510bed53e539e79ad21ecf
+DIST rust-1.60.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B e7adda090a966ad9a2a68b2f7ad3f1a22cee06a5ac02b5f949593e50eecc044dc13552a6299a9c0fb8383e839bb04a6ac16aecc4cc6735c2ffb91e3d244fd71d SHA512 b1a471eaba9f9a4eeb066680b78f4b02cf9d0620b2bcf4e9f07112fb6100acad7f519e149a105fced5cb0e2a91b845d3d682af53ea135af9901dac973c4c5c7b
+DIST rust-1.60.0-i686-unknown-linux-gnu.tar.xz 217159392 BLAKE2B 18321f1eeff6607eea9bc1f7de571062c3fac1a68bdfc694db8c504331119a86cf8c08f1e1ae32c855d37367bf92de70c9465404e51485d335c530dbadc90c66 SHA512 5a1e9f0d7f623af1c46884a23eb5c38927ab9a9b87c9b4f511aa727ee4bd77987358f6211f2a3c6743b01a9695f0823d443069d3020772a87c834141d73e3b05
+DIST rust-1.60.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 09068dbc9cec3164beb94d667bb359295f98578e2eb31e5fde1fafefa58831c2858dc45736aea3daaf6cf3f3620bfc40c0af3a246655618cbca2b733f73ee171 SHA512 d237bda70a0b297505d6dcf968330ac8622af77a53241de707d57f265d4762fcbf34fae329c02d2f7f18b97df843f78938f4413425d0d57183cd5bf59aae3e3d
+DIST rust-1.60.0-mips-unknown-linux-gnu.tar.xz 155895536 BLAKE2B 87fcc3fb92762e3e1e4e29eeff0c556a07b9fb36cc275cd1e74e4411e89a82d1aaf1cda7859b32696b239091758cc54f0d763b14ee1d42898cc4aa3fb37dc6ee SHA512 28e28f4cf077f93a21282756bf69c3ccae2f9e975145cb35b36bf28a3a0ffdafd1dd9c775816f20a2aec557551efc3b4a9c644cff06473fab440e65357aec1b4
+DIST rust-1.60.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 98d5e30917b86aa9bbdb2e0aaa98b19a946320f09331aa4194f1f1536148dc098aefb34646dfed7216d024db8d408901db24663e52414c1d618afc55bd12b97c SHA512 b6e98fbda5d865b8766e62ab9d21bd8d0f1a0796748b12f59988fe66db26d0df3afbc8dbd5ef312224dc81778a799dca57cd05caf4e5f1560a8ff1eb4b3243b4
+DIST rust-1.60.0-mips64-unknown-linux-gnuabi64.tar.xz 161602984 BLAKE2B dd2cd07e800b8c53fc6f0fd1d932c58c1d23776a35ac7c10df7b79d8e3c3f401bfcfd87d2740053fcf6b30e314d248ad39f1084ec35008d58676c0c1ecffd323 SHA512 2074e4823d1c4f8e2730eca07f8f5d120a1212c67c374c9aa2a167e517779709ebe6b6c33113ac6048bd2ff28c63f6086a0c458830c6cce2e27a1e1ea0e7c9fb
+DIST rust-1.60.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 75d23db39da3fda6ac1cabbab84904d9f9a7c0b3c58081f8cfd6952a6df012aba1788a5008fba6156a410b28fd9aec8eb946e24a6217d35023579b8ceb362b63 SHA512 eeca039bc3a7610d7ef8a786fc280c18314aa5c5f83b2647fd5130d89b62eeef5e3bc73d140999c0e8b4b2af2efaed27c4dcb20b21a43ccec49c79c76573a73c
+DIST rust-1.60.0-mipsel-unknown-linux-gnu.tar.xz 160546356 BLAKE2B 1e56b520727f7b6f1e2158db55638b4b8c3ce646ecfcc13a9c511defcfe3aca056ac002ea7e2d5c673594cc9b1611667b1d243766c8b53beefbee7e7f093cba4 SHA512 2c48d13fdaa1071f65796edc8193d1fb9be1a5bfb3e349a9bf5f518e02b9d8a0042c0c39ae159e914368f7150ac67b7be9fd115ef5e878bf06651a3f6760e4f5
+DIST rust-1.60.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 2297dd2504735c78fcd6c7e69b1884215db06ae1fbcd31fc8b07586eba10a7f861ba16209be608e3302b3e48f9eaa748d2990fbc4cc21720b705ff67e4dad533 SHA512 2972c5ea07d7336c554a232fa7adef474fcdf1b5da8f584e200c303210d248d5acc963646e4fd7c3085fe74b96c6ed4d75607d6fe134247b7932a615b1bb15c9
+DIST rust-1.60.0-powerpc-unknown-linux-gnu.tar.xz 179198588 BLAKE2B ffb68761fce839412eb7147c44732f275e27c0e67894b41128936f1ef05e19c9120b3decab6fdb16924688799f035d0c261500651b6eacc415bf65759f246e53 SHA512 0233c9381ff27642fe76ad856af9f51257b25c6a428255dc9c1c9c9993fcc943f551244f07838541d63a99c0481d95fad3749921dbc6766378d313f49e7e1dc8
+DIST rust-1.60.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B c35cb2d813e578464af34f5a3597d7a88009041c04ca32c57f0daf5953b27ee5c7ffde98da6d6ae85dda07559391c0bcbdb5c1c92d41159f8fa79d7a8d3c2345 SHA512 9fba91f8f84bd677ce44dbb3206e87308ac7337115b312904cb199caa3ebbf4d1efc53eb27da38829f5b41b6b6078309386be7f6dd8ee33f6f67e7aecd077c1f
+DIST rust-1.60.0-powerpc64-unknown-linux-gnu.tar.xz 185903604 BLAKE2B bea00626f9278c2f67ddd44dca6a7fd4931f1c3a5b76eb70a2b98717425a7f8439efc3de19d555ceba5b83e0262de77e043771e3c31cbc2a0e09264a5b607c7c SHA512 002f8ea3d25ca9c57c66fd027a903cafdec199ab8d7f63c68b1d7b8bb9607b2eb69ce98d322ebcb8476bcb8e28d292f285925b7a2f2ffe23fc45b9a626420675
+DIST rust-1.60.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 419738f90082f4ff68f6b01c0d6ef467fb856dea7320cc70b07ce569adb712673e09d632156927603e9577d6c88d0b2409c9b9e5edce0a2ad60f17b7489d346c SHA512 b060a7909ae72d7f92e0a99362c38be20ea4d2e2a68c3e502d1fcf1f667a8bf80d117e67c8ae3922dda35214b0cd091b53085603f89952c4647fced34c9d52fa
+DIST rust-1.60.0-powerpc64le-unknown-linux-gnu.tar.xz 195616532 BLAKE2B 4f69ee1719874789b309f4ff098e96848e496acc1a5c126296ecaa3b021b5fca6c7b2995ea121482d7a282c86a988c0f28275f7474f7a63e5877819e3c8a57b2 SHA512 6259fa02a62008c63874405be80f3ab7b3d8564b71d18297857cf80db417792a3215fd85e53b297823bc9dc8968d5e035a1b959671a039391616ed62bd48cbd9
+DIST rust-1.60.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 27461458d3fc0c65d25ed310269e52acb1d332411af32922a418dc32c9998653411e68daae8dee81f595b52a0176f517cb2d57ca7c438cd1cce91ad44c376b3e SHA512 6edc6ced24d85faf12000cad3d21b8da93635f88c1e6c8ab0614313f04ca466489f84e6acc3f0d35e42f9430499123cddbd48c474554fc408d50df17714a65fa
+DIST rust-1.60.0-riscv64gc-unknown-linux-gnu.tar.xz 188464956 BLAKE2B ea9fb3e59ad558b0a704a84d54f555717d4f158b1d15e3577e6411becdebb86144cd78500521fdeacf38e4301ec86db088822c19a608a8808b9a7c2172befc41 SHA512 41c12e2a0a2a4f63d8ef321e30ded7cd9fedf732699e73e7ada32590c13ead6805cee7b089858eb7ce340ad6e55d364eb700c35efbd640b126b811f27ab6e395
+DIST rust-1.60.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9dca4b3ba2949e04c94ad57e14f576bb34e1c9966c9954ebee7549a5fa6a6fba57000138128bf12f93a0cec59715cd32dde7242c363c3de265e7f95ad8fd44b9 SHA512 2601feb20c211ae55fd051225d1b1c209e40c4d23c4dc79b5d85ca0b21de833fb8432fcd45fefc1484ca5987660e6625d1a6c69cdd4d05b2f84212bca1f82611
+DIST rust-1.60.0-s390x-unknown-linux-gnu.tar.xz 187797152 BLAKE2B 5a86b4bce61d65d29769b652d030f936adf669986aba91f1cf09edcc346942acc2bfa26bd568635889e89a1059eea988eef9ad300469b416eaf87e8d97b2cd15 SHA512 6be266c6191f35c1525618e986e1725b0e8b306990deeef5cda7aff4f5999680e84597a00d4c2c38099131604f436529420ebf4515501df1328dbe3118637ae4
+DIST rust-1.60.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5460b62ec3b461ce4d92b57debfc82329ec19ce5c38ce2a72e9700e9d4da767134738148d12fbeb0d6ef74f2dbfbba132571c9a8925b007d19432eecbf57b381 SHA512 1c285460c49be405361ef5ed2dbf9f720e7a9fce4d34b16aa5b2f29afa4fcc399f252b48cb4cf05e95a57869455a31ab5237deefe4e900c03ad3dd5887e70ea9
+DIST rust-1.60.0-x86_64-unknown-linux-gnu.tar.xz 154271340 BLAKE2B 7ee48c165e6ec7a6cbc49c46bc4a7eee735988808866024de87eec2312427d939158e03e443cc537034110e640c19fc920458f8259ee022f3aa9eaa617207d55 SHA512 d27f1d78b2535f9acbd8af079b853f0590725c9f5db31ac074685f2722f0270a9f8d417abc6af8be413598315c568333e3011ea07eef9c47a5c4e328a39aee47
+DIST rust-1.60.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7454407a16e2b6c89226252c7e706086c9bb8016183df1180c54e88ec0d6622a0829d4acda959a093702bb1d95d4f2678976ced69fcc219afb42ab631e459d40 SHA512 eb3550e27e361860075a22d9b4821c6d078d7e4c82ad688a64e813adbce9922b9ab2dc64d1fd4d74d20be9af122ff05819d521677a43ad1c1092bd498d325a8a
+DIST rust-1.60.0-x86_64-unknown-linux-musl.tar.xz 258420992 BLAKE2B 6b446c06fd8d511910110eccfd55c1116f3468ffe87274d6b90c7a2a1ccd298471f62d1bfb807ddab2f66fbac58995e903414455c76fe2b14c9659f00e8413a0 SHA512 6f5a53968f44bf7be563d32eaddea439d8f388858db3d3b58a89b22cc2252e195b56b0e8895f4254c40274035e221657504958c8f1e331befca012d480118f3b
+DIST rust-1.60.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 680e7267a188a5286938d9c3284968121a7783cba196bf863affd6b927344e1a88cf7b97016d53c74560179439fc7fe9dd700a295c7c00b139472320323861cb SHA512 071efcfad0074a03de454835c512e98b466662b27bef2fb31def0bb82531b4048eba59a529621fda515800e19c4f3c62a33a364ecca8cecbaa09fae842b894b6
 DIST rustc-1.58.1-src.tar.xz 124353160 BLAKE2B 686c7272db544ad46f7fb01b4e05f24f4e08ff959a000cadfaef5d8fc413b93f5ed839077bc9715defc7a0a179af091f65c7a5d7104b0b3153f0654c237c094b SHA512 eff3279d2e519343cea542a9ae2daab592e44f35af344e33ff43ed55fc7c824511790d1991dd36a603d12465de8c3688e7194c2b9557f288c587ffa04738c2ce
 DIST rustc-1.58.1-src.tar.xz.asc 801 BLAKE2B f0b600a503b0ca777dd5d690dca7252ecc6d7d49ca4a9cc8edc0647038f727e9052a861f9868292f837d78d6b02efe9ed5efa85843262c44cf6f73254cc7c9b0 SHA512 983c1ffdc4febf8bce6efc123c76b13f233772bc0a152ffaeb7ebf8f1f7b82a6b5d653407a4d293953d6fbf62c0df4ff4d398a1133061b53ae0f85317a14380b
 DIST rustc-1.59.0-src.tar.xz 128942756 BLAKE2B b28114f14c9a0fec7db56fde79a985360fd8438c3b14eede49ed12e540c2636be960d0fd800c569af193886ac76fe8bf604d5dae59214ae08cb0cc6cc0ca404e SHA512 acace866871d13a55d365f65d7e15c192c3cd33096862571df6317e066b7474d668b95ae281e0244967778c05f1e33966c3c55616218bd25d3770a2b2d4f0365
 DIST rustc-1.59.0-src.tar.xz.asc 801 BLAKE2B 061701c4fdbde930798f9f938ca3642204ae4a2ad9396937ca7d604268813d6d68f4979f20d35abdbbfeec0bb389acd86c9d3d84256db85861f6b11e3dbef80e SHA512 1b90bc01f9d68ba1f70591c4ae707295d7727b790d170a0b757d654684e59d3c26c45b66a21f9ac762debb6867494660c73daaf10be9bd567a38be44c0009f72
 DIST rustc-1.60.0-src.tar.xz 136183048 BLAKE2B 8030f32c21f81af6abc7a282aab1189cb7d680c6bce58c119a1beaad71a3eeb36a696eef46a22d366e2c41a2f9182a9a5aa527426f2c8db05278184c37297dd0 SHA512 d0c113e8c2c67bf10773c9403dc4c4700c4deb2fb287bfec51e565d3473d2b481d8ae2c90b272cd67b3a87d7443ea25a34c7b40ba8cd7106bf5d71126ab141c3
 DIST rustc-1.60.0-src.tar.xz.asc 801 BLAKE2B 02a2c140e091ea6913a760daa93aa57ba6a7631d0b99867669ce68641d562d436f13ed1f1578713184f06c9307d46e19dfd7c8d74a516b04293bc65c02b90707 SHA512 8136d19d4f3f4c45249b59b689f01d4edf108535ffe1f813771bd244cde1c66184a0bde5a0acfed4fb01015812458204244bbb54e6f5fa86e9b1ef5e92e805e3
+DIST rustc-1.61.0-src.tar.xz 136696780 BLAKE2B 604299aa5c8dd7dff9802236898ca5d4fda8c54028d0aa557a6fe34c15941eb6e8c1dc5d2e172cd3680152ed1ff3fa9e58eb9b6a3b6f8f4ccccd949d810d31a7 SHA512 9bbdcc1c37f7b889be0c8d195963b4c3b65267a63ea309315eda12bd3b2cd36e0060301805dfc7da440c0a8702d085ccb0bf763155b27035a078769333637fb3
+DIST rustc-1.61.0-src.tar.xz.asc 801 BLAKE2B 46384fd77c72ecf5cd7c783655f9345e4d52718c737470548a9f3498af9cbb93c3bf618464507cd10185c39a5207fd6669c6c82841c8c82fa325001cbe659cb0 SHA512 5ea807254f0d7c207f10f1fb224101d9ae3a3c81aff16d2ba2ea4af1fe92345d1a25336b5cff0964aba9ed249e38ab9d3df41eb1217e048988093cdb46da8962

diff --git a/dev-lang/rust/files/1.61.0-gentoo-musl-target-specs.patch b/dev-lang/rust/files/1.61.0-gentoo-musl-target-specs.patch
new file mode 100644
index 0000000..9701481
--- /dev/null
+++ b/dev-lang/rust/files/1.61.0-gentoo-musl-target-specs.patch
@@ -0,0 +1,166 @@
+From 331c3839ebb0099101e1d2f88205ea42f4e3b319 Mon Sep 17 00:00:00 2001
+From: Georgy Yakovlev <gyakovlev@gentoo.org>
+Date: Tue, 24 May 2022 12:03:20 -0700
+Subject: [PATCH] add gentoo musl target specs
+
+---
+ .../src/spec/aarch64_gentoo_linux_musl.rs     |   11 +
+ .../src/spec/armv7_gentoo_linux_musleabihf.rs |   11 +
+ .../src/spec/i686_gentoo_linux_musl.rs        |   11 +
+ compiler/rustc_target/src/spec/mod.rs         |    8 +
+ compiler/rustc_target/src/spec/mod.rs.orig    | 2465 +++++++++++++++++
+ .../src/spec/powerpc64_gentoo_linux_musl.rs   |   11 +
+ .../src/spec/powerpc64le_gentoo_linux_musl.rs |   11 +
+ .../src/spec/powerpc_gentoo_linux_musl.rs     |   11 +
+ .../src/spec/x86_64_gentoo_linux_musl.rs      |   11 +
+ 9 files changed, 2550 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/mod.rs.orig
+ 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..ca5f28f
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/aarch64_gentoo_linux_musl.rs
+@@ -0,0 +1,11 @@
++use crate::spec::Target;
++
++pub fn target() -> Target {
++    let mut base = super::aarch64_unknown_linux_musl::target();
++
++    base.llvm_target = "aarch64-gentoo-linux-musl".into();
++    base.options.vendor = "gentoo".into();
++    base.options.crt_static_default = false;
++
++    base
++}
+diff --git a/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs b/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs
+new file mode 100644
+index 0000000..24b3b30
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs
+@@ -0,0 +1,11 @@
++use crate::spec::Target;
++
++pub fn target() -> Target {
++    let mut base = super::armv7_unknown_linux_musleabihf::target();
++
++    base.llvm_target = "armv7-gentoo-linux-musleabihf".into();
++    base.options.vendor = "gentoo".into();
++    base.options.crt_static_default = false;
++
++    base
++}
+diff --git a/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs
+new file mode 100644
+index 0000000..cab0923
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs
+@@ -0,0 +1,11 @@
++use crate::spec::Target;
++
++pub fn target() -> Target {
++    let mut base = super::i686_unknown_linux_musl::target();
++
++    base.llvm_target = "i686-gentoo-linux-musl".into();
++    base.options.vendor = "gentoo".into();
++    base.options.crt_static_default = false;
++
++    base
++}
+diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
+index bd5b712..34b923b 100644
+--- a/compiler/rustc_target/src/spec/mod.rs
++++ b/compiler/rustc_target/src/spec/mod.rs
+@@ -808,6 +808,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..b188a7c
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/powerpc64_gentoo_linux_musl.rs
+@@ -0,0 +1,11 @@
++use crate::spec::Target;
++
++pub fn target() -> Target {
++    let mut base = super::powerpc64_unknown_linux_musl::target();
++
++    base.llvm_target = "powerpc64-gentoo-linux-musl".into();
++    base.options.vendor = "gentoo".into();
++    base.options.crt_static_default = false;
++
++    base
++}
+diff --git a/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs
+new file mode 100644
+index 0000000..395f603
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs
+@@ -0,0 +1,11 @@
++use crate::spec::Target;
++
++pub fn target() -> Target {
++    let mut base = super::powerpc64le_unknown_linux_musl::target();
++
++    base.llvm_target = "powerpc64le-gentoo-linux-musl".into();
++    base.options.vendor = "gentoo".into();
++    base.options.crt_static_default = false;
++
++    base
++}
+diff --git a/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs
+new file mode 100644
+index 0000000..cb3121d
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs
+@@ -0,0 +1,11 @@
++use crate::spec::Target;
++
++pub fn target() -> Target {
++    let mut base = super::powerpc_unknown_linux_musl::target();
++
++    base.llvm_target = "powerpc-gentoo-linux-musl".into();
++    base.options.vendor = "gentoo".into();
++    base.options.crt_static_default = false;
++
++    base
++}
+diff --git a/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs
+new file mode 100644
+index 0000000..2fcdb66
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs
+@@ -0,0 +1,11 @@
++use crate::spec::Target;
++
++pub fn target() -> Target {
++    let mut base = super::x86_64_unknown_linux_musl::target();
++
++    base.llvm_target = "x86_64-gentoo-linux-musl".into();
++    base.options.vendor = "gentoo".into();
++    base.options.crt_static_default = false;
++
++    base
++}
+-- 
+2.35.1
+

diff --git a/dev-lang/rust/files/1.61.0-llvm_addrspacecast.patch b/dev-lang/rust/files/1.61.0-llvm_addrspacecast.patch
new file mode 100644
index 0000000..9f2ca6f
--- /dev/null
+++ b/dev-lang/rust/files/1.61.0-llvm_addrspacecast.patch
@@ -0,0 +1,52 @@
+From 67a290460c374d5e0d18a06c798896cac0b19e59 Mon Sep 17 00:00:00 2001
+From: Fraser Cormack <fraser@codeplay.com>
+Date: Wed, 16 Mar 2022 10:14:07 +0000
+Subject: [PATCH] [VectorCombine] Insert addrspacecast when crossing address
+ space boundaries
+
+We can not bitcast pointers across different address spaces. This was
+previously fixed in D89577 but then in D93229 an enhancement was added
+which peeks further through the ponter operand, opening up the
+possibility that address-space violations could be introduced.
+
+Instead of bailing as the previous fix did, simply insert an
+addrspacecast cast instruction.
+
+Reviewed By: lebedev.ri
+
+Differential Revision: https://reviews.llvm.org/D121787
+
+(cherry picked from commit 2e44b7872bc638ed884ae4aa86e38b3b47e0b65a)
+---
+ llvm/lib/Transforms/Vectorize/VectorCombine.cpp |  8 ++------
+ .../AMDGPU/as-transition-inseltpoison.ll        |  4 +---
+ .../VectorCombine/AMDGPU/as-transition.ll       |  4 +---
+ .../VectorCombine/X86/load-inseltpoison.ll      | 17 +++++++++++++++++
+ 4 files changed, 21 insertions(+), 12 deletions(-)
+
+diff --git a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
+index 620d388199e0..258f6c67e54d 100644
+--- a/src/llvm-project/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
++++ b/src/llvm-project/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
+@@ -152,12 +152,7 @@ bool VectorCombine::vectorizeLoadInsert(Instruction &I) {
+   Value *SrcPtr = Load->getPointerOperand()->stripPointerCasts();
+   assert(isa<PointerType>(SrcPtr->getType()) && "Expected a pointer type");
+ 
+-  // If original AS != Load's AS, we can't bitcast the original pointer and have
+-  // to use Load's operand instead. Ideally we would want to strip pointer casts
+-  // without changing AS, but there's no API to do that ATM.
+   unsigned AS = Load->getPointerAddressSpace();
+-  if (AS != SrcPtr->getType()->getPointerAddressSpace())
+-    SrcPtr = Load->getPointerOperand();
+ 
+   // We are potentially transforming byte-sized (8-bit) memory accesses, so make
+   // sure we have all of our type-based constraints in place for this target.
+@@ -245,7 +240,8 @@ bool VectorCombine::vectorizeLoadInsert(Instruction &I) {
+   // It is safe and potentially profitable to load a vector directly:
+   // inselt undef, load Scalar, 0 --> load VecPtr
+   IRBuilder<> Builder(Load);
+-  Value *CastedPtr = Builder.CreateBitCast(SrcPtr, MinVecTy->getPointerTo(AS));
++  Value *CastedPtr = Builder.CreatePointerBitCastOrAddrSpaceCast(
++      SrcPtr, MinVecTy->getPointerTo(AS));
+   Value *VecLd = Builder.CreateAlignedLoad(MinVecTy, CastedPtr, Alignment);
+   VecLd = Builder.CreateShuffleVector(VecLd, Mask);

diff --git a/dev-lang/rust/files/1.61.0-llvm_selectInterleaveCount.patch b/dev-lang/rust/files/1.61.0-llvm_selectInterleaveCount.patch
new file mode 100644
index 0000000..71a4e8d
--- /dev/null
+++ b/dev-lang/rust/files/1.61.0-llvm_selectInterleaveCount.patch
@@ -0,0 +1,66 @@
+From fe8a27acd716a42667f5a572f52f2b04636010ff Mon Sep 17 00:00:00 2001
+From: Florian Hahn <flo@fhahn.com>
+Date: Tue, 29 Mar 2022 22:52:42 +0100
+Subject: [PATCH] [LV] Handle zero cost loops in selectInterleaveCount.
+
+In some case, like in the added test case, we can reach
+selectInterleaveCount with loops that actually have a cost of 0.
+
+Unfortunately a loop cost of 0 is also used to communicate that the cost
+has not been computed yet. To resolve the crash, bail out if the cost
+remains zero after computing it.
+
+This seems like the best option, as there are multiple code paths that
+return a cost of 0 to force a computation in selectInterleaveCount.
+Computing the cost at multiple places up front there would unnecessarily
+complicate the logic.
+
+Fixes #54413.
+
+(cherry picked from commit ecb4171dcbf1b433c9963fd605a74898303e850d)
+---
+ .../Transforms/Vectorize/LoopVectorize.cpp    | 22 ++++----
+ ...ct-interleave-count-loop-with-cost-zero.ll | 50 +++++++++++++++++++
+ 2 files changed, 62 insertions(+), 10 deletions(-)
+ create mode 100644 llvm/test/Transforms/LoopVectorize/X86/pr54413-select-interleave-count-loop-with-cost-zero.ll
+
+diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+index 21c16f07e237..e1cc7946073e 100644
+--- a/src/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
++++ b/src/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+@@ -6035,6 +6035,18 @@ unsigned LoopVectorizationCostModel::selectInterleaveCount(ElementCount VF,
+       !(InterleaveSmallLoopScalarReduction && HasReductions && VF.isScalar()))
+     return 1;
+ 
++  // If we did not calculate the cost for VF (because the user selected the VF)
++  // then we calculate the cost of VF here.
++  if (LoopCost == 0) {
++    InstructionCost C = expectedCost(VF).first;
++    assert(C.isValid() && "Expected to have chosen a VF with valid cost");
++    LoopCost = *C.getValue();
++
++    // Loop body is free and there is no need for interleaving.
++    if (LoopCost == 0)
++      return 1;
++  }
++
+   RegisterUsage R = calculateRegisterUsage({VF})[0];
+   // We divide by these constants so assume that we have at least one
+   // instruction that uses at least one register.
+@@ -6126,16 +6138,6 @@ unsigned LoopVectorizationCostModel::selectInterleaveCount(ElementCount VF,
+ 
+   assert(IC > 0 && "Interleave count must be greater than 0.");
+ 
+-  // If we did not calculate the cost for VF (because the user selected the VF)
+-  // then we calculate the cost of VF here.
+-  if (LoopCost == 0) {
+-    InstructionCost C = expectedCost(VF).first;
+-    assert(C.isValid() && "Expected to have chosen a VF with valid cost");
+-    LoopCost = *C.getValue();
+-  }
+-
+-  assert(LoopCost && "Non-zero loop cost expected");
+-
+   // Interleave if we vectorized this loop and there is a reduction that could
+   // benefit from interleaving.
+   if (VF.isVector() && HasReductions) {

diff --git a/dev-lang/rust/files/1.61.0-miri-cow.patch b/dev-lang/rust/files/1.61.0-miri-cow.patch
new file mode 100644
index 0000000..fc46973
--- /dev/null
+++ b/dev-lang/rust/files/1.61.0-miri-cow.patch
@@ -0,0 +1,98 @@
+From 830cc58f8a10598f4caa337ca97be51741945499 Mon Sep 17 00:00:00 2001
+From: Ralf Jung <post@ralfj.de>
+Date: Sun, 3 Apr 2022 20:00:03 -0400
+Subject: [PATCH] rustup
+
+gyakovlev: changed paths and removed irrelevant bits
+---
+ rust-version                     | 2 +-
+ src/helpers.rs                   | 4 ++--
+ src/machine.rs                   | 2 +-
+ src/shims/env.rs                 | 2 +-
+ src/shims/foreign_items.rs       | 4 ++--
+ src/shims/posix/foreign_items.rs | 2 +-
+ 6 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/src/helpers.rs b/src/helpers.rs
+index 3ffb983aa..7a63bb03d 100644
+--- a/src/tools/miri/src/helpers.rs
++++ b/src/tools/miri/src/helpers.rs
+@@ -510,7 +510,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
+         let this = self.eval_context_mut();
+         let target = &this.tcx.sess.target;
+         let target_os = &target.os;
+-        let last_error = if target.families.contains(&"unix".to_owned()) {
++        let last_error = if target.families.iter().any(|f| f == "unix") {
+             this.eval_libc(match err_kind {
+                 ConnectionRefused => "ECONNREFUSED",
+                 ConnectionReset => "ECONNRESET",
+@@ -534,7 +534,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
+                     )
+                 }
+             })?
+-        } else if target.families.contains(&"windows".to_owned()) {
++        } else if target.families.iter().any(|f| f == "windows") {
+             // FIXME: we have to finish implementing the Windows equivalent of this.
+             this.eval_windows(
+                 "c",
+diff --git a/src/machine.rs b/src/machine.rs
+index e9ed50724..b4b07a61a 100644
+--- a/src/tools/miri/src/machine.rs
++++ b/src/tools/miri/src/machine.rs
+@@ -227,7 +227,7 @@ impl MemoryExtra {
+     pub fn init_extern_statics<'tcx, 'mir>(
+         this: &mut MiriEvalContext<'mir, 'tcx>,
+     ) -> InterpResult<'tcx> {
+-        match this.tcx.sess.target.os.as_str() {
++        match this.tcx.sess.target.os.as_ref() {
+             "linux" => {
+                 // "environ"
+                 Self::add_extern_static(
+diff --git a/src/shims/env.rs b/src/shims/env.rs
+index c2050647a..822bef56c 100644
+--- a/src/tools/miri/src/shims/env.rs
++++ b/src/src/tools/miri/shims/env.rs
+@@ -41,7 +41,7 @@ impl<'tcx> EnvVars<'tcx> {
+         mut excluded_env_vars: Vec<String>,
+         forwarded_env_vars: Vec<String>,
+     ) -> InterpResult<'tcx> {
+-        let target_os = ecx.tcx.sess.target.os.as_str();
++        let target_os = ecx.tcx.sess.target.os.as_ref();
+         // HACK: Exclude `TERM` var to avoid terminfo trying to open the termcap file.
+         // This is (a) very slow and (b) does not work on Windows.
+         excluded_env_vars.push("TERM".to_owned());
+diff --git a/src/shims/foreign_items.rs b/src/shims/foreign_items.rs
+index ecffd310d..d9e4d9382 100644
+--- a/src/tools/miri/src/shims/foreign_items.rs
++++ b/src/tools/miri/src/shims/foreign_items.rs
+@@ -46,7 +46,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
+     fn min_align(&self, size: u64, kind: MiriMemoryKind) -> Align {
+         let this = self.eval_context_ref();
+         // List taken from `libstd/sys_common/alloc.rs`.
+-        let min_align = match this.tcx.sess.target.arch.as_str() {
++        let min_align = match this.tcx.sess.target.arch.as_ref() {
+             "x86" | "arm" | "mips" | "powerpc" | "powerpc64" | "asmjs" | "wasm32" => 8,
+             "x86_64" | "aarch64" | "mips64" | "s390x" | "sparc64" => 16,
+             arch => bug!("Unsupported target architecture: {}", arch),
+@@ -695,7 +695,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
+             }
+ 
+             // Platform-specific shims
+-            _ => match this.tcx.sess.target.os.as_str() {
++            _ => match this.tcx.sess.target.os.as_ref() {
+                 "linux" | "macos" => return shims::posix::foreign_items::EvalContextExt::emulate_foreign_item_by_name(this, link_name, abi, args, dest, ret),
+                 "windows" => return shims::windows::foreign_items::EvalContextExt::emulate_foreign_item_by_name(this, link_name, abi, args, dest, ret),
+                 target => throw_unsup_format!("the target `{}` is not supported", target),
+diff --git a/src/shims/posix/foreign_items.rs b/src/shims/posix/foreign_items.rs
+index 02fb7089c..36bf53059 100644
+--- a/src/tools/miri/src/shims/posix/foreign_items.rs
++++ b/src/tools/miri/src/shims/posix/foreign_items.rs
+@@ -462,7 +462,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
+ 
+             // Platform-specific shims
+             _ => {
+-                match this.tcx.sess.target.os.as_str() {
++                match this.tcx.sess.target.os.as_ref() {
+                     "linux" => return shims::posix::linux::foreign_items::EvalContextExt::emulate_foreign_item_by_name(this, link_name, abi, args, dest, ret),
+                     "macos" => return shims::posix::macos::foreign_items::EvalContextExt::emulate_foreign_item_by_name(this, link_name, abi, args, dest, ret),
+                     _ => unreachable!(),

diff --git a/dev-lang/rust/rust-1.61.0-r1.ebuild b/dev-lang/rust/rust-1.61.0-r1.ebuild
new file mode 100644
index 0000000..724f325
--- /dev/null
+++ b/dev-lang/rust/rust-1.61.0-r1.ebuild
@@ -0,0 +1,730 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..10} )
+
+inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
+	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.xz"
+	KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+fi
+
+RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+SRC_URI="
+	https://static.rust-lang.org/dist/${SRC}
+	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
+	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
+"
+
+# 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 dist doc miri nightly parallel-compiler profiler rls rustfmt rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+
+# Please keep the LLVM dependency block separate. Since LLVM is slotted,
+# we need to *really* make sure we're not pulling more than one slot
+# simultaneously.
+
+# How to use it:
+# List all the working slots in LLVM_VALID_SLOTS, newest first.
+LLVM_VALID_SLOTS=( 14 )
+LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
+
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+# (-) usedep needed because we may build with older llvm without that target
+LLVM_DEPEND="|| ( "
+for _s in ${LLVM_VALID_SLOTS[@]}; do
+	LLVM_DEPEND+=" ( "
+	for _x in ${ALL_LLVM_TARGETS[@]}; do
+		LLVM_DEPEND+="
+			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
+	done
+	LLVM_DEPEND+=" )"
+done
+unset _s _x
+LLVM_DEPEND+=" )
+	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
+	wasm? ( sys-devel/lld )
+"
+
+# 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
+RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
+RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
+BOOTSTRAP_DEPEND="||
+	(
+		=dev-lang/rust-"${RUST_DEP_PREV}"
+		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
+		=dev-lang/rust-"${RUST_DEP_CURR}"
+		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
+	)
+"
+
+BDEPEND="${PYTHON_DEPS}
+	app-eselect/eselect-rust
+	|| (
+		>=sys-devel/gcc-4.7
+		>=sys-devel/clang-3.5
+	)
+	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
+	!system-llvm? (
+		>=dev-util/cmake-3.13.4
+		dev-util/ninja
+	)
+	test? ( sys-devel/gdb )
+	verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+	>=app-arch/xz-utils-5.2
+	net-misc/curl:=[http2,ssl]
+	sys-libs/zlib:=
+	dev-libs/openssl:0=
+	elibc_musl? ( sys-libs/libunwind:= )
+	system-llvm? ( ${LLVM_DEPEND} )
+"
+
+RDEPEND="${DEPEND}
+	app-eselect/eselect-rust
+	sys-apps/lsb-release
+"
+
+REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
+	miri? ( nightly )
+	parallel-compiler? ( nightly )
+	rls? ( rust-src )
+	test? ( ${ALL_LLVM_TARGETS[*]} )
+	wasm? ( llvm_targets_WebAssembly )
+	x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+	usr/lib/${PN}/${PV}/bin/.*
+	usr/lib/${PN}/${PV}/libexec/.*
+	usr/lib/${PN}/${PV}/lib/lib.*.so
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+	usr/lib/${PN}/${PV}/lib/lib.*.so.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+	"${FILESDIR}"/1.59.0-libressl.patch
+	"${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
+	"${FILESDIR}"/1.61.0-gentoo-musl-target-specs.patch
+	"${FILESDIR}"/1.61.0-llvm_selectInterleaveCount.patch
+	"${FILESDIR}"/1.61.0-llvm_addrspacecast.patch
+	"${FILESDIR}"/1.61.0-miri-cow.patch
+)
+
+S="${WORKDIR}/${MY_P}-src"
+
+toml_usex() {
+	usex "${1}" true false
+}
+
+bootstrap_rust_version_check() {
+	# never call from pkg_pretend. eselect-rust may be not installed yet.
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
+	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
+	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
+		eerror "Rust >=${rustc_wanted} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too old"
+	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
+		eerror "Rust <${rustc_toonew} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too new"
+	else
+		einfo "Using rust ${rustc_version} to build"
+	fi
+}
+
+pre_build_checks() {
+	local M=8192
+	# multiply requirements by 1.3 if we are doing x86-multilib
+	if use amd64; then
+		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
+	fi
+	M=$(( $(usex clippy 128 0) + ${M} ))
+	M=$(( $(usex miri 128 0) + ${M} ))
+	M=$(( $(usex rls 512 0) + ${M} ))
+	M=$(( $(usex rustfmt 256 0) + ${M} ))
+	# add 2G if we compile llvm and 256M per llvm_target
+	if ! use system-llvm; then
+		M=$(( 2048 + ${M} ))
+		local ltarget
+		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+		done
+	fi
+	M=$(( $(usex wasm 256 0) + ${M} ))
+	M=$(( $(usex debug 2 1) * ${M} ))
+	eshopts_push -s extglob
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		M=$(( 15 * ${M} / 10 ))
+	fi
+	eshopts_pop
+	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
+	M=$(( $(usex doc 256 0) + ${M} ))
+	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+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 && bootstrap_rust_version_check
+
+	if use system-llvm; then
+		llvm_pkg_setup
+
+		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+		export LLVM_LINK_SHARED=1
+		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+	fi
+}
+
+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 \
+			--without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
+	fi
+
+	default
+}
+
+src_configure() {
+	local rust_target="" rust_targets="" arch_cflags use_libcxx="false"
+
+	# 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/wasm_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 profiler; then
+		tools="\"rust-demangler\",$tools"
+	fi
+	if use rls; then
+		tools="\"rls\",\"analysis\",$tools"
+	fi
+	if use rustfmt; then
+		tools="\"rustfmt\",$tools"
+	fi
+	if use rust-src; then
+		tools="\"src\",$tools"
+	fi
+
+	local rust_stage0_root
+	if use system-bootstrap; then
+		local printsysroot
+		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
+		rust_stage0_root="${printsysroot}"
+	else
+		rust_stage0_root="${WORKDIR}"/rust-stage0
+	fi
+	# in case of prefix it will be already prefixed, as --print sysroot returns full path
+	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+	rust_target="$(rust_abi)"
+
+	# https://bugs.gentoo.org/732632
+	if tc-is-clang; then
+		local clang_slot="$(clang-major-version)"
+		if { has_version "sys-devel/clang:${clang_slot}[default-libcxx]" || is-flagq -stdlib=libc++; }; then
+			use_libcxx="true"
+		fi
+	fi
+
+	cat <<- _EOF_ > "${S}"/config.toml
+		changelog-seen = 2
+		[llvm]
+		download-ci-llvm = false
+		optimize = $(toml_usex !debug)
+		release-debuginfo = $(toml_usex debug)
+		assertions = $(toml_usex debug)
+		ninja = true
+		targets = "${LLVM_TARGETS// /;}"
+		experimental-targets = ""
+		link-shared = $(toml_usex system-llvm)
+		$(if [[ ${use_libcxx} == true ]]; then
+			echo "use-libcxx = true"
+			echo "static-libstdcpp = false"
+		fi)
+		$(case "${rust_target}" in
+			i586-*-linux-*)
+				# https://github.com/rust-lang/rust/issues/93059
+				echo 'cflags = "-fcf-protection=none"'
+				echo 'cxxflags = "-fcf-protection=none"'
+				echo 'ldflags = "-fcf-protection=none"'
+				;;
+			*)
+				;;
+		esac)
+		[build]
+		build-stage = 2
+		test-stage = 2
+		doc-stage = 2
+		build = "${rust_target}"
+		host = ["${rust_target}"]
+		target = [${rust_targets}]
+		cargo = "${rust_stage0_root}/bin/cargo"
+		rustc = "${rust_stage0_root}/bin/rustc"
+		rustfmt = "${rust_stage0_root}/bin/rustfmt"
+		docs = $(toml_usex doc)
+		compiler-docs = false
+		submodules = false
+		python = "${EPYTHON}"
+		locked-deps = true
+		vendor = true
+		extended = true
+		tools = [${tools}]
+		verbose = 2
+		sanitizers = false
+		profiler = $(toml_usex profiler)
+		cargo-native-static = false
+		[install]
+		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
+		sysconfdir = "etc"
+		docdir = "share/doc/rust"
+		bindir = "bin"
+		libdir = "lib"
+		mandir = "share/man"
+		[rust]
+		# https://github.com/rust-lang/rust/issues/54872
+		codegen-units-std = 1
+		optimize = true
+		debug = $(toml_usex debug)
+		debug-assertions = $(toml_usex debug)
+		debug-assertions-std = $(toml_usex debug)
+		debuginfo-level = $(usex debug 2 0)
+		debuginfo-level-rustc = $(usex debug 2 0)
+		debuginfo-level-std = $(usex debug 2 0)
+		debuginfo-level-tools = $(usex debug 2 0)
+		debuginfo-level-tests = 0
+		backtrace = true
+		incremental = false
+		default-linker = "$(tc-getCC)"
+		parallel-compiler = $(toml_usex parallel-compiler)
+		channel = "$(usex nightly nightly stable)"
+		description = "gentoo"
+		rpath = false
+		verbose-tests = true
+		optimize-tests = $(toml_usex !debug)
+		codegen-tests = true
+		dist-src = false
+		remap-debuginfo = true
+		lld = $(usex system-llvm false $(toml_usex wasm))
+		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+		# https://github.com/rust-lang/rust/issues/74976
+		# https://github.com/rust-lang/rust/issues/76526
+		deny-warnings = $(usex wasm $(usex doc false true) true)
+		backtrace-on-ice = true
+		jemalloc = false
+		[dist]
+		src-tarball = false
+		compression-formats = ["xz"]
+	_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}]
+			ar = "$(tc-getAR)"
+			cc = "$(tc-getCC)"
+			cxx = "$(tc-getCXX)"
+			linker = "$(tc-getCC)"
+			ranlib = "$(tc-getRANLIB)"
+		_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)"
+			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
+			profiler = false
+		_EOF_
+	fi
+
+	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
+	# experimental cross support
+	# discussion: https://bugs.gentoo.org/679878
+	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
+	# it would be much better if we could split out stdlib
+	# complilation to separate ebuild and abuse CATEGORY to
+	# just install to /usr/lib/rustlib/<target>
+
+	# extra targets defined as a bash array
+	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
+	# best place would be /etc/portage/env/dev-lang/rust
+	# Example:
+	# RUST_CROSS_TARGETS=(
+	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
+	# )
+	# no extra hand holding is done, no target transformations, all
+	# values are passed as-is with just basic checks, so it's up to user to supply correct values
+	# valid rust targets can be obtained with
+	# 	rustc --print target-list
+	# matching cross toolchain has to be installed
+	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
+	# only gcc toolchains installed with crossdev are checked for now.
+
+	# BUG: we can't pass host flags to cross compiler, so just filter for now
+	# BUG: this should be more fine-grained.
+	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
+
+	local cross_target_spec
+	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
+		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
+		local cross_llvm_target="${cross_target_spec%%:*}"
+		# extracts toolchain triples, <rust-target>:<CTARGET>
+		local cross_triples="${cross_target_spec#*:}"
+		# extracts first element after before : separator
+		local cross_rust_target="${cross_triples%%:*}"
+		# extracts last element after : separator
+		local cross_toolchain="${cross_triples##*:}"
+		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
+		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${cross_rust_target}]
+			ar = "${cross_toolchain}-ar"
+			cc = "${cross_toolchain}-gcc"
+			cxx = "${cross_toolchain}-g++"
+			linker = "${cross_toolchain}-gcc"
+			ranlib = "${cross_toolchain}-ranlib"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		if [[ "${cross_toolchain}" == *-musl* ]]; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+			_EOF_
+		fi
+
+		# append cross target to "normal" target list
+		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
+		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+		rust_targets="${rust_targets},\"${cross_rust_target}\""
+		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+		ewarn
+		ewarn "Enabled ${cross_rust_target} rust target"
+		ewarn "Using ${cross_toolchain} cross toolchain"
+		ewarn
+		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+			ewarn "'sys-devel/binutils[multitarget]' is not installed"
+			ewarn "'strip' will be unable to strip cross libraries"
+			ewarn "cross targets will be installed with full debug information"
+			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+			ewarn
+			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+			ewarn
+		fi
+	done
+	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+	einfo "Rust configured with the following flags:"
+	echo
+	echo RUSTFLAGS="${RUSTFLAGS:-}"
+	echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
+	echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
+	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+	cat "${S}"/config.env || die
+	echo
+	einfo "config.toml contents:"
+	cat "${S}"/config.toml || die
+	echo
+}
+
+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
+	)
+}
+
+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() {
+	(
+	IFS=$'\n'
+	env $(cat "${S}"/config.env) DESTDIR="${D}" \
+		"${EPYTHON}" ./x.py install	-vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+	)
+
+	# bug #689562, #689160
+	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
+	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+
+	local symlinks=(
+		cargo
+		rustc
+		rustdoc
+		rust-gdb
+		rust-gdbgui
+		rust-lldb
+	)
+
+	use clippy && symlinks+=( clippy-driver cargo-clippy )
+	use miri && symlinks+=( miri cargo-miri )
+	use profiler && symlinks+=( rust-demangler )
+	use 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}/libexec" "/usr/lib/${PN}/libexec-${PV}"
+	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
+	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
+	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+
+	newenvd - "50${P}" <<-_EOF_
+		LDPATH="${EPREFIX}/usr/lib/rust/lib"
+		MANPATH="${EPREFIX}/usr/lib/rust/man"
+		$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
+		$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
+	_EOF_
+
+	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+
+	# note: eselect-rust adds EROOT to all paths below
+	cat <<-_EOF_ > "${T}/provider-${P}"
+		/usr/bin/cargo
+		/usr/bin/rustdoc
+		/usr/bin/rust-gdb
+		/usr/bin/rust-gdbgui
+		/usr/bin/rust-lldb
+		/usr/lib/rustlib
+		/usr/lib/rust/lib
+		/usr/lib/rust/libexec
+		/usr/lib/rust/man
+		/usr/share/doc/rust
+	_EOF_
+
+	if use clippy; then
+		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+	fi
+	if use miri; then
+		echo /usr/bin/miri >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+	fi
+	if use profiler; then
+		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
+	fi
+	if use 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}"
+
+	if use dist; then
+		insinto "/usr/lib/${PN}/${PV}/dist"
+		doins -r "${S}/build/dist/."
+	fi
+}
+
+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
+}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2022-06-02  1:44 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2022-06-02  1:44 UTC (permalink / raw
  To: gentoo-commits

commit:     f231d3e0faf008ad7fd08bdd04fd7b2c3c86e9ea
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Wed Jun  1 22:33:17 2022 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Thu Jun  2 01:44:04 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=f231d3e0

dev-lang/rust: Remove old version

Signed-off-by: orbea <orbea <AT> riseup.net>
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 dev-lang/rust/Manifest                    |  34 --
 dev-lang/rust/files/1.55.0-libressl.patch |  26 --
 dev-lang/rust/rust-1.58.1.ebuild          | 706 ------------------------------
 3 files changed, 766 deletions(-)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index b10f97d..1c59907 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -1,35 +1,3 @@
-DIST rust-1.57.0-aarch64-unknown-linux-gnu.tar.xz 228665060 BLAKE2B 98fe268d060a7f19c284bf02fec148550807b6c75fad042b85f07b22c127f911e4e7e6d9738b4bef42b5a46cc888e5a0df79307cc84e39adf3ed9da3fd531188 SHA512 71d32e1ed3fc4a2eaf3594112b3b43ab82bd28b35e547542f6c1ed006175d7cf805be373a4da8b962762962dd32fe951c8ca7c0a424addad5d4e828441d5386c
-DIST rust-1.57.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B fc832ff510b498a5763a26b420a6cdcf6b2b5fa8ce655f01ab23190f527cfaac144ac68378c6af3d3048440330f94b5d213d049c65ad87f0701b0555ebfa2b6f SHA512 a225f1db92c6e57b977873a3e5dbd07fa1288d2f8d79a879cc72dfc0dff66e70ce56619198cf36376b2774272c85363b8e8abf14efe8404f4cc038410c648ad3
-DIST rust-1.57.0-aarch64-unknown-linux-musl.tar.xz 224700500 BLAKE2B 2eb3122af42c499bf92b93946b20b6414d51ba895a77a8e9c53dc437a20093605b2e9f22d8f88b4fc3ca7f7b75d425a2442b36fcea54b583692c32f728f23bfc SHA512 0850861d9d2c22d76b1550e7d6b64c746c3cc24b51a68949948528bdd93621f74e6c07d23428fcdb280e884e469f2e4f2d3f9a7f81ccfa61d41265e31af3a9cb
-DIST rust-1.57.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B f594a31b48af2ee7835f89660a13e336f3cb2a01d99a5d48d280c06698d69712de190b35ddc682a9ac7bb6bad1edac9c3bde7262fc5a9732ea471984e1bb99a7 SHA512 aee3fd35c8e7c6b9ce651d940f8fbb17a2bd2a58d8b85421ecfb4a72d5c56878a5d129166896ea717c5b3e5b9c7f61376801d766af1c9a4d1a090327424e93db
-DIST rust-1.57.0-arm-unknown-linux-gnueabi.tar.xz 206890752 BLAKE2B 5d314766d333708158df7ef01d740e0cf0e71044edbdeb180f491c78a39dbf9460b62a1eb70076787e33a3199821b18734da59f892c0c251effed8e68c0eb22a SHA512 c01a6a408bf334474b2060ef70ed7c6c53e5f3a7453de74e36e59013292584a129b50530259327ae410830852173601dd9bccd1cd801d9f916d1a3e93820e481
-DIST rust-1.57.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 494d4eec9795de0150da9a7f5ba6cfbabd8da99dc65e5e02360ed4961e42cc3761f147ca8f7155badf61ec85d2898ec866aa5dde53e555ab34ead6b4d32c737e SHA512 31e9f00de8252e905d4de279860ab7eb287237d7d5330122b989ef2199fa8d209ef7a0cc71b83db82b78ea632d4d3b9c00b8f49a272dafd6e1f78f62055fdf4c
-DIST rust-1.57.0-arm-unknown-linux-gnueabihf.tar.xz 206580040 BLAKE2B 3ff02d3308cc27e2422609055a82ed36dcfb3ed2180091653d7ec21ccbb07f3685c58dc5d20f4abf4e342ce18d1d98e47c0a82180b5dccd57d09d215984e6b3d SHA512 9351db6cbc029c1051da277292bd7c3728b6ef250da20a20ee619b45938ccdcd8da1ecfec143734cc692ca3a39690f2f8cd6c332e04d0fd048943a8203eb48fc
-DIST rust-1.57.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B e5495533d128a99505c7856b27eeae22f85b3f0783cc0c9d52e8e8e9fbcebee6b909fd3465a7b49d1e1da2477c1864fdd048f01f7ba684ed55133c925522aad2 SHA512 bf06cd5c1f6731b02351136c7682d05e6a7114702124768b5cde1935cae4dd1147352352ad9b8dded575b90a57a6cab7c09dbe179404da0e378e992e1a67f47f
-DIST rust-1.57.0-armv7-unknown-linux-gnueabihf.tar.xz 211614620 BLAKE2B e8c1f68d4e0846ee9425bd1747a423e1ab6161216a3cd276fd5afc13229dad33e3993d31305e3e38b4d3f6b21bb01fcdc9612d2217778a7f91915c65f1aa91d9 SHA512 667d8f6fb56408782c7a9e0c5086013d0350d6161d52ca4cd948ea39a02ebdf657dd45cb0a135ade8bc1e856c0962040969416fa1762e3bb55a03574fff3b1d1
-DIST rust-1.57.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 6bcb5e7c700a53d8420baa8747c06b291988b806aca6da447c283979f7324f31087482df5606c49d287c355e31b2952d7ed9f40713bce819ab8c02d1863413ce SHA512 164ae760f53820dddf93ce7432553d1698bcfb1af53dd6054d408db87f42b6ac2d7c71da375f8486675b2c6104fef295faff481e5167288e0df782ef74cc3006
-DIST rust-1.57.0-i686-unknown-linux-gnu.tar.xz 223062024 BLAKE2B d0e1d3aef1764403dcaa2b1d2a5ee887562f0b59b05b2f984e848da60f772c58bdd8a6073692c6b71dc741ff3d25a784c04478260104962d308529516a56cae3 SHA512 9dc7d650bbe35d3967a883e91bfd2a3dcad633c41c00a41d9ca78bc336b1e3262bbb4100a76d42169700dc3b15d4066fa065e785aed1c0a46df4736dfd00d7c6
-DIST rust-1.57.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5d6f4d31e1418124cbd10a7cdb5ecbfe3334256d238e058e5524120438cebe85af68a8dfd604dc311d38e553a559b471dc71ef2870f89ed2cf05f6291e65ac0b SHA512 4957bef14da4bfc34f19d69cc64b2e06fd329566fc941e399105eea6fe4de0de90cd50c72baeaea6490f93bc4b0af14c9591584d97d84873d9c87fe7c177c6ea
-DIST rust-1.57.0-mips-unknown-linux-gnu.tar.xz 165094616 BLAKE2B ca5965c40ad81c24ee00f895e00e26cab1a2c0322e2517e4793872707facf03430a92934b79a3d59f349bfb7513be4d1914073fc3b20300d5fd5c332bcb08224 SHA512 1fbd2aeb8e24d236f97c81a4136917cc8c705724c72567be095323a878ee18ed646fc2f4bec446a9a505fc4c88a708efa901970fdb00a67179c34cf97906a3b4
-DIST rust-1.57.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 230ccb3a534515c9ecd1ca2a3fced2e3688547a3ce42967eb06d7a04b79695eca74f1cf13583631139801a7ad60a31c7f6a1b2821dd13aceabc95386122034a0 SHA512 91313f0ed942d23bb490dffbc4b7eb9a441a09ff5925323df68a38c15aa4e3f5c1bad15c2700ccba8625fb35588135a9ba5f09c7bc5ba7d4f8486fed268a8000
-DIST rust-1.57.0-mips64-unknown-linux-gnuabi64.tar.xz 170276060 BLAKE2B 0c6defb288bdb11a8c81ab082944196c767424b8bab6997a51279c7c6ef6c1163c9715493b274420bca9d3f5e7fe7422d403a24162effc3cd880633641d23995 SHA512 339d1dc24e1227195b1fa1a72ceddf592026b4edf234141567e8b8c33c80e07aea71dd73962182783b60271829db8544e1ca6172aaf5ed5ae1cade848355508c
-DIST rust-1.57.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 3b6ebc9e8678946f57e30452a880be3bf5a5a949683e7230cbda776511fd68a7278ecfc741c823d2d1362f200af19cbc25db7d67ab4ade8561a3d9224fd0313e SHA512 0a161f676162684da557d010de4833a6ef229592b6cb9cf55938cb85d12685e28fb0e4e204688b9c9f203b34095831de06c25a4fea48a8ef17226b15a214af0f
-DIST rust-1.57.0-mipsel-unknown-linux-gnu.tar.xz 168175700 BLAKE2B d544173e64d81b5cf74f16810f0c00fab0e2b628f90a554a33596b1b3140ef5183db5123f956ff71269761915469a7d51bdb945c02217f47529ae45f1200edc5 SHA512 7963364478ca613ca8670cc71b72e8423febe3062269ea1e5e82358d54c6d5e5006f85c69ae5c746bec296bd3e97883358ab27a9aaf59703984fa4186c5e01c7
-DIST rust-1.57.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B a4056c8006cc5f3d7a548b55ff85f42003d19a7323bd3829c79ba370837c1982a0ca6d15e5d2dac9a4c75251662b375c8243ba0d2682b684b6fe258b25c32fbb SHA512 3db703e462c5c2e974e039c986094ae2bcbdf5e4b2163bbca4d20062be2e54b39f04d72d3f5929886f65e79f19a041e01cb17ec73db4611c3208b51efa2b7e89
-DIST rust-1.57.0-powerpc-unknown-linux-gnu.tar.xz 183173668 BLAKE2B 8d897751ce518f0e7fac16fa67645b73337cf2aeca20ffc8ceeace6591043a1b69cae9ba8af6271ad2b7b4448a64e4b5063a2efcb2cebc72c1d0a95c576dc07a SHA512 10ca7a769b53453c503d8da2ebd5da49e016d31a92e898c4aea4129cf1225330b2e1b4ac1893860741efd9ddc9ce409ff9d9fc00536b960efc928562f2e169a3
-DIST rust-1.57.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b7cfe911745b76e8b2a7090db19a6cc973ff361b0fc23c1d3d104c08554d7818866a6832c89cd8e1dbb519de72618ab362c9e6b1971a2babd0af607c9db9b0e0 SHA512 385c022053f6e102aa9c96c49703bd441b466129bffc5fb3c233f432edf2f2adad5e9979e0b657016eec33cf4b6c7bf31131a0e831c990d071d7da758f5e03d8
-DIST rust-1.57.0-powerpc64-unknown-linux-gnu.tar.xz 193868872 BLAKE2B f60c9d320fa6ca0d3b52dc27b22efb50115a1338ce12ea1071499d3abbd60e17c4866a59495fbca725eafef3675b9ca9417c87cad0262541955d2e308eb79f2e SHA512 4b5b2d461cd093f176c1624b29d4174bf9558e8760f7be84b9f9e353e09b622d89548e5bdc91305cf76a072ed2b64f4692b1864b90c86ba7e1a7a9e5df205adb
-DIST rust-1.57.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 26ea554afaca2e453130d400d3315d0c857e4ab92d5c0cfd21035548160a3c00f801adcbc24387aa6f56bc2907e3aaa3712b4bf35abc10128e3e712b3a451043 SHA512 90ff52af04044b073855c2a91bfe2bdb8fb8397a2d59ca50e38e5e235bd3379d993917546d1dacf3c25db6ec386f967cb8c9c5c7a1b76b06fa60d50a5c066176
-DIST rust-1.57.0-powerpc64le-unknown-linux-gnu.tar.xz 203489092 BLAKE2B 5174c149bd6565ed2b709356caf940f7c051a1933a35f9801a31331358277e80d5262a73ea47d484abb2c12ad26c52bbeea5d2ee30f4c8b45e163d5fc788d848 SHA512 7e0809b66086f1c9dde14df5bd9f08757e32bb58041b74150415f798d81cb4ca01a6d69d529efe8a93026f251aa8f1711520defa8d86de64f20d9055ee1568e5
-DIST rust-1.57.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 0ed205cf7d3712e3501c228ad7d116331eb3c831437040dc7d4cbfa86de80372db1b116bd2c88ef9c05c57279499dc7cb6a394c216e89a69a6b033d56e4108b0 SHA512 2a3fd37e32382c747227f35e144966bbd241d57b9e06acdb444ed0ac68cf174dd21c565448d9e7ec032d14dbf6de580ca37e6d10b66446dcbef35b0dd35a2c1d
-DIST rust-1.57.0-riscv64gc-unknown-linux-gnu.tar.xz 196918164 BLAKE2B b41e958b690a5f6f46744dd38a464a0de0b80d9b4974f1fea46bbce8b26c37b88ffeb3b42e9cd6a3006e8ad8b89a990945dcf1e814041399f6fa8831089c074f SHA512 43c11df8b6621c4e3ccbbb81c043cc3b2f8c897f5d80b03a39ec73d0d73f1a3fafa1a8a607fcf6e16204eb424ead7b9dee0ffd401c185440c4a7b80e84921f5a
-DIST rust-1.57.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B c55cc1c7c3e80bdb0527fcfe9b3a0bcb7edf84bea85e842ea425b5498247aaa8ffe19f05f1a2d8c93801dbf1d5e308760e8222311914179deb01f910aae279fe SHA512 df0d218a78eda0d005bb88e18a314f326165776449f28d4cd1aa014efa0e6870bacd2580f5958250e9a00de75c7327b20b4586606a8b120a7d658641759be61e
-DIST rust-1.57.0-s390x-unknown-linux-gnu.tar.xz 198621068 BLAKE2B 92af932e06c529ef27e389d35532cb7eed482c36bcc196d6c6934a442cc180815862ad7ee92c4ed97f69963ef6cfd617cab2bc254a81ffd35d88de267fb5d084 SHA512 4cc63e93bbafcbba2122a862200bf1dd241fe84f526778e1877c14237984fdeccdd3d2b3dfe73428b1b97bd253c1ddf98f4302f40709abbdd52ec721d5ccdb6e
-DIST rust-1.57.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B c088d5904ecaadcad09d21dcffcbe1856ea2165cb45fcdce31ebad6edddfeb292bb644548537219ec301c4f5e417091d879093a627ea5efb4409e1db36771431 SHA512 c1c2f43033ba1a2ed28e8c60a18cc0de1dfdc7f5361c101cb8318f0f2c3be911784e7d1cc3a61456f1b2c39a5b6df2915b9e56e20dbfdfeb959addf4dc93f01e
-DIST rust-1.57.0-x86_64-unknown-linux-gnu.tar.xz 151033748 BLAKE2B 61ecece6a8aa31a2cdf8dcf22514c19a54fcfda3a1248797a6a98e9bc42cf4f4278be21369270a6418b7c416875394055fceb49b5b1d21625e2759b97b2447e8 SHA512 54016b58fe85208c0d98e61cb52f2549bbb9731d7d631b4964663c91c91b7ea0ff4c224c3d29a770de433e6a0bcd92d2fe757563bf68e224a20c1cec6d031a7e
-DIST rust-1.57.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B ea41b27fd25cc75efac73203688ee0882767fc76a2fe09b5e424c42467d3e332463c5560cc58f3b20f6e4b44289a25cfb0d36e38a7a9a7b3950ef875a59dc9ae SHA512 8b955bfce6c130e4b95054b98646f7f9b89e621256759ee1ff533df5f777312dd7adbb192ee0076c9b9baa6883a74a9def50ef598ba8c707762290d465c9a8b7
-DIST rust-1.57.0-x86_64-unknown-linux-musl.tar.xz 260333980 BLAKE2B 75342ae8637355e714d5217d78604cfa6a601d3f9bc0ed4667ff0ca57c6521567b19b9bdb10f79761e2e5fd21ca10e12f3fae0c65791118fdb0c35f8f88349f4 SHA512 204ed493528757b8e3e8df13d062c9ae74c75c3e3adc1a2efc0dfc33d2525629168a558dd32653f44a4365191bf203a4415a77152276288a8e122e6bd587394a
-DIST rust-1.57.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 506400c3ea70469cbda0e492e85d41b7f94fba790ec19d1c3491bf4a00d283f97c8fb37319ad6c4a43b22a2195c21d1b9e3c16a5b2a9a82833ff61ad49bdc793 SHA512 793369dc7a854c48a72d81446a0c8eb9d83a071af77758e0bcbb8e4d518fb87c5a23c085202b9b427a02bdd772ad9c82724b34295b851f26f384c3e801bf9a04
 DIST rust-1.58.1-aarch64-unknown-linux-gnu.tar.xz 229585460 BLAKE2B 301b201cb40249005a1a8adf34ffdb0bacd22e1d919a24dec9bb8331c2243de1b7cc312c91a87fc9e11091cd9ad517347ff09143000d9de051b3c9a6e0780f9d SHA512 04e2cf2116e16fa293c7f2d29816012520b41df44b54657e289e7affbb91af5a5001d140a49aab1286451b93e93b0171edea77f61f01085136d1be1a3baac4a2
 DIST rust-1.58.1-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6da55597fddd643350c73f28a15dcfa935529c0878a199819b9bad6f3ea2542f9021e24bc1a6c8724ff14d36007c00f8906dd1aeaff33b0a99ef6982e8f711b3 SHA512 57debe0afe52c3af3eb53e4efe70ba194ddad449d9952174f8a775531b83f8ab0d66462e7bdd06712547e8f675d330a151d20d183daefe1dda2f0e3805695714
 DIST rust-1.58.1-aarch64-unknown-linux-musl.tar.xz 226068748 BLAKE2B 7f9680b0ad3f9a8349f3032f63d23b6d96ab43245d3025d0e4307a29b4353fd2408e7de572a10a77b261634b8fd4e9e6054ba9955b2440b608fdad2c88c12bfa SHA512 6400221a8ae04aea91f9df0f8d82585bcd380f22e80fe813eaa1cadbf592c5207665ad008d938b399e34fc2cb0485b16f993f94d431c290a69a696a4faf89e05
@@ -126,8 +94,6 @@ DIST rust-1.60.0-x86_64-unknown-linux-gnu.tar.xz 154271340 BLAKE2B 7ee48c165e6ec
 DIST rust-1.60.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7454407a16e2b6c89226252c7e706086c9bb8016183df1180c54e88ec0d6622a0829d4acda959a093702bb1d95d4f2678976ced69fcc219afb42ab631e459d40 SHA512 eb3550e27e361860075a22d9b4821c6d078d7e4c82ad688a64e813adbce9922b9ab2dc64d1fd4d74d20be9af122ff05819d521677a43ad1c1092bd498d325a8a
 DIST rust-1.60.0-x86_64-unknown-linux-musl.tar.xz 258420992 BLAKE2B 6b446c06fd8d511910110eccfd55c1116f3468ffe87274d6b90c7a2a1ccd298471f62d1bfb807ddab2f66fbac58995e903414455c76fe2b14c9659f00e8413a0 SHA512 6f5a53968f44bf7be563d32eaddea439d8f388858db3d3b58a89b22cc2252e195b56b0e8895f4254c40274035e221657504958c8f1e331befca012d480118f3b
 DIST rust-1.60.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 680e7267a188a5286938d9c3284968121a7783cba196bf863affd6b927344e1a88cf7b97016d53c74560179439fc7fe9dd700a295c7c00b139472320323861cb SHA512 071efcfad0074a03de454835c512e98b466662b27bef2fb31def0bb82531b4048eba59a529621fda515800e19c4f3c62a33a364ecca8cecbaa09fae842b894b6
-DIST rustc-1.58.1-src.tar.xz 124353160 BLAKE2B 686c7272db544ad46f7fb01b4e05f24f4e08ff959a000cadfaef5d8fc413b93f5ed839077bc9715defc7a0a179af091f65c7a5d7104b0b3153f0654c237c094b SHA512 eff3279d2e519343cea542a9ae2daab592e44f35af344e33ff43ed55fc7c824511790d1991dd36a603d12465de8c3688e7194c2b9557f288c587ffa04738c2ce
-DIST rustc-1.58.1-src.tar.xz.asc 801 BLAKE2B f0b600a503b0ca777dd5d690dca7252ecc6d7d49ca4a9cc8edc0647038f727e9052a861f9868292f837d78d6b02efe9ed5efa85843262c44cf6f73254cc7c9b0 SHA512 983c1ffdc4febf8bce6efc123c76b13f233772bc0a152ffaeb7ebf8f1f7b82a6b5d653407a4d293953d6fbf62c0df4ff4d398a1133061b53ae0f85317a14380b
 DIST rustc-1.59.0-src.tar.xz 128942756 BLAKE2B b28114f14c9a0fec7db56fde79a985360fd8438c3b14eede49ed12e540c2636be960d0fd800c569af193886ac76fe8bf604d5dae59214ae08cb0cc6cc0ca404e SHA512 acace866871d13a55d365f65d7e15c192c3cd33096862571df6317e066b7474d668b95ae281e0244967778c05f1e33966c3c55616218bd25d3770a2b2d4f0365
 DIST rustc-1.59.0-src.tar.xz.asc 801 BLAKE2B 061701c4fdbde930798f9f938ca3642204ae4a2ad9396937ca7d604268813d6d68f4979f20d35abdbbfeec0bb389acd86c9d3d84256db85861f6b11e3dbef80e SHA512 1b90bc01f9d68ba1f70591c4ae707295d7727b790d170a0b757d654684e59d3c26c45b66a21f9ac762debb6867494660c73daaf10be9bd567a38be44c0009f72
 DIST rustc-1.60.0-src.tar.xz 136183048 BLAKE2B 8030f32c21f81af6abc7a282aab1189cb7d680c6bce58c119a1beaad71a3eeb36a696eef46a22d366e2c41a2f9182a9a5aa527426f2c8db05278184c37297dd0 SHA512 d0c113e8c2c67bf10773c9403dc4c4700c4deb2fb287bfec51e565d3473d2b481d8ae2c90b272cd67b3a87d7443ea25a34c7b40ba8cd7106bf5d71126ab141c3

diff --git a/dev-lang/rust/files/1.55.0-libressl.patch b/dev-lang/rust/files/1.55.0-libressl.patch
deleted file mode 100644
index 054fe9b..0000000
--- a/dev-lang/rust/files/1.55.0-libressl.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-commit c9a1367021b346232ca2b6f6879b8ac1903eaf2b
-Author: orbea <orbea@riseup.net>
-Date:   Fri Oct 1 16:29:32 2021 -0700
-
-    Support LibreSSL 3.4.x
-
-diff --git a/vendor/openssl-sys/.cargo-checksum.json b/vendor/openssl-sys/.cargo-checksum.json
-index 8c15ebcd2..34aa59804 100644
---- a/vendor/openssl-sys/.cargo-checksum.json
-+++ b/vendor/openssl-sys/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"CHANGELOG.md":"6ee4e524e49a4e8cd3164701bf18fbc641c7a014b756b5de6b3ccc11fa588c70","Cargo.toml":"1a6b84bb11588fb0fa8d28741ab548726cef34e546de3dd2280be1d8139f292d","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"c5ddde25c2756a1115daaa671fb4297cdc83bf23009c8356ba65b5311d0dd30d","build/cfgs.rs":"193f81ffdf211f056599072e8910d59c2134d3df85fed9ca693bc59f82cb73d4","build/expando.c":"d6f6f9f7d9f79d03b96740fe378e6d4fd38e9447abf7839e62a5fae3eea49c14","build/find_normal.rs":"b6bc74f91a52bb592e14c085061b477722d7f72eaa33a7590fb01da46cd35b7c","build/find_vendored.rs":"7bf0e59c5646d72ee5a4392ad970fdf5c20288ddaf54dd86a8caff49583b38f5","build/main.rs":"c6e1ba232c3334a726707561c7cb0c87c841c75b1848880ce03c689f5d9b2b69","src/aes.rs":"822bf666db351fe6ef9607c918081d6ad378fc1cedb05290bb746f86980c6088","src/asn1.rs":"801c254afc76b0c29b756bd86a149361609f82ec33c1f1fad39a512fbe4e87ee","src/bio.rs":"3aac4e38ccf8d832b4156908cd3f1ff9c56f84c05d2f07ed7a3e3fcc
 abe965e9","src/bn.rs":"c71b9c79f704a94a889d27bf75e7e5b1f9f10b0df0aeb485aef509cf05d7467f","src/cms.rs":"1e1500367732915e756ba7dcee4a0691ba4fab770e0cef88267b74111e99e127","src/conf.rs":"511e008c18039f54d856d70b80009426fc7f4ce34fe4304e2c58ebf465031de0","src/crypto.rs":"fa513478e5c4a1e9d54081a9c79d48400f726c7047e776aa3f1adc023d6600be","src/dh.rs":"fb3b539eec4434b448b30df19e2e2ac5ffc3bd11bb817c7fb9090186ec3b0146","src/dsa.rs":"ae79baf231681900ea76304285b3ffacf5298c90b8c04d371269cf4adbb5b9fa","src/dtls1.rs":"0477022d5bcf2b7a620c70ece4da08a2958be3eca5a57127c89d79525c692ebd","src/ec.rs":"018a2ab377804bb735206e88d0561ab16098e29007d1a1fd0d565c8e492544c2","src/err.rs":"9e6c84a170dce46db74414a64b9e1855845afbd8180100a2d9412f7509f69284","src/evp.rs":"c947ddf745e4fc761f2b4b7886246f96163f41ff8ccc3c822e46ad38169d2c94","src/hmac.rs":"fa3976d94a1383f300bdec228270afb8b47c97bb019d727c7d59ba783be3c42e","src/lib.rs":"19ddf11d94bf469abb3f453a6b38886f6ccea4bc6004477f36b200516f5fee44","src/macros.rs":"7ed99c
 00c53ee12ea92634d4ace0af84845ebf98819869746e7896c8eaff23db","src/obj_mac.rs":"42019b142e523d7695d8c14ee7f72fa4b5702c07dee98fa12e70ab7dfcc95459","src/object.rs":"9ec1a26968e3efc87b24f287b92331fa38eaca048a3919e6514f48d38c7df9a6","src/ocsp.rs":"614492810c5fadd0c1c4bb5eda165fb7e744eed7b04ae61d582446f5013e733a","src/ossl_typ.rs":"0d8dd0f82ef08672ab3c5059d2335b7eaad2d5afc0a20dbf26c2476c99dcae8e","src/pem.rs":"c92d1d31e6f70f6704f148e370a8b4228d6305b51fd3be907c49014a8bfe14ba","src/pkcs12.rs":"4c3c1cf2e716454c5fc94c3d5e1174922c57b9de796253799437dc13303a68d1","src/pkcs7.rs":"726614946784f919db88fd5282ec66d5b9df2edafc98ade9614758e109176b31","src/rand.rs":"c771057f37c64406aa750f36397fa877caf330a8c725e49356c7081c2b2fdd67","src/rsa.rs":"d45d421339b903b0d33817e93be5e939964431f9caed343e5c4490382cfad5b1","src/safestack.rs":"6c39e28565d34efad707d77561d4caa99e3f028fcac3a2ef6fd403a78de1190c","src/sha.rs":"16a4c77cbc38926b8f8eee07b0beae8dc12cbdc8cfa599d4db66fa84a7b3871d","src/srtp.rs":"1c4dee9e6c139cc70
 416207786e385f199321624fb9fbf3cbf39a8160c0c405d","src/ssl.rs":"f0dd56aef28630ba8359e49538664160b54f58e255cca1f5c239f23aa820de1b","src/ssl3.rs":"9336c816e00847d552dea22587d4ac72ff3cbd469fa5ff750423a19ea11e68eb","src/stack.rs":"1a509907283e5a2bf88cf193ce607f49ce7d2d95547c2ce2abc0fd4567aad334","src/tls1.rs":"60ca3dea1bbfda645bde563b4a878dac129c3f760e3ad572381000fc7a8ef522","src/types.rs":"0b9bafc6f5fd373ec8c01e49339f7fe7ef1d76e44d60cda59f60c06982b4070e","src/x509.rs":"785bcb26166b8f39e616e5ab9a0358814773e96de51b40fd5ae62b45a2edcda6","src/x509_vfy.rs":"e530e2fd91e959715265b40fba95576bb53ddcb4e2c6586c2192098e0e8b1cc1","src/x509v3.rs":"520253195097d134e553c6378c1db2510eae6ccfcab6f6fb08919697bc0f023b"},"package":"7a7907e3bfa08bb85105209cdfcb6c63d109f8f6c1ed6ca318fff5c1853fbc1d"}
-\ No newline at end of file
-+{"files":{"CHANGELOG.md":"6ee4e524e49a4e8cd3164701bf18fbc641c7a014b756b5de6b3ccc11fa588c70","Cargo.toml":"1a6b84bb11588fb0fa8d28741ab548726cef34e546de3dd2280be1d8139f292d","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"c5ddde25c2756a1115daaa671fb4297cdc83bf23009c8356ba65b5311d0dd30d","build/cfgs.rs":"193f81ffdf211f056599072e8910d59c2134d3df85fed9ca693bc59f82cb73d4","build/expando.c":"d6f6f9f7d9f79d03b96740fe378e6d4fd38e9447abf7839e62a5fae3eea49c14","build/find_normal.rs":"b6bc74f91a52bb592e14c085061b477722d7f72eaa33a7590fb01da46cd35b7c","build/find_vendored.rs":"7bf0e59c5646d72ee5a4392ad970fdf5c20288ddaf54dd86a8caff49583b38f5","build/main.rs":"1e84b2cd599bd2cb40a7f4eef23531b13bd19d9efdf6864a59a4130e068a497f","src/aes.rs":"822bf666db351fe6ef9607c918081d6ad378fc1cedb05290bb746f86980c6088","src/asn1.rs":"801c254afc76b0c29b756bd86a149361609f82ec33c1f1fad39a512fbe4e87ee","src/bio.rs":"3aac4e38ccf8d832b4156908cd3f1ff9c56f84c05d2f07ed7a3e3fcc
 abe965e9","src/bn.rs":"c71b9c79f704a94a889d27bf75e7e5b1f9f10b0df0aeb485aef509cf05d7467f","src/cms.rs":"1e1500367732915e756ba7dcee4a0691ba4fab770e0cef88267b74111e99e127","src/conf.rs":"511e008c18039f54d856d70b80009426fc7f4ce34fe4304e2c58ebf465031de0","src/crypto.rs":"fa513478e5c4a1e9d54081a9c79d48400f726c7047e776aa3f1adc023d6600be","src/dh.rs":"fb3b539eec4434b448b30df19e2e2ac5ffc3bd11bb817c7fb9090186ec3b0146","src/dsa.rs":"ae79baf231681900ea76304285b3ffacf5298c90b8c04d371269cf4adbb5b9fa","src/dtls1.rs":"0477022d5bcf2b7a620c70ece4da08a2958be3eca5a57127c89d79525c692ebd","src/ec.rs":"018a2ab377804bb735206e88d0561ab16098e29007d1a1fd0d565c8e492544c2","src/err.rs":"9e6c84a170dce46db74414a64b9e1855845afbd8180100a2d9412f7509f69284","src/evp.rs":"c947ddf745e4fc761f2b4b7886246f96163f41ff8ccc3c822e46ad38169d2c94","src/hmac.rs":"fa3976d94a1383f300bdec228270afb8b47c97bb019d727c7d59ba783be3c42e","src/lib.rs":"19ddf11d94bf469abb3f453a6b38886f6ccea4bc6004477f36b200516f5fee44","src/macros.rs":"7ed99c
 00c53ee12ea92634d4ace0af84845ebf98819869746e7896c8eaff23db","src/obj_mac.rs":"42019b142e523d7695d8c14ee7f72fa4b5702c07dee98fa12e70ab7dfcc95459","src/object.rs":"9ec1a26968e3efc87b24f287b92331fa38eaca048a3919e6514f48d38c7df9a6","src/ocsp.rs":"614492810c5fadd0c1c4bb5eda165fb7e744eed7b04ae61d582446f5013e733a","src/ossl_typ.rs":"0d8dd0f82ef08672ab3c5059d2335b7eaad2d5afc0a20dbf26c2476c99dcae8e","src/pem.rs":"c92d1d31e6f70f6704f148e370a8b4228d6305b51fd3be907c49014a8bfe14ba","src/pkcs12.rs":"4c3c1cf2e716454c5fc94c3d5e1174922c57b9de796253799437dc13303a68d1","src/pkcs7.rs":"726614946784f919db88fd5282ec66d5b9df2edafc98ade9614758e109176b31","src/rand.rs":"c771057f37c64406aa750f36397fa877caf330a8c725e49356c7081c2b2fdd67","src/rsa.rs":"d45d421339b903b0d33817e93be5e939964431f9caed343e5c4490382cfad5b1","src/safestack.rs":"6c39e28565d34efad707d77561d4caa99e3f028fcac3a2ef6fd403a78de1190c","src/sha.rs":"16a4c77cbc38926b8f8eee07b0beae8dc12cbdc8cfa599d4db66fa84a7b3871d","src/srtp.rs":"1c4dee9e6c139cc70
 416207786e385f199321624fb9fbf3cbf39a8160c0c405d","src/ssl.rs":"f0dd56aef28630ba8359e49538664160b54f58e255cca1f5c239f23aa820de1b","src/ssl3.rs":"9336c816e00847d552dea22587d4ac72ff3cbd469fa5ff750423a19ea11e68eb","src/stack.rs":"1a509907283e5a2bf88cf193ce607f49ce7d2d95547c2ce2abc0fd4567aad334","src/tls1.rs":"60ca3dea1bbfda645bde563b4a878dac129c3f760e3ad572381000fc7a8ef522","src/types.rs":"0b9bafc6f5fd373ec8c01e49339f7fe7ef1d76e44d60cda59f60c06982b4070e","src/x509.rs":"785bcb26166b8f39e616e5ab9a0358814773e96de51b40fd5ae62b45a2edcda6","src/x509_vfy.rs":"e530e2fd91e959715265b40fba95576bb53ddcb4e2c6586c2192098e0e8b1cc1","src/x509v3.rs":"520253195097d134e553c6378c1db2510eae6ccfcab6f6fb08919697bc0f023b"},"package":"7a7907e3bfa08bb85105209cdfcb6c63d109f8f6c1ed6ca318fff5c1853fbc1d"}
-diff --git a/vendor/openssl-sys/build/main.rs b/vendor/openssl-sys/build/main.rs
-index 88752d995..2b123d022 100644
---- a/vendor/openssl-sys/build/main.rs
-+++ b/vendor/openssl-sys/build/main.rs
-@@ -237,6 +237,7 @@ See rust-openssl README for more information:
-             (3, 3, 0) => ('3', '3', '0'),
-             (3, 3, 1) => ('3', '3', '1'),
-             (3, 3, _) => ('3', '3', 'x'),
-+            (3, 4, _) => ('3', '4', 'x'),
-             _ => version_error(),
-         };
- 

diff --git a/dev-lang/rust/rust-1.58.1.ebuild b/dev-lang/rust/rust-1.58.1.ebuild
deleted file mode 100644
index 1acdb5f..0000000
--- a/dev-lang/rust/rust-1.58.1.ebuild
+++ /dev/null
@@ -1,706 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python3_{7..10} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="amd64 arm arm64 ppc64 ~riscv x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# 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 dist doc miri nightly parallel-compiler rls rustfmt rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 13 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-	wasm? ( sys-devel/lld )
-"
-
-# 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
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-util/cmake-3.13.4
-		dev-util/ninja
-	)
-	test? ( sys-devel/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	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 )
-	rls? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.55.0-libressl.patch
-	"${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.49.0-gentoo-musl-target-specs.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=4096
-	# multiply requirements by 1.5 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 15 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rls 512 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-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 && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-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 \
-			--without=rust-docs --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/wasm_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\",$tools"
-	fi
-	if use rustfmt; then
-		tools="\"rustfmt\",$tools"
-	fi
-	if use rust-src; then
-		tools="\"src\",$tools"
-	fi
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-		esac)
-		[build]
-		build-stage = 2
-		test-stage = 2
-		doc-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = 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)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-	_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}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-		_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}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="${RUSTFLAGS:-}"
-	echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
-	echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	cat "${S}"/config.env || die
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-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
-	)
-}
-
-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() {
-	(
-	IFS=$'\n'
-	env $(cat "${S}"/config.env) DESTDIR="${D}" \
-		"${EPYTHON}" ./x.py install	-vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-	)
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		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}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-		$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-		$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use 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}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-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
-}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2022-09-24 20:10 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2022-09-24 20:10 UTC (permalink / raw
  To: gentoo-commits

commit:     00d171556feb7742d27c8cdf376cbc2bc605649d
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Sat Sep 24 16:00:06 2022 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Sat Sep 24 20:10:29 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=00d17155

dev-lang/rust: Remove old versions

Signed-off-by: orbea <orbea <AT> riseup.net>
Closes: https://github.com/gentoo/libressl/pull/454
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 dev-lang/rust/Manifest                             | 104 ---
 .../files/1.49.0-gentoo-musl-target-specs.patch    | 164 -----
 dev-lang/rust/files/1.59.0-libressl.patch          |  57 --
 .../rust/files/1.61.0-llvm_addrspacecast.patch     |  52 --
 .../files/1.61.0-llvm_selectInterleaveCount.patch  |  66 --
 dev-lang/rust/files/1.61.0-miri-cow.patch          |  98 ---
 dev-lang/rust/rust-1.59.0.ebuild                   | 708 --------------------
 dev-lang/rust/rust-1.60.0.ebuild                   | 715 --------------------
 dev-lang/rust/rust-1.61.0-r2.ebuild                | 734 --------------------
 dev-lang/rust/rust-1.62.0.ebuild                   | 738 ---------------------
 10 files changed, 3436 deletions(-)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index c7502c3..2dc05c8 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -1,99 +1,3 @@
-DIST rust-1.58.1-aarch64-unknown-linux-gnu.tar.xz 229585460 BLAKE2B 301b201cb40249005a1a8adf34ffdb0bacd22e1d919a24dec9bb8331c2243de1b7cc312c91a87fc9e11091cd9ad517347ff09143000d9de051b3c9a6e0780f9d SHA512 04e2cf2116e16fa293c7f2d29816012520b41df44b54657e289e7affbb91af5a5001d140a49aab1286451b93e93b0171edea77f61f01085136d1be1a3baac4a2
-DIST rust-1.58.1-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6da55597fddd643350c73f28a15dcfa935529c0878a199819b9bad6f3ea2542f9021e24bc1a6c8724ff14d36007c00f8906dd1aeaff33b0a99ef6982e8f711b3 SHA512 57debe0afe52c3af3eb53e4efe70ba194ddad449d9952174f8a775531b83f8ab0d66462e7bdd06712547e8f675d330a151d20d183daefe1dda2f0e3805695714
-DIST rust-1.58.1-aarch64-unknown-linux-musl.tar.xz 226068748 BLAKE2B 7f9680b0ad3f9a8349f3032f63d23b6d96ab43245d3025d0e4307a29b4353fd2408e7de572a10a77b261634b8fd4e9e6054ba9955b2440b608fdad2c88c12bfa SHA512 6400221a8ae04aea91f9df0f8d82585bcd380f22e80fe813eaa1cadbf592c5207665ad008d938b399e34fc2cb0485b16f993f94d431c290a69a696a4faf89e05
-DIST rust-1.58.1-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B fd22d8a3157a11df45e166b8c961a435bedb079254c1d7f0a738adc1065169a03c897a32bf8781802ca48bcb983c761e6985e532c0d76e90c3684752d8cff9d1 SHA512 54fffa8120fc6b86c57faffdc7857adb89e5fd217b0e753e76e6fadc54aa086243cb7ba3c2c49ec4f44ea8538223312469908d24add2d28203f41c16e9224204
-DIST rust-1.58.1-arm-unknown-linux-gnueabi.tar.xz 206480968 BLAKE2B 32ab78a1567d31bb1b5ca36fcb14fd1b002675baab0f688f931cef6524ffcee4257e00fa25a848f73f25656ae0b58beb0e862f1a36d4d5fad016316af3d1ab2a SHA512 94e7cf238235e845761e53fb5802ef0ce3a02c4675001cf67d05bc565403ec1d54293557d73dce7396147381c331ebfb0313e473289c05b65541f836dd8b4e6b
-DIST rust-1.58.1-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B db3275db531d78d728b33678be3869738009b65985aa3ad4f38aaa853cc1b84a1d2a89f98e203f697c457425547b80ad5826e7c820d49c767b5cd1df2db93bdd SHA512 fcca26b6b0dd2e7529efc93d1c4fdfcdf55c85f40bc247b3af9741403a085bc6808cd304ba535786dd2debbf4952c9d9fab62eaa61f1d3d8e59ce78bda992eb0
-DIST rust-1.58.1-arm-unknown-linux-gnueabihf.tar.xz 206545444 BLAKE2B 203a562ac448e7efc4fd519d98937f2deeb70c931611a6f0efc87947f5c48cf0c0cb85358fb9ce1dce49bdcde015fd2d5fd5f3b149d7370c05649579522d228c SHA512 5c0404d878300c1a47597bdadff7fe93c3b0a115320dbf5299dfb4fd06ad322217f4b630429a9db3a5ef54c56706c1ebdf512fcd663f379f1c2df0cf3612459e
-DIST rust-1.58.1-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B bf26f6540d96d124bb503b6e38acd87dc16ad16c5214559edd26f4f4f94f1f06a7059a09a7ee504721130576d6ddc5c7b2550f7bc0edffcef37bae3c0abb618c SHA512 1fa1e533adb1e355411cfb706b7c47712454547966bdf07687d9b563cf5dba9b4419d646227719a9362eb923c597f8461c194e56efcbed699610faa209985df2
-DIST rust-1.58.1-armv7-unknown-linux-gnueabihf.tar.xz 212381428 BLAKE2B 0cbc4ace0b7693de1898f160d5e76c7ff993aa8e8135a094b23dff736326ff7616471068f02a064d2b88c816fbf6f943fdaf82629dcda0e0e07b6a4a3941fcef SHA512 c1dabf7281c754d3c89044b1277618b0e928efbecde47ed98133d3f8664722d5b3dfb5fbf485cfb4c98c53d3101b192070c5c41e4395cd8563b0e8415abdf2a1
-DIST rust-1.58.1-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 85f3892a41dd381250219cb0c0c8e70b3902e5356ad34066a6db319193dd580e609975e38356097b7ca0907d62d188459c5a72783c95e77f1d08a50ae8673458 SHA512 70a2269b8326ed8b5e53dbd6698237c4d843086a139c4f4ddd6e04625f0defbcaff46149981e5a1502d56da1393b01bc0c6f74fa8e6ff407f6eb45cc5638ed41
-DIST rust-1.58.1-i686-unknown-linux-gnu.tar.xz 224773372 BLAKE2B d90db8b20611f6430759399bbccd0359f2b64ba9b9aa50312ce51dd4a43728897ab5c31d3c6bbee892db8e6e500a19184eb325a312231458cf99bad7c6f04b58 SHA512 0cfccc77cf62002ad99751744ae5a910d48c142d596eb88e187fc061c4b3a8cc1d99634802bc06b0302c41bb3462a17453af1beab6ca694a1535a1b20e10fa47
-DIST rust-1.58.1-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 1fc809defcfeb240f756b3e7158d3e747b2e21ea81f3029618c58c4070070a2068603a4e93f7928a9ec3d120d7b2c7cd944d1ae03ebff1b9d5baea823dba54b7 SHA512 aba1f533227794755ca81c2bd8a3bd35fd9ad4affe5bd39430e0329310fe6c6f813fa7d95790958c61c6b22a4e4fea3488e406f05fa30c27eb6871f71e2e6e5d
-DIST rust-1.58.1-mips-unknown-linux-gnu.tar.xz 164572088 BLAKE2B 117dcc6483652c3f18436e185b44d605e64b9b31634484ead2d86c1caf6ec47a53eeded5dd766e2410ce59dfcd3f7e71ccf924afab0f34988e00e4c9324a5f13 SHA512 08df5ca03f786aae814b7a22a7d05e18107a1f185338880ea1b58df23d6b1d5c9f2359650ad38c30058a2d2d6f8ae32dffc3926ff47fd3342049c2251eb48463
-DIST rust-1.58.1-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 275a43c158a444c3ab27f1e45a9de294a059c21edf7280482303b83f6b0eb65d309021a82c49410b5b24828b88f65888529e95b01886ad20f2f4c187f595b788 SHA512 c70800d0629f92e4640a64a276575b5d6c1e92c2f1b6c7ca025c98a93a2665cbd7192d2fb697c421adc34fe397297c4cb78e21b38f27fa4261483cbf423f933d
-DIST rust-1.58.1-mips64-unknown-linux-gnuabi64.tar.xz 170025876 BLAKE2B 05cac890ccb9e37faeb3d995555b6f7f52281619101f033038ef056e7ee75b0c5eb2bd14357c1f8b0f5e96b9e2877514ee870bd75be1b28dce4906be95e6e3b9 SHA512 7d2fc1f0787f828fed72b1681f2668bce7cf25a87a01a818dfec18eda0fb63fb4a5e4aad8115e93dc4c8398641db4a476dfcaea07e6826fdcea727118c64e286
-DIST rust-1.58.1-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B fc25396963178a21a5b0a999e8dd3c9520b3056483ddde1f8a284747a078db0dfb0e808f2292704680e37c5cb2db990ad8311efdc0b32e2a65fd93d389c2a09c SHA512 32ab00c666c33ab53a975e9abffb7645d2101e8f508ea67d2e63b1ec01b4785e384bfe2966ca237b5494e34c2abd15e509835fa161709ddbe1c69845f26a6f43
-DIST rust-1.58.1-mipsel-unknown-linux-gnu.tar.xz 169136184 BLAKE2B ae698d08e2592b32b5a0927536e1c2a506c2782f9449fe20242d2ebbc5cbccb2d3a53874b973d88898157b233a88ed80987e2e83a316c05c0d478b1021c49c41 SHA512 ccb13dbb41c92956a437d0879fe9d3ad0a2aac88fa1b761e3b68a6536e389ed4997d1682730b2078fe01e68df0ef64bbe43dd2d64595dbb4ed388fe59e1d6dec
-DIST rust-1.58.1-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6b14cb176bb33207aed7a01de755390df0f71163940fa8121b51dccefb018cb4dd1cfe9efc359f6bb941104b8b08db0cb5a94c3af880058e59904884c5dff3e4 SHA512 1e30495303f9c6289223a2970d419a70885a866468717254b3efa5124e21cb06830692cfadca33ced94a383d1b9af43b70c08235e935ee491a1de50eafba96b1
-DIST rust-1.58.1-powerpc-unknown-linux-gnu.tar.xz 183853716 BLAKE2B a2b98d2c55b5bda8647301536bc8e95b72f98f41018f9b7574f85756d2cd2980fc3a3e995bdd0ed5226b7f18357c5aa3c2f8a05b1679d3dceeae6dfac7484f15 SHA512 5b9010bc3685889411fab6a06727a320123029c037a01cbd5b69f037a87ed595362b698264954b2d3dc2adbaf422fd54d7b56d81512b62147c1922aae77afa22
-DIST rust-1.58.1-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B c428bb51fdc740ea9499a1a853f4be93a53c23e59d5142d33bf103ac46e32716505eea3e45174ac3b88ffa12caa4dc010dc2d02093f397ce45b4af27f5c4191a SHA512 b3ac66cc88c75f77f7f9632c2104f45a6a730a83b75bd7b531dab833e8e5b512ef06bfea433111302f64321b688f0817b95c5eac9fddd8ff44bb49934a616eea
-DIST rust-1.58.1-powerpc64-unknown-linux-gnu.tar.xz 194177236 BLAKE2B bb0c23288014207123345deb06e40a45221d0149e8563c374810892b68cc2b5838b5c3f8c630522723daa633c5fbf72aed16e977313a6d1ce27697c22552681e SHA512 8a089c44d2f50d4677a6aa82e6308d47451ca588243e0df3fbbfd13768002f0caaabeca0d6a7f113b8f63477565296e5cb89f27760621a327cf9cb5b4999eeb5
-DIST rust-1.58.1-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b94fe36ab1896bfee3d7e7f2b17dad05d33c672407955fe45758d167bb1fb4df4d33040e6d18dfa966d33133e181ef9a0e7dd04784ed80e30b38175a901859e5 SHA512 6edd981ded134e0c2e6198014ff37868d7e71d0d2185284c28a35450ab226ffd460faeb29e8aea6d5e75a2fa94874e01c9987f1f1470efe061859d06f3d3e605
-DIST rust-1.58.1-powerpc64le-unknown-linux-gnu.tar.xz 203175404 BLAKE2B 53ebdad5859fa7a5e2cd79ea31595aef65a8cc54e11d887f04385500aeac6dd886273f7736271aeb71c70e0d512fd986f09b54ed1a9c744432688eb71c74edb0 SHA512 abaa2b749987b4a1dbc20cc3dfdccc694bce0d1e126d8e9c03dfdcaf85c5be2a2d28f9877ccdaec847c499d7044f955a70f454dafb24dc59ecb5854807eb2289
-DIST rust-1.58.1-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d5cdf7cfca4d881931a08bf67ca1c08fafda621746b01b8e12e41cd88f5ba8107c1bc86b70f84eed4e6137f6d92ae712740b57505705c7bfd3454d8ca1131eb7 SHA512 39a9649ac0645ea6df93cef59baa6d197b9cfdf88f0c1b3846e52369c8e3e293ecf9327cfa6b5457be65896380c13445ad05c3a0cc213da0ed9bba3c12ae9b8a
-DIST rust-1.58.1-riscv64gc-unknown-linux-gnu.tar.xz 196828436 BLAKE2B 9b38c585146f0832d9bc1bebbdab086f351bc88c27817e44ff251c1566b80ee5e573b59764a22802d246023ade332f861096f2e68504c7b64400754ed2676695 SHA512 d268e5a45542f7684d52b694baf5c9b504837fa43d2f5a298e3fb4e335bc6789cdb868651614fbcc1d55c13ded1b2134d57103f46b098d0a8d4a7fd58fb10b03
-DIST rust-1.58.1-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7b234a9fe76cf39177ebc6ad54799bce80fef97151c257b58ae08321c5fe427dd5b5a70627b5a4011e32560f63f6f7b6fddb42e58728004406aec6a9e7597eed SHA512 ee4a1c52cc623dd1858ce8d363f0aaccd58b8bed27a0838f399f1b5cc51f0c123d98056147a266f45724b6a25b09b11c7224c4bc01f208ff7d77e906c850aebf
-DIST rust-1.58.1-s390x-unknown-linux-gnu.tar.xz 198204996 BLAKE2B f6f325a10aa9c16510b77b7729410d08d09b83dadff3b8ef7e06642d8c6a50a153eb17cef338fe3e3b7efa3a48ae0e318414aea794f2f488d6f59852310bbbf0 SHA512 31ce8b53c50063c9409191beab28f67ab804549b5eb4d6bfaf42a3342ccb2f4dc039e3afffe22d87664917481e943018c0d1239e7dd0a62af34c44a975f69303
-DIST rust-1.58.1-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 995a6ce146b758bcad983fc8d7a8613b0da172c7e62a0b73d206cfd461e1046d024a8431ac287b5c267b215128542bf20d796b072ab1aed348787f50013a1118 SHA512 d7af25ef9bb92952949e7f91a13d5e910f32134b962e6432bd10ed885be451eb99c518213d9dd4c425c40ea43fa2722d6ea7c357ab0ec63b8ca4f7d020412979
-DIST rust-1.58.1-x86_64-unknown-linux-gnu.tar.xz 150229600 BLAKE2B 056e5a646d6758ac88e2b2b9309dbe0e9d23a285be31ba009eed936c82923ad9615874b8689ef926b14335d6c5255df41b5879794e6f0982b90553273487853d SHA512 7a61ecc8ff49769847ed4021c57279c16f261aa21469da426023fadab3820d0d962edc0fb04861ae23c8dcf821fc3ab99c2d469ba827dad30c1acc995732605c
-DIST rust-1.58.1-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b86d3d2cbf27594dfe55fe2ff52523a9dff08d08ddd30526172f9e07760c2f854698eb8153cb9894588d75759a3d0bb7887756d005a2c69aa9cfeec8e7dee678 SHA512 82dcb22efb94bb19f2338e9cb46e3f6da3d189fe6bff12bf1ec870197d395c2ad58bd15705aa7f3cde38e5ec0266e20eb2e45761e0f55b13261d3e6b14dce60f
-DIST rust-1.58.1-x86_64-unknown-linux-musl.tar.xz 262511608 BLAKE2B f2ca664fe1ab0614f13ce9d7764eed935b107b393830ad14b64d8b05e032feeec57dd04cdc963ad3eea2cb23558beeb1975722be93412d4ff8fd3a75d2bbb896 SHA512 d064464333a64f91b8a30f267ecfe2b4dc5be6d639bc9f064efa86a54478c8de7156166236b7ff8d96bf8fc8cbbeebf7ac17d8b5dabf24d72e189dbbd8ae0819
-DIST rust-1.58.1-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 9c58a08b4e5d609230b5aae52fe7eec2dd6a0cc0eb8c257068ac2585918aba6cbe3263a6480860d34a117d3e2ee835fc8d8b1702296369c3a4e0f660f46bd62e SHA512 6c294cbbbf22940e36278e92d5095dbfee0df741694188ef1e6df7740bbe770ffb5b2467bab12825045ebf7d6fb12eebb1ce7edbb32d0afcb114c57e814fe5d7
-DIST rust-1.59.0-aarch64-unknown-linux-gnu.tar.xz 217126920 BLAKE2B 87fd1910d76a133624ff860fd3932527b3ce3775db9e03c6d2ab9ad06534e9e63ff7d1eed0c81e3574d676c192495e0f175b2ae0fa706b722ead9a852296b3f4 SHA512 6f5b6fb325ac226bf5f308463a54f59570d9ba5efe4329d6116d79cda1f8572b2e4584d005586759ac60e1e7a10782d8ef8ebf30c980220b4780a9846895fcb0
-DIST rust-1.59.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 2b75d91a060376bd0711c18b1b04f7d0c7ded0a64b0b086e7799898db7fe24ff49dc09c76695a151e54bd205aa040775c6a36d10fb21ecb2d89d23398b02dc34 SHA512 a04cb7b03e3b963002357d48ecf92d0aef20464f9da38081411832c07df0a7c9ce3755a7b89c86394933446fc18e83a55a7cc01f3739ddddb19dafcbb7b43960
-DIST rust-1.59.0-aarch64-unknown-linux-musl.tar.xz 212064268 BLAKE2B 4636001103fc058c2c14a34449846c0378c26ac4dc29588615c5216bb4759b0e92ec97be25e106a5aaaa07059f404c615272e359b0f3b1e9164437e63d863bd0 SHA512 2ec97a48cdac3fb1f7411fdf3a34aac6f64a09991d25174dff97efab0ee724d4dce2bbe29046d243a72b06d406990adf5d1f3f24286fdfb0e658326e28cf5363
-DIST rust-1.59.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 4403c9e26f21504494db6e7368cf6a1dd36fcd283dcaa2aac4efaacba107971f44aaffe032ae1cb2530bb1d29bba3e1953d80d378ca9fabf13364da27d809bbc SHA512 5c789ce4591ba8b0f09a254780e1040f5c959c3a952b89d56bf77f0a0f53be2e5f0e712878d21a060937bcda72e440e591ca206c8540635fcc180a50efef6095
-DIST rust-1.59.0-arm-unknown-linux-gnueabi.tar.xz 192892448 BLAKE2B b7d194589b9bd07c34ae681985ecc60ad03d450be9c445dff16730d8019a02e6cb1ec6b8c231f9eb42500eeb8dd6d529ff821b1b9eb64f87f11266411133e5bb SHA512 0be42a92fbbe516c0437afdf279e5bb3d43e073ec5ca3ad297f33ef5ec5e5bd150cb728c7dea5dfdcb7b1d1cf3f4122d529e8cf8abe674651a05272837769887
-DIST rust-1.59.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 844f7f3655a974821689aa326d072512a12433daa5805a842e54005b88516013b32e46c21b7813e7f5b919716e73f518195b9247c3b9e1e51e85e4f8b102b9ff SHA512 bf7b9491ff88c6d6e6f91d6b77fa50aec48cda99181aab584b37dd81a2a55564a8d769be8ce1868c02ce4dbc36e98cf7c4d651e9e7d799f907e7f9fadc27b08f
-DIST rust-1.59.0-arm-unknown-linux-gnueabihf.tar.xz 192816760 BLAKE2B 565d3ed97da64299d6c5525f3b3068ca8ced1d8d6fddbd90506a41062d66c4223928de031320aad1cb12568ccc7e952243c728e13a8a7d6a60ec8c908829e0dc SHA512 5a3693f7edf0f51ba45d8d1471c4ce75926e9cf9c4eb399c9767da116d2250121ced6f08a5c7ed136cbd144e88f3c9fccbc48f805edc82aedbdca37248c0d092
-DIST rust-1.59.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 739967abaddc05a466e4ad88316a89fafeabb3c8b50844b09a4946635f4e19b223a76675026389cdef89f0fbe369e3f5c72a0ab64f63104d2a2d5b0d12efa617 SHA512 336f8d7885dc7cc9e44a9e5df381ce1fe516fddea90666478d65aacbba2ffd2d7312b53a895b809fe0135aef8b5604b3eae7b63d7f0d37776c8c1cf6f88395f4
-DIST rust-1.59.0-armv7-unknown-linux-gnueabihf.tar.xz 199147596 BLAKE2B 767aa2429a1d1e5633e17fcdafa1a763fb6c86ce392264445be91f79f924b5f1251aae5ee01d66cc902fe991b7ed42a23345d0460862508948d37af48d49b69f SHA512 590b8252b096331b404ecf02dcc11eb12ad1a751d03791a6eb316a7b7bc546c4e933b0acf66e771d394343b636db4dfba00f467715284fa1537399e161bd2d88
-DIST rust-1.59.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 77659e1ac997fee4eb50a969e581158ea622968b6de7d02f493096b1b108bd1f32a8c89b7bf1bdfcc7f346eeb14dde31d9b791624a72966f98937398bb833e58 SHA512 a404ddb78aa0d1dc5a8724b4e5b9d46b3c25ef820d50f9039928ce39169c1f8559ed3910a127f1805d6c07671b127a2adcc111bf8af5c1ae41a6f312492ae873
-DIST rust-1.59.0-i686-unknown-linux-gnu.tar.xz 212206848 BLAKE2B 949897daa1ec6e6da986ec030fa25db019ece6a16bc2d3442dcd8255d75a97212c6c214af6755a3231370e138a72dd22155719580631e403df987e992b6de308 SHA512 b6db8bdf25e59bfb64b13abb4a1b95e186aa16e1e165a575197e37c410e64c13c2a2d098b5af3935e2b6319566447c4a05b8e8b08b30476dba9d2c7f30000508
-DIST rust-1.59.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B bb0e0cc0aebab03512cb261345319a94e3c2108125a90efd169160bad0a94bb71f717d66ee6c9222d5274f82c437baf435880f38652947b1ac79ec9bd53e586f SHA512 774d622d1b7cfc28a561fc8822865727e0fca698ddca2fca006b52d2b922057619ae65d4bbb03bdb0745458a242ab8724305c5cb4fdc8886f70edfded2b4543f
-DIST rust-1.59.0-mips-unknown-linux-gnu.tar.xz 151449792 BLAKE2B 0273b6dcf35af0d85c9adb4018b8ac76bef9895f42268e9ebe086f74c95570614b1cb5927c969e6b4a8366aa7a285a19929b819bbf8977343af899a3969eba7c SHA512 9f2c9ca60cbf38ef3ac23d1df7deb86864017addb7761b94a408c096e0a67bf3666ea05f19a57f902c8cc2f3912a96c5b9b91d1c2cd5ae86596c76d30fcce08b
-DIST rust-1.59.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 4a7736612612244ca535fb2056089fd9e0426410dff5c98aa44092af918d528527cc0c12a3249fa3b9a278700c7e5395c6155d28129c3c7bced7056203942fc7 SHA512 18dfd434dc628c7f11de5c5f159afea0dc37a8123f490797bc9869941676fa85920a8bc592d4cd4b505b9fb1d67e35220253d67c878b2d938211c556ae60db4e
-DIST rust-1.59.0-mips64-unknown-linux-gnuabi64.tar.xz 156962060 BLAKE2B 64c12ac24a55eaac63d9a5173ebcb1b97709280bc770f02c1ba434e57f77e56847a691f17059e421517e7d5ad60e9e3965173aff29c90abfb1b85179631301c8 SHA512 aaf0b8b2f2ee7a3584fcd9bc690f54ce32c0f6a36f2c37ca9d4a10123ddb6d4e95c9343c88dd0830aa586a5a543dbac440a6644434f8035f1c95b3f046a843fe
-DIST rust-1.59.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 2b3a3f268b6a591e6541d3cb19ca733f393cff178932d06cad8d38d4a74c9e43e9a4aaf75c78d4c8084634e7ce3c5d1cb27a6540cc5f034e940efc276c1a3d11 SHA512 020ac1f172ecf41501218c6268ca2dee37842faa7adefc4d3410531f966aef4aaf66b94cd71237467322feb90cca198fdcc8f20f29a3de8c932e747e454a5852
-DIST rust-1.59.0-mipsel-unknown-linux-gnu.tar.xz 154605640 BLAKE2B 7b3410db3f0c534012b47cd564f9c14d7a878c0c1b1079bfc2d4ea13826e097b12e5dbef2a83641a339cbcf8538a1eb8c28005c3d46e8338074ab5c15fffdaa9 SHA512 1c096bed6dcd6499ee796c64b8771696ba0cba2db1793ac681b7c65b96ccde188c84306ff90a339bf49bee10955aeb179f0915ae0613c9deeaf766956661521c
-DIST rust-1.59.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 59fb0bd7e88119d9cb71a7af46afe2e3a4f37fb687b98409e7a83e0b57840c5db3eaec8baabac6ed26989b7b1ddcda13a9d221cda75f291a814b40c722b46573 SHA512 7c6c970ff971143338a11d774d0bc2ade2fa0dff185483800a54f07161bb181648e1b700c36cc6aced25bab9a383f7259b474b83379845926cde265e705208e0
-DIST rust-1.59.0-powerpc-unknown-linux-gnu.tar.xz 170384720 BLAKE2B adc37005f83854707bfa657e5ce5a247de807bd06bde63e6f65745f376502dd36318ccaced1b6d75c3dd3558dd0bbbd7c291854337180fbb18a1647bfa521749 SHA512 046e75c9540fb493fea1cbe9b37ff10f60abe7e31134de85f0e9503b2ddaeb60a03aabf8dd7bd9f55f3d93b01b40aac7cff4f26fe01ef3e3bf5cb052b42287be
-DIST rust-1.59.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f55215329f865d3a6505fd4203170782459ab81c48b8d6bcf2c3d96ba5d4d7a9c89dfa25eb2a4897f74a168a36b7abc2363007549f7f376205a37635ffe1052e SHA512 0a886d64565227f136b3568f6ff51996a8dddc0f3121174ac1e1d53f9a58d56fc76faffe86b24e274078779521f0be03657d76790951c86efe8640510757048f
-DIST rust-1.59.0-powerpc64-unknown-linux-gnu.tar.xz 179493740 BLAKE2B 2ff97ec145bbaead0946efca8097de2a294dad0b4b9293cd768b07d37bb5f2709bbdba3a3d949f4294041b747493f931bae3adcdafb1d2ebd0a88a982e77a7ed SHA512 83f204a2d32025fa88bc627f7f2f548a19941dc8f2575dd5c912f75f556853f63cad3c3145106e264943a915d842139cf34305cfb73c6f20646a022f949e1e3a
-DIST rust-1.59.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B c9bddaa104146bbc04553f2000c06ee4655583251cddd222d6b9e629d74cfd9762d3ee6de732ec1c243ba28ccbfa2ee7fbad499a46a12b5edb6a755c23d7fe02 SHA512 586b9785e8cbb6eef9a7266ac9e0cd295aac93219cde7a7c42270baab417d4d43acffedf300a43d454be3487b0f0402617e78451d2da4bdc3b2a45bae6bece0e
-DIST rust-1.59.0-powerpc64le-unknown-linux-gnu.tar.xz 189083640 BLAKE2B 209b02e4ead2cbbfe87e59d8367526b9ecdcb324898e6b8398ddd8f21f0fb89a5d68bd3bcba84bafb435a2092c2c19b81171d4631f1eadc438ff9f29f3f72af0 SHA512 443e0c509df5337ffbef7407aee5fb1260583b0a85bede2a12995bbd4b1719e2865a73d0b79e47ac96d5f53f5c79e9903a22868683a9c0251bbb7ffb09f59fb5
-DIST rust-1.59.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 68abc7aa27c59ce7f59f7a4de400ad431c568262263f17af32d8999a5b68d4ed5df067aa8f41a226277f3bccc4908fe1326eecb6142401707f90a6f73b185614 SHA512 731dd8b0f3c33cc37dc783ee07f97727e227ce1a7856f73e87a4b937f6a8ecd1d778e65f1f484faa399795d94b10623fce56d056082bcec460e15fcdea9dbfea
-DIST rust-1.59.0-riscv64gc-unknown-linux-gnu.tar.xz 182319648 BLAKE2B 4e2a86431cd0c737ef86cd2bd308c6cf42f6f908a96456de4e2ab3d42f574c56dfd73933ee0177c8d797f17c8566e66d239406360d923797fa5eb49760e698d1 SHA512 4fecc8048270026f3bf5ca63ca32a657c62282e50132cff7af168168063beb65797626ce1ffe90a929e528d8b010193b1d67cbe87782d0b30c7b4e170eba081d
-DIST rust-1.59.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 37ec085b78b9b8cb076f676168b7f26d73b593ca4d2231ded00fa3d9f74b16b1e5d99a389df594b7ac75a8f9342ea25a5efb901931662d7a9362c3c14def5e13 SHA512 29b4c934c2a773968f8acdf469b081438780a4f2d1dc460fc851587719373b2151718f4ef3af81043d4ebb39ff2dfe8f4e4612276cfa1fc1946fada57adf133f
-DIST rust-1.59.0-s390x-unknown-linux-gnu.tar.xz 186264196 BLAKE2B f1c28c8cbff8dbd476daf7a3dee443aa4d90ea3432813d247853c159f20ee2347159f734ecce4ee85e36dfa886770c841355073c2220c016feb809225f4bd50f SHA512 3e9d86c84867d1f96f4cec4e2312ae604896b4fa61b9ab5b563fafe50b4e63a1bad9ccb90770a672c7730d14dc0235b50f2ca3cbe292220eb4e48a66a8f9d924
-DIST rust-1.59.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e97d2b8e50c69311c3d7c2a4fda1f3ae6803e5f53f9a0d2787e816297ffded53ac47e8033e0d5da2d078327133b528328edc9f610483cd1c0ef384317c947f4b SHA512 9e2cc63cd784134fdee91f8603629cdb7227cf56df2a5095cc06ce38df81b6bd3ace24f319c518bbb7619c6f17fc32e9c79bf0b0f57b1db8cd81302d66435a0a
-DIST rust-1.59.0-x86_64-unknown-linux-gnu.tar.xz 151858140 BLAKE2B 80eda8c19361b286aaa6ed6178df7f93a131414f6307c87849fa902d373d072643c65642c69ef7302488e0b4ad7883ced1c589606f91edeac83843ed0f6fe124 SHA512 df080a6225275945b0c028099e19aeb0ae34ffcec952b9ce19a6116feddbb29f4f4d27ed30f2c69c108652af637329c20a0d2875d0ff98dd9f7f4902039b6740
-DIST rust-1.59.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B cd4387ad25b7f000395e336cdc92916ee7260cbf98a397ce02514444c8d2b35c653012ae6a9f1d5598155c06db573e1fe1a3f0bde1693863855dc17c18b478f5 SHA512 0b6790f0aa531a8251e1a19e0adfdb16bfd39fcec40b83094c26b7169f833114cc8679e2955fcc5359b05cd67564827aa231c521f81d4c41d561e9ef44eea713
-DIST rust-1.59.0-x86_64-unknown-linux-musl.tar.xz 246630236 BLAKE2B c9fe24e92055b2e765a8d96181c7c14a0db329f98e006ea2ade285078cad64fa2ef3419d26f30339685cfbcee672bb5e263dd183c960aa0067a27a0b36fe6fbd SHA512 40a711c015fa8eb07aaa11b0698f20886928230a8441cc7523572c7c2768a52557daf5c02bdf61430dcb9a912b8eeda499794af28f269b319ca7fef848ae4cdd
-DIST rust-1.59.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 1a96c49754b8670d243d1ad43478d4df8b4f4997490fa9691e3947260d469c7dc9bab192a20fd2ee0592e15785fb059644404d77d716d86b54038d0a76feaf6e SHA512 0c67f2be31fae00a318b5a6184c60f10f80ca5275a5d9dad4459d94aef2fe65624dd7789987d506b691666ac8f7357143fa6bb8207cd5b13b28692aa909a1636
-DIST rust-1.60.0-aarch64-unknown-linux-gnu.tar.xz 225778104 BLAKE2B fafd690b1d6b161ba12f2e885e8dacd672999e34523634a2dc198363b6d46c9a5df9628052d4c76fe9c179f0d2d21eed6c9986cbf1cad0d95f42ec89edd6bcb3 SHA512 0357abc2f0e3512cbb0b113a7e80e5475ecaaa18f4713d08c1923567ba7ee35cb286e0b62ef564f56b88b183d31462743d041bc733b86c91eccaea29c9bdd61f
-DIST rust-1.60.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7ee4ca6c179fa41841b8da143582f3454073c62286043cc395611495149a097a48fd885f56ae3dd62220788cc4e235e0a2af9400797090e0e027f4133af275a4 SHA512 9059bf5cae423d0dcfaaed56f03a30c998962af3c0f84377bc3af9fed25afedb91f4dc2f40c51fa8d1360330c1a8fccba88b94f069500894fcd7b8ce7fc9b736
-DIST rust-1.60.0-aarch64-unknown-linux-musl.tar.xz 218828768 BLAKE2B b6cef5702c0bdc53cad81eb06b09213e90c1ecb89e2734b5bdbbf93969f809d5eec03f802cbaa15ddcd6b0a4a8f02b6027e232a13111a0002efac455ca42e8e7 SHA512 39de2073c1c393f4675c374b0bd7a75daa7c84e5635b9c50606da0ad7478e828120319a9fc79b534b88570a0408eb1745dbc0f7f4d15825e5f995e16752c5d10
-DIST rust-1.60.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 655bb6cccc79034f83557b1336d6052523dd25420f9b54ca746946c259026a1e9dce8b5e84d6800dfbbc423dce3413d566de45c9f3424f24330d732f3702d2b5 SHA512 ce3131c15a31eb41b6905c3197bd3989a436ea503f9285146dc1c87c1e1f5bc6a606fb3a7ee52fe564bf8196d5eb71fd8325f63a36956d1a2b29d285ff84874f
-DIST rust-1.60.0-arm-unknown-linux-gnueabi.tar.xz 199199568 BLAKE2B 9fbae45558e5b5ee6c0f025430e355ccf2c9bcf8584eb3ca763e5eccd19a9a89b5b466fbcfa0182810b2bdf764a8ece9277a7bf9b9ae1792e442b6930d769c76 SHA512 b14e1e6e3ca58840f2b44473ea7e20afe61f813c6bce7a380d97cf32d9e915a0e369ca1709b2d7207f38ccc4d19db8268412e4dc991cb23612989111677d9fac
-DIST rust-1.60.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B c79602c7ebfd8789d5c4a8800462b62104f20bfbb9cd07a62ea02faa4721c291de0cd2e877ccaa586c83efd60daaeeb9bf1b6aa0d50c9e8cbbf1e1c76beb8f8b SHA512 58ac1ceec97354aeb020bb8380c0950237052c84188259740335cac235556e7db620ac17861adb065adf4eb90f5dd67af64c7f5247fc5d965633a949eac41de2
-DIST rust-1.60.0-arm-unknown-linux-gnueabihf.tar.xz 199155728 BLAKE2B d7bb8b89acc6ae96e9dc88753e03d213456204f1e42e9142c3cf307e68c3fe9039271a87b95f2dd37255249e91239d28571b0eacfaee533c8be2f1f33ee0ed09 SHA512 8b4e8fc0824001973bb508341d10b81b5c9ca785e07be2bd9a9cd14a4337983a75dd0e224518adea717a6645a94a7af9c3a51f226acada05d98dc2ee925753c1
-DIST rust-1.60.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 3976db6e470d120b17b782eb47e8b13d019891a9ae77d0c160ab00dad266a285e72426f4918e0918817243e77f5243a1d840190611d906a259de0592e85b1eae SHA512 e363c8e0dfde0b044a3f7a3a7d9b0f589684019f4a7a81ad5d39ca40662c8b9350dffe26cd8e7f7df5b39b04cb543777e066b71b0b5da393bb2310c51720e3c9
-DIST rust-1.60.0-armv7-unknown-linux-gnueabihf.tar.xz 204846992 BLAKE2B 1781fcc2f7e079c68230154523e69d4211aac4248a09e10ff05237f67c6d82db91aa3e933d057f68a9c2adbf71be0dd91a053442e0777862f597a7202909c62c SHA512 6cc28ac4430acef8929ec9f9acfef8fa3f0c79758fdd612eb3d0e762986ae7722c3b92dd687be754453a86ecc253341efe2e517e41510bed53e539e79ad21ecf
-DIST rust-1.60.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B e7adda090a966ad9a2a68b2f7ad3f1a22cee06a5ac02b5f949593e50eecc044dc13552a6299a9c0fb8383e839bb04a6ac16aecc4cc6735c2ffb91e3d244fd71d SHA512 b1a471eaba9f9a4eeb066680b78f4b02cf9d0620b2bcf4e9f07112fb6100acad7f519e149a105fced5cb0e2a91b845d3d682af53ea135af9901dac973c4c5c7b
-DIST rust-1.60.0-i686-unknown-linux-gnu.tar.xz 217159392 BLAKE2B 18321f1eeff6607eea9bc1f7de571062c3fac1a68bdfc694db8c504331119a86cf8c08f1e1ae32c855d37367bf92de70c9465404e51485d335c530dbadc90c66 SHA512 5a1e9f0d7f623af1c46884a23eb5c38927ab9a9b87c9b4f511aa727ee4bd77987358f6211f2a3c6743b01a9695f0823d443069d3020772a87c834141d73e3b05
-DIST rust-1.60.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 09068dbc9cec3164beb94d667bb359295f98578e2eb31e5fde1fafefa58831c2858dc45736aea3daaf6cf3f3620bfc40c0af3a246655618cbca2b733f73ee171 SHA512 d237bda70a0b297505d6dcf968330ac8622af77a53241de707d57f265d4762fcbf34fae329c02d2f7f18b97df843f78938f4413425d0d57183cd5bf59aae3e3d
-DIST rust-1.60.0-mips-unknown-linux-gnu.tar.xz 155895536 BLAKE2B 87fcc3fb92762e3e1e4e29eeff0c556a07b9fb36cc275cd1e74e4411e89a82d1aaf1cda7859b32696b239091758cc54f0d763b14ee1d42898cc4aa3fb37dc6ee SHA512 28e28f4cf077f93a21282756bf69c3ccae2f9e975145cb35b36bf28a3a0ffdafd1dd9c775816f20a2aec557551efc3b4a9c644cff06473fab440e65357aec1b4
-DIST rust-1.60.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 98d5e30917b86aa9bbdb2e0aaa98b19a946320f09331aa4194f1f1536148dc098aefb34646dfed7216d024db8d408901db24663e52414c1d618afc55bd12b97c SHA512 b6e98fbda5d865b8766e62ab9d21bd8d0f1a0796748b12f59988fe66db26d0df3afbc8dbd5ef312224dc81778a799dca57cd05caf4e5f1560a8ff1eb4b3243b4
-DIST rust-1.60.0-mips64-unknown-linux-gnuabi64.tar.xz 161602984 BLAKE2B dd2cd07e800b8c53fc6f0fd1d932c58c1d23776a35ac7c10df7b79d8e3c3f401bfcfd87d2740053fcf6b30e314d248ad39f1084ec35008d58676c0c1ecffd323 SHA512 2074e4823d1c4f8e2730eca07f8f5d120a1212c67c374c9aa2a167e517779709ebe6b6c33113ac6048bd2ff28c63f6086a0c458830c6cce2e27a1e1ea0e7c9fb
-DIST rust-1.60.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 75d23db39da3fda6ac1cabbab84904d9f9a7c0b3c58081f8cfd6952a6df012aba1788a5008fba6156a410b28fd9aec8eb946e24a6217d35023579b8ceb362b63 SHA512 eeca039bc3a7610d7ef8a786fc280c18314aa5c5f83b2647fd5130d89b62eeef5e3bc73d140999c0e8b4b2af2efaed27c4dcb20b21a43ccec49c79c76573a73c
-DIST rust-1.60.0-mipsel-unknown-linux-gnu.tar.xz 160546356 BLAKE2B 1e56b520727f7b6f1e2158db55638b4b8c3ce646ecfcc13a9c511defcfe3aca056ac002ea7e2d5c673594cc9b1611667b1d243766c8b53beefbee7e7f093cba4 SHA512 2c48d13fdaa1071f65796edc8193d1fb9be1a5bfb3e349a9bf5f518e02b9d8a0042c0c39ae159e914368f7150ac67b7be9fd115ef5e878bf06651a3f6760e4f5
-DIST rust-1.60.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 2297dd2504735c78fcd6c7e69b1884215db06ae1fbcd31fc8b07586eba10a7f861ba16209be608e3302b3e48f9eaa748d2990fbc4cc21720b705ff67e4dad533 SHA512 2972c5ea07d7336c554a232fa7adef474fcdf1b5da8f584e200c303210d248d5acc963646e4fd7c3085fe74b96c6ed4d75607d6fe134247b7932a615b1bb15c9
-DIST rust-1.60.0-powerpc-unknown-linux-gnu.tar.xz 179198588 BLAKE2B ffb68761fce839412eb7147c44732f275e27c0e67894b41128936f1ef05e19c9120b3decab6fdb16924688799f035d0c261500651b6eacc415bf65759f246e53 SHA512 0233c9381ff27642fe76ad856af9f51257b25c6a428255dc9c1c9c9993fcc943f551244f07838541d63a99c0481d95fad3749921dbc6766378d313f49e7e1dc8
-DIST rust-1.60.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B c35cb2d813e578464af34f5a3597d7a88009041c04ca32c57f0daf5953b27ee5c7ffde98da6d6ae85dda07559391c0bcbdb5c1c92d41159f8fa79d7a8d3c2345 SHA512 9fba91f8f84bd677ce44dbb3206e87308ac7337115b312904cb199caa3ebbf4d1efc53eb27da38829f5b41b6b6078309386be7f6dd8ee33f6f67e7aecd077c1f
-DIST rust-1.60.0-powerpc64-unknown-linux-gnu.tar.xz 185903604 BLAKE2B bea00626f9278c2f67ddd44dca6a7fd4931f1c3a5b76eb70a2b98717425a7f8439efc3de19d555ceba5b83e0262de77e043771e3c31cbc2a0e09264a5b607c7c SHA512 002f8ea3d25ca9c57c66fd027a903cafdec199ab8d7f63c68b1d7b8bb9607b2eb69ce98d322ebcb8476bcb8e28d292f285925b7a2f2ffe23fc45b9a626420675
-DIST rust-1.60.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 419738f90082f4ff68f6b01c0d6ef467fb856dea7320cc70b07ce569adb712673e09d632156927603e9577d6c88d0b2409c9b9e5edce0a2ad60f17b7489d346c SHA512 b060a7909ae72d7f92e0a99362c38be20ea4d2e2a68c3e502d1fcf1f667a8bf80d117e67c8ae3922dda35214b0cd091b53085603f89952c4647fced34c9d52fa
-DIST rust-1.60.0-powerpc64le-unknown-linux-gnu.tar.xz 195616532 BLAKE2B 4f69ee1719874789b309f4ff098e96848e496acc1a5c126296ecaa3b021b5fca6c7b2995ea121482d7a282c86a988c0f28275f7474f7a63e5877819e3c8a57b2 SHA512 6259fa02a62008c63874405be80f3ab7b3d8564b71d18297857cf80db417792a3215fd85e53b297823bc9dc8968d5e035a1b959671a039391616ed62bd48cbd9
-DIST rust-1.60.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 27461458d3fc0c65d25ed310269e52acb1d332411af32922a418dc32c9998653411e68daae8dee81f595b52a0176f517cb2d57ca7c438cd1cce91ad44c376b3e SHA512 6edc6ced24d85faf12000cad3d21b8da93635f88c1e6c8ab0614313f04ca466489f84e6acc3f0d35e42f9430499123cddbd48c474554fc408d50df17714a65fa
-DIST rust-1.60.0-riscv64gc-unknown-linux-gnu.tar.xz 188464956 BLAKE2B ea9fb3e59ad558b0a704a84d54f555717d4f158b1d15e3577e6411becdebb86144cd78500521fdeacf38e4301ec86db088822c19a608a8808b9a7c2172befc41 SHA512 41c12e2a0a2a4f63d8ef321e30ded7cd9fedf732699e73e7ada32590c13ead6805cee7b089858eb7ce340ad6e55d364eb700c35efbd640b126b811f27ab6e395
-DIST rust-1.60.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9dca4b3ba2949e04c94ad57e14f576bb34e1c9966c9954ebee7549a5fa6a6fba57000138128bf12f93a0cec59715cd32dde7242c363c3de265e7f95ad8fd44b9 SHA512 2601feb20c211ae55fd051225d1b1c209e40c4d23c4dc79b5d85ca0b21de833fb8432fcd45fefc1484ca5987660e6625d1a6c69cdd4d05b2f84212bca1f82611
-DIST rust-1.60.0-s390x-unknown-linux-gnu.tar.xz 187797152 BLAKE2B 5a86b4bce61d65d29769b652d030f936adf669986aba91f1cf09edcc346942acc2bfa26bd568635889e89a1059eea988eef9ad300469b416eaf87e8d97b2cd15 SHA512 6be266c6191f35c1525618e986e1725b0e8b306990deeef5cda7aff4f5999680e84597a00d4c2c38099131604f436529420ebf4515501df1328dbe3118637ae4
-DIST rust-1.60.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5460b62ec3b461ce4d92b57debfc82329ec19ce5c38ce2a72e9700e9d4da767134738148d12fbeb0d6ef74f2dbfbba132571c9a8925b007d19432eecbf57b381 SHA512 1c285460c49be405361ef5ed2dbf9f720e7a9fce4d34b16aa5b2f29afa4fcc399f252b48cb4cf05e95a57869455a31ab5237deefe4e900c03ad3dd5887e70ea9
-DIST rust-1.60.0-x86_64-unknown-linux-gnu.tar.xz 154271340 BLAKE2B 7ee48c165e6ec7a6cbc49c46bc4a7eee735988808866024de87eec2312427d939158e03e443cc537034110e640c19fc920458f8259ee022f3aa9eaa617207d55 SHA512 d27f1d78b2535f9acbd8af079b853f0590725c9f5db31ac074685f2722f0270a9f8d417abc6af8be413598315c568333e3011ea07eef9c47a5c4e328a39aee47
-DIST rust-1.60.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7454407a16e2b6c89226252c7e706086c9bb8016183df1180c54e88ec0d6622a0829d4acda959a093702bb1d95d4f2678976ced69fcc219afb42ab631e459d40 SHA512 eb3550e27e361860075a22d9b4821c6d078d7e4c82ad688a64e813adbce9922b9ab2dc64d1fd4d74d20be9af122ff05819d521677a43ad1c1092bd498d325a8a
-DIST rust-1.60.0-x86_64-unknown-linux-musl.tar.xz 258420992 BLAKE2B 6b446c06fd8d511910110eccfd55c1116f3468ffe87274d6b90c7a2a1ccd298471f62d1bfb807ddab2f66fbac58995e903414455c76fe2b14c9659f00e8413a0 SHA512 6f5a53968f44bf7be563d32eaddea439d8f388858db3d3b58a89b22cc2252e195b56b0e8895f4254c40274035e221657504958c8f1e331befca012d480118f3b
-DIST rust-1.60.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 680e7267a188a5286938d9c3284968121a7783cba196bf863affd6b927344e1a88cf7b97016d53c74560179439fc7fe9dd700a295c7c00b139472320323861cb SHA512 071efcfad0074a03de454835c512e98b466662b27bef2fb31def0bb82531b4048eba59a529621fda515800e19c4f3c62a33a364ecca8cecbaa09fae842b894b6
 DIST rust-1.61.0-aarch64-unknown-linux-gnu.tar.xz 226403096 BLAKE2B b9927e6d364fe791bef49cea5f0904629a2f01e6a71325c1769c67b845725ae6f54a1a8c0530fa5048591dd0ecfd50a40224243f935b38ad269e35ce2e1c59d9 SHA512 1c00830f67b75eaf23ab759e8218fca48e424cad0ede02e737e341d105f6f8b8113e4d4181cde1b43f9369af9c2f238fbdcac27ccad3dd02db878e2f4e6ba35b
 DIST rust-1.61.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 697df0294d01a19eca2f9b7597df3826e79ea790766c5c5a7b73f5a04919cf64f1489f34c9d2c397523432243e7f3f29f42440ba9aee127753868529196810cf SHA512 78cbc7eeb552965a1b6c4cfc9c8404017fe195acefbda1aa203d1c2ba969b3ac28388930bb4f3ca5dda7ecac5e61163ae0a5d06967eab9f0a7cada87c6b2dc58
 DIST rust-1.61.0-aarch64-unknown-linux-musl.tar.xz 220966060 BLAKE2B e03c6418fed773d1028363979726648d1ffa0e04d6879688efefc15f95fbeff3ff9c0dc7c16a53fedb18c4e0b16e060cee9f3566b0f96027e5dc68820fda149f SHA512 e806f78ecc9edd12bb991533c6bfc95da30c8eaacbfc54f0f4dbf3a95a011da82fca13cf3ef23594a9d1d9d8c79c8186fe98b60658a2cd5c0ed2c6e3984468d0
@@ -190,14 +94,6 @@ DIST rust-1.63.0-x86_64-unknown-linux-gnu.tar.xz 155435832 BLAKE2B d5427a7380a21
 DIST rust-1.63.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 0b4465f1afbf2f5f9135cf722632ffd7df9ef4e92c65e9ef6d4aede5b1ff392973949a6737e88685033ee571dfefe9b099d477480d7aaec2a329926a87a6f5b2 SHA512 0c8d339204a23000cdebfaee7faaa576673bd8d98111ea187f5e19f03f7231f3bbec8158c5b04d8d903877f1addeebc9f4fdc6b1de0fc0ad2995742987eafb1c
 DIST rust-1.63.0-x86_64-unknown-linux-musl.tar.xz 87887273 BLAKE2B 260bb89b8a72c063b3943c07e0720c8a910d73fdeee281d0711e1c7c378f76fbbe815ecad2e517efbd4ce664ed0e12b2e6bfccebf32b233c0fd1e5d9c930919c SHA512 da7a521eb335ffd655a25dc312ca7f1d5d1dea6846a651e7ae7086bd079323a3a7ff94e1c474b6b45e39f2e989b261d20dcdd8f906f7784739d97a4fa52ba97e
 DIST rust-1.63.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 2681d77ffb4c40305ff532f975a9e31ea72a50fa2a25661ecd721a50f081a4ab3a659b2a06500540dbf21357af098add2a4a4dec63f50d5b3ed4c041fe4b49dd SHA512 012b2cb560e0d2514eb288960e6a3703f9be9a7e611b915f07f1150645b8527fe653d3fbb795ad62c5e431cb4ca175a915710913eb2b9f2912c188d17baa0d14
-DIST rustc-1.59.0-src.tar.xz 128942756 BLAKE2B b28114f14c9a0fec7db56fde79a985360fd8438c3b14eede49ed12e540c2636be960d0fd800c569af193886ac76fe8bf604d5dae59214ae08cb0cc6cc0ca404e SHA512 acace866871d13a55d365f65d7e15c192c3cd33096862571df6317e066b7474d668b95ae281e0244967778c05f1e33966c3c55616218bd25d3770a2b2d4f0365
-DIST rustc-1.59.0-src.tar.xz.asc 801 BLAKE2B 061701c4fdbde930798f9f938ca3642204ae4a2ad9396937ca7d604268813d6d68f4979f20d35abdbbfeec0bb389acd86c9d3d84256db85861f6b11e3dbef80e SHA512 1b90bc01f9d68ba1f70591c4ae707295d7727b790d170a0b757d654684e59d3c26c45b66a21f9ac762debb6867494660c73daaf10be9bd567a38be44c0009f72
-DIST rustc-1.60.0-src.tar.xz 136183048 BLAKE2B 8030f32c21f81af6abc7a282aab1189cb7d680c6bce58c119a1beaad71a3eeb36a696eef46a22d366e2c41a2f9182a9a5aa527426f2c8db05278184c37297dd0 SHA512 d0c113e8c2c67bf10773c9403dc4c4700c4deb2fb287bfec51e565d3473d2b481d8ae2c90b272cd67b3a87d7443ea25a34c7b40ba8cd7106bf5d71126ab141c3
-DIST rustc-1.60.0-src.tar.xz.asc 801 BLAKE2B 02a2c140e091ea6913a760daa93aa57ba6a7631d0b99867669ce68641d562d436f13ed1f1578713184f06c9307d46e19dfd7c8d74a516b04293bc65c02b90707 SHA512 8136d19d4f3f4c45249b59b689f01d4edf108535ffe1f813771bd244cde1c66184a0bde5a0acfed4fb01015812458204244bbb54e6f5fa86e9b1ef5e92e805e3
-DIST rustc-1.61.0-src.tar.xz 136696780 BLAKE2B 604299aa5c8dd7dff9802236898ca5d4fda8c54028d0aa557a6fe34c15941eb6e8c1dc5d2e172cd3680152ed1ff3fa9e58eb9b6a3b6f8f4ccccd949d810d31a7 SHA512 9bbdcc1c37f7b889be0c8d195963b4c3b65267a63ea309315eda12bd3b2cd36e0060301805dfc7da440c0a8702d085ccb0bf763155b27035a078769333637fb3
-DIST rustc-1.61.0-src.tar.xz.asc 801 BLAKE2B 46384fd77c72ecf5cd7c783655f9345e4d52718c737470548a9f3498af9cbb93c3bf618464507cd10185c39a5207fd6669c6c82841c8c82fa325001cbe659cb0 SHA512 5ea807254f0d7c207f10f1fb224101d9ae3a3c81aff16d2ba2ea4af1fe92345d1a25336b5cff0964aba9ed249e38ab9d3df41eb1217e048988093cdb46da8962
-DIST rustc-1.62.0-src.tar.xz 135644992 BLAKE2B f9133310dc951361588bdc0b631c7fc9e2187dbb6a71b4631786d68c0f9d221d12cc78f509df0a08a23beb6e647f18712db176ac62623c5b621e22281adf62c2 SHA512 02872a8409b0490fa9fa7a70756cbf103643694df6b2e2aea32ad8b70032a3162c7751cd92d78291587ee0120daeb9bc1ae5ec6136c7eb6eb584d8be3032dd3d
-DIST rustc-1.62.0-src.tar.xz.asc 801 BLAKE2B 1d9a6fcafdfc2f46b098403e36e401cc6b3834d4f7fffaa82f20a332f8843a0af10c814c3f585c6e062fd5e9fab3d231ab03cc0caa449acd1c8a9eea077c1932 SHA512 646a895d19847ab0cc1d2f85ce1643625a1785acda31d37ed9776257f8e4625b65e16e4b9f3210e816d4516633d963a0d7b520e35582366ee75059dcb2f1313f
 DIST rustc-1.62.1-src.tar.xz 135644156 BLAKE2B ff8428362153770c57d53cb7eef07b75944d47ec747d9c337cc7ba9f38dfd749415c9a00acf9d9d8743874ba1c51da7915315bd25e011eeb8a2aaa8812773850 SHA512 6f7fa855acdf20525e907a6fc8c7aa8b206603e3bcbd532d3bdce165380f0019f45dba2b2b06d20b541381accf67ca0d256fbddfcb1642a2e60e1237807d5410
 DIST rustc-1.62.1-src.tar.xz.asc 801 BLAKE2B dd0e917f8b587eb8318a9c820df5ee9a052f14e7dea05d8afcb3cf687fa2e362e6d2f4d20fa94a19bdf97227c9ef29548a6e267ffd9113bfdc36cc42f341d8b8 SHA512 698bfd419c218a6cccce04869279708cf6084adc464a64d7dd1c981c0577249cd06b4de132634085c792c838aa1e1beaa11a5a06ea0e5f4c1a6f4e28afe65a3c
 DIST rustc-1.63.0-src.tar.xz 136597192 BLAKE2B 52eb64ee11e7d9724a4c2654f7eea13521959ac5e04a4925eed5c89ec3661a7827146d6f9a9d05c98466bd4b74393af7bb18d9f418c785924f559833434dfe38 SHA512 0dd3cd1546bd9c1438afe0c4694e1ed80507f6b437674682c0474e13f83457e9ced4560ddeee58602e01837140f9e34a9e24c6828643dd6f613e07755af6997c

diff --git a/dev-lang/rust/files/1.49.0-gentoo-musl-target-specs.patch b/dev-lang/rust/files/1.49.0-gentoo-musl-target-specs.patch
deleted file mode 100644
index 25f1f27..0000000
--- a/dev-lang/rust/files/1.49.0-gentoo-musl-target-specs.patch
+++ /dev/null
@@ -1,164 +0,0 @@
-From 671ef2d1c228aed031b4232b8bea96f17b825263 Mon Sep 17 00:00:00 2001
-From: Georgy Yakovlev <gyakovlev@gentoo.org>
-Date: Mon, 23 Nov 2020 14:52:04 -0800
-Subject: [PATCH] add gentoo musl target specs
-
----
- .../src/spec/aarch64_gentoo_linux_musl.rs             | 11 +++++++++++
- .../src/spec/armv7_gentoo_linux_musleabihf.rs         | 11 +++++++++++
- .../rustc_target/src/spec/i686_gentoo_linux_musl.rs   | 11 +++++++++++
- compiler/rustc_target/src/spec/mod.rs                 |  8 ++++++++
- .../src/spec/powerpc64_gentoo_linux_musl.rs           | 11 +++++++++++
- .../src/spec/powerpc64le_gentoo_linux_musl.rs         | 11 +++++++++++
- .../src/spec/powerpc_gentoo_linux_musl.rs             | 11 +++++++++++
- .../rustc_target/src/spec/x86_64_gentoo_linux_musl.rs | 11 +++++++++++
- 8 files changed, 85 insertions(+)
- create mode 100644 compiler/rustc_target/src/spec/aarch64_gentoo_linux_musl.rs
- create mode 100644 compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs
- create mode 100644 compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs
- create mode 100644 compiler/rustc_target/src/spec/powerpc64_gentoo_linux_musl.rs
- create mode 100644 compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs
- create mode 100644 compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs
- create mode 100644 compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs
-
-diff --git a/compiler/rustc_target/src/spec/aarch64_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/aarch64_gentoo_linux_musl.rs
-new file mode 100644
-index 0000000..420fe7c
---- /dev/null
-+++ b/compiler/rustc_target/src/spec/aarch64_gentoo_linux_musl.rs
-@@ -0,0 +1,11 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+    let mut base = super::aarch64_unknown_linux_musl::target();
-+
-+    base.llvm_target = "aarch64-gentoo-linux-musl".to_string();
-+    base.options.vendor = "gentoo".to_string();
-+    base.options.crt_static_default = false;
-+
-+    base
-+}
-diff --git a/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs b/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs
-new file mode 100644
-index 0000000..067e2d6
---- /dev/null
-+++ b/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs
-@@ -0,0 +1,11 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+    let mut base = super::armv7_unknown_linux_musleabihf::target();
-+
-+    base.llvm_target = "armv7-gentoo-linux-musleabihf".to_string();
-+    base.options.vendor = "gentoo".to_string();
-+    base.options.crt_static_default = false;
-+
-+    base
-+}
-diff --git a/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs
-new file mode 100644
-index 0000000..1cd39cd
---- /dev/null
-+++ b/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs
-@@ -0,0 +1,11 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+    let mut base = super::i686_unknown_linux_musl::target();
-+
-+    base.llvm_target = "i686-gentoo-linux-musl".to_string();
-+    base.options.vendor = "gentoo".to_string();
-+    base.options.crt_static_default = false;
-+
-+    base
-+}
-diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
-index f1e8330..d8c0ba0 100644
---- a/compiler/rustc_target/src/spec/mod.rs
-+++ b/compiler/rustc_target/src/spec/mod.rs
-@@ -490,6 +490,14 @@ macro_rules! supported_targets {
- }
- 
- supported_targets! {
-+    ("aarch64-gentoo-linux-musl", aarch64_gentoo_linux_musl),
-+    ("armv7-gentoo-linux-musleabihf", armv7_gentoo_linux_musleabihf),
-+    ("i686-gentoo-linux-musl", i686_gentoo_linux_musl),
-+    ("powerpc-gentoo-linux-musl", powerpc_gentoo_linux_musl),
-+    ("powerpc64-gentoo-linux-musl", powerpc64_gentoo_linux_musl),
-+    ("powerpc64le-gentoo-linux-musl", powerpc64le_gentoo_linux_musl),
-+    ("x86_64-gentoo-linux-musl", x86_64_gentoo_linux_musl),
-+
-     ("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu),
-     ("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32),
-     ("i686-unknown-linux-gnu", i686_unknown_linux_gnu),
-diff --git a/compiler/rustc_target/src/spec/powerpc64_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc64_gentoo_linux_musl.rs
-new file mode 100644
-index 0000000..e840bb2
---- /dev/null
-+++ b/compiler/rustc_target/src/spec/powerpc64_gentoo_linux_musl.rs
-@@ -0,0 +1,11 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+    let mut base = super::powerpc64_unknown_linux_musl::target();
-+
-+    base.llvm_target = "powerpc64-gentoo-linux-musl".to_string();
-+    base.options.vendor = "gentoo".to_string();
-+    base.options.crt_static_default = false;
-+
-+    base
-+}
-diff --git a/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs
-new file mode 100644
-index 0000000..1037d82
---- /dev/null
-+++ b/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs
-@@ -0,0 +1,11 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+    let mut base = super::powerpc64le_unknown_linux_musl::target();
-+
-+    base.llvm_target = "powerpc64le-gentoo-linux-musl".to_string();
-+    base.options.vendor = "gentoo".to_string();
-+    base.options.crt_static_default = false;
-+
-+    base
-+}
-diff --git a/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs
-new file mode 100644
-index 0000000..a623ffe
---- /dev/null
-+++ b/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs
-@@ -0,0 +1,11 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+    let mut base = super::powerpc_unknown_linux_musl::target();
-+
-+    base.llvm_target = "powerpc-gentoo-linux-musl".to_string();
-+    base.options.vendor = "gentoo".to_string();
-+    base.options.crt_static_default = false;
-+
-+    base
-+}
-diff --git a/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs
-new file mode 100644
-index 0000000..f330473
---- /dev/null
-+++ b/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs
-@@ -0,0 +1,11 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+    let mut base = super::x86_64_unknown_linux_musl::target();
-+
-+    base.llvm_target = "x86_64-gentoo-linux-musl".to_string();
-+    base.options.vendor = "gentoo".to_string();
-+    base.options.crt_static_default = false;
-+
-+    base
-+}
--- 
-2.29.2
-

diff --git a/dev-lang/rust/files/1.59.0-libressl.patch b/dev-lang/rust/files/1.59.0-libressl.patch
deleted file mode 100644
index e81457f..0000000
--- a/dev-lang/rust/files/1.59.0-libressl.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 264834b5f033572c979d9109b4b76aa0a2ae2946 Mon Sep 17 00:00:00 2001
-From: orbea <orbea@riseup.net>
-Date: Wed, 16 Mar 2022 14:02:41 -0700
-Subject: [PATCH] Support LibreSSL 3.4.x and 3.5.x
-
----
- vendor/libssh2-sys/.cargo-checksum.json | 2 +-
- vendor/libssh2-sys/build.rs             | 1 +
- vendor/openssl-sys/.cargo-checksum.json | 2 +-
- vendor/openssl-sys/build/main.rs        | 3 ++-
- 4 files changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/vendor/libssh2-sys/.cargo-checksum.json b/vendor/libssh2-sys/.cargo-checksum.json
-index 8ca0bd076..4fd273b88 100644
---- a/vendor/libssh2-sys/.cargo-checksum.json
-+++ b/vendor/libssh2-sys/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"8981208d3829e782a076099f6d686d1eb3714102e0af7de70822f972ee9f0eda","build.rs":"7d5ca02f34cffe51db3568c500c9a8a70cef879871a0f466e3344142644acf12","lib.rs":"3f59dd52a499c4d707114626a44123f3c969c999599ea527dc04d221cfbf460d","libssh2/CMakeLists.txt":"8530be1d6db3715344fae1900fe73d8e2294930bef33019657064dfc6094cd0f","libssh2/COPYING":"859e60d760a3446ecaf777339f1eef98c527aea40714384d24b882a83ffdd23a","libssh2/Makefile.OpenSSL.inc":"8e82af68b172ddccf94c65c1b4e38b69b3b7f027cc14a54b6d660c5f2bcd4de9","libssh2/Makefile.WinCNG.inc":"79243be1029a0df52a5e79b3dceb80ac462f2e735e25445e38852610bee62f34","libssh2/Makefile.am":"955114c8c455346542067604795f344a693afa544c7efa813abb3b1dbccc59ea","libssh2/Makefile.inc":"3ba04a6366787cd65119ca3a4720ad31267e32d94b49763e123d85bbbc303ce1","libssh2/Makefile.libgcrypt.inc":"3d71dbe94c906d07c70eb8c7eae80fe5ae014565d7a9446bd39b659e91b73b71","libssh2/Makefile.mbedTLS.inc":"18bf8364aaef158a27b65be88ac1fd74af0cbd336930b6ce611b62dab77feebc","li
 bssh2/Makefile.os400qc3.inc":"ac9b0e1731f7dfa20e3987e108a4c5896e6095638ec545c8f2ac64c35b63a455","libssh2/NEWS":"9418b9c8dcafc633c2c16372b2b21ceb70a06243756af21eff173a4b379101d1","libssh2/NMakefile":"2d1cbda9bccd886de3c99dae77f09ac75a7f09f1834272b4a9154d2a0ae9a81a","libssh2/README":"428a810c75712693e66d2104ab64b976992a2670109959a8f771a609022ed25e","libssh2/README.md":"74b0076905edb7acfe526b1ea367aa567ced0599d5a3be8e8aa22c1ca847e269","libssh2/RELEASE-NOTES":"9a88e3e26281797ee09f09cd04e4bd753837b02366dcaf34885b800742bc862f","libssh2/acinclude.m4":"38b4ba61f1ccd764daa1c249fff189e4a897f71e19ead71690f5bcbe25d9d541","libssh2/appveyor.yml":"499cdf346619e52967be12e833561fe2b9eec7a50214b25b8195d67b21eb7262","libssh2/buildconf":"c2102a17b8f50f0d56d20639c05c70347a4e6ac5dcec351c6f851371e2a68a71","libssh2/ci/appveyor/docker-bridge.bat":"24121ac7d7c852358b4d6a7f319e1b593d294a97c027175f8085c741d7792887","libssh2/ci/appveyor/docker-bridge.ps1":"c96ed6844515850165b15790791f80a666f606a1931243fec3eb3a0
 7f7531ead","libssh2/ci/checksrc.pl":"879e805b57e2e86f6894a6a4e395daf1c1c048ee5984e109be74afc750782567","libssh2/ci/checksrc.sh":"a435be07f99eaac5b59f9cf68d88e3541c9fbed09177d0874078c22547edd5e9","libssh2/ci/ossfuzz.sh":"34e596139edfe9aa0a52b73ac1ef860a69968f88b1ed6f0dbdfff3832d08a7d6","libssh2/cmake/CheckFunctionExistsMayNeedLibrary.cmake":"60a8d1afe9a3b71cedb782ac6187a9a041d2792006a7eb3379bc42a9fcb95a4d","libssh2/cmake/CheckNonblockingSocketSupport.cmake":"443b9824a1d7f7cc0a9c1b740ca9824f82f73ac7f0294aa2c1e3192aa3cb5e0d","libssh2/cmake/CopyRuntimeDependencies.cmake":"5a146613512f467192e7917561b305e31d52a85b3f216d5e3c6ca6d2261e9b03","libssh2/cmake/FindLibgcrypt.cmake":"af65a3a8ea63eb935b1602b2b75c7c993558f9118e8c12cf9f2d4614977d8c53","libssh2/cmake/FindmbedTLS.cmake":"db4ad3046a838c325ff39f3f083a2de39c3bcde4c69670610ce27b23c758c50d","libssh2/cmake/SocketLibraries.cmake":"857615772ee6a1b79826eb18889def1a626296262db78def698286930e3c6cbf","libssh2/cmake/Toolchain-Linux-32.cmake":"fc7c2
 718c2e628fe28db38406fb57e9380d202dce8b4d615ef8b818984c37a32","libssh2/cmake/max_warnings.cmake":"1a14b62c40d327d69ad1531e3372523310e642779da33c3865e6fc67df46835b","libssh2/config.rpath":"aa48652ef1709d015f0e627eb5d18d1c198d81c29d5f89a81362512fcba72b01","libssh2/configure.ac":"1a24a7b81c127f3cfe154ede0aad567341c0743178d3f3b41ad59f3fa24c7269","libssh2/docs/AUTHORS":"12228e95c6b41c76d00b6ca8f2bf7bfb3372f3f32b6c62f34882530b9406f26d","libssh2/docs/BINDINGS":"c711b535a9462815d564995eb84b997261fb9a2db4ef82a8c9b3f926dd7498b2","libssh2/docs/CMakeLists.txt":"0cd132f7148c6807399141a611723f6083499751d8a3e326f06879e57bf2c369","libssh2/docs/HACKING":"5d2563866dc4fcc8a4ab352676e3d64b918b75e0a73ce7776b9eef7e8949d3b0","libssh2/docs/HACKING-CRYPTO":"88452e1dab1160dbd7d800c5d1c3b6651bca884b18aea476c6ad0b1fd387edba","libssh2/docs/INSTALL_AUTOTOOLS":"6ca4765ca5ca117514e41067ce05cc24504aa29eab9a76bb9cc1ecc87c3280b1","libssh2/docs/INSTALL_CMAKE.md":"266b25dbe613f02e4662467c23ad80bb42a35ef9d579933ddb2d7b1d
 038089d0","libssh2/docs/Makefile.am":"16050bb16175b6c34dd246fb10628975dc7563412b926a10818e3f85efb6e7ca","libssh2/docs/SECURITY.md":"4314c11322a9970bed60130a2e11a0eb79c9de719a7c7c2cb227356d9771ba2f","libssh2/docs/TODO":"e3a304f76129bdb90371439567dffe2a8841e3a5c326f71000490a11241bc9b0","libssh2/docs/libssh2_agent_connect.3":"5fe15d3e781382a8e935048dd266a89e9c3b63800d4714ceec6c78c512e49f20","libssh2/docs/libssh2_agent_disconnect.3":"e2d1a3af99d888e310c6e22227e11b0a42f1d265451a9e13ac787fe0b8075426","libssh2/docs/libssh2_agent_free.3":"332b5fb986c013ba363bd18d5e39c01a047d79fb22acf673291f1e19b4d8292a","libssh2/docs/libssh2_agent_get_identity.3":"acdccde633dda1740ba043fb3f2b3aed884923c74ff3e2ad2f01d5a6b87955f1","libssh2/docs/libssh2_agent_get_identity_path.3":"148b43bc669d3300b3fbf09ae57050a15ce074c8730ecef78e97ee9309ea179f","libssh2/docs/libssh2_agent_init.3":"09029ddc71d63085dd6ccf92062ce6e31f0d54a1eb40d06587713814ddb4ee5d","libssh2/docs/libssh2_agent_list_identities.3":"a498d332ea55486e
 b1c234468a8cf3c1886eb6b98bdd527a1b44fd06683e7ea2","libssh2/docs/libssh2_agent_set_identity_path.3":"b60fb7e972fc2b420ff0a7452ddbf12597dbc9cb075920da16ee9c0eef7f8425","libssh2/docs/libssh2_agent_userauth.3":"d2119c63fa5bd1a05385bd176a1c8d2ee0139aebec92addd1601edc948f17855","libssh2/docs/libssh2_banner_set.3":"1bd7a8bd59cb74d90cfed26c41701788afe7c0a667f686c5154cd0615d586422","libssh2/docs/libssh2_base64_decode.3":"c48f88f5a6405738bc146161bf442e02c02073e0b9957f5d4bc3bd425bee82e1","libssh2/docs/libssh2_channel_close.3":"e348d7548693066f863dde9a6c7dd21bf394aca51c1cae1c4999309eedfb4451","libssh2/docs/libssh2_channel_direct_tcpip.3":"3a67560c5846880066344d5581840a26a8509854fcf20fda79f9b2156e58757d","libssh2/docs/libssh2_channel_direct_tcpip_ex.3":"5a7665c77afd8aa509c03d5059ece42adb912979e0fab608034e4554e3106439","libssh2/docs/libssh2_channel_eof.3":"7ad4590d1dfccf35bd2f7393e0d14b4247c3108ee2f48685b505c0dd9516e011","libssh2/docs/libssh2_channel_exec.3":"e7f79363e4fa61ce0c00f59e4e97cbc3101f5
 5e2025b1156551aaf50c8522b87","libssh2/docs/libssh2_channel_flush.3":"fcaf2b8577ae6b8196313977d0686175a807fcccd3f3fce433028384da0f7bdd","libssh2/docs/libssh2_channel_flush_ex.3":"a0a60e2c15e2fd19e8399ce45736470782090455856b6a97cab7b9e8cb56b160","libssh2/docs/libssh2_channel_flush_stderr.3":"4f590d465d647b416c583c2b16693a3364e84da2400dfe7f9ffe1928577ca3ae","libssh2/docs/libssh2_channel_forward_accept.3":"4f0621fe2a6aef5fefd50197974beb6e6c89dc41841b1d6052f885a773557ed8","libssh2/docs/libssh2_channel_forward_cancel.3":"230ff1688acf2f4a7ac5d687ca46bd39458192a0662b3b8fa6edd8217c25117f","libssh2/docs/libssh2_channel_forward_listen.3":"fac440afa8233b6d3982b349d56c177ba9fec09464f1c5a5bf40ce32d600197d","libssh2/docs/libssh2_channel_forward_listen_ex.3":"49c5374f3b5c56213fe9a43ef4592cd51097cd1c9017fcb3be97c94847e8efcf","libssh2/docs/libssh2_channel_free.3":"a7e649756ff4a20b0f5bb6bc9f4647ecaff885c8745e9c304cc697c2c677196b","libssh2/docs/libssh2_channel_get_exit_signal.3":"89557c3203331e1d21773b
 557659a0f21e1ecbcee90c372de3b6e159c7b78a7d","libssh2/docs/libssh2_channel_get_exit_status.3":"d374651f3f72f3f179c37b4a44b815a1bdd998f803a121fc8bc5544c397224c8","libssh2/docs/libssh2_channel_handle_extended_data.3":"c8ba2c032cd2cd8fc5877845df624712457dcf1c092975f3c713fe75794fd42b","libssh2/docs/libssh2_channel_handle_extended_data2.3":"17269accf920a28af6bd14770f94067083e2dfa56df4e08663844d0cebb78052","libssh2/docs/libssh2_channel_ignore_extended_data.3":"c00c30e1aa01c699c92c30c98e9ab8e543cb2fb23376b650627c56ecc3a1f275","libssh2/docs/libssh2_channel_open_ex.3":"a4153c3de3d2cb9a2faaa39eeb9b638c829db2cf4aa4a0e0a2cbd51098626e79","libssh2/docs/libssh2_channel_open_session.3":"63ee8e3220149933ebf5219335cf5b9fb107e23808137f782e8846b191ecf629","libssh2/docs/libssh2_channel_process_startup.3":"1023352b8152e5a1a2ccf2bc899e9539fbecaa2dff69ebb68ada088da38fc6b9","libssh2/docs/libssh2_channel_read.3":"1ddb492b078cab328e718563f2fc5dc3fd737078ba272d078f94e554e2938080","libssh2/docs/libssh2_channel_r
 ead_ex.3":"931e1fad6ff1d629ed2b523c75e645a16344be8afebc0e2f50144ac8394146e2","libssh2/docs/libssh2_channel_read_stderr.3":"6b3a6db85f2fdb26a07b95d6046127f3d5c709e6ee4bd72d66b9109e10ca8e1b","libssh2/docs/libssh2_channel_receive_window_adjust.3":"01a3e1d79fce062cba8fefee6b8fe7ca81a1ad7a3c8cccf12801d7f80fd6265a","libssh2/docs/libssh2_channel_receive_window_adjust2.3":"451f2632b8c786a16e87940f2fcb978e9d88fee27cb997c192c9e671b72b27eb","libssh2/docs/libssh2_channel_request_auth_agent.3":"9217dcc14a2c6bee93f5754b2fed7827b3dbb8efc335d7fbf4908e8a531570b4","libssh2/docs/libssh2_channel_request_pty.3":"f7b4d6780a1b6ed5518e425751f55d9930a5bfa8e92dc0458ccdb06d7786ecbe","libssh2/docs/libssh2_channel_request_pty_ex.3":"ab2af9c02a3d127ba99cf27f0496643eb30810edb38a94f7df488f41041ec105","libssh2/docs/libssh2_channel_request_pty_size.3":"5ae6ade5d71da8ce3a31fd804c32600f54a3385b07cb8ed6ac90157a9a1ada26","libssh2/docs/libssh2_channel_request_pty_size_ex.3":"4b296b3a64b71c1842c0f12c70fe866734bc18f51e3907
 acfa3f04c4a997bda3","libssh2/docs/libssh2_channel_send_eof.3":"a83be7ac2b428f6d41df423e38c52d01f86b9fcafde2010336c7a57323808b6c","libssh2/docs/libssh2_channel_set_blocking.3":"767637f9629f9b7bbbe24c3f3e13be0a83174f1542a63fe7daba350beb369447","libssh2/docs/libssh2_channel_setenv.3":"fc8773714c44358cf215d80dfdfeea082cc84ae0f33575d17a7825ffb785b02d","libssh2/docs/libssh2_channel_setenv_ex.3":"d4641d1a3054af1fb1aa4819de5ce002b434e56745118d843adc70d902505447","libssh2/docs/libssh2_channel_shell.3":"e2986078e39068dd61d6d3df0d9e54adb0a489e55ba8051ae6ce3ad5f3c2c191","libssh2/docs/libssh2_channel_subsystem.3":"16e48c8ad515baef23e1ea94895cf0d2c6d397c133adcbbd20300304b64cab4a","libssh2/docs/libssh2_channel_wait_closed.3":"8f7ad8093832b4b343b04eefe492e94a18be6f496e2074037f93b99683296663","libssh2/docs/libssh2_channel_wait_eof.3":"a96b063c1d90129420db176063ea4cb66f1b913a2d2b5ada2f3364eeda2d6543","libssh2/docs/libssh2_channel_window_read.3":"085331a4fb18dd396b016629ad241a7bf03afe78b0a09fec701aa8b
 e526fab2b","libssh2/docs/libssh2_channel_window_read_ex.3":"9faf5e32cc4e1fe69fa2e57dc31cbdf3f0e7bfcea339f3b7196f535bbe6be2e2","libssh2/docs/libssh2_channel_window_write.3":"6daa6fd8d4f74957c709695bd74a741e7808e057cda1a0954e76f92f793d61c4","libssh2/docs/libssh2_channel_window_write_ex.3":"052d12745f7a8a634ba0b3b36cf0a592c2425caf0679aaaca4776b664bd2d5c0","libssh2/docs/libssh2_channel_write.3":"30bfc0efb86bf513f721200a89c9139687d58483826924b9b401797de74b6387","libssh2/docs/libssh2_channel_write_ex.3":"5ee6d5afe244e2839353ed8d7d6688bfde3f090bf951afec404bf486d6f78aac","libssh2/docs/libssh2_channel_write_stderr.3":"e15a48affe5a5044a2b70bf6fc1e3c6a1dc61c10c4440db4828080fe55e5a0f2","libssh2/docs/libssh2_channel_x11_req.3":"e10544721e6dae96d4542abe07b43767ae6fff49a5bc87381aaf72be7d45f51c","libssh2/docs/libssh2_channel_x11_req_ex.3":"ece17b293092b2319ea237a2855a4b9b7c89c6954ecfedbd837d3d02ce4d7a13","libssh2/docs/libssh2_exit.3":"104af206d55e98ffa72ae0c5a505523220c8d6e1de27a37a5139093476d5ede5
 ","libssh2/docs/libssh2_free.3":"8abbc67b852f9fabe09eb84540b610304d896721a04a4bee1e9d0e8f8f08c999","libssh2/docs/libssh2_hostkey_hash.3":"82070c7634690b4bddc49f3c83b343c6f792c902e0e48247d055eaf3284f80e6","libssh2/docs/libssh2_init.3":"926b4044a52cf71dac8ac23cdf51d6e76bc92f5a3a72c65371549e18826c1cc7","libssh2/docs/libssh2_keepalive_config.3":"7ebbb7cdc900d6d6188afc537c05c60a115030609d96571ac447ac396991adc0","libssh2/docs/libssh2_keepalive_send.3":"86ac214dd4c086239d59ac6582926f72544c788ad2fbf3ccc4e678b4109d32a4","libssh2/docs/libssh2_knownhost_add.3":"29a052f853cd3f19efc12612d4e3224271bdc91b10cf6b73e866d7018d25f07b","libssh2/docs/libssh2_knownhost_addc.3":"c5a2b8510dc1df43311f17073e7e720232f7a7e25d9ba7ae80efe2f26a133297","libssh2/docs/libssh2_knownhost_check.3":"2059d72130dc5b99c6faa8b399166a8495cf02b71313d6648778b11b0adab631","libssh2/docs/libssh2_knownhost_checkp.3":"88cac561cc381008f64d4c879bbe626afd669090648441c134cae83a5ea082a9","libssh2/docs/libssh2_knownhost_del.3":"34fbfa2954
 6d2bf0edc380270937658f818d2600e4bdc658d5ce28c7d255e1ef","libssh2/docs/libssh2_knownhost_free.3":"3e319da43cb185d73dc215a75351f330de2194608a1b12b8e0b623c900d4d96e","libssh2/docs/libssh2_knownhost_get.3":"fc04784b136786dafb210e018e758d5272c8d9d531c4fc5baac9f7b90f65bfd2","libssh2/docs/libssh2_knownhost_init.3":"509721c49287e0232b3cfeb41a8d4b44a45a195222a5694baf9d728c77225abc","libssh2/docs/libssh2_knownhost_readfile.3":"6d72d5be2d5dd56b125c1107632c58d5e8a692871182f3f883f5662f39d7dfff","libssh2/docs/libssh2_knownhost_readline.3":"e259eaedbe587c06a74ada7c1cf5bf28a168edfff2a60919985aa6c7a15e56f1","libssh2/docs/libssh2_knownhost_writefile.3":"5ef6daaf96128c0b756c9faf38b5fd60697fa93504a5cb9ce7139a3dc14f7254","libssh2/docs/libssh2_knownhost_writeline.3":"32c23d5b4393297935c3fa6e03d57a3bc1d904e5e469cf775bb0516f9f885147","libssh2/docs/libssh2_poll.3":"c4a377bc2be1c2789de7a57fa42baa51cfbb0bf4121153ee9cd5201507a8c2b0","libssh2/docs/libssh2_poll_channel_read.3":"5b3df35e57c3252fc63e819c69cc6405bd
 fd14c546b5cfc2a521563bcc9cb420","libssh2/docs/libssh2_publickey_add.3":"2e7c2772fb78b750b5aa94c7bd38c100e52493f6fb050762af924e26ab2605dd","libssh2/docs/libssh2_publickey_add_ex.3":"76e23274e8b4756b03359b0fb5bcd05becba4cca1212ae2c164a32c2f10ee50f","libssh2/docs/libssh2_publickey_init.3":"5643aa57554f8daacbbff9e539c68cd1093172bd86d859109e6446ccc91a85d4","libssh2/docs/libssh2_publickey_list_fetch.3":"975705aa9fc187961fbab91751a5f41412a30d73d65bfe54862285061afc6c29","libssh2/docs/libssh2_publickey_list_free.3":"5eba2104f91fb101014441df437c695b9b0b1e106b6268d623f886de6c237503","libssh2/docs/libssh2_publickey_remove.3":"69423e4d9d6b76388f6160eb473e82449700569d449911163609c8b1c629ed43","libssh2/docs/libssh2_publickey_remove_ex.3":"5c1632ac1685361577a4ddfd1f6257ecfc012225e1e8c2b126f93add0b5b6190","libssh2/docs/libssh2_publickey_shutdown.3":"b152e6c493896da374b7b93468b23d7012e6232db06c331c158f9057b8053994","libssh2/docs/libssh2_scp_recv.3":"e3af95d4147fb29a893ee80c8af430b7df1d77048d814c50052
 43c02fe221e18","libssh2/docs/libssh2_scp_recv2.3":"9fc689585ec209d13e5a7c5db6750e07b171103bd29d3522424f6d812473b95e","libssh2/docs/libssh2_scp_send.3":"0b72a5932217f8e561840de2ce3e5077bb40e7631b1dfb6f439d4a2413f83cfd","libssh2/docs/libssh2_scp_send64.3":"3225083c74987af71d4a2947a7852ac810fd87ab12532492f286d7e7d7547456","libssh2/docs/libssh2_scp_send_ex.3":"07818e45119b15208123655f945e1927c0971d21ae6d410fd26944b86cd41745","libssh2/docs/libssh2_session_abstract.3":"56b29e317d2676d842f3854d8ffd89723a40992897b962d9ae07b56b2373a727","libssh2/docs/libssh2_session_banner_get.3":"78804fe78c70c1fcc408a493564c989f3d3da36bf56d14344df150bfc65570c5","libssh2/docs/libssh2_session_banner_set.3":"c058557ca5d9633b560e05492212b52ee3f6477dae79f75c8ab4996828d88f09","libssh2/docs/libssh2_session_block_directions.3":"0006e5c9788d8b2c3976274b715ab712fedb6ee4d3caa09071b62b846b7d44ed","libssh2/docs/libssh2_session_callback_set.3":"6c33ad4047e740e5d020ba14cc5ce06beb0bf02b4b2f88c1ab7fd79e6e5f1b8b","libssh2/do
 cs/libssh2_session_disconnect.3":"382845fee521c18828a9611c286919218fe51a4a3185f37f5c6e8a10a081db66","libssh2/docs/libssh2_session_disconnect_ex.3":"5ed79115477f25aa8cf5998bf46eadc2383fd6e4eacee32622d961d4080ffa11","libssh2/docs/libssh2_session_flag.3":"18317502888f1b7da8ef132500e009c8eed72cec5ddffbeda575a4c5093d8b74","libssh2/docs/libssh2_session_free.3":"7fd404b4fb4c5e955cb2b8fee9b72a89864351e63c553e56a80dfc2af8bf200b","libssh2/docs/libssh2_session_get_blocking.3":"947a5fe43a518c13ba5049d820084ec6eede2bc3687923e67b28a75297431378","libssh2/docs/libssh2_session_get_timeout.3":"4e808b2407358466171f2546c5220def1db4460a16d1f24c60a4a5186d6c0606","libssh2/docs/libssh2_session_handshake.3":"fcb9fc145dc6f3b29871dcbe9c3d27529790e1cd3e20643c8aacb3d3d628fb5b","libssh2/docs/libssh2_session_hostkey.3":"0df40e6f599dacefcebf30b19331e4ce0abfad5bce75f5cffc8f4b7947bca5c6","libssh2/docs/libssh2_session_init.3":"ce1a0e9ecc5a17d607437b01f4ee94d5a0d8c5dbc8a04f1e26d3b74daedae57a","libssh2/docs/libssh2_ses
 sion_init_ex.3":"2c169699aedd0f9ca16fb71a90618738dcdfa5b2b70d857a39c60896ba62b86b","libssh2/docs/libssh2_session_last_errno.3":"fe92e9c94ecb5fa33bbf51f866bb62bc4a1e5c3ea153dbaf34aa6553cd477ebf","libssh2/docs/libssh2_session_last_error.3":"b14e30dc25d7daaf46ef119176af947efabfad29eff7f726635f2adb6260e97a","libssh2/docs/libssh2_session_method_pref.3":"6946c31e6d51b612852bed10d4ea869093a048f6d41131addbcb9c4dbbd767e5","libssh2/docs/libssh2_session_methods.3":"d1aaa1586bf15dad4e9f92828592b80d604280b30a3d0e21a71f5124fd1eb560","libssh2/docs/libssh2_session_set_blocking.3":"33c01981b30ead73c614fcb6f7f224a39d6e849e6a9bccc9b8dd463719e1a39d","libssh2/docs/libssh2_session_set_last_error.3":"147c7ad527163e73f3fe285d16c980de60bba09813535a7623a1e0a037cfd1cd","libssh2/docs/libssh2_session_set_timeout.3":"eae71fab2f62942d4e5b66d93a7f49347a08ad1afdfc9a81ce8fcc0d0a9b0068","libssh2/docs/libssh2_session_startup.3":"425118593ad0eaf0688c686d9b75f12b7cdb23d330445077907c6e2023cfef77","libssh2/docs/libssh2_se
 ssion_supported_algs.3":"a2fe37982e0f274bcaeea77ad33ca8fa06ea9377aa4e8196c3a8a827e2906b74","libssh2/docs/libssh2_sftp_close.3":"95f03395996cb7b2652cab241a7d91d0c57bec6d4d8f8097b2932acb56eb7bff","libssh2/docs/libssh2_sftp_close_handle.3":"c813fa985be5105cc3cacaf23dc01f0442628c005e629115992a280597301368","libssh2/docs/libssh2_sftp_closedir.3":"1230d8cc661c016991f32b757b11ee6ddd1ac551e5522c5e009f21ef624dfdc4","libssh2/docs/libssh2_sftp_fsetstat.3":"a7ab72ebfca8d295a2b48f2c14d831568042ef6a0528e590faa99f5e2dd00675","libssh2/docs/libssh2_sftp_fstat.3":"e354ea4b96d512a34db42be2eaaa2c7fb0bfed554e726aa79db7f45ade1f9dd1","libssh2/docs/libssh2_sftp_fstat_ex.3":"2446ac64b425dbaf115b37d29107b66fc0291c2ebd17898669c406a4fd57b78b","libssh2/docs/libssh2_sftp_fstatvfs.3":"a10a9bf1dda75b0e97966ed003d183728a8ded895eece58e458980bc742f7a39","libssh2/docs/libssh2_sftp_fsync.3":"bee468765b5d4a09a3b473eba0cf436328f29806953bc1f998d8bc97d2a3049f","libssh2/docs/libssh2_sftp_get_channel.3":"90e527f9eb6b0d177603
 28f6e3842f74d1d173fe88a7c9ec2357ca471e9c0f41","libssh2/docs/libssh2_sftp_init.3":"585d782936f71157d141474c94c897d7ea292580445550c25c8fd44f5e03052f","libssh2/docs/libssh2_sftp_last_error.3":"8e7b2fa2c5fe4792a39a5c1c24baf041c970e3021511b36e59979ed64a18b4c7","libssh2/docs/libssh2_sftp_lstat.3":"a01353b26374401029f5094a24beca08988ea201ca2197fef2b14f30bb2658e5","libssh2/docs/libssh2_sftp_mkdir.3":"14e04b070a6c351e2af6bd68f73a408e2982e9a358d5d2af5a46d8b422d27ce3","libssh2/docs/libssh2_sftp_mkdir_ex.3":"44c17758d2b0336f94c4004bdd2debf9e1632ba12c6db6df495c09a71a58e59f","libssh2/docs/libssh2_sftp_open.3":"af9a8c90999412d3371218f59859ff91c6a83eabee75f1712adf94c5bceaf1d6","libssh2/docs/libssh2_sftp_open_ex.3":"11661fbcec142d9afee722f5ce779bd32f6e0a2b2dc45558c3bd47292105231d","libssh2/docs/libssh2_sftp_opendir.3":"62639f60918835e08f3c00d708cb32af319b9a56d3c2cb33ad409b60b347b31d","libssh2/docs/libssh2_sftp_read.3":"1d0435c740470b8a6a427da4331b576833eead72f9d976001d8a1f55fcf24815","libssh2/docs/l
 ibssh2_sftp_readdir.3":"0e98293f67ae019adf8c5e17fa9f31f3e34b082c55ccd2119ee424f30c337fc7","libssh2/docs/libssh2_sftp_readdir_ex.3":"7f9a2bda1d49d12040796015a842b592decfb076230ee9c8260c31e7b12dd2cc","libssh2/docs/libssh2_sftp_readlink.3":"1834815d254c351664cacf38c06a4b232f099787cc09a41ef719a1ff242e4064","libssh2/docs/libssh2_sftp_realpath.3":"6b8e75bf89724998c414487d93f8c4899a3b1f4deba50806a798fdf9f9405bab","libssh2/docs/libssh2_sftp_rename.3":"eb87a9b1c94f38913c0cb62a3a474fe8c8f3cb0a874c61ced396a2d8bb92e510","libssh2/docs/libssh2_sftp_rename_ex.3":"12d2e70027755937df6de8b0836f75509f4fc5f1a5428fe5a92ae3eb23ff4b54","libssh2/docs/libssh2_sftp_rewind.3":"4caf86de2f35e2925ee637a68f7cfc2e76dab54571ada06495a0574e549c6a7c","libssh2/docs/libssh2_sftp_rmdir.3":"86a1935b7bb291041eaa7c0788f417c6398b39fd208b6bb478329299ae72a49f","libssh2/docs/libssh2_sftp_rmdir_ex.3":"17029aa15ef3e1c862731a7ee52e8f730dc8951e62e1c0539b922dbcd66810b0","libssh2/docs/libssh2_sftp_seek.3":"546a134db735df610032fa982d3
 c8c1013ced779e21faeff261d71041bcde8bc","libssh2/docs/libssh2_sftp_seek64.3":"07df7a2c8c9d75b198fa60909baa31e1c883002337a4c6b7a1b3a9c6ceb3a594","libssh2/docs/libssh2_sftp_setstat.3":"39c7f5d489ea5ceb51bd9c7de237464f5c510f3ce0983e57f7b69207ef957e01","libssh2/docs/libssh2_sftp_shutdown.3":"48bf057f1836924e3e5009890cb6e63ec9d11d0aa19abc258c75ee7c7bd097b9","libssh2/docs/libssh2_sftp_stat.3":"7fa4495645b580c216ca2279168b6b2f7c9c73a973dabf1997c02a0409d8c042","libssh2/docs/libssh2_sftp_stat_ex.3":"fd19ff075f44a1713d765330d069fd63cffd8b2dbc09ce9170d926f25d5f70c3","libssh2/docs/libssh2_sftp_statvfs.3":"5762f9ff7d56f44164db57fd048daa60173794c4e7a58ab2fb255e29f0ca2bb8","libssh2/docs/libssh2_sftp_symlink.3":"ae7ea167057c307552405124ad54ee488db7354e7caa974334e88f5b2104c88a","libssh2/docs/libssh2_sftp_symlink_ex.3":"7e22a39bb97548428cddc8a9cf3bc7a1ff57cde878b337a7e177730bf5c51d01","libssh2/docs/libssh2_sftp_tell.3":"ce22525601570f33d91469170d43470a8a9decf0b35ae82c2cea72fff1dc8d8f","libssh2/docs/li
 bssh2_sftp_tell64.3":"db5faf0fd28de4738e3062555c1d6981c2b272d7b89bd85e3e83d2a03237472f","libssh2/docs/libssh2_sftp_unlink.3":"d8c4c60c41e81149fe14a4a00cc114d3f7bb4799ceea4895c67d79363da3ae7c","libssh2/docs/libssh2_sftp_unlink_ex.3":"64b0723444b716d2b809a3b481024523fc8c62ab45d3ec4274040abf824cf611","libssh2/docs/libssh2_sftp_write.3":"a4706e9d6dabcde2aeccba27f7d7d5a3cef33dd21f4bf66bf5b181c3e8a3f9ef","libssh2/docs/libssh2_trace.3":"636417e1798bce85c2058cad56493919c608d426acaac409ec1a489bdef90fe2","libssh2/docs/libssh2_trace_sethandler.3":"b37355eff49dacc9916818db61258f21665fb68993e57ca9040db056453bf8bd","libssh2/docs/libssh2_userauth_authenticated.3":"81115e3ac2549eadafc5ab8c73462d1c5565593106c4d995a920f718e5dd451e","libssh2/docs/libssh2_userauth_hostbased_fromfile.3":"265670d504f8db399e9253af673264b92ae8cc3593912e9b2e6aee436d02fdfe","libssh2/docs/libssh2_userauth_hostbased_fromfile_ex.3":"a71631a3eb07ac88ee21beeabaf6aaccb7e93378c98eed228fa27f1575b04a64","libssh2/docs/libssh2_userauth
 _keyboard_interactive.3":"17d55c3ba83fc9b7a2fa1dbf0e0d1886deb87616298b6bf424b5ac7d63d0da39","libssh2/docs/libssh2_userauth_keyboard_interactive_ex.3":"d62646af0cf3257fa4a599a676f5237c1ab4d07d56b9b66745fe786f640e6afb","libssh2/docs/libssh2_userauth_list.3":"af6928a269c96480a6ea3a3452af7029577f69485fee36ecdd9dde48b4956a5d","libssh2/docs/libssh2_userauth_password.3":"4c8103bb95903b0b2ee6c2b1d0b3eac150ab31314ec023424ab564d29b1678a9","libssh2/docs/libssh2_userauth_password_ex.3":"afa13d3bb9bbdb3672e014aec922b2953556842b69fb602e8dc97f10d569f5d0","libssh2/docs/libssh2_userauth_publickey.3":"874ece028410feb1bb33d481ab2789e6fadc9a9974cf4e0a72517b4c3fb81861","libssh2/docs/libssh2_userauth_publickey_fromfile.3":"6864fc6411955179866986cf95f75ff41a022a4b60ceb177cf503da45a67b88d","libssh2/docs/libssh2_userauth_publickey_fromfile_ex.3":"060d36d8a06538035e0d7c678f78db16d68ad6f930c958ef3c1bd46f96f9ed39","libssh2/docs/libssh2_userauth_publickey_frommemory.3":"5022660ab3c6c7f596b92e887debb3c580dc21f64
 be71b76c83c033c0fe36ef9","libssh2/docs/libssh2_version.3":"d3feeb9f870be0dacc7616c44dffae9abddcd22eec9cc8c18a0526af723ffce8","libssh2/docs/template.3":"740b501cbdd74773bdb93c8a4d1ae1e175f3593c0eb93844ea2cad0c61e14463","libssh2/example/CMakeLists.txt":"f8cc011f16f189f485ed9060d71de862616c254dcfc1fafe49ff6425a4d89757","libssh2/example/Makefile.am":"0e7c6f2ea9a65a6eb253d721cabc8df573cd4d2606ddc7bd7499b701380157a6","libssh2/example/direct_tcpip.c":"1a335122f9e28b3883587768e8332f3883b462def477f8651b83fc1392e96dca","libssh2/example/libssh2_config_cmake.h.in":"115c1b79ea918a83de959f0f50eb98c2ce252b21b566b9ad56f3c23b68e48ae7","libssh2/example/scp.c":"87736832ddc36e80b52ed6b7f1c87eedcb57d739c80dcff5bbf2d610bfc7f7c4","libssh2/example/scp_nonblock.c":"dfa78c57e18acdb437f3a643dbace70802aa7d2d504adcd47ed63f744189e822","libssh2/example/scp_write.c":"3a3c4dfb3c4688558716a364cf0f4d8b767bf30c59cc6b352394a2d698370930","libssh2/example/scp_write_nonblock.c":"8071bf056b72eee39bbb1ee173193a79e6ac8a28127
 24b3e31bb919c6b8ba370","libssh2/example/sftp.c":"6a0bcb5ec7b3066cd040bfc29243fcb36f8375575db17415974a20c29892f6b8","libssh2/example/sftp_RW_nonblock.c":"a2eac2e5433d8e63fd416dd8d0b1424536b4dae701360bf9ec3024495d8c6eb9","libssh2/example/sftp_append.c":"e9aa3ad34d7c9aa119a841e16e99657aa28596b184ff38d09df3a1319dfbf9bd","libssh2/example/sftp_mkdir.c":"51f94316a6fc8ce1c6de9bff0599fa95a950a1424e94b676410d76b1e1edc879","libssh2/example/sftp_mkdir_nonblock.c":"0fb08ab3d217af555d7512693a56c63094642247054def280cbcb08e2a3612c4","libssh2/example/sftp_nonblock.c":"c7236ccc7897e1abd3d9176a33cbd059327d30fc95c7803f7e5f99bf3c448a3f","libssh2/example/sftp_write.c":"7e972aa778422c962ba0ebd2fbae109865b334e33c371ae94a8634e74ffd5473","libssh2/example/sftp_write_nonblock.c":"6b18c9371c2ed1e22b005232f80b99959cc68f2e0dc1351fa73d678e7c64a329","libssh2/example/sftp_write_sliding.c":"b88419136786cd31709d9466b0e4a131b990bbd425096276e5699559863d4bd7","libssh2/example/sftpdir.c":"d186de774a29db36a87fe2f66011acb5c
 5847316791c98f39dc2749a4c448209","libssh2/example/sftpdir_nonblock.c":"6282ae10e701e48063a793ab2e7a819be77f7267dd7ec29264339c41c5dad8ab","libssh2/example/ssh2.c":"2789139110316e87a06b4d6132fb86081c545084358a3ddf6bb5128423eaed49","libssh2/example/ssh2_agent.c":"3184d5a396a9067279ec16070c699a8baffdc02c70930f8cbecbd1cbbd489d84","libssh2/example/ssh2_agent_forwarding.c":"2db3d78ce1c5bdb2453f7d22cdff09cf1dc3e40aceb8a54faffe6f76af88d1c3","libssh2/example/ssh2_echo.c":"91c519486541145f579c550fddb5ffde5933ba0aaf22366ee8aec50c0cfe4933","libssh2/example/ssh2_exec.c":"67afd0ef23627c87eef2e4424967eef26f8154ce50c357cad85f7d3764fcd5b9","libssh2/example/subsystem_netconf.c":"9b076de4366e11ca81e88d60f6dc41ff3ad897d3096f148ce4ce00102d7256b0","libssh2/example/tcpip-forward.c":"0a929eec2a7274e7592ded5f63230de45c1f30578ce92ea14a010a33b231ac42","libssh2/example/x11.c":"310b0aef741a513db213a895fbf772076e35c2ee83eb4ad1f300493ef6b5b436","libssh2/get_ver.awk":"ac9314659d618e57f0d57e9cb2dc5ab14ca342f099de673
 8e93d58b91f698f14","libssh2/git2news.pl":"26cad7a3870941f21348bfdffd05fff7a1e1c650b8e38fe469bab3a2a221f26c","libssh2/include/libssh2.h":"fe2c560b62960a968414c47f9fe640f4a4bcce5340a51a94083d1cc547c98a4e","libssh2/include/libssh2_publickey.h":"2d419bdfbc155cec62cc23d7cb87f3d9361c4f26ce3b3910c74cef715bd2e70b","libssh2/include/libssh2_sftp.h":"8a0c63c323edc42286cc608f9a53cebe46ac91432e1080a8520ab69d3caeadbf","libssh2/libssh2-style.el":"14bd86ae83b499f88b47f57cee18f1a7f4f41650e16e34af4b8ff03970c3c059","libssh2/libssh2.pc.in":"a2c375f048235970c995e4a091fca2cb500574151c356f7682d44deeb90623a0","libssh2/m4/autobuild.m4":"37dfd034b5ea52bede69c54901b818a461ae73e2ab1e28c61c229a87f24a1817","libssh2/m4/lib-ld.m4":"18c4c458009da32c9daf0ea332a539e5edc82ba009b6c2faac004626313f00e5","libssh2/m4/lib-link.m4":"d7aab3772e5b60d3ec57ae8dc66d9b762f5c68ef1e8516df25fadfa8bdfef379","libssh2/m4/lib-prefix.m4":"4797426d11dad1e5e4fdbc8bcbc8b10d9750f47bcb74e4c07a953a15265e902c","libssh2/maketgz":"3a5878c78f38abff
 9158f88cebd11394a5998dd2ea3803a4aa5b4bfa885e46d4","libssh2/nw/GNUmakefile":"d6afc1888b0fdfcb50b29a3d7080a4183de41a444c7063db93a1b56d533d8dd8","libssh2/nw/keepscreen.c":"f95e6f4851f16bde13e51a1f4f6f405a142c6a7940beda74de8058db2f170ef6","libssh2/nw/nwlib.c":"d81b0ad6d05938507ebc3c0510021e889a2d68a74d50709df981d2339798eb78","libssh2/nw/test/GNUmakefile":"fb00a4a6776f14c1789ac8abc0b0136b79813177221355fbd3c5b1907da938e2","libssh2/os400/README400":"f5ce6d4f86e2334f5c271020195fb0964083e19e2f44dea4c4d62e7a9bc9f4da","libssh2/os400/ccsid.c":"07d12155f5b9b2be9e5477fc2818a7e98183eedc247370de04d718eef506fdb8","libssh2/os400/include/alloca.h":"f2b4c60ed1f78832b9141cb64e5d1d8e187d90afcb5f9f1d56dcf3f9e185d236","libssh2/os400/include/stdio.h":"ce35104d75377458c0c38aded5375141abf22e71215ef7533a482ceec279c731","libssh2/os400/include/sys/socket.h":"05599c77ea5f79337a77e7b24f4d63f40b929884141fbb66f356d825c09c8dfb","libssh2/os400/initscript.sh":"b27631198e5eea8048684f8fae95ef27eef1f712742265022bf4eb1ebfe
 589cd","libssh2/os400/libssh2_ccsid.h":"13a0b3c9165d7ef27ce242c64ae191f876a1fdd65f0b4d768cc3235c2509910d","libssh2/os400/libssh2_config.h":"d5615c238ab5642d19c29a04f6e18ef0a1675043861cbe3eebac2297e5acae09","libssh2/os400/libssh2rpg/libssh2.rpgle.in":"0ce3e5bb7c33bb6dcf960af6267b4c0e3cc16259ae881724624c9fafbcc090e6","libssh2/os400/libssh2rpg/libssh2_ccsid.rpgle.in":"439d9e4c68c9b20a618e305e51f54f817a9cc51dd37b62f5792232048ed3ff80","libssh2/os400/libssh2rpg/libssh2_publickey.rpgle":"b138035c36feb1816c6a99b1d98daff7997b05d02325cad1d9909f983e4a330e","libssh2/os400/libssh2rpg/libssh2_sftp.rpgle":"7d6fcfc290b07c8bafbbdfcf61e19456ab6961afe23a0aa142110052a33e7ace","libssh2/os400/macros.h":"38360f3613c00f49178996cf53d2519009a0b3fab161db7aebff143149730c5a","libssh2/os400/make-include.sh":"c75efa9eba5bcaa1e75f60110dd463c2c6866b486186db705d49518c1b0fd8cf","libssh2/os400/make-rpg.sh":"41cce97d1dec97571160c98967db4ab27af9c7890cf4f7aa238b3d6b6aa69eee","libssh2/os400/make-src.sh":"c750bd85a5153b10c
 61c069a7d1ec253ec3587554f2da60a144dc4246ff50e67","libssh2/os400/make.sh":"07f221c0d6a9e7b1c55e5d1cc8e3babe7edb6b4bad3063827b55265bec9456e4","libssh2/os400/os400sys.c":"2c9bc9de576376b0a37c401c64b59990e2f74ceafdb0a8c6555fb8de5be2b01a","libssh2/src/CMakeLists.txt":"30b56cd9854ab0b20d1527f368b35c341ce8bed37708f316edef8e7a229f06a1","libssh2/src/Makefile.am":"5e0e38d3203bf1f1e0f1acc57b98591a4de80cd5efa26e5dde6b7348f2df1a68","libssh2/src/NMakefile":"bad4819608f02f282aae84462a7c3f1d1b199ee0fc86abdc9ab7326ee6482576","libssh2/src/agent.c":"7bbe43a2a9bbc1e6d4c2ff6f2c10d5b9d46920148c10b1788f355b760303862b","libssh2/src/agent.h":"1348e28650ce7f4350e4e1b92e26d7c45e729fe3b9cd68db716e40a64ea15269","libssh2/src/agent_win.c":"1c8d67a82e21c539c62f3a0b4c715fba81ca40cee588588d5e4f1abb389966b1","libssh2/src/bcrypt_pbkdf.c":"76b4d9244aa61fba7db31f4763336d890d5025f9f62f3bb1369eb3b0986fca6f","libssh2/src/blf.h":"db4921417d17d79529c393528e541bad14434777eba8cc131ed74f0317dabfe3","libssh2/src/blowfish.c":"830
 d5c2b3ac01b1a96253cd78304af11bbfef822a0e59bbf12d0d370f0f0f43f","libssh2/src/channel.c":"de351bd081fea82da9d1bc613bb4cce9a1b08bcf18839433b073b4ea5075c077","libssh2/src/channel.h":"3be8e8b444461111fe0d35b21137ffcd4f681c1357616e0db4908bd434e97bbc","libssh2/src/comp.c":"0fd0cfb6b74e2d94a2da15b27e8e99e42f277dd12fd27ccf17bf566ad8009993","libssh2/src/comp.h":"7aa028c23316132522362bc9f397e22bae94e9e620eb80ac12a2009278532926","libssh2/src/crypt.c":"04e3683e3a16046aa7736b2401bdebea1feffc1e7fb928952dbd53adcc5a493e","libssh2/src/crypto.h":"37d8b6726c771d88cee1928391ec5b5126617fc1f04f7e705b8fb041a8fe91cc","libssh2/src/global.c":"9551963ca2fb9c321703db04952d9b05e2e6049e12d8bf6ba6e9291920b87a37","libssh2/src/hostkey.c":"1ff0d3709396e9d0c4061968a7159bbf00af7c3fedc37ec32c4f8cea682dd492","libssh2/src/keepalive.c":"acc373252f0624126226e2528897757da61c870374d5905df29a17fa185214ef","libssh2/src/kex.c":"6fbb83649de7afcb197c285f41f6d2c0576e17bee93d6d51fb85421a21af8258","libssh2/src/knownhost.c":"2ef607c0b
 b2ef7ec9a4cf41158813ca8c62c55ace046a02a2b862cfdede25e75","libssh2/src/libgcrypt.c":"cbbd92a4b70d620517458412390519d40f1e153a882be8d5fe6c5de6d3570336","libssh2/src/libgcrypt.h":"46d7c65c53b1e355327e1b314d5841d41cb5426faee36ab6bbc0b7b48871b9d0","libssh2/src/libssh2.pc.in":"46db28ee6987b9f399c0e3b02dd5374fef2831fd4051109a478e85832e1913df","libssh2/src/libssh2_config_cmake.h.in":"07fe4470fd1643c51e5f2a868b053d733aaee891f1f886f4b8b848fb70db76cb","libssh2/src/libssh2_priv.h":"7cf354751d204d0ae1d3bf8bddbcfe38bebdf792217c34f9ea00947c57fc992d","libssh2/src/mac.c":"3ff6c3d22e5e9a0cc2d69b2f840606f560b83b9d40e276927d0854c20ec35b27","libssh2/src/mac.h":"ead9c368cf6700776d6083363a275e26d0e89de665b40b48fed1f5cd6d783b3b","libssh2/src/mbedtls.c":"3566fc0fc5d2a658780673741678f811e1a4fbc99aebaaeb2419c65b5887c2a7","libssh2/src/mbedtls.h":"e28d5e7b08c0d67f1d8e3e2d2fb7fef69df049cf8e188a7760abd7b50d91c7e7","libssh2/src/misc.c":"64f7a580f0cf00d6cba86de4fd5cf156cba038b2a321efa8504236991edff50f","libssh2/src
 /misc.h":"4bcc54e2280af4e4934e7c14a32e839bc9d09dc33b52b9a75f27366215a61556","libssh2/src/openssl.c":"126dbf0e4676f84a1acb46b154d2d32f42cb47a81f157a16ff1391a02c615baf","libssh2/src/openssl.h":"5dc71961f26506a53b7d724d385e5ba42ce75c83e00862041697e0f015a98166","libssh2/src/os400qc3.c":"f017c70d602941aca07f6fbe5fd55cc9bb8ce6c1d33fdb4e6f408d99edfdec03","libssh2/src/os400qc3.h":"e2d33622b00442fb2e2fcbb26fff7ee3bd997270f89a98a323bfed618956b28b","libssh2/src/packet.c":"e5b3f9dc190f9491a9746dd91e7da8d2f6639ef1a1e62552556753539fc1ddca","libssh2/src/packet.h":"cbd3fe922ff28675f6f39b31131d7832a07263356d0e7d55197e40d5fe244577","libssh2/src/pem.c":"d1adf7211b744554b8c41180c87e8d0aca2a7babceee91c75032e68655e41e22","libssh2/src/publickey.c":"3e1579cdc688dee088294975ee4b09316cc68cd9083ea6170a8d4726d820ea6c","libssh2/src/scp.c":"ef7120de5d824d9d4135b846021af8f42c44ff790dacabc8c4d23bb702abd81c","libssh2/src/session.c":"3d1ab27b52be357e36fa337e7461828029690cda8c69a705222dab2228d85065","libssh2/src/sess
 ion.h":"c3918ff057ebdb51116d7552e27b9f7d18461e1fbba4c1b635465dff909d4623","libssh2/src/sftp.c":"9090319e2732c400a344c78f3e9695ca6e1a3466159ffdae3e3c5f52b10b9586","libssh2/src/sftp.h":"3b4d6460b857e32707116814f1ddc10dbfa5f804e407883e77bdad6c36db8c14","libssh2/src/transport.c":"4116293d9afceb3a8ea8de6a09bb3af42604632b3536f305240b7564be0555fc","libssh2/src/transport.h":"4a57bc5ecc21db41729319d8fd34808f042cfa7d155be306ec2165f2d81f010c","libssh2/src/userauth.c":"144ce811b1acf4be50bba03eee53a625fd5199815d04436858316912168fe05f","libssh2/src/userauth.h":"7d930eb690721808c6d89ba917045827118a3b98b04333935d8e91b49f651b84","libssh2/src/version.c":"544a1389f5a6bde4ec263991d994da3d9529cae5635aab6730702a6575bcc0c5","libssh2/src/wincng.c":"ba1fa277b369df2b51d23f354ecf28a4987ce0a0d29023e6af5ffeafbc4cd359","libssh2/src/wincng.h":"7bbc6e35d281bee22d52883c728b626336d3ec8a4ce6fb384f96bb8b1cfaca8f","libssh2/tests/CMakeLists.txt":"717707a250f05fb65e7009f696c70bd86d7d2ec16883127781b617d0c692cd82","libssh2
 /tests/Makefile.am":"d9f4abf187cfd058373c570fff74009dadfdc9c96f84375ed5649114f0d8369f","libssh2/tests/etc/host":"6eb0f1bb23d7877ddcd502159e6673c053b5ea1846630f21651ab58ea25d7a6f","libssh2/tests/etc/host.pub":"0e2479a973fbaf1f7f5dfebb111e2b199ee59c0dcfdf646d26760eba0b8b2aa8","libssh2/tests/etc/sshd_config":"2ad4ea47ddb633c7a2e000f2d6619d08bf643591f26a7a0b92d0befe518ee951","libssh2/tests/etc/user":"776aebc0c12e466e4b65f1a44ae5235dd70687ab03f283aa3d9a6df70d3bdbbf","libssh2/tests/etc/user.pub":"39bc4445c24c32fe5e64a6ee02025f3508b4334b2813e1a87c40d44ebc5f8c1d","libssh2/tests/key_dsa":"2e5b8a618e853eff7b3e0d2928203529fe18a3ae62b46a82ccd48a750819b8c2","libssh2/tests/key_dsa.pub":"12aecbb237794fc79d4a96cebad1c4badaa1902b3f1788cca83b28a1f977b895","libssh2/tests/key_dsa_wrong":"21f66160d72789400c5420f460fb716cde82b5afc5c09f3f7512d310e3c8e0b2","libssh2/tests/key_dsa_wrong.pub":"0274eed003e62413aa894abad044296c6fb3cc19450457a282674ed3836518ea","libssh2/tests/key_ecdsa":"8fb4d570516afc175869de76
 86125a828e18c38ddd4c2524c5a8d05c95ba7e7d","libssh2/tests/key_ecdsa.pub":"bc756bc47e3afd11437cd40ebe8ce5c8fca92ee03c6e3f01b6c5b44001bbc7c6","libssh2/tests/key_ed25519":"18e808415d2f344a20b7cefac12f0df0af4e404f446f5c690000c21987ce8795","libssh2/tests/key_ed25519.pub":"e52bcbcbdcdbf547a121e92bbb6f5342375719988e33ffe7f228dd2b935c98ba","libssh2/tests/key_ed25519_encrypted":"fd1e9378f94f2d5514e16f32fcf175e8303433750c81f2def3814d5bd44a13e3","libssh2/tests/key_ed25519_encrypted.pub":"7ceb4062d5fe17f190eb32c894e4cfd76e00db7c1b16de7516df8f910649469d","libssh2/tests/key_rsa":"9d8f4c955624a4af6fcb754e74e2abe1d3e7fe6340f6063617cd58bf122a2d59","libssh2/tests/key_rsa.pub":"4293f28b7033d459618b277374d7e932869964de131bba1d427030cb5e70c297","libssh2/tests/key_rsa_encrypted":"fc3872744c7bf6db2df4ab2ea5701370cd8bd39367d659eaeae49b2dbe7bca34","libssh2/tests/key_rsa_encrypted.pub":"1f340ccab8b86e51d4ee7585d61d5e49e3a32338ba9eeca65988a1d751112c5e","libssh2/tests/key_rsa_openssh":"a146196a5b2189b40bc00bdcd
 1958165106ca21e72a7d02c0a7f95a6dd926487","libssh2/tests/key_rsa_openssh.pub":"d564da6c612286603a83af006c3a6efe53885a2417aa25f234818612e16bea66","libssh2/tests/libssh2_config_cmake.h.in":"193a748944f6bccd3787b1c3958ddf95c1c7ad9b25e5b8f4b42cb48987e34668","libssh2/tests/mansyntax.sh":"71c56796eaa4008910b3d67b885b9a7e2c018d0f88be4bb290334afb9ff23bde","libssh2/tests/openssh_fixture.c":"7c17b8373b09dfe53489e96854fa89f6e6e3c13eac838f79179f38ad6323a501","libssh2/tests/openssh_fixture.h":"21935165166ce4518c6534070cc506fcd85ece95238fef29e6b0be784c05d7c0","libssh2/tests/openssh_server/Dockerfile":"fe4f6271644f6a29af0e077902cb7cc80b6226ef0e1976438dcd74148d26823c","libssh2/tests/openssh_server/authorized_keys":"58c4cf998535eb4123eddf7cae7da4413eed50e3827320187380ec7925fcf61e","libssh2/tests/openssh_server/ca_ecdsa":"14e72246d3990d345c30cd3d06c5c7ba9496057d94da2f5a6f14a7c636663206","libssh2/tests/openssh_server/ca_ecdsa.pub":"2925ca6bb4d280aec3dd68041efc2f06e959295932a26f73a263c939c03e3220","libs
 sh2/tests/openssh_server/ssh_host_ecdsa_key":"03753b2b4942081d1f33201a193487ebd5a577e0bfde45f7e03a1de5ae404688","libssh2/tests/openssh_server/ssh_host_ed25519_key":"18e808415d2f344a20b7cefac12f0df0af4e404f446f5c690000c21987ce8795","libssh2/tests/openssh_server/ssh_host_rsa_key":"11a57dc115ca17203d6382ad6fdcd8df33bd0f23ff6bf38ee4a697260ffd1a11","libssh2/tests/ossfuzz/Makefile.am":"049665a167b9f4cd664b12884ae4470c0b0b2077931a056ed55d61784b230d88","libssh2/tests/ossfuzz/ossfuzz.sh":"6fde8ca30e3dfc0ade9da4d06f5e34f73a51c6fea72e3a1348cf5ced10b73d80","libssh2/tests/ossfuzz/ssh2_client_fuzzer.cc":"accadbd90783a3e7fa2311e749aab641f53851a14a17c2e8464bf85c1a5e887a","libssh2/tests/ossfuzz/standaloneengine.cc":"f6eb3ebf7e14252339a21fb887a08b2e7638a7ac77f706ed80508b2c0d54d81d","libssh2/tests/ossfuzz/testinput.h":"ce435e13e87abeec0a297ef3b566268496ecbd517c1d09dfa2232dcbbec9be2c","libssh2/tests/runner.c":"696b83fd77bca60560c1609212c59ad986bf151cf72520b63d23643111a7ce4e","libssh2/tests/session_fixt
 ure.c":"0e81e1d8e9999d24120fd8be8b26cf6984578c504f46d009cb816fce50412762","libssh2/tests/session_fixture.h":"d4f098a586b5f7dd0f3785b86933c08096bc12a2e55f07fff470db6fc7bbd076","libssh2/tests/signed_key_ecdsa":"796da5d8d420f644f47feffffb0357ac99b299471e4d757f21b6cc8bfefe8f0d","libssh2/tests/signed_key_ecdsa-cert.pub":"0f2e6d1b46874a01cc36ed766533301622d64fa88988575ca77eee56da7b3952","libssh2/tests/signed_key_ecdsa.pub":"d6b6f80d9117f896b99933eba19b012f55068ed8b77956f1a7b0510026c2876f","libssh2/tests/simple.c":"4afdeef598aa669b5cd0e7388dcf2e579f2c0f9c954face71d366250101d270f","libssh2/tests/ssh2.c":"3a8605fd3dd6151c569bc12c07ecdc33de7d704b6224da2dedfe3c76494e015b","libssh2/tests/ssh2.sh":"7bbe65ee20f4e47e9264bd74700cca16ee066aba5fb9e4e42f46e1cfdae4930e","libssh2/tests/sshd_fixture.sh.in":"c8b93076f66222f73329472ec151b210e55b39024de5d3c18a4c609b65d13b7e","libssh2/tests/sshdwrap":"21649ba440cd534f4bfd52c0a8de339565768b373c172dca106cffcc8bd06e09","libssh2/tests/test_agent_forward_succeeds
 .c":"a5b9f9009c6818b86f235debc2ee15de5ceb0cfe1d9b539270167058afb4e6ac","libssh2/tests/test_hostkey.c":"f1059c3ac304332342f39f32288afa3f61f9bdbd5d617fe6052491b20bc0672b","libssh2/tests/test_hostkey_hash.c":"e745d8b4ad92c858dc588e3494e183f47d591c1ef2a13b63e2122f478545093a","libssh2/tests/test_keyboard_interactive_auth_fails_with_wrong_response.c":"f585a7df65a87fc4905f0b165531beb41455486919ed3aebbe9804ba5795b9c7","libssh2/tests/test_keyboard_interactive_auth_succeeds_with_correct_response.c":"8a112c876cb2786eed61de0f68f0a93ee3840269d8d6610e8ebeeb9a66c43533","libssh2/tests/test_password_auth_fails_with_wrong_password.c":"e3d588d9c6850ab69bd7674d2027563ff9f1491740637506d80875e66609974d","libssh2/tests/test_password_auth_fails_with_wrong_username.c":"c91608bdda3a83a62876725ae2d7002ccb3332bcbacfc9c9578e7488c0ed4cef","libssh2/tests/test_password_auth_succeeds_with_correct_credentials.c":"80d253225d68bcb7dc4b94b53374aa4de86c6995481de0974b6284bf87a91583","libssh2/tests/test_public_key_auth_fa
 ils_with_wrong_key.c":"104b08aa9bb5f1006e07e59dece417a2d6a5f60ef6c3f8dc62b6a8af95d413e0","libssh2/tests/test_public_key_auth_succeeds_with_correct_dsa_key.c":"4b397de742f0d2fb15e86d20451f109fedd1ba28b0622496a2d030f9e9f9ea5a","libssh2/tests/test_public_key_auth_succeeds_with_correct_ecdsa_key.c":"53bd6d99a243aaedc20f7de5c974c7c04e38090a415d338cef2d7357d7644912","libssh2/tests/test_public_key_auth_succeeds_with_correct_ed25519_key.c":"207f499812271669d2a9ff5a286761a45840de9230c07bf72426fcd59a682317","libssh2/tests/test_public_key_auth_succeeds_with_correct_ed25519_key_from_mem.c":"4dd0a8251a41d0dd68490fb7abb9b0a1cc190af1603815f3050e29e2a7d6bc8a","libssh2/tests/test_public_key_auth_succeeds_with_correct_encrypted_ed25519_key.c":"6e5c107ad53c144892c54459f89ef2cf8a25cbf977bbd978e4517cb5959a2565","libssh2/tests/test_public_key_auth_succeeds_with_correct_encrypted_rsa_key.c":"dbc95a803a54364604ab379b512fc98c33d791a1df4e33e4027b881ecc2e75ed","libssh2/tests/test_public_key_auth_succeeds_with
 _correct_rsa_key.c":"93cdd2513af42d46552baa273401910dedd014951f836175ec98b827532c5b6e","libssh2/tests/test_public_key_auth_succeeds_with_correct_rsa_openssh_key.c":"4e6d3ace02cce1ba8c1b4b6e5d774a8a4d259eef8314fe6c3ae0d6003a87dcd8","libssh2/tests/test_public_key_auth_succeeds_with_correct_signed_ecdsa_key.c":"f16a0dc74d16f0d27f10867f0ddd5b306fc4b16b2bd8e401a5451ce71c7649f5","libssh2/vms/libssh2_config.h":"1c5c4ba6ab33bd1d9e4ce0d84e1107ced89d27a80e8505e1b428fa942edefedc","libssh2/vms/libssh2_make_example.dcl":"7726a5d4f07d522aa712da8a6ca7b998cd93ca950aaa544a5eed1790dc69c775","libssh2/vms/libssh2_make_help.dcl":"9d04ddc32831abf63b7e042dd0677da83599f11497d364b02cbe780419e248e4","libssh2/vms/libssh2_make_kit.dcl":"e7c23c9db4583f6944cd8973cd813a6d65749170417b8384f94db69597f81f1d","libssh2/vms/libssh2_make_lib.dcl":"1549134cd4a4bdf2543f900ea9c811de1c67895e1e830f7ddfb384e7601f56a4","libssh2/vms/man2help.c":"ae61cab505a4a9c87bdd103506ba9a36fd7ba92714edd9f67d022d8a9474e6bc","libssh2/vms/readm
 e.vms":"30b5d682da37cf16352152daa682cb04c56e1044c77fc4c4da77bdc9709c33b8","libssh2/win32/GNUmakefile":"0c120532da875411df50b2f4483add53afd9345b2f4eab5f3c6ca5ccf7b17eb9","libssh2/win32/Makefile.Watcom":"475b8b37143bad986386ca1d2c777e9f8e46d0172ca4e9f70c613c84bbdece4f","libssh2/win32/config.mk":"e2172a92c5b5b9f2215c5c11128009cb6ba8a1f25402990c1f7e8ae78449d289","libssh2/win32/libssh2.dsw":"b16e14f1e5ed93f52e450b03d18691bd15a17b13b69486551c61b455cf823d98","libssh2/win32/libssh2.rc":"29a25c29ed977ba78619a59bc858508caa6f0849607c02da8fa7fe71b6fb7195","libssh2/win32/libssh2_config.h":"d5e704c80aca43c33698bd45059eecde05b098049192bb9f0640af593cdb2cb7","libssh2/win32/msvcproj.foot":"85c21ad71a2ae878242d9b370e96dbcb7433b77dc9fa4d1fc903ce0582e0f62d","libssh2/win32/msvcproj.head":"3a9edda7c4f545c43178c826cb0a83f9e2f38ed61cbe6b3002b9683cfebb4fb1","libssh2/win32/rules.mk":"5f68dc0a3ef0f61d783289c98c00419a0a76a2b866ecd0f86404ca1d3effc12a","libssh2/win32/test/GNUmakefile":"e2c77b03fa88a88d90fe1dcb6c0
 95935ba99b03b56a78f101a373ff208e1369a","libssh2/win32/tests.dsp":"73710a110000074bb299c9b780fb4fdc9e7a7edcefe19428de89c33d65e77841"},"package":"b094a36eb4b8b8c8a7b4b8ae43b2944502be3e59cd87687595cf6b0a71b3f4ca"}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"8981208d3829e782a076099f6d686d1eb3714102e0af7de70822f972ee9f0eda","build.rs":"e9eef35f1c18dd9844960d1d315e84ad99a05ab1247f0f54e3c2eab244988256","lib.rs":"3f59dd52a499c4d707114626a44123f3c969c999599ea527dc04d221cfbf460d","libssh2/CMakeLists.txt":"8530be1d6db3715344fae1900fe73d8e2294930bef33019657064dfc6094cd0f","libssh2/COPYING":"859e60d760a3446ecaf777339f1eef98c527aea40714384d24b882a83ffdd23a","libssh2/Makefile.OpenSSL.inc":"8e82af68b172ddccf94c65c1b4e38b69b3b7f027cc14a54b6d660c5f2bcd4de9","libssh2/Makefile.WinCNG.inc":"79243be1029a0df52a5e79b3dceb80ac462f2e735e25445e38852610bee62f34","libssh2/Makefile.am":"955114c8c455346542067604795f344a693afa544c7efa813abb3b1dbccc59ea","libssh2/Makefile.inc":"3ba04a6366787cd65119ca3a4720ad31267e32d94b49763e123d85bbbc303ce1","libssh2/Makefile.libgcrypt.inc":"3d71dbe94c906d07c70eb8c7eae80fe5ae014565d7a9446bd39b659e91b73b71","libssh2/Makefile.mbedTLS.inc":"18bf8364aaef158a27b65be88ac1fd74af0cbd336930b6ce611b62dab77feebc","li
 bssh2/Makefile.os400qc3.inc":"ac9b0e1731f7dfa20e3987e108a4c5896e6095638ec545c8f2ac64c35b63a455","libssh2/NEWS":"9418b9c8dcafc633c2c16372b2b21ceb70a06243756af21eff173a4b379101d1","libssh2/NMakefile":"2d1cbda9bccd886de3c99dae77f09ac75a7f09f1834272b4a9154d2a0ae9a81a","libssh2/README":"428a810c75712693e66d2104ab64b976992a2670109959a8f771a609022ed25e","libssh2/README.md":"74b0076905edb7acfe526b1ea367aa567ced0599d5a3be8e8aa22c1ca847e269","libssh2/RELEASE-NOTES":"9a88e3e26281797ee09f09cd04e4bd753837b02366dcaf34885b800742bc862f","libssh2/acinclude.m4":"38b4ba61f1ccd764daa1c249fff189e4a897f71e19ead71690f5bcbe25d9d541","libssh2/appveyor.yml":"499cdf346619e52967be12e833561fe2b9eec7a50214b25b8195d67b21eb7262","libssh2/buildconf":"c2102a17b8f50f0d56d20639c05c70347a4e6ac5dcec351c6f851371e2a68a71","libssh2/ci/appveyor/docker-bridge.bat":"24121ac7d7c852358b4d6a7f319e1b593d294a97c027175f8085c741d7792887","libssh2/ci/appveyor/docker-bridge.ps1":"c96ed6844515850165b15790791f80a666f606a1931243fec3eb3a0
 7f7531ead","libssh2/ci/checksrc.pl":"879e805b57e2e86f6894a6a4e395daf1c1c048ee5984e109be74afc750782567","libssh2/ci/checksrc.sh":"a435be07f99eaac5b59f9cf68d88e3541c9fbed09177d0874078c22547edd5e9","libssh2/ci/ossfuzz.sh":"34e596139edfe9aa0a52b73ac1ef860a69968f88b1ed6f0dbdfff3832d08a7d6","libssh2/cmake/CheckFunctionExistsMayNeedLibrary.cmake":"60a8d1afe9a3b71cedb782ac6187a9a041d2792006a7eb3379bc42a9fcb95a4d","libssh2/cmake/CheckNonblockingSocketSupport.cmake":"443b9824a1d7f7cc0a9c1b740ca9824f82f73ac7f0294aa2c1e3192aa3cb5e0d","libssh2/cmake/CopyRuntimeDependencies.cmake":"5a146613512f467192e7917561b305e31d52a85b3f216d5e3c6ca6d2261e9b03","libssh2/cmake/FindLibgcrypt.cmake":"af65a3a8ea63eb935b1602b2b75c7c993558f9118e8c12cf9f2d4614977d8c53","libssh2/cmake/FindmbedTLS.cmake":"db4ad3046a838c325ff39f3f083a2de39c3bcde4c69670610ce27b23c758c50d","libssh2/cmake/SocketLibraries.cmake":"857615772ee6a1b79826eb18889def1a626296262db78def698286930e3c6cbf","libssh2/cmake/Toolchain-Linux-32.cmake":"fc7c2
 718c2e628fe28db38406fb57e9380d202dce8b4d615ef8b818984c37a32","libssh2/cmake/max_warnings.cmake":"1a14b62c40d327d69ad1531e3372523310e642779da33c3865e6fc67df46835b","libssh2/config.rpath":"aa48652ef1709d015f0e627eb5d18d1c198d81c29d5f89a81362512fcba72b01","libssh2/configure.ac":"1a24a7b81c127f3cfe154ede0aad567341c0743178d3f3b41ad59f3fa24c7269","libssh2/docs/AUTHORS":"12228e95c6b41c76d00b6ca8f2bf7bfb3372f3f32b6c62f34882530b9406f26d","libssh2/docs/BINDINGS":"c711b535a9462815d564995eb84b997261fb9a2db4ef82a8c9b3f926dd7498b2","libssh2/docs/CMakeLists.txt":"0cd132f7148c6807399141a611723f6083499751d8a3e326f06879e57bf2c369","libssh2/docs/HACKING":"5d2563866dc4fcc8a4ab352676e3d64b918b75e0a73ce7776b9eef7e8949d3b0","libssh2/docs/HACKING-CRYPTO":"88452e1dab1160dbd7d800c5d1c3b6651bca884b18aea476c6ad0b1fd387edba","libssh2/docs/INSTALL_AUTOTOOLS":"6ca4765ca5ca117514e41067ce05cc24504aa29eab9a76bb9cc1ecc87c3280b1","libssh2/docs/INSTALL_CMAKE.md":"266b25dbe613f02e4662467c23ad80bb42a35ef9d579933ddb2d7b1d
 038089d0","libssh2/docs/Makefile.am":"16050bb16175b6c34dd246fb10628975dc7563412b926a10818e3f85efb6e7ca","libssh2/docs/SECURITY.md":"4314c11322a9970bed60130a2e11a0eb79c9de719a7c7c2cb227356d9771ba2f","libssh2/docs/TODO":"e3a304f76129bdb90371439567dffe2a8841e3a5c326f71000490a11241bc9b0","libssh2/docs/libssh2_agent_connect.3":"5fe15d3e781382a8e935048dd266a89e9c3b63800d4714ceec6c78c512e49f20","libssh2/docs/libssh2_agent_disconnect.3":"e2d1a3af99d888e310c6e22227e11b0a42f1d265451a9e13ac787fe0b8075426","libssh2/docs/libssh2_agent_free.3":"332b5fb986c013ba363bd18d5e39c01a047d79fb22acf673291f1e19b4d8292a","libssh2/docs/libssh2_agent_get_identity.3":"acdccde633dda1740ba043fb3f2b3aed884923c74ff3e2ad2f01d5a6b87955f1","libssh2/docs/libssh2_agent_get_identity_path.3":"148b43bc669d3300b3fbf09ae57050a15ce074c8730ecef78e97ee9309ea179f","libssh2/docs/libssh2_agent_init.3":"09029ddc71d63085dd6ccf92062ce6e31f0d54a1eb40d06587713814ddb4ee5d","libssh2/docs/libssh2_agent_list_identities.3":"a498d332ea55486e
 b1c234468a8cf3c1886eb6b98bdd527a1b44fd06683e7ea2","libssh2/docs/libssh2_agent_set_identity_path.3":"b60fb7e972fc2b420ff0a7452ddbf12597dbc9cb075920da16ee9c0eef7f8425","libssh2/docs/libssh2_agent_userauth.3":"d2119c63fa5bd1a05385bd176a1c8d2ee0139aebec92addd1601edc948f17855","libssh2/docs/libssh2_banner_set.3":"1bd7a8bd59cb74d90cfed26c41701788afe7c0a667f686c5154cd0615d586422","libssh2/docs/libssh2_base64_decode.3":"c48f88f5a6405738bc146161bf442e02c02073e0b9957f5d4bc3bd425bee82e1","libssh2/docs/libssh2_channel_close.3":"e348d7548693066f863dde9a6c7dd21bf394aca51c1cae1c4999309eedfb4451","libssh2/docs/libssh2_channel_direct_tcpip.3":"3a67560c5846880066344d5581840a26a8509854fcf20fda79f9b2156e58757d","libssh2/docs/libssh2_channel_direct_tcpip_ex.3":"5a7665c77afd8aa509c03d5059ece42adb912979e0fab608034e4554e3106439","libssh2/docs/libssh2_channel_eof.3":"7ad4590d1dfccf35bd2f7393e0d14b4247c3108ee2f48685b505c0dd9516e011","libssh2/docs/libssh2_channel_exec.3":"e7f79363e4fa61ce0c00f59e4e97cbc3101f5
 5e2025b1156551aaf50c8522b87","libssh2/docs/libssh2_channel_flush.3":"fcaf2b8577ae6b8196313977d0686175a807fcccd3f3fce433028384da0f7bdd","libssh2/docs/libssh2_channel_flush_ex.3":"a0a60e2c15e2fd19e8399ce45736470782090455856b6a97cab7b9e8cb56b160","libssh2/docs/libssh2_channel_flush_stderr.3":"4f590d465d647b416c583c2b16693a3364e84da2400dfe7f9ffe1928577ca3ae","libssh2/docs/libssh2_channel_forward_accept.3":"4f0621fe2a6aef5fefd50197974beb6e6c89dc41841b1d6052f885a773557ed8","libssh2/docs/libssh2_channel_forward_cancel.3":"230ff1688acf2f4a7ac5d687ca46bd39458192a0662b3b8fa6edd8217c25117f","libssh2/docs/libssh2_channel_forward_listen.3":"fac440afa8233b6d3982b349d56c177ba9fec09464f1c5a5bf40ce32d600197d","libssh2/docs/libssh2_channel_forward_listen_ex.3":"49c5374f3b5c56213fe9a43ef4592cd51097cd1c9017fcb3be97c94847e8efcf","libssh2/docs/libssh2_channel_free.3":"a7e649756ff4a20b0f5bb6bc9f4647ecaff885c8745e9c304cc697c2c677196b","libssh2/docs/libssh2_channel_get_exit_signal.3":"89557c3203331e1d21773b
 557659a0f21e1ecbcee90c372de3b6e159c7b78a7d","libssh2/docs/libssh2_channel_get_exit_status.3":"d374651f3f72f3f179c37b4a44b815a1bdd998f803a121fc8bc5544c397224c8","libssh2/docs/libssh2_channel_handle_extended_data.3":"c8ba2c032cd2cd8fc5877845df624712457dcf1c092975f3c713fe75794fd42b","libssh2/docs/libssh2_channel_handle_extended_data2.3":"17269accf920a28af6bd14770f94067083e2dfa56df4e08663844d0cebb78052","libssh2/docs/libssh2_channel_ignore_extended_data.3":"c00c30e1aa01c699c92c30c98e9ab8e543cb2fb23376b650627c56ecc3a1f275","libssh2/docs/libssh2_channel_open_ex.3":"a4153c3de3d2cb9a2faaa39eeb9b638c829db2cf4aa4a0e0a2cbd51098626e79","libssh2/docs/libssh2_channel_open_session.3":"63ee8e3220149933ebf5219335cf5b9fb107e23808137f782e8846b191ecf629","libssh2/docs/libssh2_channel_process_startup.3":"1023352b8152e5a1a2ccf2bc899e9539fbecaa2dff69ebb68ada088da38fc6b9","libssh2/docs/libssh2_channel_read.3":"1ddb492b078cab328e718563f2fc5dc3fd737078ba272d078f94e554e2938080","libssh2/docs/libssh2_channel_r
 ead_ex.3":"931e1fad6ff1d629ed2b523c75e645a16344be8afebc0e2f50144ac8394146e2","libssh2/docs/libssh2_channel_read_stderr.3":"6b3a6db85f2fdb26a07b95d6046127f3d5c709e6ee4bd72d66b9109e10ca8e1b","libssh2/docs/libssh2_channel_receive_window_adjust.3":"01a3e1d79fce062cba8fefee6b8fe7ca81a1ad7a3c8cccf12801d7f80fd6265a","libssh2/docs/libssh2_channel_receive_window_adjust2.3":"451f2632b8c786a16e87940f2fcb978e9d88fee27cb997c192c9e671b72b27eb","libssh2/docs/libssh2_channel_request_auth_agent.3":"9217dcc14a2c6bee93f5754b2fed7827b3dbb8efc335d7fbf4908e8a531570b4","libssh2/docs/libssh2_channel_request_pty.3":"f7b4d6780a1b6ed5518e425751f55d9930a5bfa8e92dc0458ccdb06d7786ecbe","libssh2/docs/libssh2_channel_request_pty_ex.3":"ab2af9c02a3d127ba99cf27f0496643eb30810edb38a94f7df488f41041ec105","libssh2/docs/libssh2_channel_request_pty_size.3":"5ae6ade5d71da8ce3a31fd804c32600f54a3385b07cb8ed6ac90157a9a1ada26","libssh2/docs/libssh2_channel_request_pty_size_ex.3":"4b296b3a64b71c1842c0f12c70fe866734bc18f51e3907
 acfa3f04c4a997bda3","libssh2/docs/libssh2_channel_send_eof.3":"a83be7ac2b428f6d41df423e38c52d01f86b9fcafde2010336c7a57323808b6c","libssh2/docs/libssh2_channel_set_blocking.3":"767637f9629f9b7bbbe24c3f3e13be0a83174f1542a63fe7daba350beb369447","libssh2/docs/libssh2_channel_setenv.3":"fc8773714c44358cf215d80dfdfeea082cc84ae0f33575d17a7825ffb785b02d","libssh2/docs/libssh2_channel_setenv_ex.3":"d4641d1a3054af1fb1aa4819de5ce002b434e56745118d843adc70d902505447","libssh2/docs/libssh2_channel_shell.3":"e2986078e39068dd61d6d3df0d9e54adb0a489e55ba8051ae6ce3ad5f3c2c191","libssh2/docs/libssh2_channel_subsystem.3":"16e48c8ad515baef23e1ea94895cf0d2c6d397c133adcbbd20300304b64cab4a","libssh2/docs/libssh2_channel_wait_closed.3":"8f7ad8093832b4b343b04eefe492e94a18be6f496e2074037f93b99683296663","libssh2/docs/libssh2_channel_wait_eof.3":"a96b063c1d90129420db176063ea4cb66f1b913a2d2b5ada2f3364eeda2d6543","libssh2/docs/libssh2_channel_window_read.3":"085331a4fb18dd396b016629ad241a7bf03afe78b0a09fec701aa8b
 e526fab2b","libssh2/docs/libssh2_channel_window_read_ex.3":"9faf5e32cc4e1fe69fa2e57dc31cbdf3f0e7bfcea339f3b7196f535bbe6be2e2","libssh2/docs/libssh2_channel_window_write.3":"6daa6fd8d4f74957c709695bd74a741e7808e057cda1a0954e76f92f793d61c4","libssh2/docs/libssh2_channel_window_write_ex.3":"052d12745f7a8a634ba0b3b36cf0a592c2425caf0679aaaca4776b664bd2d5c0","libssh2/docs/libssh2_channel_write.3":"30bfc0efb86bf513f721200a89c9139687d58483826924b9b401797de74b6387","libssh2/docs/libssh2_channel_write_ex.3":"5ee6d5afe244e2839353ed8d7d6688bfde3f090bf951afec404bf486d6f78aac","libssh2/docs/libssh2_channel_write_stderr.3":"e15a48affe5a5044a2b70bf6fc1e3c6a1dc61c10c4440db4828080fe55e5a0f2","libssh2/docs/libssh2_channel_x11_req.3":"e10544721e6dae96d4542abe07b43767ae6fff49a5bc87381aaf72be7d45f51c","libssh2/docs/libssh2_channel_x11_req_ex.3":"ece17b293092b2319ea237a2855a4b9b7c89c6954ecfedbd837d3d02ce4d7a13","libssh2/docs/libssh2_exit.3":"104af206d55e98ffa72ae0c5a505523220c8d6e1de27a37a5139093476d5ede5
 ","libssh2/docs/libssh2_free.3":"8abbc67b852f9fabe09eb84540b610304d896721a04a4bee1e9d0e8f8f08c999","libssh2/docs/libssh2_hostkey_hash.3":"82070c7634690b4bddc49f3c83b343c6f792c902e0e48247d055eaf3284f80e6","libssh2/docs/libssh2_init.3":"926b4044a52cf71dac8ac23cdf51d6e76bc92f5a3a72c65371549e18826c1cc7","libssh2/docs/libssh2_keepalive_config.3":"7ebbb7cdc900d6d6188afc537c05c60a115030609d96571ac447ac396991adc0","libssh2/docs/libssh2_keepalive_send.3":"86ac214dd4c086239d59ac6582926f72544c788ad2fbf3ccc4e678b4109d32a4","libssh2/docs/libssh2_knownhost_add.3":"29a052f853cd3f19efc12612d4e3224271bdc91b10cf6b73e866d7018d25f07b","libssh2/docs/libssh2_knownhost_addc.3":"c5a2b8510dc1df43311f17073e7e720232f7a7e25d9ba7ae80efe2f26a133297","libssh2/docs/libssh2_knownhost_check.3":"2059d72130dc5b99c6faa8b399166a8495cf02b71313d6648778b11b0adab631","libssh2/docs/libssh2_knownhost_checkp.3":"88cac561cc381008f64d4c879bbe626afd669090648441c134cae83a5ea082a9","libssh2/docs/libssh2_knownhost_del.3":"34fbfa2954
 6d2bf0edc380270937658f818d2600e4bdc658d5ce28c7d255e1ef","libssh2/docs/libssh2_knownhost_free.3":"3e319da43cb185d73dc215a75351f330de2194608a1b12b8e0b623c900d4d96e","libssh2/docs/libssh2_knownhost_get.3":"fc04784b136786dafb210e018e758d5272c8d9d531c4fc5baac9f7b90f65bfd2","libssh2/docs/libssh2_knownhost_init.3":"509721c49287e0232b3cfeb41a8d4b44a45a195222a5694baf9d728c77225abc","libssh2/docs/libssh2_knownhost_readfile.3":"6d72d5be2d5dd56b125c1107632c58d5e8a692871182f3f883f5662f39d7dfff","libssh2/docs/libssh2_knownhost_readline.3":"e259eaedbe587c06a74ada7c1cf5bf28a168edfff2a60919985aa6c7a15e56f1","libssh2/docs/libssh2_knownhost_writefile.3":"5ef6daaf96128c0b756c9faf38b5fd60697fa93504a5cb9ce7139a3dc14f7254","libssh2/docs/libssh2_knownhost_writeline.3":"32c23d5b4393297935c3fa6e03d57a3bc1d904e5e469cf775bb0516f9f885147","libssh2/docs/libssh2_poll.3":"c4a377bc2be1c2789de7a57fa42baa51cfbb0bf4121153ee9cd5201507a8c2b0","libssh2/docs/libssh2_poll_channel_read.3":"5b3df35e57c3252fc63e819c69cc6405bd
 fd14c546b5cfc2a521563bcc9cb420","libssh2/docs/libssh2_publickey_add.3":"2e7c2772fb78b750b5aa94c7bd38c100e52493f6fb050762af924e26ab2605dd","libssh2/docs/libssh2_publickey_add_ex.3":"76e23274e8b4756b03359b0fb5bcd05becba4cca1212ae2c164a32c2f10ee50f","libssh2/docs/libssh2_publickey_init.3":"5643aa57554f8daacbbff9e539c68cd1093172bd86d859109e6446ccc91a85d4","libssh2/docs/libssh2_publickey_list_fetch.3":"975705aa9fc187961fbab91751a5f41412a30d73d65bfe54862285061afc6c29","libssh2/docs/libssh2_publickey_list_free.3":"5eba2104f91fb101014441df437c695b9b0b1e106b6268d623f886de6c237503","libssh2/docs/libssh2_publickey_remove.3":"69423e4d9d6b76388f6160eb473e82449700569d449911163609c8b1c629ed43","libssh2/docs/libssh2_publickey_remove_ex.3":"5c1632ac1685361577a4ddfd1f6257ecfc012225e1e8c2b126f93add0b5b6190","libssh2/docs/libssh2_publickey_shutdown.3":"b152e6c493896da374b7b93468b23d7012e6232db06c331c158f9057b8053994","libssh2/docs/libssh2_scp_recv.3":"e3af95d4147fb29a893ee80c8af430b7df1d77048d814c50052
 43c02fe221e18","libssh2/docs/libssh2_scp_recv2.3":"9fc689585ec209d13e5a7c5db6750e07b171103bd29d3522424f6d812473b95e","libssh2/docs/libssh2_scp_send.3":"0b72a5932217f8e561840de2ce3e5077bb40e7631b1dfb6f439d4a2413f83cfd","libssh2/docs/libssh2_scp_send64.3":"3225083c74987af71d4a2947a7852ac810fd87ab12532492f286d7e7d7547456","libssh2/docs/libssh2_scp_send_ex.3":"07818e45119b15208123655f945e1927c0971d21ae6d410fd26944b86cd41745","libssh2/docs/libssh2_session_abstract.3":"56b29e317d2676d842f3854d8ffd89723a40992897b962d9ae07b56b2373a727","libssh2/docs/libssh2_session_banner_get.3":"78804fe78c70c1fcc408a493564c989f3d3da36bf56d14344df150bfc65570c5","libssh2/docs/libssh2_session_banner_set.3":"c058557ca5d9633b560e05492212b52ee3f6477dae79f75c8ab4996828d88f09","libssh2/docs/libssh2_session_block_directions.3":"0006e5c9788d8b2c3976274b715ab712fedb6ee4d3caa09071b62b846b7d44ed","libssh2/docs/libssh2_session_callback_set.3":"6c33ad4047e740e5d020ba14cc5ce06beb0bf02b4b2f88c1ab7fd79e6e5f1b8b","libssh2/do
 cs/libssh2_session_disconnect.3":"382845fee521c18828a9611c286919218fe51a4a3185f37f5c6e8a10a081db66","libssh2/docs/libssh2_session_disconnect_ex.3":"5ed79115477f25aa8cf5998bf46eadc2383fd6e4eacee32622d961d4080ffa11","libssh2/docs/libssh2_session_flag.3":"18317502888f1b7da8ef132500e009c8eed72cec5ddffbeda575a4c5093d8b74","libssh2/docs/libssh2_session_free.3":"7fd404b4fb4c5e955cb2b8fee9b72a89864351e63c553e56a80dfc2af8bf200b","libssh2/docs/libssh2_session_get_blocking.3":"947a5fe43a518c13ba5049d820084ec6eede2bc3687923e67b28a75297431378","libssh2/docs/libssh2_session_get_timeout.3":"4e808b2407358466171f2546c5220def1db4460a16d1f24c60a4a5186d6c0606","libssh2/docs/libssh2_session_handshake.3":"fcb9fc145dc6f3b29871dcbe9c3d27529790e1cd3e20643c8aacb3d3d628fb5b","libssh2/docs/libssh2_session_hostkey.3":"0df40e6f599dacefcebf30b19331e4ce0abfad5bce75f5cffc8f4b7947bca5c6","libssh2/docs/libssh2_session_init.3":"ce1a0e9ecc5a17d607437b01f4ee94d5a0d8c5dbc8a04f1e26d3b74daedae57a","libssh2/docs/libssh2_ses
 sion_init_ex.3":"2c169699aedd0f9ca16fb71a90618738dcdfa5b2b70d857a39c60896ba62b86b","libssh2/docs/libssh2_session_last_errno.3":"fe92e9c94ecb5fa33bbf51f866bb62bc4a1e5c3ea153dbaf34aa6553cd477ebf","libssh2/docs/libssh2_session_last_error.3":"b14e30dc25d7daaf46ef119176af947efabfad29eff7f726635f2adb6260e97a","libssh2/docs/libssh2_session_method_pref.3":"6946c31e6d51b612852bed10d4ea869093a048f6d41131addbcb9c4dbbd767e5","libssh2/docs/libssh2_session_methods.3":"d1aaa1586bf15dad4e9f92828592b80d604280b30a3d0e21a71f5124fd1eb560","libssh2/docs/libssh2_session_set_blocking.3":"33c01981b30ead73c614fcb6f7f224a39d6e849e6a9bccc9b8dd463719e1a39d","libssh2/docs/libssh2_session_set_last_error.3":"147c7ad527163e73f3fe285d16c980de60bba09813535a7623a1e0a037cfd1cd","libssh2/docs/libssh2_session_set_timeout.3":"eae71fab2f62942d4e5b66d93a7f49347a08ad1afdfc9a81ce8fcc0d0a9b0068","libssh2/docs/libssh2_session_startup.3":"425118593ad0eaf0688c686d9b75f12b7cdb23d330445077907c6e2023cfef77","libssh2/docs/libssh2_se
 ssion_supported_algs.3":"a2fe37982e0f274bcaeea77ad33ca8fa06ea9377aa4e8196c3a8a827e2906b74","libssh2/docs/libssh2_sftp_close.3":"95f03395996cb7b2652cab241a7d91d0c57bec6d4d8f8097b2932acb56eb7bff","libssh2/docs/libssh2_sftp_close_handle.3":"c813fa985be5105cc3cacaf23dc01f0442628c005e629115992a280597301368","libssh2/docs/libssh2_sftp_closedir.3":"1230d8cc661c016991f32b757b11ee6ddd1ac551e5522c5e009f21ef624dfdc4","libssh2/docs/libssh2_sftp_fsetstat.3":"a7ab72ebfca8d295a2b48f2c14d831568042ef6a0528e590faa99f5e2dd00675","libssh2/docs/libssh2_sftp_fstat.3":"e354ea4b96d512a34db42be2eaaa2c7fb0bfed554e726aa79db7f45ade1f9dd1","libssh2/docs/libssh2_sftp_fstat_ex.3":"2446ac64b425dbaf115b37d29107b66fc0291c2ebd17898669c406a4fd57b78b","libssh2/docs/libssh2_sftp_fstatvfs.3":"a10a9bf1dda75b0e97966ed003d183728a8ded895eece58e458980bc742f7a39","libssh2/docs/libssh2_sftp_fsync.3":"bee468765b5d4a09a3b473eba0cf436328f29806953bc1f998d8bc97d2a3049f","libssh2/docs/libssh2_sftp_get_channel.3":"90e527f9eb6b0d177603
 28f6e3842f74d1d173fe88a7c9ec2357ca471e9c0f41","libssh2/docs/libssh2_sftp_init.3":"585d782936f71157d141474c94c897d7ea292580445550c25c8fd44f5e03052f","libssh2/docs/libssh2_sftp_last_error.3":"8e7b2fa2c5fe4792a39a5c1c24baf041c970e3021511b36e59979ed64a18b4c7","libssh2/docs/libssh2_sftp_lstat.3":"a01353b26374401029f5094a24beca08988ea201ca2197fef2b14f30bb2658e5","libssh2/docs/libssh2_sftp_mkdir.3":"14e04b070a6c351e2af6bd68f73a408e2982e9a358d5d2af5a46d8b422d27ce3","libssh2/docs/libssh2_sftp_mkdir_ex.3":"44c17758d2b0336f94c4004bdd2debf9e1632ba12c6db6df495c09a71a58e59f","libssh2/docs/libssh2_sftp_open.3":"af9a8c90999412d3371218f59859ff91c6a83eabee75f1712adf94c5bceaf1d6","libssh2/docs/libssh2_sftp_open_ex.3":"11661fbcec142d9afee722f5ce779bd32f6e0a2b2dc45558c3bd47292105231d","libssh2/docs/libssh2_sftp_opendir.3":"62639f60918835e08f3c00d708cb32af319b9a56d3c2cb33ad409b60b347b31d","libssh2/docs/libssh2_sftp_read.3":"1d0435c740470b8a6a427da4331b576833eead72f9d976001d8a1f55fcf24815","libssh2/docs/l
 ibssh2_sftp_readdir.3":"0e98293f67ae019adf8c5e17fa9f31f3e34b082c55ccd2119ee424f30c337fc7","libssh2/docs/libssh2_sftp_readdir_ex.3":"7f9a2bda1d49d12040796015a842b592decfb076230ee9c8260c31e7b12dd2cc","libssh2/docs/libssh2_sftp_readlink.3":"1834815d254c351664cacf38c06a4b232f099787cc09a41ef719a1ff242e4064","libssh2/docs/libssh2_sftp_realpath.3":"6b8e75bf89724998c414487d93f8c4899a3b1f4deba50806a798fdf9f9405bab","libssh2/docs/libssh2_sftp_rename.3":"eb87a9b1c94f38913c0cb62a3a474fe8c8f3cb0a874c61ced396a2d8bb92e510","libssh2/docs/libssh2_sftp_rename_ex.3":"12d2e70027755937df6de8b0836f75509f4fc5f1a5428fe5a92ae3eb23ff4b54","libssh2/docs/libssh2_sftp_rewind.3":"4caf86de2f35e2925ee637a68f7cfc2e76dab54571ada06495a0574e549c6a7c","libssh2/docs/libssh2_sftp_rmdir.3":"86a1935b7bb291041eaa7c0788f417c6398b39fd208b6bb478329299ae72a49f","libssh2/docs/libssh2_sftp_rmdir_ex.3":"17029aa15ef3e1c862731a7ee52e8f730dc8951e62e1c0539b922dbcd66810b0","libssh2/docs/libssh2_sftp_seek.3":"546a134db735df610032fa982d3
 c8c1013ced779e21faeff261d71041bcde8bc","libssh2/docs/libssh2_sftp_seek64.3":"07df7a2c8c9d75b198fa60909baa31e1c883002337a4c6b7a1b3a9c6ceb3a594","libssh2/docs/libssh2_sftp_setstat.3":"39c7f5d489ea5ceb51bd9c7de237464f5c510f3ce0983e57f7b69207ef957e01","libssh2/docs/libssh2_sftp_shutdown.3":"48bf057f1836924e3e5009890cb6e63ec9d11d0aa19abc258c75ee7c7bd097b9","libssh2/docs/libssh2_sftp_stat.3":"7fa4495645b580c216ca2279168b6b2f7c9c73a973dabf1997c02a0409d8c042","libssh2/docs/libssh2_sftp_stat_ex.3":"fd19ff075f44a1713d765330d069fd63cffd8b2dbc09ce9170d926f25d5f70c3","libssh2/docs/libssh2_sftp_statvfs.3":"5762f9ff7d56f44164db57fd048daa60173794c4e7a58ab2fb255e29f0ca2bb8","libssh2/docs/libssh2_sftp_symlink.3":"ae7ea167057c307552405124ad54ee488db7354e7caa974334e88f5b2104c88a","libssh2/docs/libssh2_sftp_symlink_ex.3":"7e22a39bb97548428cddc8a9cf3bc7a1ff57cde878b337a7e177730bf5c51d01","libssh2/docs/libssh2_sftp_tell.3":"ce22525601570f33d91469170d43470a8a9decf0b35ae82c2cea72fff1dc8d8f","libssh2/docs/li
 bssh2_sftp_tell64.3":"db5faf0fd28de4738e3062555c1d6981c2b272d7b89bd85e3e83d2a03237472f","libssh2/docs/libssh2_sftp_unlink.3":"d8c4c60c41e81149fe14a4a00cc114d3f7bb4799ceea4895c67d79363da3ae7c","libssh2/docs/libssh2_sftp_unlink_ex.3":"64b0723444b716d2b809a3b481024523fc8c62ab45d3ec4274040abf824cf611","libssh2/docs/libssh2_sftp_write.3":"a4706e9d6dabcde2aeccba27f7d7d5a3cef33dd21f4bf66bf5b181c3e8a3f9ef","libssh2/docs/libssh2_trace.3":"636417e1798bce85c2058cad56493919c608d426acaac409ec1a489bdef90fe2","libssh2/docs/libssh2_trace_sethandler.3":"b37355eff49dacc9916818db61258f21665fb68993e57ca9040db056453bf8bd","libssh2/docs/libssh2_userauth_authenticated.3":"81115e3ac2549eadafc5ab8c73462d1c5565593106c4d995a920f718e5dd451e","libssh2/docs/libssh2_userauth_hostbased_fromfile.3":"265670d504f8db399e9253af673264b92ae8cc3593912e9b2e6aee436d02fdfe","libssh2/docs/libssh2_userauth_hostbased_fromfile_ex.3":"a71631a3eb07ac88ee21beeabaf6aaccb7e93378c98eed228fa27f1575b04a64","libssh2/docs/libssh2_userauth
 _keyboard_interactive.3":"17d55c3ba83fc9b7a2fa1dbf0e0d1886deb87616298b6bf424b5ac7d63d0da39","libssh2/docs/libssh2_userauth_keyboard_interactive_ex.3":"d62646af0cf3257fa4a599a676f5237c1ab4d07d56b9b66745fe786f640e6afb","libssh2/docs/libssh2_userauth_list.3":"af6928a269c96480a6ea3a3452af7029577f69485fee36ecdd9dde48b4956a5d","libssh2/docs/libssh2_userauth_password.3":"4c8103bb95903b0b2ee6c2b1d0b3eac150ab31314ec023424ab564d29b1678a9","libssh2/docs/libssh2_userauth_password_ex.3":"afa13d3bb9bbdb3672e014aec922b2953556842b69fb602e8dc97f10d569f5d0","libssh2/docs/libssh2_userauth_publickey.3":"874ece028410feb1bb33d481ab2789e6fadc9a9974cf4e0a72517b4c3fb81861","libssh2/docs/libssh2_userauth_publickey_fromfile.3":"6864fc6411955179866986cf95f75ff41a022a4b60ceb177cf503da45a67b88d","libssh2/docs/libssh2_userauth_publickey_fromfile_ex.3":"060d36d8a06538035e0d7c678f78db16d68ad6f930c958ef3c1bd46f96f9ed39","libssh2/docs/libssh2_userauth_publickey_frommemory.3":"5022660ab3c6c7f596b92e887debb3c580dc21f64
 be71b76c83c033c0fe36ef9","libssh2/docs/libssh2_version.3":"d3feeb9f870be0dacc7616c44dffae9abddcd22eec9cc8c18a0526af723ffce8","libssh2/docs/template.3":"740b501cbdd74773bdb93c8a4d1ae1e175f3593c0eb93844ea2cad0c61e14463","libssh2/example/CMakeLists.txt":"f8cc011f16f189f485ed9060d71de862616c254dcfc1fafe49ff6425a4d89757","libssh2/example/Makefile.am":"0e7c6f2ea9a65a6eb253d721cabc8df573cd4d2606ddc7bd7499b701380157a6","libssh2/example/direct_tcpip.c":"1a335122f9e28b3883587768e8332f3883b462def477f8651b83fc1392e96dca","libssh2/example/libssh2_config_cmake.h.in":"115c1b79ea918a83de959f0f50eb98c2ce252b21b566b9ad56f3c23b68e48ae7","libssh2/example/scp.c":"87736832ddc36e80b52ed6b7f1c87eedcb57d739c80dcff5bbf2d610bfc7f7c4","libssh2/example/scp_nonblock.c":"dfa78c57e18acdb437f3a643dbace70802aa7d2d504adcd47ed63f744189e822","libssh2/example/scp_write.c":"3a3c4dfb3c4688558716a364cf0f4d8b767bf30c59cc6b352394a2d698370930","libssh2/example/scp_write_nonblock.c":"8071bf056b72eee39bbb1ee173193a79e6ac8a28127
 24b3e31bb919c6b8ba370","libssh2/example/sftp.c":"6a0bcb5ec7b3066cd040bfc29243fcb36f8375575db17415974a20c29892f6b8","libssh2/example/sftp_RW_nonblock.c":"a2eac2e5433d8e63fd416dd8d0b1424536b4dae701360bf9ec3024495d8c6eb9","libssh2/example/sftp_append.c":"e9aa3ad34d7c9aa119a841e16e99657aa28596b184ff38d09df3a1319dfbf9bd","libssh2/example/sftp_mkdir.c":"51f94316a6fc8ce1c6de9bff0599fa95a950a1424e94b676410d76b1e1edc879","libssh2/example/sftp_mkdir_nonblock.c":"0fb08ab3d217af555d7512693a56c63094642247054def280cbcb08e2a3612c4","libssh2/example/sftp_nonblock.c":"c7236ccc7897e1abd3d9176a33cbd059327d30fc95c7803f7e5f99bf3c448a3f","libssh2/example/sftp_write.c":"7e972aa778422c962ba0ebd2fbae109865b334e33c371ae94a8634e74ffd5473","libssh2/example/sftp_write_nonblock.c":"6b18c9371c2ed1e22b005232f80b99959cc68f2e0dc1351fa73d678e7c64a329","libssh2/example/sftp_write_sliding.c":"b88419136786cd31709d9466b0e4a131b990bbd425096276e5699559863d4bd7","libssh2/example/sftpdir.c":"d186de774a29db36a87fe2f66011acb5c
 5847316791c98f39dc2749a4c448209","libssh2/example/sftpdir_nonblock.c":"6282ae10e701e48063a793ab2e7a819be77f7267dd7ec29264339c41c5dad8ab","libssh2/example/ssh2.c":"2789139110316e87a06b4d6132fb86081c545084358a3ddf6bb5128423eaed49","libssh2/example/ssh2_agent.c":"3184d5a396a9067279ec16070c699a8baffdc02c70930f8cbecbd1cbbd489d84","libssh2/example/ssh2_agent_forwarding.c":"2db3d78ce1c5bdb2453f7d22cdff09cf1dc3e40aceb8a54faffe6f76af88d1c3","libssh2/example/ssh2_echo.c":"91c519486541145f579c550fddb5ffde5933ba0aaf22366ee8aec50c0cfe4933","libssh2/example/ssh2_exec.c":"67afd0ef23627c87eef2e4424967eef26f8154ce50c357cad85f7d3764fcd5b9","libssh2/example/subsystem_netconf.c":"9b076de4366e11ca81e88d60f6dc41ff3ad897d3096f148ce4ce00102d7256b0","libssh2/example/tcpip-forward.c":"0a929eec2a7274e7592ded5f63230de45c1f30578ce92ea14a010a33b231ac42","libssh2/example/x11.c":"310b0aef741a513db213a895fbf772076e35c2ee83eb4ad1f300493ef6b5b436","libssh2/get_ver.awk":"ac9314659d618e57f0d57e9cb2dc5ab14ca342f099de673
 8e93d58b91f698f14","libssh2/git2news.pl":"26cad7a3870941f21348bfdffd05fff7a1e1c650b8e38fe469bab3a2a221f26c","libssh2/include/libssh2.h":"fe2c560b62960a968414c47f9fe640f4a4bcce5340a51a94083d1cc547c98a4e","libssh2/include/libssh2_publickey.h":"2d419bdfbc155cec62cc23d7cb87f3d9361c4f26ce3b3910c74cef715bd2e70b","libssh2/include/libssh2_sftp.h":"8a0c63c323edc42286cc608f9a53cebe46ac91432e1080a8520ab69d3caeadbf","libssh2/libssh2-style.el":"14bd86ae83b499f88b47f57cee18f1a7f4f41650e16e34af4b8ff03970c3c059","libssh2/libssh2.pc.in":"a2c375f048235970c995e4a091fca2cb500574151c356f7682d44deeb90623a0","libssh2/m4/autobuild.m4":"37dfd034b5ea52bede69c54901b818a461ae73e2ab1e28c61c229a87f24a1817","libssh2/m4/lib-ld.m4":"18c4c458009da32c9daf0ea332a539e5edc82ba009b6c2faac004626313f00e5","libssh2/m4/lib-link.m4":"d7aab3772e5b60d3ec57ae8dc66d9b762f5c68ef1e8516df25fadfa8bdfef379","libssh2/m4/lib-prefix.m4":"4797426d11dad1e5e4fdbc8bcbc8b10d9750f47bcb74e4c07a953a15265e902c","libssh2/maketgz":"3a5878c78f38abff
 9158f88cebd11394a5998dd2ea3803a4aa5b4bfa885e46d4","libssh2/nw/GNUmakefile":"d6afc1888b0fdfcb50b29a3d7080a4183de41a444c7063db93a1b56d533d8dd8","libssh2/nw/keepscreen.c":"f95e6f4851f16bde13e51a1f4f6f405a142c6a7940beda74de8058db2f170ef6","libssh2/nw/nwlib.c":"d81b0ad6d05938507ebc3c0510021e889a2d68a74d50709df981d2339798eb78","libssh2/nw/test/GNUmakefile":"fb00a4a6776f14c1789ac8abc0b0136b79813177221355fbd3c5b1907da938e2","libssh2/os400/README400":"f5ce6d4f86e2334f5c271020195fb0964083e19e2f44dea4c4d62e7a9bc9f4da","libssh2/os400/ccsid.c":"07d12155f5b9b2be9e5477fc2818a7e98183eedc247370de04d718eef506fdb8","libssh2/os400/include/alloca.h":"f2b4c60ed1f78832b9141cb64e5d1d8e187d90afcb5f9f1d56dcf3f9e185d236","libssh2/os400/include/stdio.h":"ce35104d75377458c0c38aded5375141abf22e71215ef7533a482ceec279c731","libssh2/os400/include/sys/socket.h":"05599c77ea5f79337a77e7b24f4d63f40b929884141fbb66f356d825c09c8dfb","libssh2/os400/initscript.sh":"b27631198e5eea8048684f8fae95ef27eef1f712742265022bf4eb1ebfe
 589cd","libssh2/os400/libssh2_ccsid.h":"13a0b3c9165d7ef27ce242c64ae191f876a1fdd65f0b4d768cc3235c2509910d","libssh2/os400/libssh2_config.h":"d5615c238ab5642d19c29a04f6e18ef0a1675043861cbe3eebac2297e5acae09","libssh2/os400/libssh2rpg/libssh2.rpgle.in":"0ce3e5bb7c33bb6dcf960af6267b4c0e3cc16259ae881724624c9fafbcc090e6","libssh2/os400/libssh2rpg/libssh2_ccsid.rpgle.in":"439d9e4c68c9b20a618e305e51f54f817a9cc51dd37b62f5792232048ed3ff80","libssh2/os400/libssh2rpg/libssh2_publickey.rpgle":"b138035c36feb1816c6a99b1d98daff7997b05d02325cad1d9909f983e4a330e","libssh2/os400/libssh2rpg/libssh2_sftp.rpgle":"7d6fcfc290b07c8bafbbdfcf61e19456ab6961afe23a0aa142110052a33e7ace","libssh2/os400/macros.h":"38360f3613c00f49178996cf53d2519009a0b3fab161db7aebff143149730c5a","libssh2/os400/make-include.sh":"c75efa9eba5bcaa1e75f60110dd463c2c6866b486186db705d49518c1b0fd8cf","libssh2/os400/make-rpg.sh":"41cce97d1dec97571160c98967db4ab27af9c7890cf4f7aa238b3d6b6aa69eee","libssh2/os400/make-src.sh":"c750bd85a5153b10c
 61c069a7d1ec253ec3587554f2da60a144dc4246ff50e67","libssh2/os400/make.sh":"07f221c0d6a9e7b1c55e5d1cc8e3babe7edb6b4bad3063827b55265bec9456e4","libssh2/os400/os400sys.c":"2c9bc9de576376b0a37c401c64b59990e2f74ceafdb0a8c6555fb8de5be2b01a","libssh2/src/CMakeLists.txt":"30b56cd9854ab0b20d1527f368b35c341ce8bed37708f316edef8e7a229f06a1","libssh2/src/Makefile.am":"5e0e38d3203bf1f1e0f1acc57b98591a4de80cd5efa26e5dde6b7348f2df1a68","libssh2/src/NMakefile":"bad4819608f02f282aae84462a7c3f1d1b199ee0fc86abdc9ab7326ee6482576","libssh2/src/agent.c":"7bbe43a2a9bbc1e6d4c2ff6f2c10d5b9d46920148c10b1788f355b760303862b","libssh2/src/agent.h":"1348e28650ce7f4350e4e1b92e26d7c45e729fe3b9cd68db716e40a64ea15269","libssh2/src/agent_win.c":"1c8d67a82e21c539c62f3a0b4c715fba81ca40cee588588d5e4f1abb389966b1","libssh2/src/bcrypt_pbkdf.c":"76b4d9244aa61fba7db31f4763336d890d5025f9f62f3bb1369eb3b0986fca6f","libssh2/src/blf.h":"db4921417d17d79529c393528e541bad14434777eba8cc131ed74f0317dabfe3","libssh2/src/blowfish.c":"830
 d5c2b3ac01b1a96253cd78304af11bbfef822a0e59bbf12d0d370f0f0f43f","libssh2/src/channel.c":"de351bd081fea82da9d1bc613bb4cce9a1b08bcf18839433b073b4ea5075c077","libssh2/src/channel.h":"3be8e8b444461111fe0d35b21137ffcd4f681c1357616e0db4908bd434e97bbc","libssh2/src/comp.c":"0fd0cfb6b74e2d94a2da15b27e8e99e42f277dd12fd27ccf17bf566ad8009993","libssh2/src/comp.h":"7aa028c23316132522362bc9f397e22bae94e9e620eb80ac12a2009278532926","libssh2/src/crypt.c":"04e3683e3a16046aa7736b2401bdebea1feffc1e7fb928952dbd53adcc5a493e","libssh2/src/crypto.h":"37d8b6726c771d88cee1928391ec5b5126617fc1f04f7e705b8fb041a8fe91cc","libssh2/src/global.c":"9551963ca2fb9c321703db04952d9b05e2e6049e12d8bf6ba6e9291920b87a37","libssh2/src/hostkey.c":"1ff0d3709396e9d0c4061968a7159bbf00af7c3fedc37ec32c4f8cea682dd492","libssh2/src/keepalive.c":"acc373252f0624126226e2528897757da61c870374d5905df29a17fa185214ef","libssh2/src/kex.c":"6fbb83649de7afcb197c285f41f6d2c0576e17bee93d6d51fb85421a21af8258","libssh2/src/knownhost.c":"2ef607c0b
 b2ef7ec9a4cf41158813ca8c62c55ace046a02a2b862cfdede25e75","libssh2/src/libgcrypt.c":"cbbd92a4b70d620517458412390519d40f1e153a882be8d5fe6c5de6d3570336","libssh2/src/libgcrypt.h":"46d7c65c53b1e355327e1b314d5841d41cb5426faee36ab6bbc0b7b48871b9d0","libssh2/src/libssh2.pc.in":"46db28ee6987b9f399c0e3b02dd5374fef2831fd4051109a478e85832e1913df","libssh2/src/libssh2_config_cmake.h.in":"07fe4470fd1643c51e5f2a868b053d733aaee891f1f886f4b8b848fb70db76cb","libssh2/src/libssh2_priv.h":"7cf354751d204d0ae1d3bf8bddbcfe38bebdf792217c34f9ea00947c57fc992d","libssh2/src/mac.c":"3ff6c3d22e5e9a0cc2d69b2f840606f560b83b9d40e276927d0854c20ec35b27","libssh2/src/mac.h":"ead9c368cf6700776d6083363a275e26d0e89de665b40b48fed1f5cd6d783b3b","libssh2/src/mbedtls.c":"3566fc0fc5d2a658780673741678f811e1a4fbc99aebaaeb2419c65b5887c2a7","libssh2/src/mbedtls.h":"e28d5e7b08c0d67f1d8e3e2d2fb7fef69df049cf8e188a7760abd7b50d91c7e7","libssh2/src/misc.c":"64f7a580f0cf00d6cba86de4fd5cf156cba038b2a321efa8504236991edff50f","libssh2/src
 /misc.h":"4bcc54e2280af4e4934e7c14a32e839bc9d09dc33b52b9a75f27366215a61556","libssh2/src/openssl.c":"126dbf0e4676f84a1acb46b154d2d32f42cb47a81f157a16ff1391a02c615baf","libssh2/src/openssl.h":"5dc71961f26506a53b7d724d385e5ba42ce75c83e00862041697e0f015a98166","libssh2/src/os400qc3.c":"f017c70d602941aca07f6fbe5fd55cc9bb8ce6c1d33fdb4e6f408d99edfdec03","libssh2/src/os400qc3.h":"e2d33622b00442fb2e2fcbb26fff7ee3bd997270f89a98a323bfed618956b28b","libssh2/src/packet.c":"e5b3f9dc190f9491a9746dd91e7da8d2f6639ef1a1e62552556753539fc1ddca","libssh2/src/packet.h":"cbd3fe922ff28675f6f39b31131d7832a07263356d0e7d55197e40d5fe244577","libssh2/src/pem.c":"d1adf7211b744554b8c41180c87e8d0aca2a7babceee91c75032e68655e41e22","libssh2/src/publickey.c":"3e1579cdc688dee088294975ee4b09316cc68cd9083ea6170a8d4726d820ea6c","libssh2/src/scp.c":"ef7120de5d824d9d4135b846021af8f42c44ff790dacabc8c4d23bb702abd81c","libssh2/src/session.c":"3d1ab27b52be357e36fa337e7461828029690cda8c69a705222dab2228d85065","libssh2/src/sess
 ion.h":"c3918ff057ebdb51116d7552e27b9f7d18461e1fbba4c1b635465dff909d4623","libssh2/src/sftp.c":"9090319e2732c400a344c78f3e9695ca6e1a3466159ffdae3e3c5f52b10b9586","libssh2/src/sftp.h":"3b4d6460b857e32707116814f1ddc10dbfa5f804e407883e77bdad6c36db8c14","libssh2/src/transport.c":"4116293d9afceb3a8ea8de6a09bb3af42604632b3536f305240b7564be0555fc","libssh2/src/transport.h":"4a57bc5ecc21db41729319d8fd34808f042cfa7d155be306ec2165f2d81f010c","libssh2/src/userauth.c":"144ce811b1acf4be50bba03eee53a625fd5199815d04436858316912168fe05f","libssh2/src/userauth.h":"7d930eb690721808c6d89ba917045827118a3b98b04333935d8e91b49f651b84","libssh2/src/version.c":"544a1389f5a6bde4ec263991d994da3d9529cae5635aab6730702a6575bcc0c5","libssh2/src/wincng.c":"ba1fa277b369df2b51d23f354ecf28a4987ce0a0d29023e6af5ffeafbc4cd359","libssh2/src/wincng.h":"7bbc6e35d281bee22d52883c728b626336d3ec8a4ce6fb384f96bb8b1cfaca8f","libssh2/tests/CMakeLists.txt":"717707a250f05fb65e7009f696c70bd86d7d2ec16883127781b617d0c692cd82","libssh2
 /tests/Makefile.am":"d9f4abf187cfd058373c570fff74009dadfdc9c96f84375ed5649114f0d8369f","libssh2/tests/etc/host":"6eb0f1bb23d7877ddcd502159e6673c053b5ea1846630f21651ab58ea25d7a6f","libssh2/tests/etc/host.pub":"0e2479a973fbaf1f7f5dfebb111e2b199ee59c0dcfdf646d26760eba0b8b2aa8","libssh2/tests/etc/sshd_config":"2ad4ea47ddb633c7a2e000f2d6619d08bf643591f26a7a0b92d0befe518ee951","libssh2/tests/etc/user":"776aebc0c12e466e4b65f1a44ae5235dd70687ab03f283aa3d9a6df70d3bdbbf","libssh2/tests/etc/user.pub":"39bc4445c24c32fe5e64a6ee02025f3508b4334b2813e1a87c40d44ebc5f8c1d","libssh2/tests/key_dsa":"2e5b8a618e853eff7b3e0d2928203529fe18a3ae62b46a82ccd48a750819b8c2","libssh2/tests/key_dsa.pub":"12aecbb237794fc79d4a96cebad1c4badaa1902b3f1788cca83b28a1f977b895","libssh2/tests/key_dsa_wrong":"21f66160d72789400c5420f460fb716cde82b5afc5c09f3f7512d310e3c8e0b2","libssh2/tests/key_dsa_wrong.pub":"0274eed003e62413aa894abad044296c6fb3cc19450457a282674ed3836518ea","libssh2/tests/key_ecdsa":"8fb4d570516afc175869de76
 86125a828e18c38ddd4c2524c5a8d05c95ba7e7d","libssh2/tests/key_ecdsa.pub":"bc756bc47e3afd11437cd40ebe8ce5c8fca92ee03c6e3f01b6c5b44001bbc7c6","libssh2/tests/key_ed25519":"18e808415d2f344a20b7cefac12f0df0af4e404f446f5c690000c21987ce8795","libssh2/tests/key_ed25519.pub":"e52bcbcbdcdbf547a121e92bbb6f5342375719988e33ffe7f228dd2b935c98ba","libssh2/tests/key_ed25519_encrypted":"fd1e9378f94f2d5514e16f32fcf175e8303433750c81f2def3814d5bd44a13e3","libssh2/tests/key_ed25519_encrypted.pub":"7ceb4062d5fe17f190eb32c894e4cfd76e00db7c1b16de7516df8f910649469d","libssh2/tests/key_rsa":"9d8f4c955624a4af6fcb754e74e2abe1d3e7fe6340f6063617cd58bf122a2d59","libssh2/tests/key_rsa.pub":"4293f28b7033d459618b277374d7e932869964de131bba1d427030cb5e70c297","libssh2/tests/key_rsa_encrypted":"fc3872744c7bf6db2df4ab2ea5701370cd8bd39367d659eaeae49b2dbe7bca34","libssh2/tests/key_rsa_encrypted.pub":"1f340ccab8b86e51d4ee7585d61d5e49e3a32338ba9eeca65988a1d751112c5e","libssh2/tests/key_rsa_openssh":"a146196a5b2189b40bc00bdcd
 1958165106ca21e72a7d02c0a7f95a6dd926487","libssh2/tests/key_rsa_openssh.pub":"d564da6c612286603a83af006c3a6efe53885a2417aa25f234818612e16bea66","libssh2/tests/libssh2_config_cmake.h.in":"193a748944f6bccd3787b1c3958ddf95c1c7ad9b25e5b8f4b42cb48987e34668","libssh2/tests/mansyntax.sh":"71c56796eaa4008910b3d67b885b9a7e2c018d0f88be4bb290334afb9ff23bde","libssh2/tests/openssh_fixture.c":"7c17b8373b09dfe53489e96854fa89f6e6e3c13eac838f79179f38ad6323a501","libssh2/tests/openssh_fixture.h":"21935165166ce4518c6534070cc506fcd85ece95238fef29e6b0be784c05d7c0","libssh2/tests/openssh_server/Dockerfile":"fe4f6271644f6a29af0e077902cb7cc80b6226ef0e1976438dcd74148d26823c","libssh2/tests/openssh_server/authorized_keys":"58c4cf998535eb4123eddf7cae7da4413eed50e3827320187380ec7925fcf61e","libssh2/tests/openssh_server/ca_ecdsa":"14e72246d3990d345c30cd3d06c5c7ba9496057d94da2f5a6f14a7c636663206","libssh2/tests/openssh_server/ca_ecdsa.pub":"2925ca6bb4d280aec3dd68041efc2f06e959295932a26f73a263c939c03e3220","libs
 sh2/tests/openssh_server/ssh_host_ecdsa_key":"03753b2b4942081d1f33201a193487ebd5a577e0bfde45f7e03a1de5ae404688","libssh2/tests/openssh_server/ssh_host_ed25519_key":"18e808415d2f344a20b7cefac12f0df0af4e404f446f5c690000c21987ce8795","libssh2/tests/openssh_server/ssh_host_rsa_key":"11a57dc115ca17203d6382ad6fdcd8df33bd0f23ff6bf38ee4a697260ffd1a11","libssh2/tests/ossfuzz/Makefile.am":"049665a167b9f4cd664b12884ae4470c0b0b2077931a056ed55d61784b230d88","libssh2/tests/ossfuzz/ossfuzz.sh":"6fde8ca30e3dfc0ade9da4d06f5e34f73a51c6fea72e3a1348cf5ced10b73d80","libssh2/tests/ossfuzz/ssh2_client_fuzzer.cc":"accadbd90783a3e7fa2311e749aab641f53851a14a17c2e8464bf85c1a5e887a","libssh2/tests/ossfuzz/standaloneengine.cc":"f6eb3ebf7e14252339a21fb887a08b2e7638a7ac77f706ed80508b2c0d54d81d","libssh2/tests/ossfuzz/testinput.h":"ce435e13e87abeec0a297ef3b566268496ecbd517c1d09dfa2232dcbbec9be2c","libssh2/tests/runner.c":"696b83fd77bca60560c1609212c59ad986bf151cf72520b63d23643111a7ce4e","libssh2/tests/session_fixt
 ure.c":"0e81e1d8e9999d24120fd8be8b26cf6984578c504f46d009cb816fce50412762","libssh2/tests/session_fixture.h":"d4f098a586b5f7dd0f3785b86933c08096bc12a2e55f07fff470db6fc7bbd076","libssh2/tests/signed_key_ecdsa":"796da5d8d420f644f47feffffb0357ac99b299471e4d757f21b6cc8bfefe8f0d","libssh2/tests/signed_key_ecdsa-cert.pub":"0f2e6d1b46874a01cc36ed766533301622d64fa88988575ca77eee56da7b3952","libssh2/tests/signed_key_ecdsa.pub":"d6b6f80d9117f896b99933eba19b012f55068ed8b77956f1a7b0510026c2876f","libssh2/tests/simple.c":"4afdeef598aa669b5cd0e7388dcf2e579f2c0f9c954face71d366250101d270f","libssh2/tests/ssh2.c":"3a8605fd3dd6151c569bc12c07ecdc33de7d704b6224da2dedfe3c76494e015b","libssh2/tests/ssh2.sh":"7bbe65ee20f4e47e9264bd74700cca16ee066aba5fb9e4e42f46e1cfdae4930e","libssh2/tests/sshd_fixture.sh.in":"c8b93076f66222f73329472ec151b210e55b39024de5d3c18a4c609b65d13b7e","libssh2/tests/sshdwrap":"21649ba440cd534f4bfd52c0a8de339565768b373c172dca106cffcc8bd06e09","libssh2/tests/test_agent_forward_succeeds
 .c":"a5b9f9009c6818b86f235debc2ee15de5ceb0cfe1d9b539270167058afb4e6ac","libssh2/tests/test_hostkey.c":"f1059c3ac304332342f39f32288afa3f61f9bdbd5d617fe6052491b20bc0672b","libssh2/tests/test_hostkey_hash.c":"e745d8b4ad92c858dc588e3494e183f47d591c1ef2a13b63e2122f478545093a","libssh2/tests/test_keyboard_interactive_auth_fails_with_wrong_response.c":"f585a7df65a87fc4905f0b165531beb41455486919ed3aebbe9804ba5795b9c7","libssh2/tests/test_keyboard_interactive_auth_succeeds_with_correct_response.c":"8a112c876cb2786eed61de0f68f0a93ee3840269d8d6610e8ebeeb9a66c43533","libssh2/tests/test_password_auth_fails_with_wrong_password.c":"e3d588d9c6850ab69bd7674d2027563ff9f1491740637506d80875e66609974d","libssh2/tests/test_password_auth_fails_with_wrong_username.c":"c91608bdda3a83a62876725ae2d7002ccb3332bcbacfc9c9578e7488c0ed4cef","libssh2/tests/test_password_auth_succeeds_with_correct_credentials.c":"80d253225d68bcb7dc4b94b53374aa4de86c6995481de0974b6284bf87a91583","libssh2/tests/test_public_key_auth_fa
 ils_with_wrong_key.c":"104b08aa9bb5f1006e07e59dece417a2d6a5f60ef6c3f8dc62b6a8af95d413e0","libssh2/tests/test_public_key_auth_succeeds_with_correct_dsa_key.c":"4b397de742f0d2fb15e86d20451f109fedd1ba28b0622496a2d030f9e9f9ea5a","libssh2/tests/test_public_key_auth_succeeds_with_correct_ecdsa_key.c":"53bd6d99a243aaedc20f7de5c974c7c04e38090a415d338cef2d7357d7644912","libssh2/tests/test_public_key_auth_succeeds_with_correct_ed25519_key.c":"207f499812271669d2a9ff5a286761a45840de9230c07bf72426fcd59a682317","libssh2/tests/test_public_key_auth_succeeds_with_correct_ed25519_key_from_mem.c":"4dd0a8251a41d0dd68490fb7abb9b0a1cc190af1603815f3050e29e2a7d6bc8a","libssh2/tests/test_public_key_auth_succeeds_with_correct_encrypted_ed25519_key.c":"6e5c107ad53c144892c54459f89ef2cf8a25cbf977bbd978e4517cb5959a2565","libssh2/tests/test_public_key_auth_succeeds_with_correct_encrypted_rsa_key.c":"dbc95a803a54364604ab379b512fc98c33d791a1df4e33e4027b881ecc2e75ed","libssh2/tests/test_public_key_auth_succeeds_with
 _correct_rsa_key.c":"93cdd2513af42d46552baa273401910dedd014951f836175ec98b827532c5b6e","libssh2/tests/test_public_key_auth_succeeds_with_correct_rsa_openssh_key.c":"4e6d3ace02cce1ba8c1b4b6e5d774a8a4d259eef8314fe6c3ae0d6003a87dcd8","libssh2/tests/test_public_key_auth_succeeds_with_correct_signed_ecdsa_key.c":"f16a0dc74d16f0d27f10867f0ddd5b306fc4b16b2bd8e401a5451ce71c7649f5","libssh2/vms/libssh2_config.h":"1c5c4ba6ab33bd1d9e4ce0d84e1107ced89d27a80e8505e1b428fa942edefedc","libssh2/vms/libssh2_make_example.dcl":"7726a5d4f07d522aa712da8a6ca7b998cd93ca950aaa544a5eed1790dc69c775","libssh2/vms/libssh2_make_help.dcl":"9d04ddc32831abf63b7e042dd0677da83599f11497d364b02cbe780419e248e4","libssh2/vms/libssh2_make_kit.dcl":"e7c23c9db4583f6944cd8973cd813a6d65749170417b8384f94db69597f81f1d","libssh2/vms/libssh2_make_lib.dcl":"1549134cd4a4bdf2543f900ea9c811de1c67895e1e830f7ddfb384e7601f56a4","libssh2/vms/man2help.c":"ae61cab505a4a9c87bdd103506ba9a36fd7ba92714edd9f67d022d8a9474e6bc","libssh2/vms/readm
 e.vms":"30b5d682da37cf16352152daa682cb04c56e1044c77fc4c4da77bdc9709c33b8","libssh2/win32/GNUmakefile":"0c120532da875411df50b2f4483add53afd9345b2f4eab5f3c6ca5ccf7b17eb9","libssh2/win32/Makefile.Watcom":"475b8b37143bad986386ca1d2c777e9f8e46d0172ca4e9f70c613c84bbdece4f","libssh2/win32/config.mk":"e2172a92c5b5b9f2215c5c11128009cb6ba8a1f25402990c1f7e8ae78449d289","libssh2/win32/libssh2.dsw":"b16e14f1e5ed93f52e450b03d18691bd15a17b13b69486551c61b455cf823d98","libssh2/win32/libssh2.rc":"29a25c29ed977ba78619a59bc858508caa6f0849607c02da8fa7fe71b6fb7195","libssh2/win32/libssh2_config.h":"d5e704c80aca43c33698bd45059eecde05b098049192bb9f0640af593cdb2cb7","libssh2/win32/msvcproj.foot":"85c21ad71a2ae878242d9b370e96dbcb7433b77dc9fa4d1fc903ce0582e0f62d","libssh2/win32/msvcproj.head":"3a9edda7c4f545c43178c826cb0a83f9e2f38ed61cbe6b3002b9683cfebb4fb1","libssh2/win32/rules.mk":"5f68dc0a3ef0f61d783289c98c00419a0a76a2b866ecd0f86404ca1d3effc12a","libssh2/win32/test/GNUmakefile":"e2c77b03fa88a88d90fe1dcb6c0
 95935ba99b03b56a78f101a373ff208e1369a","libssh2/win32/tests.dsp":"73710a110000074bb299c9b780fb4fdc9e7a7edcefe19428de89c33d65e77841"},"package":"b094a36eb4b8b8c8a7b4b8ae43b2944502be3e59cd87687595cf6b0a71b3f4ca"}
-diff --git a/vendor/libssh2-sys/build.rs b/vendor/libssh2-sys/build.rs
-index d1d33dc00..7f826638f 100644
---- a/vendor/libssh2-sys/build.rs
-+++ b/vendor/libssh2-sys/build.rs
-@@ -121,6 +121,7 @@ fn main() {
-         cfg.define("HAVE_EVP_AES_128_CTR", None);
-         cfg.define("HAVE_POLL", None);
-         cfg.define("HAVE_GETTIMEOFDAY", None);
-+        cfg.define("HAVE_OPAQUE_STRUCTS", None);
- 
-         cfg.file("libssh2/src/openssl.c");
- 
-diff --git a/vendor/openssl-sys/.cargo-checksum.json b/vendor/openssl-sys/.cargo-checksum.json
-index 8c15ebcd2..2aeac0baa 100644
---- a/vendor/openssl-sys/.cargo-checksum.json
-+++ b/vendor/openssl-sys/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"CHANGELOG.md":"6ee4e524e49a4e8cd3164701bf18fbc641c7a014b756b5de6b3ccc11fa588c70","Cargo.toml":"1a6b84bb11588fb0fa8d28741ab548726cef34e546de3dd2280be1d8139f292d","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"c5ddde25c2756a1115daaa671fb4297cdc83bf23009c8356ba65b5311d0dd30d","build/cfgs.rs":"193f81ffdf211f056599072e8910d59c2134d3df85fed9ca693bc59f82cb73d4","build/expando.c":"d6f6f9f7d9f79d03b96740fe378e6d4fd38e9447abf7839e62a5fae3eea49c14","build/find_normal.rs":"b6bc74f91a52bb592e14c085061b477722d7f72eaa33a7590fb01da46cd35b7c","build/find_vendored.rs":"7bf0e59c5646d72ee5a4392ad970fdf5c20288ddaf54dd86a8caff49583b38f5","build/main.rs":"c6e1ba232c3334a726707561c7cb0c87c841c75b1848880ce03c689f5d9b2b69","src/aes.rs":"822bf666db351fe6ef9607c918081d6ad378fc1cedb05290bb746f86980c6088","src/asn1.rs":"801c254afc76b0c29b756bd86a149361609f82ec33c1f1fad39a512fbe4e87ee","src/bio.rs":"3aac4e38ccf8d832b4156908cd3f1ff9c56f84c05d2f07ed7a3e3fcc
 abe965e9","src/bn.rs":"c71b9c79f704a94a889d27bf75e7e5b1f9f10b0df0aeb485aef509cf05d7467f","src/cms.rs":"1e1500367732915e756ba7dcee4a0691ba4fab770e0cef88267b74111e99e127","src/conf.rs":"511e008c18039f54d856d70b80009426fc7f4ce34fe4304e2c58ebf465031de0","src/crypto.rs":"fa513478e5c4a1e9d54081a9c79d48400f726c7047e776aa3f1adc023d6600be","src/dh.rs":"fb3b539eec4434b448b30df19e2e2ac5ffc3bd11bb817c7fb9090186ec3b0146","src/dsa.rs":"ae79baf231681900ea76304285b3ffacf5298c90b8c04d371269cf4adbb5b9fa","src/dtls1.rs":"0477022d5bcf2b7a620c70ece4da08a2958be3eca5a57127c89d79525c692ebd","src/ec.rs":"018a2ab377804bb735206e88d0561ab16098e29007d1a1fd0d565c8e492544c2","src/err.rs":"9e6c84a170dce46db74414a64b9e1855845afbd8180100a2d9412f7509f69284","src/evp.rs":"c947ddf745e4fc761f2b4b7886246f96163f41ff8ccc3c822e46ad38169d2c94","src/hmac.rs":"fa3976d94a1383f300bdec228270afb8b47c97bb019d727c7d59ba783be3c42e","src/lib.rs":"19ddf11d94bf469abb3f453a6b38886f6ccea4bc6004477f36b200516f5fee44","src/macros.rs":"7ed99c
 00c53ee12ea92634d4ace0af84845ebf98819869746e7896c8eaff23db","src/obj_mac.rs":"42019b142e523d7695d8c14ee7f72fa4b5702c07dee98fa12e70ab7dfcc95459","src/object.rs":"9ec1a26968e3efc87b24f287b92331fa38eaca048a3919e6514f48d38c7df9a6","src/ocsp.rs":"614492810c5fadd0c1c4bb5eda165fb7e744eed7b04ae61d582446f5013e733a","src/ossl_typ.rs":"0d8dd0f82ef08672ab3c5059d2335b7eaad2d5afc0a20dbf26c2476c99dcae8e","src/pem.rs":"c92d1d31e6f70f6704f148e370a8b4228d6305b51fd3be907c49014a8bfe14ba","src/pkcs12.rs":"4c3c1cf2e716454c5fc94c3d5e1174922c57b9de796253799437dc13303a68d1","src/pkcs7.rs":"726614946784f919db88fd5282ec66d5b9df2edafc98ade9614758e109176b31","src/rand.rs":"c771057f37c64406aa750f36397fa877caf330a8c725e49356c7081c2b2fdd67","src/rsa.rs":"d45d421339b903b0d33817e93be5e939964431f9caed343e5c4490382cfad5b1","src/safestack.rs":"6c39e28565d34efad707d77561d4caa99e3f028fcac3a2ef6fd403a78de1190c","src/sha.rs":"16a4c77cbc38926b8f8eee07b0beae8dc12cbdc8cfa599d4db66fa84a7b3871d","src/srtp.rs":"1c4dee9e6c139cc70
 416207786e385f199321624fb9fbf3cbf39a8160c0c405d","src/ssl.rs":"f0dd56aef28630ba8359e49538664160b54f58e255cca1f5c239f23aa820de1b","src/ssl3.rs":"9336c816e00847d552dea22587d4ac72ff3cbd469fa5ff750423a19ea11e68eb","src/stack.rs":"1a509907283e5a2bf88cf193ce607f49ce7d2d95547c2ce2abc0fd4567aad334","src/tls1.rs":"60ca3dea1bbfda645bde563b4a878dac129c3f760e3ad572381000fc7a8ef522","src/types.rs":"0b9bafc6f5fd373ec8c01e49339f7fe7ef1d76e44d60cda59f60c06982b4070e","src/x509.rs":"785bcb26166b8f39e616e5ab9a0358814773e96de51b40fd5ae62b45a2edcda6","src/x509_vfy.rs":"e530e2fd91e959715265b40fba95576bb53ddcb4e2c6586c2192098e0e8b1cc1","src/x509v3.rs":"520253195097d134e553c6378c1db2510eae6ccfcab6f6fb08919697bc0f023b"},"package":"7a7907e3bfa08bb85105209cdfcb6c63d109f8f6c1ed6ca318fff5c1853fbc1d"}
-\ No newline at end of file
-+{"files":{"CHANGELOG.md":"6ee4e524e49a4e8cd3164701bf18fbc641c7a014b756b5de6b3ccc11fa588c70","Cargo.toml":"1a6b84bb11588fb0fa8d28741ab548726cef34e546de3dd2280be1d8139f292d","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"c5ddde25c2756a1115daaa671fb4297cdc83bf23009c8356ba65b5311d0dd30d","build/cfgs.rs":"193f81ffdf211f056599072e8910d59c2134d3df85fed9ca693bc59f82cb73d4","build/expando.c":"d6f6f9f7d9f79d03b96740fe378e6d4fd38e9447abf7839e62a5fae3eea49c14","build/find_normal.rs":"b6bc74f91a52bb592e14c085061b477722d7f72eaa33a7590fb01da46cd35b7c","build/find_vendored.rs":"7bf0e59c5646d72ee5a4392ad970fdf5c20288ddaf54dd86a8caff49583b38f5","build/main.rs":"137b9977adead26cc29c7c7ef2501516fd4b8540335e3b8b2690e5a6354ad202","src/aes.rs":"822bf666db351fe6ef9607c918081d6ad378fc1cedb05290bb746f86980c6088","src/asn1.rs":"801c254afc76b0c29b756bd86a149361609f82ec33c1f1fad39a512fbe4e87ee","src/bio.rs":"3aac4e38ccf8d832b4156908cd3f1ff9c56f84c05d2f07ed7a3e3fcc
 abe965e9","src/bn.rs":"c71b9c79f704a94a889d27bf75e7e5b1f9f10b0df0aeb485aef509cf05d7467f","src/cms.rs":"1e1500367732915e756ba7dcee4a0691ba4fab770e0cef88267b74111e99e127","src/conf.rs":"511e008c18039f54d856d70b80009426fc7f4ce34fe4304e2c58ebf465031de0","src/crypto.rs":"fa513478e5c4a1e9d54081a9c79d48400f726c7047e776aa3f1adc023d6600be","src/dh.rs":"fb3b539eec4434b448b30df19e2e2ac5ffc3bd11bb817c7fb9090186ec3b0146","src/dsa.rs":"ae79baf231681900ea76304285b3ffacf5298c90b8c04d371269cf4adbb5b9fa","src/dtls1.rs":"0477022d5bcf2b7a620c70ece4da08a2958be3eca5a57127c89d79525c692ebd","src/ec.rs":"018a2ab377804bb735206e88d0561ab16098e29007d1a1fd0d565c8e492544c2","src/err.rs":"9e6c84a170dce46db74414a64b9e1855845afbd8180100a2d9412f7509f69284","src/evp.rs":"c947ddf745e4fc761f2b4b7886246f96163f41ff8ccc3c822e46ad38169d2c94","src/hmac.rs":"fa3976d94a1383f300bdec228270afb8b47c97bb019d727c7d59ba783be3c42e","src/lib.rs":"19ddf11d94bf469abb3f453a6b38886f6ccea4bc6004477f36b200516f5fee44","src/macros.rs":"7ed99c
 00c53ee12ea92634d4ace0af84845ebf98819869746e7896c8eaff23db","src/obj_mac.rs":"42019b142e523d7695d8c14ee7f72fa4b5702c07dee98fa12e70ab7dfcc95459","src/object.rs":"9ec1a26968e3efc87b24f287b92331fa38eaca048a3919e6514f48d38c7df9a6","src/ocsp.rs":"614492810c5fadd0c1c4bb5eda165fb7e744eed7b04ae61d582446f5013e733a","src/ossl_typ.rs":"0d8dd0f82ef08672ab3c5059d2335b7eaad2d5afc0a20dbf26c2476c99dcae8e","src/pem.rs":"c92d1d31e6f70f6704f148e370a8b4228d6305b51fd3be907c49014a8bfe14ba","src/pkcs12.rs":"4c3c1cf2e716454c5fc94c3d5e1174922c57b9de796253799437dc13303a68d1","src/pkcs7.rs":"726614946784f919db88fd5282ec66d5b9df2edafc98ade9614758e109176b31","src/rand.rs":"c771057f37c64406aa750f36397fa877caf330a8c725e49356c7081c2b2fdd67","src/rsa.rs":"d45d421339b903b0d33817e93be5e939964431f9caed343e5c4490382cfad5b1","src/safestack.rs":"6c39e28565d34efad707d77561d4caa99e3f028fcac3a2ef6fd403a78de1190c","src/sha.rs":"16a4c77cbc38926b8f8eee07b0beae8dc12cbdc8cfa599d4db66fa84a7b3871d","src/srtp.rs":"1c4dee9e6c139cc70
 416207786e385f199321624fb9fbf3cbf39a8160c0c405d","src/ssl.rs":"f0dd56aef28630ba8359e49538664160b54f58e255cca1f5c239f23aa820de1b","src/ssl3.rs":"9336c816e00847d552dea22587d4ac72ff3cbd469fa5ff750423a19ea11e68eb","src/stack.rs":"1a509907283e5a2bf88cf193ce607f49ce7d2d95547c2ce2abc0fd4567aad334","src/tls1.rs":"60ca3dea1bbfda645bde563b4a878dac129c3f760e3ad572381000fc7a8ef522","src/types.rs":"0b9bafc6f5fd373ec8c01e49339f7fe7ef1d76e44d60cda59f60c06982b4070e","src/x509.rs":"785bcb26166b8f39e616e5ab9a0358814773e96de51b40fd5ae62b45a2edcda6","src/x509_vfy.rs":"e530e2fd91e959715265b40fba95576bb53ddcb4e2c6586c2192098e0e8b1cc1","src/x509v3.rs":"520253195097d134e553c6378c1db2510eae6ccfcab6f6fb08919697bc0f023b"},"package":"7a7907e3bfa08bb85105209cdfcb6c63d109f8f6c1ed6ca318fff5c1853fbc1d"}
-diff --git a/vendor/openssl-sys/build/main.rs b/vendor/openssl-sys/build/main.rs
-index 88752d995..7cfa6e159 100644
---- a/vendor/openssl-sys/build/main.rs
-+++ b/vendor/openssl-sys/build/main.rs
-@@ -236,7 +236,8 @@ See rust-openssl README for more information:
-             (3, 2, _) => ('3', '2', 'x'),
-             (3, 3, 0) => ('3', '3', '0'),
-             (3, 3, 1) => ('3', '3', '1'),
--            (3, 3, _) => ('3', '3', 'x'),
-+            (3, 4, _) => ('3', '4', 'x'),
-+            (3, 5, _) => ('3', '5', 'x'),
-             _ => version_error(),
-         };
- 
--- 
-2.34.1
-

diff --git a/dev-lang/rust/files/1.61.0-llvm_addrspacecast.patch b/dev-lang/rust/files/1.61.0-llvm_addrspacecast.patch
deleted file mode 100644
index 9f2ca6f..0000000
--- a/dev-lang/rust/files/1.61.0-llvm_addrspacecast.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 67a290460c374d5e0d18a06c798896cac0b19e59 Mon Sep 17 00:00:00 2001
-From: Fraser Cormack <fraser@codeplay.com>
-Date: Wed, 16 Mar 2022 10:14:07 +0000
-Subject: [PATCH] [VectorCombine] Insert addrspacecast when crossing address
- space boundaries
-
-We can not bitcast pointers across different address spaces. This was
-previously fixed in D89577 but then in D93229 an enhancement was added
-which peeks further through the ponter operand, opening up the
-possibility that address-space violations could be introduced.
-
-Instead of bailing as the previous fix did, simply insert an
-addrspacecast cast instruction.
-
-Reviewed By: lebedev.ri
-
-Differential Revision: https://reviews.llvm.org/D121787
-
-(cherry picked from commit 2e44b7872bc638ed884ae4aa86e38b3b47e0b65a)
----
- llvm/lib/Transforms/Vectorize/VectorCombine.cpp |  8 ++------
- .../AMDGPU/as-transition-inseltpoison.ll        |  4 +---
- .../VectorCombine/AMDGPU/as-transition.ll       |  4 +---
- .../VectorCombine/X86/load-inseltpoison.ll      | 17 +++++++++++++++++
- 4 files changed, 21 insertions(+), 12 deletions(-)
-
-diff --git a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
-index 620d388199e0..258f6c67e54d 100644
---- a/src/llvm-project/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
-+++ b/src/llvm-project/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
-@@ -152,12 +152,7 @@ bool VectorCombine::vectorizeLoadInsert(Instruction &I) {
-   Value *SrcPtr = Load->getPointerOperand()->stripPointerCasts();
-   assert(isa<PointerType>(SrcPtr->getType()) && "Expected a pointer type");
- 
--  // If original AS != Load's AS, we can't bitcast the original pointer and have
--  // to use Load's operand instead. Ideally we would want to strip pointer casts
--  // without changing AS, but there's no API to do that ATM.
-   unsigned AS = Load->getPointerAddressSpace();
--  if (AS != SrcPtr->getType()->getPointerAddressSpace())
--    SrcPtr = Load->getPointerOperand();
- 
-   // We are potentially transforming byte-sized (8-bit) memory accesses, so make
-   // sure we have all of our type-based constraints in place for this target.
-@@ -245,7 +240,8 @@ bool VectorCombine::vectorizeLoadInsert(Instruction &I) {
-   // It is safe and potentially profitable to load a vector directly:
-   // inselt undef, load Scalar, 0 --> load VecPtr
-   IRBuilder<> Builder(Load);
--  Value *CastedPtr = Builder.CreateBitCast(SrcPtr, MinVecTy->getPointerTo(AS));
-+  Value *CastedPtr = Builder.CreatePointerBitCastOrAddrSpaceCast(
-+      SrcPtr, MinVecTy->getPointerTo(AS));
-   Value *VecLd = Builder.CreateAlignedLoad(MinVecTy, CastedPtr, Alignment);
-   VecLd = Builder.CreateShuffleVector(VecLd, Mask);

diff --git a/dev-lang/rust/files/1.61.0-llvm_selectInterleaveCount.patch b/dev-lang/rust/files/1.61.0-llvm_selectInterleaveCount.patch
deleted file mode 100644
index 71a4e8d..0000000
--- a/dev-lang/rust/files/1.61.0-llvm_selectInterleaveCount.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From fe8a27acd716a42667f5a572f52f2b04636010ff Mon Sep 17 00:00:00 2001
-From: Florian Hahn <flo@fhahn.com>
-Date: Tue, 29 Mar 2022 22:52:42 +0100
-Subject: [PATCH] [LV] Handle zero cost loops in selectInterleaveCount.
-
-In some case, like in the added test case, we can reach
-selectInterleaveCount with loops that actually have a cost of 0.
-
-Unfortunately a loop cost of 0 is also used to communicate that the cost
-has not been computed yet. To resolve the crash, bail out if the cost
-remains zero after computing it.
-
-This seems like the best option, as there are multiple code paths that
-return a cost of 0 to force a computation in selectInterleaveCount.
-Computing the cost at multiple places up front there would unnecessarily
-complicate the logic.
-
-Fixes #54413.
-
-(cherry picked from commit ecb4171dcbf1b433c9963fd605a74898303e850d)
----
- .../Transforms/Vectorize/LoopVectorize.cpp    | 22 ++++----
- ...ct-interleave-count-loop-with-cost-zero.ll | 50 +++++++++++++++++++
- 2 files changed, 62 insertions(+), 10 deletions(-)
- create mode 100644 llvm/test/Transforms/LoopVectorize/X86/pr54413-select-interleave-count-loop-with-cost-zero.ll
-
-diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
-index 21c16f07e237..e1cc7946073e 100644
---- a/src/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
-+++ b/src/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
-@@ -6035,6 +6035,18 @@ unsigned LoopVectorizationCostModel::selectInterleaveCount(ElementCount VF,
-       !(InterleaveSmallLoopScalarReduction && HasReductions && VF.isScalar()))
-     return 1;
- 
-+  // If we did not calculate the cost for VF (because the user selected the VF)
-+  // then we calculate the cost of VF here.
-+  if (LoopCost == 0) {
-+    InstructionCost C = expectedCost(VF).first;
-+    assert(C.isValid() && "Expected to have chosen a VF with valid cost");
-+    LoopCost = *C.getValue();
-+
-+    // Loop body is free and there is no need for interleaving.
-+    if (LoopCost == 0)
-+      return 1;
-+  }
-+
-   RegisterUsage R = calculateRegisterUsage({VF})[0];
-   // We divide by these constants so assume that we have at least one
-   // instruction that uses at least one register.
-@@ -6126,16 +6138,6 @@ unsigned LoopVectorizationCostModel::selectInterleaveCount(ElementCount VF,
- 
-   assert(IC > 0 && "Interleave count must be greater than 0.");
- 
--  // If we did not calculate the cost for VF (because the user selected the VF)
--  // then we calculate the cost of VF here.
--  if (LoopCost == 0) {
--    InstructionCost C = expectedCost(VF).first;
--    assert(C.isValid() && "Expected to have chosen a VF with valid cost");
--    LoopCost = *C.getValue();
--  }
--
--  assert(LoopCost && "Non-zero loop cost expected");
--
-   // Interleave if we vectorized this loop and there is a reduction that could
-   // benefit from interleaving.
-   if (VF.isVector() && HasReductions) {

diff --git a/dev-lang/rust/files/1.61.0-miri-cow.patch b/dev-lang/rust/files/1.61.0-miri-cow.patch
deleted file mode 100644
index fc46973..0000000
--- a/dev-lang/rust/files/1.61.0-miri-cow.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 830cc58f8a10598f4caa337ca97be51741945499 Mon Sep 17 00:00:00 2001
-From: Ralf Jung <post@ralfj.de>
-Date: Sun, 3 Apr 2022 20:00:03 -0400
-Subject: [PATCH] rustup
-
-gyakovlev: changed paths and removed irrelevant bits
----
- rust-version                     | 2 +-
- src/helpers.rs                   | 4 ++--
- src/machine.rs                   | 2 +-
- src/shims/env.rs                 | 2 +-
- src/shims/foreign_items.rs       | 4 ++--
- src/shims/posix/foreign_items.rs | 2 +-
- 6 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/src/helpers.rs b/src/helpers.rs
-index 3ffb983aa..7a63bb03d 100644
---- a/src/tools/miri/src/helpers.rs
-+++ b/src/tools/miri/src/helpers.rs
-@@ -510,7 +510,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
-         let this = self.eval_context_mut();
-         let target = &this.tcx.sess.target;
-         let target_os = &target.os;
--        let last_error = if target.families.contains(&"unix".to_owned()) {
-+        let last_error = if target.families.iter().any(|f| f == "unix") {
-             this.eval_libc(match err_kind {
-                 ConnectionRefused => "ECONNREFUSED",
-                 ConnectionReset => "ECONNRESET",
-@@ -534,7 +534,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
-                     )
-                 }
-             })?
--        } else if target.families.contains(&"windows".to_owned()) {
-+        } else if target.families.iter().any(|f| f == "windows") {
-             // FIXME: we have to finish implementing the Windows equivalent of this.
-             this.eval_windows(
-                 "c",
-diff --git a/src/machine.rs b/src/machine.rs
-index e9ed50724..b4b07a61a 100644
---- a/src/tools/miri/src/machine.rs
-+++ b/src/tools/miri/src/machine.rs
-@@ -227,7 +227,7 @@ impl MemoryExtra {
-     pub fn init_extern_statics<'tcx, 'mir>(
-         this: &mut MiriEvalContext<'mir, 'tcx>,
-     ) -> InterpResult<'tcx> {
--        match this.tcx.sess.target.os.as_str() {
-+        match this.tcx.sess.target.os.as_ref() {
-             "linux" => {
-                 // "environ"
-                 Self::add_extern_static(
-diff --git a/src/shims/env.rs b/src/shims/env.rs
-index c2050647a..822bef56c 100644
---- a/src/tools/miri/src/shims/env.rs
-+++ b/src/src/tools/miri/shims/env.rs
-@@ -41,7 +41,7 @@ impl<'tcx> EnvVars<'tcx> {
-         mut excluded_env_vars: Vec<String>,
-         forwarded_env_vars: Vec<String>,
-     ) -> InterpResult<'tcx> {
--        let target_os = ecx.tcx.sess.target.os.as_str();
-+        let target_os = ecx.tcx.sess.target.os.as_ref();
-         // HACK: Exclude `TERM` var to avoid terminfo trying to open the termcap file.
-         // This is (a) very slow and (b) does not work on Windows.
-         excluded_env_vars.push("TERM".to_owned());
-diff --git a/src/shims/foreign_items.rs b/src/shims/foreign_items.rs
-index ecffd310d..d9e4d9382 100644
---- a/src/tools/miri/src/shims/foreign_items.rs
-+++ b/src/tools/miri/src/shims/foreign_items.rs
-@@ -46,7 +46,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
-     fn min_align(&self, size: u64, kind: MiriMemoryKind) -> Align {
-         let this = self.eval_context_ref();
-         // List taken from `libstd/sys_common/alloc.rs`.
--        let min_align = match this.tcx.sess.target.arch.as_str() {
-+        let min_align = match this.tcx.sess.target.arch.as_ref() {
-             "x86" | "arm" | "mips" | "powerpc" | "powerpc64" | "asmjs" | "wasm32" => 8,
-             "x86_64" | "aarch64" | "mips64" | "s390x" | "sparc64" => 16,
-             arch => bug!("Unsupported target architecture: {}", arch),
-@@ -695,7 +695,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
-             }
- 
-             // Platform-specific shims
--            _ => match this.tcx.sess.target.os.as_str() {
-+            _ => match this.tcx.sess.target.os.as_ref() {
-                 "linux" | "macos" => return shims::posix::foreign_items::EvalContextExt::emulate_foreign_item_by_name(this, link_name, abi, args, dest, ret),
-                 "windows" => return shims::windows::foreign_items::EvalContextExt::emulate_foreign_item_by_name(this, link_name, abi, args, dest, ret),
-                 target => throw_unsup_format!("the target `{}` is not supported", target),
-diff --git a/src/shims/posix/foreign_items.rs b/src/shims/posix/foreign_items.rs
-index 02fb7089c..36bf53059 100644
---- a/src/tools/miri/src/shims/posix/foreign_items.rs
-+++ b/src/tools/miri/src/shims/posix/foreign_items.rs
-@@ -462,7 +462,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
- 
-             // Platform-specific shims
-             _ => {
--                match this.tcx.sess.target.os.as_str() {
-+                match this.tcx.sess.target.os.as_ref() {
-                     "linux" => return shims::posix::linux::foreign_items::EvalContextExt::emulate_foreign_item_by_name(this, link_name, abi, args, dest, ret),
-                     "macos" => return shims::posix::macos::foreign_items::EvalContextExt::emulate_foreign_item_by_name(this, link_name, abi, args, dest, ret),
-                     _ => unreachable!(),

diff --git a/dev-lang/rust/rust-1.59.0.ebuild b/dev-lang/rust/rust-1.59.0.ebuild
deleted file mode 100644
index 25e1b77..0000000
--- a/dev-lang/rust/rust-1.59.0.ebuild
+++ /dev/null
@@ -1,708 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python3_{7..10} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="amd64 arm arm64 ppc64 ~riscv x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).1"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# 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 dist doc miri nightly parallel-compiler rls rustfmt rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 13 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-	wasm? ( sys-devel/lld )
-"
-
-# 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
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-util/cmake-3.13.4
-		dev-util/ninja
-	)
-	test? ( sys-devel/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	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 )
-	rls? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.59.0-libressl.patch
-	"${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.49.0-gentoo-musl-target-specs.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rls 512 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-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 && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-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 \
-			--without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	default
-}
-
-src_configure() {
-	use system-llvm && filter-flags '-flto*' # https://bugs.gentoo.org/862109
-
-	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/wasm_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\",$tools"
-	fi
-	if use rustfmt; then
-		tools="\"rustfmt\",$tools"
-	fi
-	if use rust-src; then
-		tools="\"src\",$tools"
-	fi
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-		esac)
-		[build]
-		build-stage = 2
-		test-stage = 2
-		doc-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = 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)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-	_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}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-		_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}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="${RUSTFLAGS:-}"
-	echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
-	echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	cat "${S}"/config.env || die
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-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
-	)
-}
-
-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() {
-	(
-	IFS=$'\n'
-	env $(cat "${S}"/config.env) DESTDIR="${D}" \
-		"${EPYTHON}" ./x.py install	-vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-	)
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		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}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-		$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-		$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use 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}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-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.60.0.ebuild b/dev-lang/rust/rust-1.60.0.ebuild
deleted file mode 100644
index 2a6ae7f..0000000
--- a/dev-lang/rust/rust-1.60.0.ebuild
+++ /dev/null
@@ -1,715 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{8..10} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="amd64 arm arm64 ppc64 ~riscv x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# 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 dist doc miri nightly parallel-compiler profiler rls rustfmt rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 14 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-	wasm? ( sys-devel/lld )
-"
-
-# 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
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-util/cmake-3.13.4
-		dev-util/ninja
-	)
-	test? ( sys-devel/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	elibc_musl? ( sys-libs/libunwind:= )
-	system-llvm? ( ${LLVM_DEPEND} )
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rls? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.59.0-libressl.patch
-	"${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.49.0-gentoo-musl-target-specs.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rls 512 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-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 && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-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 \
-			--without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	default
-}
-
-src_configure() {
-	use system-llvm && filter-flags '-flto*' # https://bugs.gentoo.org/862109
-
-	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/wasm_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 profiler; then
-		tools="\"rust-demangler\",$tools"
-	fi
-	if use rls; then
-		tools="\"rls\",\"analysis\",$tools"
-	fi
-	if use rustfmt; then
-		tools="\"rustfmt\",$tools"
-	fi
-	if use rust-src; then
-		tools="\"src\",$tools"
-	fi
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-		esac)
-		[build]
-		build-stage = 2
-		test-stage = 2
-		doc-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-	_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}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-		_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]
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-			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}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="${RUSTFLAGS:-}"
-	echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
-	echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	cat "${S}"/config.env || die
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-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
-	)
-}
-
-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() {
-	(
-	IFS=$'\n'
-	env $(cat "${S}"/config.env) DESTDIR="${D}" \
-		"${EPYTHON}" ./x.py install	-vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-	)
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use 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}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-		$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-		$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use 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}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-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.61.0-r2.ebuild b/dev-lang/rust/rust-1.61.0-r2.ebuild
deleted file mode 100644
index 3d909c0..0000000
--- a/dev-lang/rust/rust-1.61.0-r2.ebuild
+++ /dev/null
@@ -1,734 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{8..10} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~sparc ~x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# 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 dist doc miri nightly parallel-compiler profiler rls rustfmt rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 14 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-	wasm? ( sys-devel/lld )
-"
-
-# 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
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-util/cmake-3.13.4
-		dev-util/ninja
-	)
-	test? ( sys-devel/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	elibc_musl? ( sys-libs/libunwind:= )
-	system-llvm? ( ${LLVM_DEPEND} )
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rls? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.59.0-libressl.patch
-	"${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.61.0-gentoo-musl-target-specs.patch
-	"${FILESDIR}"/1.61.0-llvm_selectInterleaveCount.patch
-	"${FILESDIR}"/1.61.0-llvm_addrspacecast.patch
-	"${FILESDIR}"/1.61.0-miri-cow.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rls 512 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-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 && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-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 \
-			--without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	default
-}
-
-src_configure() {
-	use system-llvm && filter-flags '-flto*' # https://bugs.gentoo.org/862109
-
-	local rust_target="" rust_targets="" arch_cflags use_libcxx="false"
-
-	# 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/wasm_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 profiler; then
-		tools="\"rust-demangler\",$tools"
-	fi
-	if use rls; then
-		tools="\"rls\",\"analysis\",$tools"
-	fi
-	if use rustfmt; then
-		tools="\"rustfmt\",$tools"
-	fi
-	if use rust-src; then
-		tools="\"src\",$tools"
-	fi
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	# https://bugs.gentoo.org/732632
-	if tc-is-clang; then
-		local clang_slot="$(clang-major-version)"
-		if { has_version "sys-devel/clang:${clang_slot}[default-libcxx]" || is-flagq -stdlib=libc++; }; then
-			use_libcxx="true"
-		fi
-	fi
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if [[ ${use_libcxx} == true ]]; then
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		build-config = { CMAKE_VERBOSE_MAKEFILE = "ON", CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}", CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}", CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}", CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}", CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}", CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}" }
-		[build]
-		build-stage = 2
-		test-stage = 2
-		doc-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-	_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}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-		_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)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="${RUSTFLAGS:-}"
-	echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
-	echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	cat "${S}"/config.env || die
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-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
-	)
-}
-
-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() {
-	(
-	IFS=$'\n'
-	env $(cat "${S}"/config.env) DESTDIR="${D}" \
-		"${EPYTHON}" ./x.py install	-vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-	)
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use 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}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-		$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-		$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use 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}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-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.62.0.ebuild b/dev-lang/rust/rust-1.62.0.ebuild
deleted file mode 100644
index f2a0e8d..0000000
--- a/dev-lang/rust/rust-1.62.0.ebuild
+++ /dev/null
@@ -1,738 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{8..11} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~sparc ~x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# 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 dist doc miri nightly parallel-compiler profiler rls rustfmt rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 14 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-	wasm? ( sys-devel/lld )
-"
-
-# 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
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-util/cmake-3.13.4
-		dev-util/ninja
-	)
-	test? ( sys-devel/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	elibc_musl? ( sys-libs/libunwind:= )
-	system-llvm? ( ${LLVM_DEPEND} )
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rls? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.61.0-gentoo-musl-target-specs.patch
-	"${FILESDIR}"/1.62.0-libressl.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rls 512 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-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 && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-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 \
-			--without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	default
-}
-
-src_configure() {
-	use system-llvm && filter-flags '-flto*' # https://bugs.gentoo.org/862109
-
-	local rust_target="" rust_targets="" arch_cflags use_libcxx="false"
-
-	# 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/wasm_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 profiler; then
-		tools="\"rust-demangler\",$tools"
-	fi
-	if use rls; then
-		tools="\"rls\",\"analysis\",$tools"
-	fi
-	if use rustfmt; then
-		tools="\"rustfmt\",$tools"
-	fi
-	if use rust-src; then
-		tools="\"src\",$tools"
-	fi
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	# https://bugs.gentoo.org/732632
-	if tc-is-clang; then
-		local clang_slot="$(clang-major-version)"
-		if { has_version "sys-devel/clang:${clang_slot}[default-libcxx]" || is-flagq -stdlib=libc++; }; then
-			use_libcxx="true"
-		fi
-	fi
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if [[ ${use_libcxx} == true ]]; then
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		[llvm.build-config]
-		CMAKE_VERBOSE_MAKEFILE = "ON"
-		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
-		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
-		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
-		[build]
-		build-stage = 2
-		test-stage = 2
-		doc-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-	_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}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-		_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)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="${RUSTFLAGS:-}"
-	echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
-	echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	cat "${S}"/config.env || die
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-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
-	)
-}
-
-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() {
-	(
-	IFS=$'\n'
-	env $(cat "${S}"/config.env) DESTDIR="${D}" \
-		"${EPYTHON}" ./x.py install	-vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-	)
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use 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}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-		$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-		$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use 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}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-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
-}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2022-09-29 22:58 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2022-09-29 22:58 UTC (permalink / raw
  To: gentoo-commits

commit:     70ce859aa9f2509ab4775e0e6a3a2ca260c265ac
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Wed Sep 28 00:39:45 2022 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Thu Sep 29 22:57:30 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=70ce859a

dev-lang/rust: Add 1.64.0-r1

Signed-off-by: orbea <orbea <AT> riseup.net>
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 ...64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch |  60 ++
 dev-lang/rust/rust-1.64.0-r1.ebuild                | 764 +++++++++++++++++++++
 2 files changed, 824 insertions(+)

diff --git a/dev-lang/rust/files/1.64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch b/dev-lang/rust/files/1.64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch
new file mode 100644
index 0000000..5d685ba
--- /dev/null
+++ b/dev-lang/rust/files/1.64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch
@@ -0,0 +1,60 @@
+From 3fd653f3978e5ec2249c37eb08934bfe343e9198 Mon Sep 17 00:00:00 2001
+From: Georgy Yakovlev <gyakovlev@gentoo.org>
+Date: Sat, 24 Sep 2022 23:09:38 -0700
+Subject: [PATCH] vendor/rustix: sparc has no SIGSTKFLT
+
+gyakovlev: removed checkum HUNK
+
+---
+ vendor/rustix/.cargo-checksum.json               | 2 +-
+ vendor/rustix/src/imp/libc/process/types.rs      | 4 ++++
+ vendor/rustix/src/imp/linux_raw/process/types.rs | 4 ++--
+ 3 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/vendor/rustix/src/imp/libc/process/types.rs b/vendor/rustix/src/imp/libc/process/types.rs
+index 60d629d..1278cee 100644
+--- a/vendor/rustix/src/imp/libc/process/types.rs
++++ b/vendor/rustix/src/imp/libc/process/types.rs
+@@ -197,6 +197,8 @@ pub enum Signal {
+         target_os = "macos",
+         target_os = "netbsd",
+         target_os = "openbsd",
++        target_arch = "sparc",
++        target_arch = "sparc64",
+         all(
+             any(target_os = "android", target_os = "linux"),
+             any(target_arch = "mips", target_arch = "mips64"),
+@@ -274,6 +276,8 @@ impl Signal {
+                 target_os = "macos",
+                 target_os = "netbsd",
+                 target_os = "openbsd",
++                target_arch = "sparc",
++                target_arch = "sparc64",
+                 all(
+                     any(target_os = "android", target_os = "linux"),
+                     any(target_arch = "mips", target_arch = "mips64"),
+diff --git a/vendor/rustix/src/imp/linux_raw/process/types.rs b/vendor/rustix/src/imp/linux_raw/process/types.rs
+index 53e2c7d..859a108 100644
+--- a/vendor/rustix/src/imp/linux_raw/process/types.rs
++++ b/vendor/rustix/src/imp/linux_raw/process/types.rs
+@@ -119,7 +119,7 @@ pub enum Signal {
+     /// `SIGTERM`
+     Term = linux_raw_sys::general::SIGTERM,
+     /// `SIGSTKFLT`
+-    #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
++    #[cfg(not(any(target_arch = "mips", target_arch = "mips64", target_arch = "sparc", target_arch = "sparc64")))]
+     Stkflt = linux_raw_sys::general::SIGSTKFLT,
+     /// `SIGCHLD`
+     #[doc(alias = "Chld")]
+@@ -179,7 +179,7 @@ impl Signal {
+             linux_raw_sys::general::SIGPIPE => Some(Self::Pipe),
+             linux_raw_sys::general::SIGALRM => Some(Self::Alarm),
+             linux_raw_sys::general::SIGTERM => Some(Self::Term),
+-            #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
++            #[cfg(not(any(target_arch = "mips", target_arch = "mips64", target_arch = "sparc", target_arch = "sparc64")))]
+             linux_raw_sys::general::SIGSTKFLT => Some(Self::Stkflt),
+             linux_raw_sys::general::SIGCHLD => Some(Self::Child),
+             linux_raw_sys::general::SIGCONT => Some(Self::Cont),
+-- 
+2.37.3
+

diff --git a/dev-lang/rust/rust-1.64.0-r1.ebuild b/dev-lang/rust/rust-1.64.0-r1.ebuild
new file mode 100644
index 0000000..b385ace
--- /dev/null
+++ b/dev-lang/rust/rust-1.64.0-r1.ebuild
@@ -0,0 +1,764 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..11} )
+
+inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
+	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.xz"
+	KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+SRC_URI="
+	https://static.rust-lang.org/dist/${SRC}
+	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
+	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
+"
+
+# 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 dist doc llvm-libunwind miri nightly parallel-compiler profiler rls rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+
+# Please keep the LLVM dependency block separate. Since LLVM is slotted,
+# we need to *really* make sure we're not pulling more than one slot
+# simultaneously.
+
+# How to use it:
+# List all the working slots in LLVM_VALID_SLOTS, newest first.
+LLVM_VALID_SLOTS=( 14 )
+LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
+
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+# (-) usedep needed because we may build with older llvm without that target
+LLVM_DEPEND="|| ( "
+for _s in ${LLVM_VALID_SLOTS[@]}; do
+	LLVM_DEPEND+=" ( "
+	for _x in ${ALL_LLVM_TARGETS[@]}; do
+		LLVM_DEPEND+="
+			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
+	done
+	LLVM_DEPEND+=" )"
+done
+unset _s _x
+LLVM_DEPEND+=" )
+	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
+	wasm? ( sys-devel/lld )
+"
+
+# to bootstrap we need at least exactly previous version, or same.
+# most of the time previous versions fail to bootstrap with newer
+# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
+# but it fails to bootstrap with 1.48.x
+# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
+RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
+RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
+BOOTSTRAP_DEPEND="||
+	(
+		=dev-lang/rust-"${RUST_DEP_PREV}"
+		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
+		=dev-lang/rust-"${RUST_DEP_CURR}"
+		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
+	)
+"
+
+BDEPEND="${PYTHON_DEPS}
+	app-eselect/eselect-rust
+	|| (
+		>=sys-devel/gcc-4.7
+		>=sys-devel/clang-3.5
+	)
+	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
+	!system-llvm? (
+		>=dev-util/cmake-3.13.4
+		dev-util/ninja
+	)
+	test? ( sys-devel/gdb )
+	verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+	>=app-arch/xz-utils-5.2
+	net-misc/curl:=[http2,ssl]
+	sys-libs/zlib:=
+	dev-libs/openssl:0=
+	system-llvm? (
+		${LLVM_DEPEND}
+		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
+	)
+	!system-llvm? (
+		!llvm-libunwind? (
+			elibc_musl? ( sys-libs/libunwind:= )
+		)
+	)
+"
+
+RDEPEND="${DEPEND}
+	app-eselect/eselect-rust
+	sys-apps/lsb-release
+"
+
+REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
+	miri? ( nightly )
+	parallel-compiler? ( nightly )
+	rls? ( rust-src )
+	test? ( ${ALL_LLVM_TARGETS[*]} )
+	wasm? ( llvm_targets_WebAssembly )
+	x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+	usr/lib/${PN}/${PV}/bin/.*
+	usr/lib/${PN}/${PV}/libexec/.*
+	usr/lib/${PN}/${PV}/lib/lib.*.so
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+	usr/lib/${PN}/${PV}/lib/lib.*.so.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+	"${FILESDIR}"/1.62.0-libressl.patch
+	"${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
+	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
+	"${FILESDIR}"/${PV}-vendor-rustix-sparc-has-no-SIGSTKFLT.patch
+)
+
+S="${WORKDIR}/${MY_P}-src"
+
+toml_usex() {
+	usex "${1}" true false
+}
+
+bootstrap_rust_version_check() {
+	# never call from pkg_pretend. eselect-rust may be not installed yet.
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
+	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
+	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
+		eerror "Rust >=${rustc_wanted} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too old"
+	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
+		eerror "Rust <${rustc_toonew} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too new"
+	else
+		einfo "Using rust ${rustc_version} to build"
+	fi
+}
+
+pre_build_checks() {
+	local M=8192
+	# multiply requirements by 1.3 if we are doing x86-multilib
+	if use amd64; then
+		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
+	fi
+	M=$(( $(usex clippy 128 0) + ${M} ))
+	M=$(( $(usex miri 128 0) + ${M} ))
+	M=$(( $(usex rls 512 0) + ${M} ))
+	M=$(( $(usex rustfmt 256 0) + ${M} ))
+	# add 2G if we compile llvm and 256M per llvm_target
+	if ! use system-llvm; then
+		M=$(( 2048 + ${M} ))
+		local ltarget
+		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+		done
+	fi
+	M=$(( $(usex wasm 256 0) + ${M} ))
+	M=$(( $(usex debug 2 1) * ${M} ))
+	eshopts_push -s extglob
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		M=$(( 15 * ${M} / 10 ))
+	fi
+	eshopts_pop
+	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
+	M=$(( $(usex doc 256 0) + ${M} ))
+	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+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 && bootstrap_rust_version_check
+
+	if use system-llvm; then
+		llvm_pkg_setup
+
+		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+		export LLVM_LINK_SHARED=1
+		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+	fi
+}
+
+esetup_unwind_hack() {
+	# https://bugs.gentoo.org/870280
+	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
+	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
+	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
+	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
+	local fakelib="${T}/fakelib"
+	mkdir -p "${fakelib}" || die
+	# we need both symlinks, one for cargo runtime, other for linker.
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
+	export LD_LIBRARY_PATH="${fakelib}"
+	export RUSTFLAGS+=" -L${fakelib}"
+	# this is a literally magic variable that gets through cargo cache, without it some
+	# crates ignore RUSTFLAGS.
+	# this variable can not contain leading space.
+	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
+}
+
+src_prepare() {
+	# this supidity is needed because patch is too large to be in filesdir
+	# and if we move it to devspace - it lacks checksum for sig verification
+	if [[ "${PV}" == 1.64.0 ]]; then
+			sed -i \
+			-e 's/516ba32a547b46a8e80ad20d4a17bf24a00bff0b69b74f56df119f770f3dfff6/fc7eb88c2f5104865379128b76767d36ce5b5fdb9f3483e683d150e514ebc3a3/' \
+			-e 's/fba10dc8ca9eaf4d481cb82bd1540cf5c05620533c44f917c09a22ea55ef408c/9cc4d1b4511a1f0d91231eb0f11c67ae5e8e38e4becd0bf5eb9e26d043796056/' \
+			vendor/rustix/.cargo-checksum.json || die
+	else
+		die "remove sed mr forgetful maintainer"
+	fi
+	if ! use system-bootstrap; then
+		has_version sys-devel/gcc || esetup_unwind_hack
+		local rust_stage0_root="${WORKDIR}"/rust-stage0
+		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
+
+		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
+			--without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
+	fi
+
+	default
+}
+
+src_configure() {
+	filter-flags '-flto*' # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
+
+	local rust_target="" rust_targets="" arch_cflags use_libcxx="false"
+
+	# Collect rust target names to compile standard libs for all ABIs.
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
+	done
+	if use wasm; then
+		rust_targets+=",\"wasm32-unknown-unknown\""
+		if use system-llvm; then
+			# un-hardcode rust-lld linker for this target
+			# https://bugs.gentoo.org/715348
+			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
+		fi
+	fi
+	rust_targets="${rust_targets#,}"
+
+	local tools='"cargo"'
+	use clippy && tools+=',"clippy"'
+	use miri && tools+=',"miri"'
+	use profiler && tools+=',"rust-demangler"'
+	use rls && tools+=',"rls","analysis"'
+	use rustfmt && tools+=',"rustfmt"'
+	use rust-analyzer && tools+=',"rust-analyzer"'
+	use rust-src && tools+=',"src"'
+
+	local rust_stage0_root
+	if use system-bootstrap; then
+		local printsysroot
+		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
+		rust_stage0_root="${printsysroot}"
+	else
+		rust_stage0_root="${WORKDIR}"/rust-stage0
+	fi
+	# in case of prefix it will be already prefixed, as --print sysroot returns full path
+	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+	rust_target="$(rust_abi)"
+
+	# https://bugs.gentoo.org/732632
+	if tc-is-clang; then
+		local clang_slot="$(clang-major-version)"
+		if { has_version "sys-devel/clang:${clang_slot}[default-libcxx]" || is-flagq -stdlib=libc++; }; then
+			use_libcxx="true"
+		fi
+	fi
+
+	local cm_btype="$(usex debug DEBUG RELEASE)"
+	cat <<- _EOF_ > "${S}"/config.toml
+		changelog-seen = 2
+		[llvm]
+		download-ci-llvm = false
+		optimize = $(toml_usex !debug)
+		release-debuginfo = $(toml_usex debug)
+		assertions = $(toml_usex debug)
+		ninja = true
+		targets = "${LLVM_TARGETS// /;}"
+		experimental-targets = ""
+		link-shared = $(toml_usex system-llvm)
+		$(if [[ ${use_libcxx} == true ]]; then
+			echo "use-libcxx = true"
+			echo "static-libstdcpp = false"
+		fi)
+		$(case "${rust_target}" in
+			i586-*-linux-*)
+				# https://github.com/rust-lang/rust/issues/93059
+				echo 'cflags = "-fcf-protection=none"'
+				echo 'cxxflags = "-fcf-protection=none"'
+				echo 'ldflags = "-fcf-protection=none"'
+				;;
+			*)
+				;;
+		esac)
+		[llvm.build-config]
+		CMAKE_VERBOSE_MAKEFILE = "ON"
+		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
+		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
+		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
+		[build]
+		build-stage = 2
+		test-stage = 2
+		doc-stage = 2
+		build = "${rust_target}"
+		host = ["${rust_target}"]
+		target = [${rust_targets}]
+		cargo = "${rust_stage0_root}/bin/cargo"
+		rustc = "${rust_stage0_root}/bin/rustc"
+		rustfmt = "${rust_stage0_root}/bin/rustfmt"
+		docs = $(toml_usex doc)
+		compiler-docs = false
+		submodules = false
+		python = "${EPYTHON}"
+		locked-deps = true
+		vendor = true
+		extended = true
+		tools = [${tools}]
+		verbose = 2
+		sanitizers = false
+		profiler = $(toml_usex profiler)
+		cargo-native-static = false
+		[install]
+		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
+		sysconfdir = "etc"
+		docdir = "share/doc/rust"
+		bindir = "bin"
+		libdir = "lib"
+		mandir = "share/man"
+		[rust]
+		# https://github.com/rust-lang/rust/issues/54872
+		codegen-units-std = 1
+		optimize = true
+		debug = $(toml_usex debug)
+		debug-assertions = $(toml_usex debug)
+		debug-assertions-std = $(toml_usex debug)
+		debuginfo-level = $(usex debug 2 0)
+		debuginfo-level-rustc = $(usex debug 2 0)
+		debuginfo-level-std = $(usex debug 2 0)
+		debuginfo-level-tools = $(usex debug 2 0)
+		debuginfo-level-tests = 0
+		backtrace = true
+		incremental = false
+		default-linker = "$(tc-getCC)"
+		parallel-compiler = $(toml_usex parallel-compiler)
+		channel = "$(usex nightly nightly stable)"
+		description = "gentoo"
+		rpath = false
+		verbose-tests = true
+		optimize-tests = $(toml_usex !debug)
+		codegen-tests = true
+		dist-src = false
+		remap-debuginfo = true
+		lld = $(usex system-llvm false $(toml_usex wasm))
+		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+		# https://github.com/rust-lang/rust/issues/74976
+		# https://github.com/rust-lang/rust/issues/76526
+		deny-warnings = $(usex wasm $(usex doc false true) true)
+		backtrace-on-ice = true
+		jemalloc = false
+		[dist]
+		src-tarball = false
+		compression-formats = ["xz"]
+	_EOF_
+
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${rust_target}]
+			ar = "$(tc-getAR)"
+			cc = "$(tc-getCC)"
+			cxx = "$(tc-getCXX)"
+			linker = "$(tc-getCC)"
+			ranlib = "$(tc-getRANLIB)"
+			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
+		# but we patch it and set to false here as well
+		if use elibc_musl; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				crt-static = false
+			_EOF_
+		fi
+	done
+	if use wasm; then
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.wasm32-unknown-unknown]
+			linker = "$(usex system-llvm lld rust-lld)"
+			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
+			profiler = false
+		_EOF_
+	fi
+
+	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
+	# experimental cross support
+	# discussion: https://bugs.gentoo.org/679878
+	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
+	# it would be much better if we could split out stdlib
+	# complilation to separate ebuild and abuse CATEGORY to
+	# just install to /usr/lib/rustlib/<target>
+
+	# extra targets defined as a bash array
+	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
+	# best place would be /etc/portage/env/dev-lang/rust
+	# Example:
+	# RUST_CROSS_TARGETS=(
+	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
+	# )
+	# no extra hand holding is done, no target transformations, all
+	# values are passed as-is with just basic checks, so it's up to user to supply correct values
+	# valid rust targets can be obtained with
+	# 	rustc --print target-list
+	# matching cross toolchain has to be installed
+	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
+	# only gcc toolchains installed with crossdev are checked for now.
+
+	# BUG: we can't pass host flags to cross compiler, so just filter for now
+	# BUG: this should be more fine-grained.
+	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
+
+	local cross_target_spec
+	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
+		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
+		local cross_llvm_target="${cross_target_spec%%:*}"
+		# extracts toolchain triples, <rust-target>:<CTARGET>
+		local cross_triples="${cross_target_spec#*:}"
+		# extracts first element after before : separator
+		local cross_rust_target="${cross_triples%%:*}"
+		# extracts last element after : separator
+		local cross_toolchain="${cross_triples##*:}"
+		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
+		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${cross_rust_target}]
+			ar = "${cross_toolchain}-ar"
+			cc = "${cross_toolchain}-gcc"
+			cxx = "${cross_toolchain}-g++"
+			linker = "${cross_toolchain}-gcc"
+			ranlib = "${cross_toolchain}-ranlib"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		if [[ "${cross_toolchain}" == *-musl* ]]; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+			_EOF_
+		fi
+
+		# append cross target to "normal" target list
+		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
+		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+		rust_targets="${rust_targets},\"${cross_rust_target}\""
+		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+		ewarn
+		ewarn "Enabled ${cross_rust_target} rust target"
+		ewarn "Using ${cross_toolchain} cross toolchain"
+		ewarn
+		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+			ewarn "'sys-devel/binutils[multitarget]' is not installed"
+			ewarn "'strip' will be unable to strip cross libraries"
+			ewarn "cross targets will be installed with full debug information"
+			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+			ewarn
+			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+			ewarn
+		fi
+	done
+	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+	einfo "Rust configured with the following flags:"
+	echo
+	echo RUSTFLAGS="\"${RUSTFLAGS}\""
+	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
+	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
+	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
+	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+	env | grep "CFLAGS_.*"
+	echo
+	einfo "config.toml contents:"
+	cat "${S}"/config.toml || die
+	echo
+}
+
+src_compile() {
+	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -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() {
+	(
+	IFS=$'\n'
+	env $(cat "${S}"/config.env) DESTDIR="${D}" \
+		"${EPYTHON}" ./x.py install	-vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+	)
+
+	# bug #689562, #689160
+	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
+	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+
+	local symlinks=(
+		cargo
+		rustc
+		rustdoc
+		rust-gdb
+		rust-gdbgui
+		rust-lldb
+	)
+
+	use clippy && symlinks+=( clippy-driver cargo-clippy )
+	use miri && symlinks+=( miri cargo-miri )
+	use profiler && symlinks+=( rust-demangler )
+	use rls && symlinks+=( rls )
+	use rustfmt && symlinks+=( rustfmt cargo-fmt )
+	use rust-analyzer && symlinks+=( rust-analyzer )
+
+	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
+	local i
+	for i in "${symlinks[@]}"; do
+		# we need realpath on /usr/bin/* symlink return version-appended binary path.
+		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
+		# need to fix eselect-rust to remove this hack.
+		local ver_i="${i}-${PV}"
+		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
+			einfo "Installing ${i} symlink"
+			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
+		else
+			ewarn "${i} symlink requested, but source file not found"
+			ewarn "please report this"
+		fi
+		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
+	done
+
+	# symlinks to switch components to active rust in eselect
+	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
+	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
+	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
+	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
+	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+
+	newenvd - "50${P}" <<-_EOF_
+		LDPATH="${EPREFIX}/usr/lib/rust/lib"
+		MANPATH="${EPREFIX}/usr/lib/rust/man"
+	_EOF_
+
+	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+
+	# note: eselect-rust adds EROOT to all paths below
+	cat <<-_EOF_ > "${T}/provider-${P}"
+		/usr/bin/cargo
+		/usr/bin/rustdoc
+		/usr/bin/rust-gdb
+		/usr/bin/rust-gdbgui
+		/usr/bin/rust-lldb
+		/usr/lib/rustlib
+		/usr/lib/rust/lib
+		/usr/lib/rust/libexec
+		/usr/lib/rust/man
+		/usr/share/doc/rust
+	_EOF_
+
+	if use clippy; then
+		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+	fi
+	if use miri; then
+		echo /usr/bin/miri >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+	fi
+	if use profiler; then
+		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
+	fi
+	if use 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
+	if use rust-analyzer; then
+		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
+	fi
+
+	insinto /etc/env.d/rust
+	doins "${T}/provider-${P}"
+
+	if use dist; then
+		insinto "/usr/lib/${PN}/${PV}/dist"
+		doins -r "${S}/build/dist/."
+	fi
+}
+
+pkg_postinst() {
+	eselect rust update
+
+	if has_version 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
+}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2022-10-07 21:11 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2022-10-07 21:11 UTC (permalink / raw
  To: gentoo-commits

commit:     51e5cc9939d77ed4921dd8a05455c78c8cb7a0a4
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Fri Oct  7 14:52:28 2022 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Fri Oct  7 21:11:13 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=51e5cc99

dev-lang/rust: Update patch for libressl 3.6.x

Signed-off-by: orbea <orbea <AT> riseup.net>
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 dev-lang/rust/files/1.64.0-libressl.patch | 24 ++++++++++++++++++++++++
 dev-lang/rust/rust-1.64.0-r1.ebuild       |  9 ++++++++-
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/dev-lang/rust/files/1.64.0-libressl.patch b/dev-lang/rust/files/1.64.0-libressl.patch
new file mode 100644
index 0000000..88d4789
--- /dev/null
+++ b/dev-lang/rust/files/1.64.0-libressl.patch
@@ -0,0 +1,24 @@
+From: orbea <orbea@riseup.net>
+Date: Sun, 3 Jul 2022 18:38:28 -0700
+Subject: [PATCH] Support LibreSSL 3.x.x
+
+--- a/vendor/libssh2-sys/build.rs
++++ b/vendor/libssh2-sys/build.rs
+@@ -121,6 +121,7 @@ fn main() {
+         cfg.define("HAVE_EVP_AES_128_CTR", None);
+         cfg.define("HAVE_POLL", None);
+         cfg.define("HAVE_GETTIMEOFDAY", None);
++        cfg.define("HAVE_OPAQUE_STRUCTS", None);
+ 
+         cfg.file("libssh2/src/openssl.c");
+ 
+--- a/vendor/openssl-sys/build/main.rs
++++ b/vendor/openssl-sys/build/main.rs
+@@ -254,6 +254,7 @@ See rust-openssl README for more information:
+             (3, 3, _) => ('3', '3', 'x'),
+             (3, 4, 0) => ('3', '4', '0'),
+             (3, 4, _) => ('3', '4', 'x'),
++            (3, _, _) => ('3', 'x', 'x'),
+             _ => version_error(),
+         };
+ 

diff --git a/dev-lang/rust/rust-1.64.0-r1.ebuild b/dev-lang/rust/rust-1.64.0-r1.ebuild
index b385ace..71eb093 100644
--- a/dev-lang/rust/rust-1.64.0-r1.ebuild
+++ b/dev-lang/rust/rust-1.64.0-r1.ebuild
@@ -162,7 +162,7 @@ RESTRICT="test"
 VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
 
 PATCHES=(
-	"${FILESDIR}"/1.62.0-libressl.patch
+	"${FILESDIR}"/1.64.0-libressl.patch
 	"${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
 	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
 	"${FILESDIR}"/${PV}-vendor-rustix-sparc-has-no-SIGSTKFLT.patch
@@ -292,6 +292,13 @@ src_prepare() {
 			--without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
 	fi
 
+	# this libressl version check is terrible
+	sed -e 's/d397af804c0b786978867528635fa9148cd2ad0e6abd591ace21b5bd3719c38d/896afea18b1072d4c715421ff2ed7e428b57aadec44d4680dcb991a6229a1edc/' \
+		-i vendor/openssl-sys/.cargo-checksum.json || die
+	# fix for libressl
+	sed -e 's/7d5ca02f34cffe51db3568c500c9a8a70cef879871a0f466e3344142644acf12/e9eef35f1c18dd9844960d1d315e84ad99a05ab1247f0f54e3c2eab244988256/' \
+		-i vendor/libssh2-sys/.cargo-checksum.json || die
+
 	default
 }
 


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2022-11-15 21:18 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2022-11-15 21:18 UTC (permalink / raw
  To: gentoo-commits

commit:     8feabee16007a956a845122f52af0441fe8e97c8
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Tue Nov 15 02:23:32 2022 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Tue Nov 15 21:17:42 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=8feabee1

dev-lang/rust: Add 1.65.0

Signed-off-by: orbea <orbea <AT> riseup.net>
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 dev-lang/rust/Manifest                             |  34 +
 ....0-ignore-broken-and-non-applicable-tests.patch |  40 ++
 dev-lang/rust/rust-1.65.0.ebuild                   | 769 +++++++++++++++++++++
 3 files changed, 843 insertions(+)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 2dc05c8..b427a92 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -94,9 +94,43 @@ DIST rust-1.63.0-x86_64-unknown-linux-gnu.tar.xz 155435832 BLAKE2B d5427a7380a21
 DIST rust-1.63.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 0b4465f1afbf2f5f9135cf722632ffd7df9ef4e92c65e9ef6d4aede5b1ff392973949a6737e88685033ee571dfefe9b099d477480d7aaec2a329926a87a6f5b2 SHA512 0c8d339204a23000cdebfaee7faaa576673bd8d98111ea187f5e19f03f7231f3bbec8158c5b04d8d903877f1addeebc9f4fdc6b1de0fc0ad2995742987eafb1c
 DIST rust-1.63.0-x86_64-unknown-linux-musl.tar.xz 87887273 BLAKE2B 260bb89b8a72c063b3943c07e0720c8a910d73fdeee281d0711e1c7c378f76fbbe815ecad2e517efbd4ce664ed0e12b2e6bfccebf32b233c0fd1e5d9c930919c SHA512 da7a521eb335ffd655a25dc312ca7f1d5d1dea6846a651e7ae7086bd079323a3a7ff94e1c474b6b45e39f2e989b261d20dcdd8f906f7784739d97a4fa52ba97e
 DIST rust-1.63.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 2681d77ffb4c40305ff532f975a9e31ea72a50fa2a25661ecd721a50f081a4ab3a659b2a06500540dbf21357af098add2a4a4dec63f50d5b3ed4c041fe4b49dd SHA512 012b2cb560e0d2514eb288960e6a3703f9be9a7e611b915f07f1150645b8527fe653d3fbb795ad62c5e431cb4ca175a915710913eb2b9f2912c188d17baa0d14
+DIST rust-1.64.0-aarch64-unknown-linux-gnu.tar.xz 245636524 BLAKE2B 90e405bc6e7f47aec091924bcd7a35017d591936b2697f2b0ddc5271e65fa431cc193a2b392489b6636896fa2d4f3d8f5096d197cfed36e812ea7f3986130c85 SHA512 c163b19a56148646ebbdb10b5b20459a206b4a1c45a2de9ce69f2e45dc5527cc69920f81007ee6fb75080782d534a2a39f7580d0c8cfdcf36ebed971b2513b63
+DIST rust-1.64.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 3ed79e6a5168676c19b9092692576b72b7bee6cc6fc6fc9213d492ac9641974e0bfefd9eee2663852580ee05038becb3045ff4410fe96aa8e529afc4d3652abb SHA512 14e635fbd60512e8d36c50c2c07d510236cc73661a6294f0a01fe260a945581885c60783e72cbcc0d85b87a161e0940b34b496380bbab659c6e5d0dbb4050a4d
+DIST rust-1.64.0-aarch64-unknown-linux-musl.tar.xz 226328036 BLAKE2B 43119c95866b3bd7e1b0832079f4fa23d79f5168e1aeb1d9a984897486cdaabbf035150e5633114c3d87afc8cf47e2d591e7c32961cc7cef99595fec303bc348 SHA512 8af3a7293b73d5f3129a17651cc8009290e5eade4802a872bb2a568444c60b4227a89d419c751fa394bf81a38f553a7418a0abd6ec3234737148d1561b91bace
+DIST rust-1.64.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 4807f2cef672af6be484e5a7368110ebc84d4bb7aa0f97819171c43b066fac041aa341bc5df696347ecdc7e5de37dc8c159ef7308c8a487c105b977edc794a7b SHA512 ec4c9eb3d9207970f19ca9d6b12bfc293786fed57e20a3a9fa25fc6b70a80a12752c6f57c095731edc1fde1c608a94f7d89e89219f8ecd89a13758df891cc0ee
+DIST rust-1.64.0-arm-unknown-linux-gnueabi.tar.xz 207018112 BLAKE2B 1f8d1bb48e5f529b84c99a6941aa0c3c6d49287492b9f63f8e9d5688bd530c67ce9ea2dcd8951a34c96d54d559f4e84cdb569397613bbedba892341fd90817d9 SHA512 07dfe4449359c89719f440da7986f35fdc1873270a8910a708a0f37daef10cf7d8dca7b6b4fb6d741bed490ba12d4e9b455aa1d13d9ae80f22e2b9c879beafac
+DIST rust-1.64.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B d0653612a7e9bd4cf27ae5f7f4152ee0f14fde8d5e20a7b738a6925e395083ac851500e2b65e0a40a5b883fa441f11ec7574a5e40b4964fb38f237bdf0b17349 SHA512 3314a83af0a0fd2dbd73531952002a47d89ef155cf68037b387c5c7afbe7dc69c68bf0fa429eb45a721ae9176a82a876de04091e8fc3929c3c4825ee214c6124
+DIST rust-1.64.0-arm-unknown-linux-gnueabihf.tar.xz 208017632 BLAKE2B fc10f068fb154021391c309f36d2d18bdfe09b3e17d9ac02e8f0c258d87959ce7b62dfab80ebbfc6d0c68fa6beeb25daa7b7b3a7ce763637121c7afdcb32699a SHA512 bac5fe98e68a782683a5df0d199e8ce67d9db9fbe9f590075b34e33c898198d372abd94eeef48330d1a7799fa1396add3b1ffc154281dd5bd276f4409e3b4027
+DIST rust-1.64.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 210e7de45ab02fd2c83c1978104cedd28daa2499e475143660d5e3a6a4dd4897a866c6df22f929c61da08d2b61df489277fff73492a7e7a7749f2fe293de97df SHA512 221a0a70c03e049d2c6095575a2aabe1d32937123c86550b1f6f1b23734e996ff4bfc167b7e679809e3e383c25f15100772d8f75456e556d4ebd3aa73d789908
+DIST rust-1.64.0-armv7-unknown-linux-gnueabihf.tar.xz 212867232 BLAKE2B b3f9501c4cd68d9ca59d8a5c49cc512c0a97605eb74158c590db4ceabce5ff1aa99373c676d15676627c0631de8b58bfc4ca21463dd1109d6ec6451db909bea4 SHA512 3fc482ed9dd1648ccfd2fb459eb7c738ca26eab396b1a39b316cef10b8663e97b0ec008035936cf5e47f7cf9f8a0416cf09d638af174ffdf5b58b54b2ecb6975
+DIST rust-1.64.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B ba21487ad1a304be6cf2a12446ed674fb67e9d4b1b107ca675af236a45de6647bf96512a70a2e813466e85d388b51c674dc7435c185011ec9572bf28cbf513f6 SHA512 384f09eec47175b2cc40560a6b2ad4e792ab4b78e5c750231a312858882281ef33b40e797ccbb0a0bcb2ea3dfae4703b80941d936eb4cea229166375511b1514
+DIST rust-1.64.0-i686-unknown-linux-gnu.tar.xz 232295664 BLAKE2B 452a13cb499a29167a403b54d86c08fa84b4a10d51d7ef37954bc79f13d0ada0b3a256b32f804977d03b9e31331ef250e160b14f1c8fcdf93876001b9827957a SHA512 763966e449ce46e998f0ed9670d7e6cfae3a7147360c9cb85003cf382e1e01dabc1a448d35a102aafa96105fa65c284ec161b9bfa5061225de6d6acbf40ad480
+DIST rust-1.64.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b6055151a6442c5ae5968a380e3c5e9367307f91bc7304bcbd90d2a9434145682a70416125bb8dfecfcfce5449e6497591034adbfd4b5537601492757915c131 SHA512 1bb9b52aca4fc0f300e31d96e5fe5fbe0bec45a1ed848da66e1c83ef4fea20ebec86478ed94efd13dad3f8c6d52a330356d39a894387b87202e66400268fd4e0
+DIST rust-1.64.0-mips-unknown-linux-gnu.tar.xz 167831852 BLAKE2B 76e00291f2e2b18f2261677c1d6e322f8fef01da96514306b1fefc1a29e7e4fd0e5971614ad5c3a03a9a54321a01954d856b21df032205317c21b37470a6909c SHA512 29965d77a7fd6bcc74862d1c24a5f4843eb1870ece25691afdfa464c66617cb683cc73f8b991dee96d06e5e4791f6b71f7c81cf4f1d97539c3b9cbb15bf490da
+DIST rust-1.64.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 81f100c9a788c863b2f2388e7264b8e6b4ea062fd46d6c0e922561f491cf86227c46511ab538d8bc56a9b2d01d2ae19f105966ea00f2ea86592128e4c26b55ae SHA512 41e59d670efc9085c6e3ed59bb8808dc747eebfbd65ed976da04ff70095d91f15b43f8d257a09d2a6ee1cb07c5d1f49081529e0fc8234a26599a28ddaf167f4b
+DIST rust-1.64.0-mips64-unknown-linux-gnuabi64.tar.xz 172953460 BLAKE2B 68aa0d08ba233ebe95c1107574ce9165cc2afc0a43db044b6951055e30f22ed6070f9fe10f0482923f767e39fb99f887da59dcf679c3e9c16345f943b0c3012c SHA512 59250c13e980fc38b6da08faf7713c1c9ea2865793cfb0032a65a499bbfd4f7af94604bbdab4e0fd34a0be6b74db8cdcb8c3859e5c13d8a29d8c953d67a9bc84
+DIST rust-1.64.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B eb53e83dde3acdc3cfb84c7285a1373c4059c0c06e4cfe855339ce817a0a8cbea33da9fa0894a9640871003e8058482e46a31b04dd9ad1d8ae8e9ac1b3c72f7b SHA512 2e8438ca78bfd610c8c7b99a4aa2663cfddc611fa4495f490789d7838b80a8f90b9eb7f59171da187fdbc8a17b4ebc20eb69ccdaa75cca4966246e78dd41473d
+DIST rust-1.64.0-mipsel-unknown-linux-gnu.tar.xz 172189848 BLAKE2B aff9136ab374a3e39674c17b1ffa4fb8fe077301284b5dde927e0cf56e51edbb912b40d852aac4ad4d4e39f3ae20e68174dac338af6682735e8a031607652176 SHA512 9283e1e9eeff6c67c49e656709e1a6c6c52329aa913c6024af3aebd889b594f48f0c8172270c579a52d5980f7a42730a6184254b5c8002928f8f93c484dad211
+DIST rust-1.64.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 613ac8c773cc6585a99295e2770879cf7a9a56e1ac43256a1d8a56a12bd9b8aa08e49df96819805f4e98230d5c6d106eae837102c21f044e7e0b7756c453c529 SHA512 24d15870efaf03a916d69a358871a427869bc41ce164dcf8968564dc3f213603d0572f34b8ebbcd98d6653ff1e70664baf8c2dbdb32a0779f361338d4d3a0f43
+DIST rust-1.64.0-powerpc-unknown-linux-gnu.tar.xz 204541208 BLAKE2B 5bbd65d8aece3e32bca62d8a8b210cf155a786501c96e509462d0c45b15f19910794ff85ade0c42b575f41bd47f4f3250c011152b968ff1ad000ead6b7a200ad SHA512 13cc41679bf1bdb94d042de18696685087f3bfc84c0f99567b8c9dc6a5796c0f122499254ca8032eced8fa53623133a8b6652e14f398a9cea95ac3364a227f45
+DIST rust-1.64.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f4ed9d8a006f787d67b7aa18361079724dad1378416fabf18d380a67a45db6475d7da8e5389a057fd117da6af6dc7d891f9e6567af09f91c538ba6459b4e12db SHA512 f616b0e5ef7e0689f33905864c8d48405e18b5ada73c3cb9a8f9a6d80173ee3abf10448403fe7790be902123d55295412ff7af77db4770f6c824439af39e0a20
+DIST rust-1.64.0-powerpc64-unknown-linux-gnu.tar.xz 210911224 BLAKE2B b8726c1036d8de07684a7ed439a7d8365722d1224644a76219df776fc6bb0c97200afbc92a6054cbe0e98127c239cde9c06ef56a73a92b9ff320c135f8c0ecaf SHA512 8ed6150a13dfa136e16e0cee775f8c9d2926569fa17b6b88fb4e9ce1c1a127c8fda828a944e18e2bf184a0ae39a61db478103ad96acb6139e7cb25b69efdffcd
+DIST rust-1.64.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b8659a6b076db11acf124d73492fd21250df3924323616931cd8a8bfd5bb00ee1c48caf4e2448bd8e0120a3bf838cf73dcb810bfae8f87d487fb507b0ad132af SHA512 c24287ac0d49fda9fdc63421cc1901b8b55fee8b0701436a2d2c809ea03cec666b5a3c941a400bf73f4365576fc2a3bac85060013df76275dcc3dc32d376bbaa
+DIST rust-1.64.0-powerpc64le-unknown-linux-gnu.tar.xz 224504724 BLAKE2B dfe47070e6f9c1812b0d980c98e21c71e3d34ca41d7c4c0995b559a02cf394ec6043500a34f245624588fccd83335c32a4c57bb092b3c079f705ab4d8f1547d9 SHA512 545b1076d7bb3d32775e1a7343cbe1c6feaf5042f7a4524841970846b64251b5bc7be080994f129868f183072fb793f32a8a0ab588ac9b484e25cfac636630b8
+DIST rust-1.64.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 757dfda571cca4c2028464701970e66fc0a644cf2eec71b52ad6e499b05b3f4af1a9d4515b7ae116b07d5231b8e81ecc0a9e07c9e6603a5babada41e860f6b83 SHA512 fb22306416bb6b3021e53eebb97cb5f34a64873124b0c25409115feba2c2955082456b47b383e4ddaf3ce440b64547d9eabe444b75a78014aa119f7299bec99d
+DIST rust-1.64.0-riscv64gc-unknown-linux-gnu.tar.xz 191293592 BLAKE2B c32eb7b75b33b1eb53eab0b5823ade30c6dcffd8daddf04b7914a5f48ace80873573392659c5bd5a525cd954a9f078cdefba2873a3a1905f58cf9307360a4791 SHA512 b6e97215a5e8fa6f42cd609dd949f598f69779e8318f3c44e757f7c38fc67588db8169e0f263c7f121cdd3bd8c6cc225a32cc3aa80fcd7f718f9bee6f15cd94c
+DIST rust-1.64.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d922b1c72bd0fb7cfa0455f56d8c6ecee491a96e6bc54c0058ff01d8b152c2a87b4ade33f4445f345564fd1a2c9a54b81b52c1a37a32f1f91a78acc82a568567 SHA512 8860237891950bf1b9b958c950194b3617c5a865bdb1ea7834e84f74781b26959fb8a729d2043ee8cd63ee1144e307691b4adaf252d31c72f4e02ba60cea694e
+DIST rust-1.64.0-s390x-unknown-linux-gnu.tar.xz 225451932 BLAKE2B f7043af9d80b814e8b7988be8ddd2e14df361d08d89e96aed93a99b15719288aee064ed496008e486ee424cd8a9fa0edb78b34addd00646c1359d2bf504317ec SHA512 92702533159a4009be38314f03e26d36b45869709a0bc8f6394dddbd1ff61529f928071dadec36ba325cde589c5ac6b649ffc3c6db625473ed54e1686ada1723
+DIST rust-1.64.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 64c74bd0bb84f4c751dc1de20d12bfb9370cdf1db7957db07fa2f58ad692a10b8ee11a5c4bedc2f66f0291a91a1346d00de8e6f7ab57cd151003447aa8481dc9 SHA512 6301908c83618b61543c28026682901a342fb562b1cd1a2f78f8b0a388f06ea42b943bf822a67c2c4b1a2b4236250673a9d5bba95b85e182131a97395bffecbc
+DIST rust-1.64.0-x86_64-unknown-linux-gnu.tar.xz 161922032 BLAKE2B e8a0d13deab59b5f6e50aaf5a9fc39e032b759dadf4a7034f8824677de34940fab0e6e430299379f305f0849556608fc7db207db52bea6523ad83abda4e04624 SHA512 ab687e9142963c5f9d6d577022a0783eea9a3473ff6186950d2c6a15640bf7d3042857eaa1bffc1e472385893eded6e171d7f59dce988752830697398c766bd1
+DIST rust-1.64.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d13ab08a8ce4b9a92c60ab5b8c21087158b66d9a673b7a960103757a2b12216cab8e7713cda08753a5f5f921aa9c7d571da77a90166d6e7362549a49d6c1a501 SHA512 fda5b45652c0929fea19146dd2c5a895ae4c6db9a1bf448a7364899854ffa06a8eb52b35bfe28c8acdfb1633cd8afe6c5eabd622b7887ed267b1b72220ef4e6f
+DIST rust-1.64.0-x86_64-unknown-linux-musl.tar.xz 265843112 BLAKE2B 2b267b5b9aae610734759a690e36600eeeedab7e0b679e651df269d7b71b147984c1d16cab4658076f05a8a854afc74d83e6e61dac3a8a6bf2b56660d3483285 SHA512 c722ddb6a7bfc5b8767e2a37e697f625b4e775582423720d1b01737ec3269c82e2212f7e5a672a062fa49c8c15c0d2d182ea14dd048cfd9e07704cbc04fd8ef0
+DIST rust-1.64.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 783791aca41910e8074fd1c7f29e6fc1fdf51f80b1515bac99431305dbe6085574b2b2366c087675b6a9d98931a0cff1117cd864f634fdb4dd53792aab8ce5f9 SHA512 a6d0a72e9edbbc1e6caef7a9c0ec46518b95172afa4a33b2258286458d7b9afe72f9de8411a83567520a126b8377777e125cc639bac197a0495f17120fbcc1ad
 DIST rustc-1.62.1-src.tar.xz 135644156 BLAKE2B ff8428362153770c57d53cb7eef07b75944d47ec747d9c337cc7ba9f38dfd749415c9a00acf9d9d8743874ba1c51da7915315bd25e011eeb8a2aaa8812773850 SHA512 6f7fa855acdf20525e907a6fc8c7aa8b206603e3bcbd532d3bdce165380f0019f45dba2b2b06d20b541381accf67ca0d256fbddfcb1642a2e60e1237807d5410
 DIST rustc-1.62.1-src.tar.xz.asc 801 BLAKE2B dd0e917f8b587eb8318a9c820df5ee9a052f14e7dea05d8afcb3cf687fa2e362e6d2f4d20fa94a19bdf97227c9ef29548a6e267ffd9113bfdc36cc42f341d8b8 SHA512 698bfd419c218a6cccce04869279708cf6084adc464a64d7dd1c981c0577249cd06b4de132634085c792c838aa1e1beaa11a5a06ea0e5f4c1a6f4e28afe65a3c
 DIST rustc-1.63.0-src.tar.xz 136597192 BLAKE2B 52eb64ee11e7d9724a4c2654f7eea13521959ac5e04a4925eed5c89ec3661a7827146d6f9a9d05c98466bd4b74393af7bb18d9f418c785924f559833434dfe38 SHA512 0dd3cd1546bd9c1438afe0c4694e1ed80507f6b437674682c0474e13f83457e9ced4560ddeee58602e01837140f9e34a9e24c6828643dd6f613e07755af6997c
 DIST rustc-1.63.0-src.tar.xz.asc 801 BLAKE2B b6c133768e368a7aeb0a4612a4c824d13f91ccdca6660feb5774ed6d79537084020780532c882ae3c9e4b6be3d36ceb0652eb134a580293ba8d8be74c4ba3c6e SHA512 f8807d46b9a3ca2a15a60f8062d63b3ee6e3210657cc752c948b3c7aa1626ec63cbd57529d010ad33f07ac47cf70dbf2cb50f200587338f77c631fc9e6786b17
 DIST rustc-1.64.0-src.tar.xz 137841332 BLAKE2B 8acd9e0a4632ba2114018a5cd3f2d544324c601c246658f60a9e0be513c40375434d0a416f0bfd4d24493eae3fec7c9f5bb52d008c88cde14de503a3b6873dd1 SHA512 919f40acd8c6eaaef399aa3248503bea19feb96697ab221aaede9ee789ce340b47cb899d1e0e41a31e5d7756653968a10d2faaa4aee83294c9f1243949b43516
 DIST rustc-1.64.0-src.tar.xz.asc 801 BLAKE2B 69f7bd7600d99794859c6fad4b44f0e98868e4e16041d6fe81d9d09a8435c75abac67a735adb0b81a2d9f85651841d404bc1ef4cd64fccd75e8a25d6d95729d0 SHA512 a831e3941849add1082c5b47b619ea87405b875d6eeb90a35f42742a511d124c29503debd17dcc8c6aa9e03a754ab51c3a15e99192bdd0dd1b8a59af9b6eb0b8
+DIST rustc-1.65.0-src.tar.xz 139674928 BLAKE2B a218263fb67e306b153f5a6dae95b5ec653acaa5eb4b833862d6f0fd4685a8cec097dadc1b8a934e1bf6055672c7a617f9a0ad4a7dbf2e78084297f10b7ada04 SHA512 3d0369ed3028209c4ecb9b9e7b5f5e3a20be8cc05199675df4f091d62a96c0734bc1dbd7630928fe162792392ec6d0daf9ceed10771531ce022200c7b631e3be
+DIST rustc-1.65.0-src.tar.xz.asc 801 BLAKE2B 43ff92011cd6f7f34ce0495fa341379e5907d032ea90f91e533e5edaec6ad518aad50a9d8b2694074d6909ee96aa779403b16e95792e962e79c1b967542ae26f SHA512 75b9be53363022c81333117876cbcc573bbd4733edf767cbb164218644efb1a9c4bfc2aa73aaa1e39f248a84f1adacb1930a94a6e63f60093ff760fb9ae02efc

diff --git a/dev-lang/rust/files/1.65.0-ignore-broken-and-non-applicable-tests.patch b/dev-lang/rust/files/1.65.0-ignore-broken-and-non-applicable-tests.patch
new file mode 100644
index 0000000..fddda12
--- /dev/null
+++ b/dev-lang/rust/files/1.65.0-ignore-broken-and-non-applicable-tests.patch
@@ -0,0 +1,40 @@
+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/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/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/rust-1.65.0.ebuild b/dev-lang/rust/rust-1.65.0.ebuild
new file mode 100644
index 0000000..b6d95fb
--- /dev/null
+++ b/dev-lang/rust/rust-1.65.0.ebuild
@@ -0,0 +1,769 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..11} )
+
+inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
+	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.xz"
+	KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+SRC_URI="
+	https://static.rust-lang.org/dist/${SRC}
+	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
+	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
+"
+
+# 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 dist doc llvm-libunwind miri nightly parallel-compiler profiler rls rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+
+# Please keep the LLVM dependency block separate. Since LLVM is slotted,
+# we need to *really* make sure we're not pulling more than one slot
+# simultaneously.
+
+# How to use it:
+# List all the working slots in LLVM_VALID_SLOTS, newest first.
+LLVM_VALID_SLOTS=( 15 )
+LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
+
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+# (-) usedep needed because we may build with older llvm without that target
+LLVM_DEPEND="|| ( "
+for _s in ${LLVM_VALID_SLOTS[@]}; do
+	LLVM_DEPEND+=" ( "
+	for _x in ${ALL_LLVM_TARGETS[@]}; do
+		LLVM_DEPEND+="
+			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
+			wasm? ( sys-devel/lld:${_s} )"
+	done
+	LLVM_DEPEND+=" )"
+done
+unset _s _x
+LLVM_DEPEND+=" )
+	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
+"
+
+# to bootstrap we need at least exactly previous version, or same.
+# most of the time previous versions fail to bootstrap with newer
+# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
+# but it fails to bootstrap with 1.48.x
+# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
+RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
+RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
+BOOTSTRAP_DEPEND="||
+	(
+		=dev-lang/rust-"${RUST_DEP_PREV}"
+		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
+		=dev-lang/rust-"${RUST_DEP_CURR}"
+		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
+	)
+"
+
+BDEPEND="${PYTHON_DEPS}
+	app-eselect/eselect-rust
+	|| (
+		>=sys-devel/gcc-4.7
+		>=sys-devel/clang-3.5
+	)
+	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
+	!system-llvm? (
+		>=dev-util/cmake-3.13.4
+		dev-util/ninja
+	)
+	test? ( sys-devel/gdb )
+	verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+	>=app-arch/xz-utils-5.2
+	net-misc/curl:=[http2,ssl]
+	sys-libs/zlib:=
+	dev-libs/openssl:0=
+	system-llvm? (
+		${LLVM_DEPEND}
+		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
+	)
+	!system-llvm? (
+		!llvm-libunwind? (
+			elibc_musl? ( sys-libs/libunwind:= )
+		)
+	)
+"
+
+RDEPEND="${DEPEND}
+	app-eselect/eselect-rust
+	sys-apps/lsb-release
+"
+
+# FIXME: https://bugs.gentoo.org/874885
+# rust-analyzer should work with wasm, but currently does not
+REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
+	miri? ( nightly )
+	parallel-compiler? ( nightly )
+	rls? ( rust-src )
+	rust-analyzer? ( !wasm )
+	test? ( ${ALL_LLVM_TARGETS[*]} )
+	wasm? ( llvm_targets_WebAssembly )
+	x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+	usr/lib/${PN}/${PV}/bin/.*
+	usr/lib/${PN}/${PV}/libexec/.*
+	usr/lib/${PN}/${PV}/lib/lib.*.so
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+	usr/lib/${PN}/${PV}/lib/lib.*.so.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+	"${FILESDIR}"/1.64.0-libressl.patch
+	"${FILESDIR}"/1.65.0-ignore-broken-and-non-applicable-tests.patch
+	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
+	"${FILESDIR}"/1.64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch
+)
+
+S="${WORKDIR}/${MY_P}-src"
+
+toml_usex() {
+	usex "${1}" true false
+}
+
+bootstrap_rust_version_check() {
+	# never call from pkg_pretend. eselect-rust may be not installed yet.
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
+	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
+	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
+		eerror "Rust >=${rustc_wanted} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too old"
+	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
+		eerror "Rust <${rustc_toonew} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too new"
+	else
+		einfo "Using rust ${rustc_version} to build"
+	fi
+}
+
+pre_build_checks() {
+	local M=8192
+	# multiply requirements by 1.3 if we are doing x86-multilib
+	if use amd64; then
+		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
+	fi
+	M=$(( $(usex clippy 128 0) + ${M} ))
+	M=$(( $(usex miri 128 0) + ${M} ))
+	M=$(( $(usex rls 512 0) + ${M} ))
+	M=$(( $(usex rustfmt 256 0) + ${M} ))
+	# add 2G if we compile llvm and 256M per llvm_target
+	if ! use system-llvm; then
+		M=$(( 2048 + ${M} ))
+		local ltarget
+		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+		done
+	fi
+	M=$(( $(usex wasm 256 0) + ${M} ))
+	M=$(( $(usex debug 2 1) * ${M} ))
+	eshopts_push -s extglob
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		M=$(( 15 * ${M} / 10 ))
+	fi
+	eshopts_pop
+	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
+	M=$(( $(usex doc 256 0) + ${M} ))
+	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+# Is LLVM being linked against libc++?
+is_libcxx_linked() {
+	local code='#include <ciso646>
+#if defined(_LIBCPP_VERSION)
+	HAVE_LIBCXX
+#endif
+'
+	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
+	[[ ${out} == *HAVE_LIBCXX* ]]
+}
+
+pkg_pretend() {
+	pre_build_checks
+}
+
+pkg_setup() {
+	pre_build_checks
+	python-any-r1_pkg_setup
+
+	export LIBGIT2_NO_PKG_CONFIG=1 #749381
+
+	use system-bootstrap && bootstrap_rust_version_check
+
+	if use system-llvm; then
+		llvm_pkg_setup
+
+		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+		export LLVM_LINK_SHARED=1
+		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+	fi
+}
+
+esetup_unwind_hack() {
+	# https://bugs.gentoo.org/870280
+	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
+	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
+	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
+	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
+	local fakelib="${T}/fakelib"
+	mkdir -p "${fakelib}" || die
+	# we need both symlinks, one for cargo runtime, other for linker.
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
+	export LD_LIBRARY_PATH="${fakelib}"
+	export RUSTFLAGS+=" -L${fakelib}"
+	# this is a literally magic variable that gets through cargo cache, without it some
+	# crates ignore RUSTFLAGS.
+	# this variable can not contain leading space.
+	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
+}
+
+src_prepare() {
+	# this supidity is needed because patch is too large to be in filesdir
+	# and if we move it to devspace - it lacks checksum for sig verification
+	if [[ "${PV}" == 1.65.0 ]]; then
+			sed -i \
+			-e 's/516ba32a547b46a8e80ad20d4a17bf24a00bff0b69b74f56df119f770f3dfff6/fc7eb88c2f5104865379128b76767d36ce5b5fdb9f3483e683d150e514ebc3a3/' \
+			-e 's/fba10dc8ca9eaf4d481cb82bd1540cf5c05620533c44f917c09a22ea55ef408c/9cc4d1b4511a1f0d91231eb0f11c67ae5e8e38e4becd0bf5eb9e26d043796056/' \
+			vendor/rustix/.cargo-checksum.json || die
+	else
+		die "remove sed mr forgetful maintainer"
+	fi
+	if ! use system-bootstrap; then
+		has_version sys-devel/gcc || esetup_unwind_hack
+		local rust_stage0_root="${WORKDIR}"/rust-stage0
+		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
+
+		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
+			--without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
+	fi
+
+	# this libressl version check is terrible
+	sed -e 's/d397af804c0b786978867528635fa9148cd2ad0e6abd591ace21b5bd3719c38d/896afea18b1072d4c715421ff2ed7e428b57aadec44d4680dcb991a6229a1edc/' \
+		-i vendor/openssl-sys/.cargo-checksum.json || die
+	# fix for libressl
+	sed -e 's/7d5ca02f34cffe51db3568c500c9a8a70cef879871a0f466e3344142644acf12/e9eef35f1c18dd9844960d1d315e84ad99a05ab1247f0f54e3c2eab244988256/' \
+		-i vendor/libssh2-sys/.cargo-checksum.json || die
+
+	default
+}
+
+src_configure() {
+	filter-flags '-flto*' # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
+
+	local rust_target="" rust_targets="" arch_cflags
+
+	# Collect rust target names to compile standard libs for all ABIs.
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
+	done
+	if use wasm; then
+		rust_targets+=",\"wasm32-unknown-unknown\""
+		if use system-llvm; then
+			# un-hardcode rust-lld linker for this target
+			# https://bugs.gentoo.org/715348
+			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
+		fi
+	fi
+	rust_targets="${rust_targets#,}"
+
+	local tools='"cargo"'
+	use clippy && tools+=',"clippy"'
+	use miri && tools+=',"miri"'
+	use profiler && tools+=',"rust-demangler"'
+	use rls && tools+=',"rls","analysis"'
+	use rustfmt && tools+=',"rustfmt"'
+	use rust-analyzer && tools+=',"rust-analyzer"'
+	use rust-src && tools+=',"src"'
+
+	local rust_stage0_root
+	if use system-bootstrap; then
+		local printsysroot
+		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
+		rust_stage0_root="${printsysroot}"
+	else
+		rust_stage0_root="${WORKDIR}"/rust-stage0
+	fi
+	# in case of prefix it will be already prefixed, as --print sysroot returns full path
+	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+	rust_target="$(rust_abi)"
+
+	local cm_btype="$(usex debug DEBUG RELEASE)"
+	cat <<- _EOF_ > "${S}"/config.toml
+		changelog-seen = 2
+		[llvm]
+		download-ci-llvm = false
+		optimize = $(toml_usex !debug)
+		release-debuginfo = $(toml_usex debug)
+		assertions = $(toml_usex debug)
+		ninja = true
+		targets = "${LLVM_TARGETS// /;}"
+		experimental-targets = ""
+		link-shared = $(toml_usex system-llvm)
+		$(if is_libcxx_linked; then
+			# https://bugs.gentoo.org/732632
+			echo "use-libcxx = true"
+			echo "static-libstdcpp = false"
+		fi)
+		$(case "${rust_target}" in
+			i586-*-linux-*)
+				# https://github.com/rust-lang/rust/issues/93059
+				echo 'cflags = "-fcf-protection=none"'
+				echo 'cxxflags = "-fcf-protection=none"'
+				echo 'ldflags = "-fcf-protection=none"'
+				;;
+			*)
+				;;
+		esac)
+		[llvm.build-config]
+		CMAKE_VERBOSE_MAKEFILE = "ON"
+		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
+		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
+		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
+		[build]
+		build-stage = 2
+		test-stage = 2
+		build = "${rust_target}"
+		host = ["${rust_target}"]
+		target = [${rust_targets}]
+		cargo = "${rust_stage0_root}/bin/cargo"
+		rustc = "${rust_stage0_root}/bin/rustc"
+		rustfmt = "${rust_stage0_root}/bin/rustfmt"
+		docs = $(toml_usex doc)
+		compiler-docs = false
+		submodules = false
+		python = "${EPYTHON}"
+		locked-deps = true
+		vendor = true
+		extended = true
+		tools = [${tools}]
+		verbose = 2
+		sanitizers = false
+		profiler = $(toml_usex profiler)
+		cargo-native-static = false
+		[install]
+		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
+		sysconfdir = "etc"
+		docdir = "share/doc/rust"
+		bindir = "bin"
+		libdir = "lib"
+		mandir = "share/man"
+		[rust]
+		# https://github.com/rust-lang/rust/issues/54872
+		codegen-units-std = 1
+		optimize = true
+		debug = $(toml_usex debug)
+		debug-assertions = $(toml_usex debug)
+		debug-assertions-std = $(toml_usex debug)
+		debuginfo-level = $(usex debug 2 0)
+		debuginfo-level-rustc = $(usex debug 2 0)
+		debuginfo-level-std = $(usex debug 2 0)
+		debuginfo-level-tools = $(usex debug 2 0)
+		debuginfo-level-tests = 0
+		backtrace = true
+		incremental = false
+		default-linker = "$(tc-getCC)"
+		parallel-compiler = $(toml_usex parallel-compiler)
+		channel = "$(usex nightly nightly stable)"
+		description = "gentoo"
+		rpath = false
+		verbose-tests = true
+		optimize-tests = $(toml_usex !debug)
+		codegen-tests = true
+		dist-src = false
+		remap-debuginfo = true
+		lld = $(usex system-llvm false $(toml_usex wasm))
+		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+		# https://github.com/rust-lang/rust/issues/74976
+		# https://github.com/rust-lang/rust/issues/76526
+		deny-warnings = $(usex wasm $(usex doc false true) true)
+		backtrace-on-ice = true
+		jemalloc = false
+		[dist]
+		src-tarball = false
+		compression-formats = ["xz"]
+	_EOF_
+
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${rust_target}]
+			ar = "$(tc-getAR)"
+			cc = "$(tc-getCC)"
+			cxx = "$(tc-getCXX)"
+			linker = "$(tc-getCC)"
+			ranlib = "$(tc-getRANLIB)"
+			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
+		# but we patch it and set to false here as well
+		if use elibc_musl; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				crt-static = false
+			_EOF_
+		fi
+	done
+	if use wasm; then
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.wasm32-unknown-unknown]
+			linker = "$(usex system-llvm lld rust-lld)"
+			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
+			profiler = false
+		_EOF_
+	fi
+
+	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
+	# experimental cross support
+	# discussion: https://bugs.gentoo.org/679878
+	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
+	# it would be much better if we could split out stdlib
+	# complilation to separate ebuild and abuse CATEGORY to
+	# just install to /usr/lib/rustlib/<target>
+
+	# extra targets defined as a bash array
+	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
+	# best place would be /etc/portage/env/dev-lang/rust
+	# Example:
+	# RUST_CROSS_TARGETS=(
+	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
+	# )
+	# no extra hand holding is done, no target transformations, all
+	# values are passed as-is with just basic checks, so it's up to user to supply correct values
+	# valid rust targets can be obtained with
+	# 	rustc --print target-list
+	# matching cross toolchain has to be installed
+	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
+	# only gcc toolchains installed with crossdev are checked for now.
+
+	# BUG: we can't pass host flags to cross compiler, so just filter for now
+	# BUG: this should be more fine-grained.
+	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
+
+	local cross_target_spec
+	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
+		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
+		local cross_llvm_target="${cross_target_spec%%:*}"
+		# extracts toolchain triples, <rust-target>:<CTARGET>
+		local cross_triples="${cross_target_spec#*:}"
+		# extracts first element after before : separator
+		local cross_rust_target="${cross_triples%%:*}"
+		# extracts last element after : separator
+		local cross_toolchain="${cross_triples##*:}"
+		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
+		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${cross_rust_target}]
+			ar = "${cross_toolchain}-ar"
+			cc = "${cross_toolchain}-gcc"
+			cxx = "${cross_toolchain}-g++"
+			linker = "${cross_toolchain}-gcc"
+			ranlib = "${cross_toolchain}-ranlib"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		if [[ "${cross_toolchain}" == *-musl* ]]; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+			_EOF_
+		fi
+
+		# append cross target to "normal" target list
+		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
+		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+		rust_targets="${rust_targets},\"${cross_rust_target}\""
+		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+		ewarn
+		ewarn "Enabled ${cross_rust_target} rust target"
+		ewarn "Using ${cross_toolchain} cross toolchain"
+		ewarn
+		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+			ewarn "'sys-devel/binutils[multitarget]' is not installed"
+			ewarn "'strip' will be unable to strip cross libraries"
+			ewarn "cross targets will be installed with full debug information"
+			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+			ewarn
+			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+			ewarn
+		fi
+	done
+	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+	einfo "Rust configured with the following flags:"
+	echo
+	echo RUSTFLAGS="\"${RUSTFLAGS}\""
+	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
+	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
+	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
+	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+	env | grep "CFLAGS_.*"
+	echo
+	einfo "config.toml contents:"
+	cat "${S}"/config.toml || die
+	echo
+}
+
+src_compile() {
+	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -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 ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
+				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
+		then
+				failed+=( "${t}" )
+				eerror "rust_src_test: ${t} failed"
+		fi
+	done
+
+	if [[ ${#failed[@]} -ne 0 ]]; then
+		eerror "rust_src_test: failure summary: ${failed[@]}"
+		die "aborting due to test failures"
+	fi
+}
+
+src_install() {
+	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+
+	# bug #689562, #689160
+	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
+	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+
+	local symlinks=(
+		cargo
+		rustc
+		rustdoc
+		rust-gdb
+		rust-gdbgui
+		rust-lldb
+	)
+
+	use clippy && symlinks+=( clippy-driver cargo-clippy )
+	use miri && symlinks+=( miri cargo-miri )
+	use profiler && symlinks+=( rust-demangler )
+	use rls && symlinks+=( rls )
+	use rustfmt && symlinks+=( rustfmt cargo-fmt )
+	use rust-analyzer && symlinks+=( rust-analyzer )
+
+	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
+	local i
+	for i in "${symlinks[@]}"; do
+		# we need realpath on /usr/bin/* symlink return version-appended binary path.
+		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
+		# need to fix eselect-rust to remove this hack.
+		local ver_i="${i}-${PV}"
+		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
+			einfo "Installing ${i} symlink"
+			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
+		else
+			ewarn "${i} symlink requested, but source file not found"
+			ewarn "please report this"
+		fi
+		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
+	done
+
+	# symlinks to switch components to active rust in eselect
+	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
+	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
+	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
+	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
+	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+
+	newenvd - "50${P}" <<-_EOF_
+		LDPATH="${EPREFIX}/usr/lib/rust/lib"
+		MANPATH="${EPREFIX}/usr/lib/rust/man"
+	_EOF_
+
+	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+
+	# note: eselect-rust adds EROOT to all paths below
+	cat <<-_EOF_ > "${T}/provider-${P}"
+		/usr/bin/cargo
+		/usr/bin/rustdoc
+		/usr/bin/rust-gdb
+		/usr/bin/rust-gdbgui
+		/usr/bin/rust-lldb
+		/usr/lib/rustlib
+		/usr/lib/rust/lib
+		/usr/lib/rust/libexec
+		/usr/lib/rust/man
+		/usr/share/doc/rust
+	_EOF_
+
+	if use clippy; then
+		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+	fi
+	if use miri; then
+		echo /usr/bin/miri >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+	fi
+	if use profiler; then
+		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
+	fi
+	if use 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
+	if use rust-analyzer; then
+		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
+	fi
+
+	insinto /etc/env.d/rust
+	doins "${T}/provider-${P}"
+
+	if use dist; then
+		insinto "/usr/lib/${PN}/${PV}/dist"
+		doins -r "${S}/build/dist/."
+	fi
+}
+
+pkg_postinst() {
+	eselect rust update
+
+	if has_version 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
+}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2022-11-15 21:18 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2022-11-15 21:18 UTC (permalink / raw
  To: gentoo-commits

commit:     4cc9a3fcdb3b09d79203717c8bebb9f544bd8e4d
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Tue Nov 15 02:26:31 2022 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Tue Nov 15 21:17:46 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=4cc9a3fc

dev-lang/rust: Remove old versions

Signed-off-by: orbea <orbea <AT> riseup.net>
Closes: https://github.com/gentoo/libressl/pull/470
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 dev-lang/rust/Manifest                             |  68 --
 .../files/1.61.0-gentoo-musl-target-specs.patch    | 166 -----
 dev-lang/rust/files/1.62.0-libressl.patch          |  54 --
 dev-lang/rust/files/1.63.0-CVE-2022-36113.patch    |  48 --
 dev-lang/rust/files/1.63.0-CVE-2022-36114.patch    | 102 ---
 dev-lang/rust/rust-1.62.1.ebuild                   | 738 --------------------
 dev-lang/rust/rust-1.63.0-r1.ebuild                | 771 ---------------------
 dev-lang/rust/rust-1.64.0.ebuild                   | 753 --------------------
 8 files changed, 2700 deletions(-)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index b427a92..e843081 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -1,67 +1,3 @@
-DIST rust-1.61.0-aarch64-unknown-linux-gnu.tar.xz 226403096 BLAKE2B b9927e6d364fe791bef49cea5f0904629a2f01e6a71325c1769c67b845725ae6f54a1a8c0530fa5048591dd0ecfd50a40224243f935b38ad269e35ce2e1c59d9 SHA512 1c00830f67b75eaf23ab759e8218fca48e424cad0ede02e737e341d105f6f8b8113e4d4181cde1b43f9369af9c2f238fbdcac27ccad3dd02db878e2f4e6ba35b
-DIST rust-1.61.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 697df0294d01a19eca2f9b7597df3826e79ea790766c5c5a7b73f5a04919cf64f1489f34c9d2c397523432243e7f3f29f42440ba9aee127753868529196810cf SHA512 78cbc7eeb552965a1b6c4cfc9c8404017fe195acefbda1aa203d1c2ba969b3ac28388930bb4f3ca5dda7ecac5e61163ae0a5d06967eab9f0a7cada87c6b2dc58
-DIST rust-1.61.0-aarch64-unknown-linux-musl.tar.xz 220966060 BLAKE2B e03c6418fed773d1028363979726648d1ffa0e04d6879688efefc15f95fbeff3ff9c0dc7c16a53fedb18c4e0b16e060cee9f3566b0f96027e5dc68820fda149f SHA512 e806f78ecc9edd12bb991533c6bfc95da30c8eaacbfc54f0f4dbf3a95a011da82fca13cf3ef23594a9d1d9d8c79c8186fe98b60658a2cd5c0ed2c6e3984468d0
-DIST rust-1.61.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 426c4c8dac07269d184f61bf2447957cdbdacafdf27fac5ab5a0eea958e15fb3eeed0753dadb1d1bb157322ca5e8c6b7c10d946c4bd3a089ccd8275d0a310014 SHA512 b231afc0c3604aba64277c4f018f1f4b30417bd2fd113919b8b584d5482523b961071a50394a4906d8ba8536685fcff4710b51fee7832a7a041dcb902f1c5ff1
-DIST rust-1.61.0-arm-unknown-linux-gnueabi.tar.xz 200226676 BLAKE2B c55c36524249eaf9ab1e040b6742e1ada46b32bf0511338d23536663050b46103b1765aeb2a145be9cdc0b602d83526fe902fc431e0793d1a307ab0d4b61a356 SHA512 3a9f52b9f4f2a972477a48b629b8345f151d32d491be0cbf3692b76f05ddbd3319de1da7b10959d37fffc08e12b3196a6f4462cc2476ad80d2f9750e0b189cad
-DIST rust-1.61.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 34f251ee19ace45c411f161b383dcda35b8dea62e135cdeceddd73ca029920b0f0ea0484fb79c9680d9b4403c5c01d76d4fd2fb47fd65a2fbcb0375e56a1586b SHA512 641ce73107609d55f98ae00a03a9efd58985539e46a834ceffe5af79822309a40a4eac59e5cec3b1654da733f463f3bca438f42ecbaf5fce5d276466317a7e54
-DIST rust-1.61.0-arm-unknown-linux-gnueabihf.tar.xz 200078864 BLAKE2B 02403c024bf02b9ec42fd0baf52856fbcce2a10477d19e68e4ad06110aaabb90496543fc3de5f385428396979fbb80cdb27f28b4cef8af9266c18fa87a995c30 SHA512 155b2f0c341280bfb7db066b639dc50580a07b21ad6f9f6255a8645d5d944d58fbaff505f1de0c3f51ed92ca0d4dc75d9b92e2aab7e8b64f8c42d3af0a714fe6
-DIST rust-1.61.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 6b4875ac242f11f47518f17a0a039539e56cf3cef78f1e3cb4bc2174e60d6d0f0d444b4c0cfa007643202b5ce92a4cb979e92b5f6f559eb90fd78fdd5f870e57 SHA512 f2618ba9f076c10d0ddd23129e6e8e7050fd1126d7767c8b74c53be209ca87f9bebbc09069f6aed55e14de64b1478fd93b370be7e60858b5226fcfc1e8ed87c0
-DIST rust-1.61.0-armv7-unknown-linux-gnueabihf.tar.xz 206757912 BLAKE2B c702e17e225becc681713a3e819cc38c727377d280a1963efd4e6b1d27e0dbbb71ad0bec4d7add8319417846cf54bb7b5901af0f633b180ca9a5f169c709e43a SHA512 88dbb7a35a8424e5b197566515c21122c1da71df146abb304d7dbb50380b4771a741910abefc9d79831146b28b657ffe53cae07f0392e83a7279a7795aadf0e6
-DIST rust-1.61.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B f4b93feba557d81638ead6c3ad72f2e5c321c1103b473096e312d8a3191e98aac65aff0ebcb6f2c23701de17f2602ba18a6462c24a678c2bc2a13e1003189271 SHA512 72d8152d206c1ca9d69ed4704b8638c32b5f136ad985fd4790961935f1b44f08df0960e03066de2dd1cc9f7a140e8070f0a6e671f59c751506847d9e247c5ecd
-DIST rust-1.61.0-i686-unknown-linux-gnu.tar.xz 218220208 BLAKE2B da47b131676258747e27704e2a1abb844567e2ac9ccffdd1c87edaa677e04b1fe73227f7b6afa437d8fe2f2690352623343b8318906038206b5b684fa8eafcc7 SHA512 f19e1a5253c57d250d4de7f0f54b70a296d92bba2e22d8b842bcbb311e393e3bf24c28621f490584497c586c6fdbc41f5af55d86a074b93efaa62d313121cc4a
-DIST rust-1.61.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 3b154ab9d414ec6d7dea13c6b2d2def9613544b3d8f6464385fa390bb6228d73826032ed6e536a9a2dd379499ec500788b149c838d5ad1a50f545a47b19a2cbd SHA512 f06ab7e865bf56c153586e146438079ff3ee3de86c610e463cd0ce67c090349b9dd4fa587d9eab0dea4b908770bca0dab955f797ebcc5aee2617a981ff23eb23
-DIST rust-1.61.0-mips-unknown-linux-gnu.tar.xz 157918296 BLAKE2B 0551ab0898491129828be9cd7d6fd22a56c329f85ae9767c8ca216cac16ae3f93d30913c50c8cea8daa2f98878147e2f15f587e38e9e0fca7c8c4b6d3ead6870 SHA512 02cf5d1ed8c28bd52b7c27ba696de30ee23322ddd1e2ef953cd95a6d0b31c63ea66071bfb22c4d11a780243e62e21407d7ada2592b08caac67d7d79e7d9ee0f2
-DIST rust-1.61.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 2d050374431b8d48b6a0a3e171d4d2f62cfd8a2df70ddbf0d374bb9351e684d15d3ade7f6717e6abba1de47c4899f0f7575a4ca537d1a39a57e03ea4b0ae281e SHA512 6e2d01d3b8218cae46008328226286abe3f4323891ab41129f9af94b4526d5b21700fa84c880b4efe38d39c57b2a0946eb82e3ac58950761b20f4def1d8b82f2
-DIST rust-1.61.0-mips64-unknown-linux-gnuabi64.tar.xz 162321252 BLAKE2B d49ec8d3a5eec2085a26b4da22a31e5631e3665333a030e4683446cfe3f71e86e466b827942d6a62d32f469ff7fe9208aa51ba9d47822a54d40d89bef45636e5 SHA512 1e6003127963b836c343ae06586b152b1f227529d05b555aefa0bd7d4b92124215cfa1038aba1236c0c42ecd8e429253db4faa13ed388c16a8659e71b0008fe7
-DIST rust-1.61.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B b031019589b12cdf45f0a938c7479ad219c257643b88108d0c524088530df783338d64c1b356055e34a38df8908653c25fc286949826bb7e3539d63c78c36a66 SHA512 ee9178251f5a79803871fa76a22395e4b43958582930f92cf1f5e76970c1583f9b0403da7c05bd8a7cdd83839b319a6640adcaaa5475e9ab5bffb43146116b09
-DIST rust-1.61.0-mipsel-unknown-linux-gnu.tar.xz 162148648 BLAKE2B 492e0c811c9fae9d0052fcdfffe6d96d43674e1775edaf31d63024e56763d44c02763fd70e768ac0987d260665b86d78aa55a0652f5acbf097a3e9a472aa4d9f SHA512 637b081d8357d46030ca206c8feb54a38d9696a0bdbbad9a892ee4a472f29976c82b814f14cc987ad9e473e70d22347e7e01e81f0f59e82dbaad62153c1ec32f
-DIST rust-1.61.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9323f7488fdf603e81018c4b6afa11da952eb6051e9480fee027326ebccd15befed97c75c981f621d7eda3daf2d082c5fb12af426e48cb4c0c733ab55c46af6e SHA512 9d1e6062c4a7714aa754ea586f9bbe3a988e5e6d1e6309316bde89fa83ccddb837e96a8de13fbd4b932c8fc37be89de06802f12f689e17b1ae6cd97b5e2db561
-DIST rust-1.61.0-powerpc-unknown-linux-gnu.tar.xz 180802408 BLAKE2B 41ecab76e35d9ee2b9658730f46ece4191e706714b3b90b6021b4bd9ed2c4f0d563e0c0b39bdc7e633237d55c5375379565d7932e7ffb4896851831f64f61559 SHA512 ed19698f32c1af73ba8c402395b6ee30381d1fff6026d2c94e45ad89ef197cffc1529dc21402e2b463deb47aba0ed4d63d69c62908cdc099da463835757f3fe3
-DIST rust-1.61.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 438143b3474d0cb9e1a19b93de28544f02672e245bba7855da286fb15c58db93021e44d432fbe4a0949592b57cb23b373abd5c0a3f960f6975a0cf433352462e SHA512 7a570c64a79adf78c8c28342d9ab39e8ed953cd44b8038e03beb888b5611625bae95e88220c9c88236ff1672f20ad61976d116da7689cf29f53112deb9b75858
-DIST rust-1.61.0-powerpc64-unknown-linux-gnu.tar.xz 187335836 BLAKE2B 6feca68e47f7e19355ba623cda1d1cd15351017d388d94e2b9d6821493b8a77a09c95148a8fcf7124e3b0c9a9ee205c9f5c14af04172e2d02ea239355755b364 SHA512 b8afcb47653877dd47a808b4aecd95bca715a96311652e0616125e75bc5a457364b0caba2918e2e3e8df2d1fe0afb6fb384bbfa44fde25ebe0dd368414984acb
-DIST rust-1.61.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 20bc76dea5484d2a6bf60ffdacc1dacb8d3f7abdb428fee3b1d3e6e19d499f18afbe667a5de96a28005661bd0b4f5e4c8429df917a31b86d72b9aaa9ec56c7e0 SHA512 cf10c0f1ca50894deba5f02a4e3491fe61ea8def4b0f76fe790eb52ff66295d2570ae50acea66a51e710822d6109a2ab3c8f1e703388ae0ee19fcfc5657d4f38
-DIST rust-1.61.0-powerpc64le-unknown-linux-gnu.tar.xz 196945316 BLAKE2B 23ac372f7bbeac3eb757adcb6ca93187ad01492992327533452ab348ec899cb97f5ac9335b32039a62ccf4c34125de3c4b6c1d7829839c95f638b6531be59c57 SHA512 6cf969cef60d2b70db17902ceb71d2616de0df1ff4fda15578347372bf5a349fc8f4377eb1d003abb84a93a122ab0e54aac52c95568813148d3c0113d663a07f
-DIST rust-1.61.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6b4bdcba7c5b681512b98b39f8035788f612ee1c8f44d98d58f8a29bc71e470d57ae587a6ea2e02a22263d40bb452054d03483a3922db6c131d3947e65da23bb SHA512 cd102d958ad3ca62f534033473664e867892dce0ca8a2f96271ecfabe34e0afbd63d8281086c5cd692fdb961894313e7430ce2e1d14c3a686b40d8a514c124e3
-DIST rust-1.61.0-riscv64gc-unknown-linux-gnu.tar.xz 190408604 BLAKE2B 1f37d88201f0e3517194d810f99ce3167fa132c72f8580704750b926b838956157b1ccd303ccf5de15615733383d1009cc135ede7dd8dc7c1e39b4246a8ed604 SHA512 8f6f469484ff9c10af2b1a822a8193f313ac244783921c68dc1feee4d6897e7083cfb90d19384a266d41b97aeb845ef073ed955fb7beaf7e1810d682185c2d42
-DIST rust-1.61.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B c413b2f55e3d45dbfccf193f5cb9f6866abf895d23c850e3744a0bd897c2c812f57457211efaab7416c0d8fc079cc4feaa35de879ad76356a961e704e711be46 SHA512 0155b4e0ba86cc190b85f2f82e8ee75c14825e52e05ab3446283512f0b42f113d85ef89d72e0929382637dc0a44ef72f06552957285463c2edd7f83d9c8234ff
-DIST rust-1.61.0-s390x-unknown-linux-gnu.tar.xz 214196912 BLAKE2B 31eeaabdbca2fa837610179eafd0cb6cde2ce8d4feb57e86cd1fc8962e1f8b84bf067d7782414380616d5b56fef5db19c91c54c89f5dd935debf6ed2d3841466 SHA512 7de0ea08c4834e60d12098d92d4366689c0b959f58667bc68e35ad3c976011e8d9375566cebd9260933e13bd74105d297dabf40a0d09b34f83905d4cb9995f7f
-DIST rust-1.61.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 617bfd93b883cc36c8504ac326813511bee205a508489be168060863d967efe9a2e8276c3834d872f419317047ba83624c996be9d6f913be58f9feab66f292b2 SHA512 933689de3c1fabc31dd1910844479b3505e1a8b8474fdaeb4936df118a6da4f9597c45f0a0056d5c1efc33ae8ffb2910f5aa07b91afbd231ad7c20f0c79ceeb4
-DIST rust-1.61.0-x86_64-unknown-linux-gnu.tar.xz 157592468 BLAKE2B 0877c0794280a5ab7e74553c02cebad67e36148a3f34a709973310d89d7ea65dc8ecfa8b9c461e4f96939ed2ff09b7bacbef0b4fcf409758a0429bc431f87ebe SHA512 365191453f37775cf8bed66e12224294d4d99f3bacc635c3c13f05bf8585838a04b602c2fef7964f26a6cc35ab432a5c0a9745e9ffad0a83b0c761ec02de3484
-DIST rust-1.61.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5296a8df210a4cf2fd7dffcba1ae6bd8cda9e408ff4c55d997199c2890b9faab9e8d6d22a3c0961786bb80231836047929621edf9043d474b352fe28bd9192e8 SHA512 cb97e84cd793aa8676c41297d8da14125855c008815e65d8191868eb88241ccb408c6f9ae85b7ba8de1a02ea8923f5e042f4fea662fa593e5ec03505b41ee52d
-DIST rust-1.61.0-x86_64-unknown-linux-musl.tar.xz 259724324 BLAKE2B d005bd2794d196136c42842fbb7bc64d827898b5713f768cf0e88be5a40e3906139027ee58571cfccd8d2c864f672d1986da28c72f0d1c4a7f78d18efe14385e SHA512 96d09ac3a48bb2956dd6bf219e605c68327a94d09e72290ee74781c4886dce93b217163fb08dac0ce69bfaa2e3ab8cccd4a26d10b9df4c3162822a38e355bdb6
-DIST rust-1.61.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B e1c8061c80cd5445f7df9c44044ccb47731704b93d4e86cf95bd3b1b08a3c3cdb61e21349088cd0127632c63a0f7c22f0fa209809450dd81607bf7353d61a7b4 SHA512 587f487a3c8159a4b102f15a484a0ffa4f32c2abd2fb4ca078c27d36f6ff365c95015a99494e852631e9f92bfc9f33a0266c5f62b7edfce823c34993ff6a836b
-DIST rust-1.62.0-aarch64-unknown-linux-gnu.tar.xz 228388556 BLAKE2B 2b2d8428c97bfeb64bd999670e4ef2b6c4732cdfd7cac0cf37c5adb8ee83fd467e1e94bcb6a9edf28838fd052d19a7cbc273175c8360696bbec4523e1ff069a6 SHA512 10964fe48ee59ef2e44e9d0a0daa750cd06cc52198664b544166a846667366e7f0000129612f4d68e1530dab28987f62ccacd82f6d5663d0091cf7a451469219
-DIST rust-1.62.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6cf85d71d188bc931cbb21dac1387fa9fb8b45bcf0984bfd5af1a3f1ac581b74e37df337138b05b2d74ed1572d6e859418c33c2fe4bb72f5a3b15cb6302060d4 SHA512 452610627d8d01474ed38b7d3ff7c3c0174cc5b3468cbd0f274b6124ff6497dcae6f0abb6b9688f64be89c524c8fe18aaf5fd56dcd2530df6c247688cac1a230
-DIST rust-1.62.0-aarch64-unknown-linux-musl.tar.xz 223168712 BLAKE2B 9007a612ed5ec279c346abaeb4213a71d3acae9e5b1934380c9959e74db8b196b59f1197d1714a076040ff68f2b4f0e4937feb226cfaa0bdd272838d67eb07cb SHA512 253ba647102cb5599cfbfbfaf5f77ab2389e4bc77bce6cfd8aba037f6bd349081965d505fc30e9538df9353e923e66fa451ab73076d7224703cab1e24a81cf1f
-DIST rust-1.62.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 54d54528fed34d0325d50a44ea732c99268d0acd2d78fe778dee369e18e9d7f6a8164617715a8c73aae59d2e856ff437343087542d2eeba9e613cd0418e9cf43 SHA512 79a049aad9cf0d50455747bbd2809611ca9d8eb2890c4a0dda71b64842c75cc4503f9f308d6f418e0f207d5cea04d21b352d45c1774a24b9270071d232dfb1d6
-DIST rust-1.62.0-arm-unknown-linux-gnueabi.tar.xz 203832692 BLAKE2B 964278ec2d9375d864cd03f7ec4fae1ca89fceebad51ccc2a017fbdf5ed354bd599d8c3eaf9eb9e86870f3d4b7fae8bb9011ae630742b3cc9e6ed38e14e8eae4 SHA512 d388e752fe7fa67c91719858be9ffc872c2b8fa45f6d63ae18298a79bc242e640784722d82461629bd0f07ce56a7dd850376ca9882bf0a084a5a19b01e5d59f3
-DIST rust-1.62.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 1f24c48e0648f80d7107db921917372bd51ff4b630bd36830d5bb76386b486776311c67854bd4d6366e820003b89ba1a4c8eecbe001f2221c1063661c71ab513 SHA512 f134e874d59bc7979e821f881098f9d91eb81a1c5c68db80d738def722273ecf4957d842c3f0ee9f9b415448477bcd0b022624cea95f99850bd2267dc545423f
-DIST rust-1.62.0-arm-unknown-linux-gnueabihf.tar.xz 203946052 BLAKE2B b0e2a8a0068dc758d772f3dbc8003a57fdb43ead64e30bdf338c60b195bb2f78ef7e7a6df6dd2f02f13f47b9e913ab2fc010ce9fc6d39d5014709a71886e7eb6 SHA512 515d16b3ec5e8ec4af24c6baaf4e5443774c2140e5379019f29ce8a63eb1fd908408f42092e0fc0c3dd5e62ac7d43357af13fd74678cd2635451a2d775934386
-DIST rust-1.62.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 661439263a89d2206fbb7c3e00ac42e5975403670953df6be12dbf10e624a3bce0a16a846084aa621284e1d2dbb997af19b0f45808a2ddf7bb65af306a1745ba SHA512 bade26ccb646cc16822ae3235c00d048373f6c38eea79af128e3f299e8a69086fd254b4cd7c602c653d6573232594a27c7f8eb915797b8f1afbf56db3efb5008
-DIST rust-1.62.0-armv7-unknown-linux-gnueabihf.tar.xz 209318492 BLAKE2B 959488e4a957e19e5fe44e9b2b83406e135d7598cf4fa9db3b132c80cc40a54a73dee3c0b3db6f2f9299adf1b2d80fe453d1f0dab73fe46cacd5fa2ebf45b3ac SHA512 2c447c39f22f1f11f1e58d6adfea440a7d0bb91ffbb60df555b4e3eb41379b586f531a31c3ef86bb5e7a5b46889071f509157dc031fa174d93942d21dd241180
-DIST rust-1.62.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B a1e12a459d62fccd35bbc34d043f8a7512dfe3edb6563f02b84bfdd1e4cdf9c16570302644d71dc208dfe9782f48d4310a13b748d22571d1d43dcf7b61b2819a SHA512 82d2d1eb7ee0f8ba0bfaf93cd2ef0899973f535080af960a2b0f54049285df43e758a9bbe2f0e36e64e85bd530e4511e8ed828ce046c82b74a252b92e7dd42db
-DIST rust-1.62.0-i686-unknown-linux-gnu.tar.xz 223720860 BLAKE2B 117364630b38f4a97f9b7183ca7e9f30836ffd0f73c4e3ce2af97ad3c837edc7fa247afba70858009b5ba34bcb7adc87f29b8c87f03f79d060d9bab68b0625ba SHA512 99a87fef7870ee3478ac2faf1ebaec9fde28737ddc2423ec3da4173051f542e24b5666b0e276b3fdd2f02259f16bd119bf79515d057c63da2f6659c0e7ea2fd3
-DIST rust-1.62.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b9b4289aa38ad09d7f5098665a490dfa934676c37385f966d10c978f5320e374976617fb31a5e835661a81edab1ff244c74d8f8f5748954817db8171ed251b0d SHA512 9c44413bf71c416ad08289b4fa0223cb2a5299609ea5c94aff4f0bf7e793a9794155ee0c12a9f19c1c6e20112eb642f22be357d287adcea4e53e0285214c9661
-DIST rust-1.62.0-mips-unknown-linux-gnu.tar.xz 161572400 BLAKE2B b1f4b797319574b4e7cfb0d591988444238f3a735466e336b4c13e3af6754d18962f6f282011147c35ea48df375651d4cad3c368042073ff4da35c9ea6ab4855 SHA512 8c3cbb699f1a821889b70c56653380ad2a6d42d2ed444610cad5971230f3cbe5b7e71f1775f21788f0f54dad2f9c2c7eaa81ecde1a319d98ffcdb3701d6ef144
-DIST rust-1.62.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b68152d3a6221cb57d03826055477be0701c6520228ef2c67cf856a4d5bee5854ecc7dfe3e062121ba5d1e82be0eda0691e0d133ba5d644fed78fbf328021a9f SHA512 eedc2ba881ae0e2d709c8f2cb92ad360c091953b48bf77ce5eb1c93e296f0d532e29f9613d21327e8ca388cc5db7d26a8e612300bb3f94195db08d1d40f15909
-DIST rust-1.62.0-mips64-unknown-linux-gnuabi64.tar.xz 166210748 BLAKE2B d3a612e44132db49ab41eaf822a472f11b24b250ad1c5ca61a85b161d0a892d392d9a4789b42b4f35968887895e964ffbb5dfa69a8205b2ee94baf02cb2ef311 SHA512 f3ea74fad41c197c8af69d65ff6024832ddfeb3c7fd4913b35219b1954fc7b6d3ebc345686043ee3250c17624e133b6c8680272b5b73c38dce1d6c39b763b002
-DIST rust-1.62.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 15806c5684651c2920692d36c733ad8b8a6b8d39e901889457988205e04dd425083bf119053040b73ddba65a44d9330db021a85094d2c84e60c7cd1724d95116 SHA512 46f83dc667361cf4bd10103b1aa990796c1a45ee1af02c142f068fee7aa235c9d982189757184378b2230940134b1462116c09a3c0c043810e077fcf33bac316
-DIST rust-1.62.0-mipsel-unknown-linux-gnu.tar.xz 165275936 BLAKE2B a875ff4675559f9a4b7ff87c271dc4f51112a68c06677b78bbd97f7b4af8f69c75407ef711a9d700ddbf9d85863e24c2f3e27956181bbe00e4afd83220290998 SHA512 9e489cb27b9b8f00e9fd2210b3bf5c1e60ddc83c5fe3d9a381fc4469badda89c02948554d70710d8438333d6629c24282a8a9855241e46ded9c6cf368dce1c2e
-DIST rust-1.62.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 63b7d7487a7dd561a95a175584b798fea1b4157e59b660ec2063724e6ef4ceb7455a1912fb73a88c9315de0d80e6e622ef5c81258b670833e15c421cc3bbc562 SHA512 83420778147112aec58ad81f39f61a13fef97dbae6ff927c55a360588cab56cb58c48c31d19ed6b3b77d73277b044559db6184224d4e4d5bd5371e4cd3f701c2
-DIST rust-1.62.0-powerpc-unknown-linux-gnu.tar.xz 183062288 BLAKE2B c987b07862687203f716494cf5dde444d150628ae021f7a0ed990b47c892b7c247a6f8e790a2a88d49c3abcfe6236b18bbebaf76e0f2720a8c318b8f8e3e5a01 SHA512 d0db86e475fadf2535bc6955abb7b6e397553ad6843ddd369e15c9c35800866f27dcd0515a898a65f7ca868672cf458114320769cd14db258a279cfd3de3c57b
-DIST rust-1.62.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7398231bfc5624f6e7ef8af55405b861fc06fbfbca9159b9c60a1ab27a5bee6551d228958e6f56abfb598c6f24f53d35f510e863176d03639c47703bd8064c7c SHA512 8713ef73a1a9f30f246dc61086993f2f4a8d6f04595401b312c43fc97f667b44126e4b7f176001b68622d452bb74ee460d60ae2e6d44938e02c4da4fcdfc7855
-DIST rust-1.62.0-powerpc64-unknown-linux-gnu.tar.xz 191619800 BLAKE2B 276f427d0ceed4926f46081c57f6aba69e3c541d896dbbd0375da0d1f6461840e20ab8b7cbb9dec53b67dfff668e91fc8c68ea70aa3d9f333e2b21ec345a876f SHA512 039d321f90f960276ad06ccdcc2549d2c07335d61b21abcc534b33ff406e130d54dd3d79d471be9588546e30f5e1d4952e33c7890cb2d66eac80436471d3db89
-DIST rust-1.62.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 8ca8447d2c69ba58439ed36077882da80696427190761e5dcde99c8957fd476c73fbcc8111ebb3409c86e0a7c315dfbf7f1202204f7755a9ed87eb523bf34e38 SHA512 0f8efdf23aacf435e06854aed7f4366f5fe0f83a9a256d1026b02c2817badbd072a726bce052b0333e8cdc2907fd0e5b81a9cdef617a34e7d963d9d3c4742fb5
-DIST rust-1.62.0-powerpc64le-unknown-linux-gnu.tar.xz 201394312 BLAKE2B 60bc2fc5beee3f6d0ce695fed0c2148982b6ae3936bbf44fe0ccb97be80e9a2532f20c7234c924f500c4edc3bf82d4ca25b1f1dadc89bb29718c4a9e41bb8894 SHA512 4a8cfcffb7069e2bc4679a8da9acecf12514c512854bb9eef6f3f861e319b0098fd206d743ef7a0f25ef5b65892ad9dcc0adc1bc19525900c3edf5ea5489849e
-DIST rust-1.62.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 55391a58d2ffd6c21b1ff6d77595e424cf269ad44d59f7c2a29d149306563028b402e7393e4d802a47818d7e831455768e86d4f9d882ad0ca70cf216ed72c9db SHA512 c1cf19959de1348ed34448a3f9999ef53324be81d1c99967e4091406463dc0dc28a384f8f04e07e4b54791d1d4a2b1c4aea570503abb0c91c83eafdb5e389243
-DIST rust-1.62.0-riscv64gc-unknown-linux-gnu.tar.xz 194848260 BLAKE2B 35a283e87bd0d338500ed71d539760cc19a1522875d20f7cdf8cce7ac79fdf993530082e0078a9f12c2df41d3366dec30f5326f9584ab9dd0bc37811bc931e1b SHA512 60a9e4a0ffec3763e6e5f4f9a7f3f52f423b6af86eeb4eddbd5fa00682ec3f6881a6d0be717079f508c1d0ef94f3d794b7da2884ed5b7c88219aabd49bf20662
-DIST rust-1.62.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 2cc8e9724e3d0f3af2d5c8e8c9f51f7f5e2d36a9e8cda23bf16fdcce0ecbd1a8965b0fc7b339dc27c779346cfe3f26fe8a2d3e1929431a2190452cbe4a949978 SHA512 587b6ab43a3c0258b0393e13f9f231f086527dd28f7f65fa6f00ac61c974e1d8c0305c2cc154a8a106d506b17f505ec8d8e6e5d39d4512072ab39da680fa1574
-DIST rust-1.62.0-s390x-unknown-linux-gnu.tar.xz 218505248 BLAKE2B 6f8026b1779527f0dd781843e2f2deb423c2b541711d3e8efb981ea972cd5405568e6ca274e1b78cc6427e038d59e147652da26cedaa83b02f5daa79491db2f3 SHA512 10c99efe46acbe2bdbd27f28cae28d6db223c3cee2abc835d04f7ff1662c8b998d354ae22af9dcf00c078e96cdbb1f01df5f6c9e9c587d3459ea88f9acf37267
-DIST rust-1.62.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7053c6f041695ad7b9c5ea304a0d71b9b17c5737b7d7082ef2de6e52dc52bc18c170c3fe7e7a658823abc5f80ab775b544dd2b2b3e27690bd8209357945b0f04 SHA512 8bc1d64180f55b0ed93fd506bc193a51e4519a66ed8d6f4e331395bcdb8584171d81397d594460952d7983129aa08e278ee15a584571d404f2f6a304d1d7241d
-DIST rust-1.62.0-x86_64-unknown-linux-gnu.tar.xz 153662720 BLAKE2B ff19ebb8a0607b5a3a29b2676dc12466e0c9969f6ac31a588a5dff2d3c10ade70e705873e2606ed84efeaeeb87b8afe6c88285edbdd2bf1a8433f24c48009c21 SHA512 b329dc015dc70ceae0a3b9b8d8e674fb443769bf82f88ed06ca306cedaa52e26756a2491c92315e51b63d4272c0a1f43b2150d5636101814f6e2b59772f1f048
-DIST rust-1.62.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B a1602b9cfbdf1b66c479f13b7171cb445068b5f18eae620435b25c3ab1e762e41977e31f02158d259acf16b0c8cdf895af16d6f68904939333b030f21b6c7a01 SHA512 2d79af9fca5a7e19448aeefd330fcc436c3ecb8e617662f144b12303ef2a214a3ae3ec4d9a42f68a4d0d6e343b81b495deddf3df23031aacfbead0c97b083174
-DIST rust-1.62.0-x86_64-unknown-linux-musl.tar.xz 254266584 BLAKE2B f566cdc94726532c50726ccf081eb2b825e52a56c74eb9d9e846f9933dafedef0a8a1b7c485938f96ae9945706192218cc318750738596923329bc23ef770ce1 SHA512 9cd01f0539db8cd344e9dd39fc5ffcd5b65c9c8c95ed692b9f7c23bc19c970c9f0056f8c8bb61813f1402143177a5b1c20bf844e64af8cf0be110e17e30aa4af
-DIST rust-1.62.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 46f38806b5a6b67953c607d4a3074a9177e14245e746771d876530c398ea98019e534a22a099c087ea2386124cc952f0a488e45f8175922b19b42441d6607938 SHA512 bc30af1e75cbfc8b488782af26d91ccee6e3b3220913af8d2ca3fc6beb5790bd81e3348f8da5c0c542bd13ab6c4cee77f50f4ba0d48e9600620034acc2dafe15
 DIST rust-1.63.0-aarch64-unknown-linux-gnu.tar.xz 230083616 BLAKE2B 2b66b809d53cc971c9cd44435c10c4bf0faa20dcc3782b47955d0fac252c370c670f0adb59f51b6842b46277d584c5fd44b94202e57aed078480f5cb6952d815 SHA512 c9f7b885008c58f7aac0edd5b6cd0295d768215e2b26cb1f590206248d468fa78409f42f48d505080ee14e2a59dd887cfc564db5a41e91ed36d738a90961f89e
 DIST rust-1.63.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B a323669f0587c9785c587ac0eac72915e421a61d2b5252c2dcc7f637176d5d425fc8cbcfa6ef848fd0d7acfa17cd430e4d42e8c03729c563dda59aa13e6d5c5b SHA512 be2e1eff9228576b66e0a0434e1edbb4525d0ef66743082afef1ef55565e312e63fed7274d01298128fda0c7ab63827d5aed90f50e184582781a4e10ee311de1
 DIST rust-1.63.0-aarch64-unknown-linux-musl.tar.xz 224541836 BLAKE2B b32b7886ddc5da3af0c6e394ecb167288897b2c44b0108e33aeabb3842ff563c769e635413b092a36246bbcf137d692e94c6ce66cccad34c7e728c4cf4af7bc2 SHA512 e462c8b94defc5ac5dfe923c3a6273c3d414cf576840d46a680a4f333bc34fea874c4ec4363c4e1891a6fe95087bf4a68bba7f316bfed9db6313be989afd7428
@@ -126,10 +62,6 @@ DIST rust-1.64.0-x86_64-unknown-linux-gnu.tar.xz 161922032 BLAKE2B e8a0d13deab59
 DIST rust-1.64.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d13ab08a8ce4b9a92c60ab5b8c21087158b66d9a673b7a960103757a2b12216cab8e7713cda08753a5f5f921aa9c7d571da77a90166d6e7362549a49d6c1a501 SHA512 fda5b45652c0929fea19146dd2c5a895ae4c6db9a1bf448a7364899854ffa06a8eb52b35bfe28c8acdfb1633cd8afe6c5eabd622b7887ed267b1b72220ef4e6f
 DIST rust-1.64.0-x86_64-unknown-linux-musl.tar.xz 265843112 BLAKE2B 2b267b5b9aae610734759a690e36600eeeedab7e0b679e651df269d7b71b147984c1d16cab4658076f05a8a854afc74d83e6e61dac3a8a6bf2b56660d3483285 SHA512 c722ddb6a7bfc5b8767e2a37e697f625b4e775582423720d1b01737ec3269c82e2212f7e5a672a062fa49c8c15c0d2d182ea14dd048cfd9e07704cbc04fd8ef0
 DIST rust-1.64.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 783791aca41910e8074fd1c7f29e6fc1fdf51f80b1515bac99431305dbe6085574b2b2366c087675b6a9d98931a0cff1117cd864f634fdb4dd53792aab8ce5f9 SHA512 a6d0a72e9edbbc1e6caef7a9c0ec46518b95172afa4a33b2258286458d7b9afe72f9de8411a83567520a126b8377777e125cc639bac197a0495f17120fbcc1ad
-DIST rustc-1.62.1-src.tar.xz 135644156 BLAKE2B ff8428362153770c57d53cb7eef07b75944d47ec747d9c337cc7ba9f38dfd749415c9a00acf9d9d8743874ba1c51da7915315bd25e011eeb8a2aaa8812773850 SHA512 6f7fa855acdf20525e907a6fc8c7aa8b206603e3bcbd532d3bdce165380f0019f45dba2b2b06d20b541381accf67ca0d256fbddfcb1642a2e60e1237807d5410
-DIST rustc-1.62.1-src.tar.xz.asc 801 BLAKE2B dd0e917f8b587eb8318a9c820df5ee9a052f14e7dea05d8afcb3cf687fa2e362e6d2f4d20fa94a19bdf97227c9ef29548a6e267ffd9113bfdc36cc42f341d8b8 SHA512 698bfd419c218a6cccce04869279708cf6084adc464a64d7dd1c981c0577249cd06b4de132634085c792c838aa1e1beaa11a5a06ea0e5f4c1a6f4e28afe65a3c
-DIST rustc-1.63.0-src.tar.xz 136597192 BLAKE2B 52eb64ee11e7d9724a4c2654f7eea13521959ac5e04a4925eed5c89ec3661a7827146d6f9a9d05c98466bd4b74393af7bb18d9f418c785924f559833434dfe38 SHA512 0dd3cd1546bd9c1438afe0c4694e1ed80507f6b437674682c0474e13f83457e9ced4560ddeee58602e01837140f9e34a9e24c6828643dd6f613e07755af6997c
-DIST rustc-1.63.0-src.tar.xz.asc 801 BLAKE2B b6c133768e368a7aeb0a4612a4c824d13f91ccdca6660feb5774ed6d79537084020780532c882ae3c9e4b6be3d36ceb0652eb134a580293ba8d8be74c4ba3c6e SHA512 f8807d46b9a3ca2a15a60f8062d63b3ee6e3210657cc752c948b3c7aa1626ec63cbd57529d010ad33f07ac47cf70dbf2cb50f200587338f77c631fc9e6786b17
 DIST rustc-1.64.0-src.tar.xz 137841332 BLAKE2B 8acd9e0a4632ba2114018a5cd3f2d544324c601c246658f60a9e0be513c40375434d0a416f0bfd4d24493eae3fec7c9f5bb52d008c88cde14de503a3b6873dd1 SHA512 919f40acd8c6eaaef399aa3248503bea19feb96697ab221aaede9ee789ce340b47cb899d1e0e41a31e5d7756653968a10d2faaa4aee83294c9f1243949b43516
 DIST rustc-1.64.0-src.tar.xz.asc 801 BLAKE2B 69f7bd7600d99794859c6fad4b44f0e98868e4e16041d6fe81d9d09a8435c75abac67a735adb0b81a2d9f85651841d404bc1ef4cd64fccd75e8a25d6d95729d0 SHA512 a831e3941849add1082c5b47b619ea87405b875d6eeb90a35f42742a511d124c29503debd17dcc8c6aa9e03a754ab51c3a15e99192bdd0dd1b8a59af9b6eb0b8
 DIST rustc-1.65.0-src.tar.xz 139674928 BLAKE2B a218263fb67e306b153f5a6dae95b5ec653acaa5eb4b833862d6f0fd4685a8cec097dadc1b8a934e1bf6055672c7a617f9a0ad4a7dbf2e78084297f10b7ada04 SHA512 3d0369ed3028209c4ecb9b9e7b5f5e3a20be8cc05199675df4f091d62a96c0734bc1dbd7630928fe162792392ec6d0daf9ceed10771531ce022200c7b631e3be

diff --git a/dev-lang/rust/files/1.61.0-gentoo-musl-target-specs.patch b/dev-lang/rust/files/1.61.0-gentoo-musl-target-specs.patch
deleted file mode 100644
index 9701481..0000000
--- a/dev-lang/rust/files/1.61.0-gentoo-musl-target-specs.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From 331c3839ebb0099101e1d2f88205ea42f4e3b319 Mon Sep 17 00:00:00 2001
-From: Georgy Yakovlev <gyakovlev@gentoo.org>
-Date: Tue, 24 May 2022 12:03:20 -0700
-Subject: [PATCH] add gentoo musl target specs
-
----
- .../src/spec/aarch64_gentoo_linux_musl.rs     |   11 +
- .../src/spec/armv7_gentoo_linux_musleabihf.rs |   11 +
- .../src/spec/i686_gentoo_linux_musl.rs        |   11 +
- compiler/rustc_target/src/spec/mod.rs         |    8 +
- compiler/rustc_target/src/spec/mod.rs.orig    | 2465 +++++++++++++++++
- .../src/spec/powerpc64_gentoo_linux_musl.rs   |   11 +
- .../src/spec/powerpc64le_gentoo_linux_musl.rs |   11 +
- .../src/spec/powerpc_gentoo_linux_musl.rs     |   11 +
- .../src/spec/x86_64_gentoo_linux_musl.rs      |   11 +
- 9 files changed, 2550 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/mod.rs.orig
- 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..ca5f28f
---- /dev/null
-+++ b/compiler/rustc_target/src/spec/aarch64_gentoo_linux_musl.rs
-@@ -0,0 +1,11 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+    let mut base = super::aarch64_unknown_linux_musl::target();
-+
-+    base.llvm_target = "aarch64-gentoo-linux-musl".into();
-+    base.options.vendor = "gentoo".into();
-+    base.options.crt_static_default = false;
-+
-+    base
-+}
-diff --git a/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs b/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs
-new file mode 100644
-index 0000000..24b3b30
---- /dev/null
-+++ b/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs
-@@ -0,0 +1,11 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+    let mut base = super::armv7_unknown_linux_musleabihf::target();
-+
-+    base.llvm_target = "armv7-gentoo-linux-musleabihf".into();
-+    base.options.vendor = "gentoo".into();
-+    base.options.crt_static_default = false;
-+
-+    base
-+}
-diff --git a/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs
-new file mode 100644
-index 0000000..cab0923
---- /dev/null
-+++ b/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs
-@@ -0,0 +1,11 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+    let mut base = super::i686_unknown_linux_musl::target();
-+
-+    base.llvm_target = "i686-gentoo-linux-musl".into();
-+    base.options.vendor = "gentoo".into();
-+    base.options.crt_static_default = false;
-+
-+    base
-+}
-diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
-index bd5b712..34b923b 100644
---- a/compiler/rustc_target/src/spec/mod.rs
-+++ b/compiler/rustc_target/src/spec/mod.rs
-@@ -808,6 +808,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..b188a7c
---- /dev/null
-+++ b/compiler/rustc_target/src/spec/powerpc64_gentoo_linux_musl.rs
-@@ -0,0 +1,11 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+    let mut base = super::powerpc64_unknown_linux_musl::target();
-+
-+    base.llvm_target = "powerpc64-gentoo-linux-musl".into();
-+    base.options.vendor = "gentoo".into();
-+    base.options.crt_static_default = false;
-+
-+    base
-+}
-diff --git a/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs
-new file mode 100644
-index 0000000..395f603
---- /dev/null
-+++ b/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs
-@@ -0,0 +1,11 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+    let mut base = super::powerpc64le_unknown_linux_musl::target();
-+
-+    base.llvm_target = "powerpc64le-gentoo-linux-musl".into();
-+    base.options.vendor = "gentoo".into();
-+    base.options.crt_static_default = false;
-+
-+    base
-+}
-diff --git a/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs
-new file mode 100644
-index 0000000..cb3121d
---- /dev/null
-+++ b/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs
-@@ -0,0 +1,11 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+    let mut base = super::powerpc_unknown_linux_musl::target();
-+
-+    base.llvm_target = "powerpc-gentoo-linux-musl".into();
-+    base.options.vendor = "gentoo".into();
-+    base.options.crt_static_default = false;
-+
-+    base
-+}
-diff --git a/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs
-new file mode 100644
-index 0000000..2fcdb66
---- /dev/null
-+++ b/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs
-@@ -0,0 +1,11 @@
-+use crate::spec::Target;
-+
-+pub fn target() -> Target {
-+    let mut base = super::x86_64_unknown_linux_musl::target();
-+
-+    base.llvm_target = "x86_64-gentoo-linux-musl".into();
-+    base.options.vendor = "gentoo".into();
-+    base.options.crt_static_default = false;
-+
-+    base
-+}
--- 
-2.35.1
-

diff --git a/dev-lang/rust/files/1.62.0-libressl.patch b/dev-lang/rust/files/1.62.0-libressl.patch
deleted file mode 100644
index 9143baf..0000000
--- a/dev-lang/rust/files/1.62.0-libressl.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From b2f2090c9b4cf85fce2974ddb4d480a5c8e2d81d Mon Sep 17 00:00:00 2001
-From: orbea <orbea@riseup.net>
-Date: Sun, 3 Jul 2022 18:38:28 -0700
-Subject: [PATCH] Support LibreSSL 3.5.x
-
----
- vendor/libssh2-sys/.cargo-checksum.json | 2 +-
- vendor/libssh2-sys/build.rs             | 1 +
- vendor/openssl-sys/.cargo-checksum.json | 2 +-
- vendor/openssl-sys/build/main.rs        | 3 ++-
- 4 files changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/vendor/libssh2-sys/.cargo-checksum.json b/vendor/libssh2-sys/.cargo-checksum.json
-index 8ca0bd076..4fd273b88 100644
---- a/vendor/libssh2-sys/.cargo-checksum.json
-+++ b/vendor/libssh2-sys/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"8981208d3829e782a076099f6d686d1eb3714102e0af7de70822f972ee9f0eda","build.rs":"7d5ca02f34cffe51db3568c500c9a8a70cef879871a0f466e3344142644acf12","lib.rs":"3f59dd52a499c4d707114626a44123f3c969c999599ea527dc04d221cfbf460d","libssh2/CMakeLists.txt":"8530be1d6db3715344fae1900fe73d8e2294930bef33019657064dfc6094cd0f","libssh2/COPYING":"859e60d760a3446ecaf777339f1eef98c527aea40714384d24b882a83ffdd23a","libssh2/Makefile.OpenSSL.inc":"8e82af68b172ddccf94c65c1b4e38b69b3b7f027cc14a54b6d660c5f2bcd4de9","libssh2/Makefile.WinCNG.inc":"79243be1029a0df52a5e79b3dceb80ac462f2e735e25445e38852610bee62f34","libssh2/Makefile.am":"955114c8c455346542067604795f344a693afa544c7efa813abb3b1dbccc59ea","libssh2/Makefile.inc":"3ba04a6366787cd65119ca3a4720ad31267e32d94b49763e123d85bbbc303ce1","libssh2/Makefile.libgcrypt.inc":"3d71dbe94c906d07c70eb8c7eae80fe5ae014565d7a9446bd39b659e91b73b71","libssh2/Makefile.mbedTLS.inc":"18bf8364aaef158a27b65be88ac1fd74af0cbd336930b6ce611b62dab77feebc","li
 bssh2/Makefile.os400qc3.inc":"ac9b0e1731f7dfa20e3987e108a4c5896e6095638ec545c8f2ac64c35b63a455","libssh2/NEWS":"9418b9c8dcafc633c2c16372b2b21ceb70a06243756af21eff173a4b379101d1","libssh2/NMakefile":"2d1cbda9bccd886de3c99dae77f09ac75a7f09f1834272b4a9154d2a0ae9a81a","libssh2/README":"428a810c75712693e66d2104ab64b976992a2670109959a8f771a609022ed25e","libssh2/README.md":"74b0076905edb7acfe526b1ea367aa567ced0599d5a3be8e8aa22c1ca847e269","libssh2/RELEASE-NOTES":"9a88e3e26281797ee09f09cd04e4bd753837b02366dcaf34885b800742bc862f","libssh2/acinclude.m4":"38b4ba61f1ccd764daa1c249fff189e4a897f71e19ead71690f5bcbe25d9d541","libssh2/appveyor.yml":"499cdf346619e52967be12e833561fe2b9eec7a50214b25b8195d67b21eb7262","libssh2/buildconf":"c2102a17b8f50f0d56d20639c05c70347a4e6ac5dcec351c6f851371e2a68a71","libssh2/ci/appveyor/docker-bridge.bat":"24121ac7d7c852358b4d6a7f319e1b593d294a97c027175f8085c741d7792887","libssh2/ci/appveyor/docker-bridge.ps1":"c96ed6844515850165b15790791f80a666f606a1931243fec3eb3a0
 7f7531ead","libssh2/ci/checksrc.pl":"879e805b57e2e86f6894a6a4e395daf1c1c048ee5984e109be74afc750782567","libssh2/ci/checksrc.sh":"a435be07f99eaac5b59f9cf68d88e3541c9fbed09177d0874078c22547edd5e9","libssh2/ci/ossfuzz.sh":"34e596139edfe9aa0a52b73ac1ef860a69968f88b1ed6f0dbdfff3832d08a7d6","libssh2/cmake/CheckFunctionExistsMayNeedLibrary.cmake":"60a8d1afe9a3b71cedb782ac6187a9a041d2792006a7eb3379bc42a9fcb95a4d","libssh2/cmake/CheckNonblockingSocketSupport.cmake":"443b9824a1d7f7cc0a9c1b740ca9824f82f73ac7f0294aa2c1e3192aa3cb5e0d","libssh2/cmake/CopyRuntimeDependencies.cmake":"5a146613512f467192e7917561b305e31d52a85b3f216d5e3c6ca6d2261e9b03","libssh2/cmake/FindLibgcrypt.cmake":"af65a3a8ea63eb935b1602b2b75c7c993558f9118e8c12cf9f2d4614977d8c53","libssh2/cmake/FindmbedTLS.cmake":"db4ad3046a838c325ff39f3f083a2de39c3bcde4c69670610ce27b23c758c50d","libssh2/cmake/SocketLibraries.cmake":"857615772ee6a1b79826eb18889def1a626296262db78def698286930e3c6cbf","libssh2/cmake/Toolchain-Linux-32.cmake":"fc7c2
 718c2e628fe28db38406fb57e9380d202dce8b4d615ef8b818984c37a32","libssh2/cmake/max_warnings.cmake":"1a14b62c40d327d69ad1531e3372523310e642779da33c3865e6fc67df46835b","libssh2/config.rpath":"aa48652ef1709d015f0e627eb5d18d1c198d81c29d5f89a81362512fcba72b01","libssh2/configure.ac":"1a24a7b81c127f3cfe154ede0aad567341c0743178d3f3b41ad59f3fa24c7269","libssh2/docs/AUTHORS":"12228e95c6b41c76d00b6ca8f2bf7bfb3372f3f32b6c62f34882530b9406f26d","libssh2/docs/BINDINGS":"c711b535a9462815d564995eb84b997261fb9a2db4ef82a8c9b3f926dd7498b2","libssh2/docs/CMakeLists.txt":"0cd132f7148c6807399141a611723f6083499751d8a3e326f06879e57bf2c369","libssh2/docs/HACKING":"5d2563866dc4fcc8a4ab352676e3d64b918b75e0a73ce7776b9eef7e8949d3b0","libssh2/docs/HACKING-CRYPTO":"88452e1dab1160dbd7d800c5d1c3b6651bca884b18aea476c6ad0b1fd387edba","libssh2/docs/INSTALL_AUTOTOOLS":"6ca4765ca5ca117514e41067ce05cc24504aa29eab9a76bb9cc1ecc87c3280b1","libssh2/docs/INSTALL_CMAKE.md":"266b25dbe613f02e4662467c23ad80bb42a35ef9d579933ddb2d7b1d
 038089d0","libssh2/docs/Makefile.am":"16050bb16175b6c34dd246fb10628975dc7563412b926a10818e3f85efb6e7ca","libssh2/docs/SECURITY.md":"4314c11322a9970bed60130a2e11a0eb79c9de719a7c7c2cb227356d9771ba2f","libssh2/docs/TODO":"e3a304f76129bdb90371439567dffe2a8841e3a5c326f71000490a11241bc9b0","libssh2/docs/libssh2_agent_connect.3":"5fe15d3e781382a8e935048dd266a89e9c3b63800d4714ceec6c78c512e49f20","libssh2/docs/libssh2_agent_disconnect.3":"e2d1a3af99d888e310c6e22227e11b0a42f1d265451a9e13ac787fe0b8075426","libssh2/docs/libssh2_agent_free.3":"332b5fb986c013ba363bd18d5e39c01a047d79fb22acf673291f1e19b4d8292a","libssh2/docs/libssh2_agent_get_identity.3":"acdccde633dda1740ba043fb3f2b3aed884923c74ff3e2ad2f01d5a6b87955f1","libssh2/docs/libssh2_agent_get_identity_path.3":"148b43bc669d3300b3fbf09ae57050a15ce074c8730ecef78e97ee9309ea179f","libssh2/docs/libssh2_agent_init.3":"09029ddc71d63085dd6ccf92062ce6e31f0d54a1eb40d06587713814ddb4ee5d","libssh2/docs/libssh2_agent_list_identities.3":"a498d332ea55486e
 b1c234468a8cf3c1886eb6b98bdd527a1b44fd06683e7ea2","libssh2/docs/libssh2_agent_set_identity_path.3":"b60fb7e972fc2b420ff0a7452ddbf12597dbc9cb075920da16ee9c0eef7f8425","libssh2/docs/libssh2_agent_userauth.3":"d2119c63fa5bd1a05385bd176a1c8d2ee0139aebec92addd1601edc948f17855","libssh2/docs/libssh2_banner_set.3":"1bd7a8bd59cb74d90cfed26c41701788afe7c0a667f686c5154cd0615d586422","libssh2/docs/libssh2_base64_decode.3":"c48f88f5a6405738bc146161bf442e02c02073e0b9957f5d4bc3bd425bee82e1","libssh2/docs/libssh2_channel_close.3":"e348d7548693066f863dde9a6c7dd21bf394aca51c1cae1c4999309eedfb4451","libssh2/docs/libssh2_channel_direct_tcpip.3":"3a67560c5846880066344d5581840a26a8509854fcf20fda79f9b2156e58757d","libssh2/docs/libssh2_channel_direct_tcpip_ex.3":"5a7665c77afd8aa509c03d5059ece42adb912979e0fab608034e4554e3106439","libssh2/docs/libssh2_channel_eof.3":"7ad4590d1dfccf35bd2f7393e0d14b4247c3108ee2f48685b505c0dd9516e011","libssh2/docs/libssh2_channel_exec.3":"e7f79363e4fa61ce0c00f59e4e97cbc3101f5
 5e2025b1156551aaf50c8522b87","libssh2/docs/libssh2_channel_flush.3":"fcaf2b8577ae6b8196313977d0686175a807fcccd3f3fce433028384da0f7bdd","libssh2/docs/libssh2_channel_flush_ex.3":"a0a60e2c15e2fd19e8399ce45736470782090455856b6a97cab7b9e8cb56b160","libssh2/docs/libssh2_channel_flush_stderr.3":"4f590d465d647b416c583c2b16693a3364e84da2400dfe7f9ffe1928577ca3ae","libssh2/docs/libssh2_channel_forward_accept.3":"4f0621fe2a6aef5fefd50197974beb6e6c89dc41841b1d6052f885a773557ed8","libssh2/docs/libssh2_channel_forward_cancel.3":"230ff1688acf2f4a7ac5d687ca46bd39458192a0662b3b8fa6edd8217c25117f","libssh2/docs/libssh2_channel_forward_listen.3":"fac440afa8233b6d3982b349d56c177ba9fec09464f1c5a5bf40ce32d600197d","libssh2/docs/libssh2_channel_forward_listen_ex.3":"49c5374f3b5c56213fe9a43ef4592cd51097cd1c9017fcb3be97c94847e8efcf","libssh2/docs/libssh2_channel_free.3":"a7e649756ff4a20b0f5bb6bc9f4647ecaff885c8745e9c304cc697c2c677196b","libssh2/docs/libssh2_channel_get_exit_signal.3":"89557c3203331e1d21773b
 557659a0f21e1ecbcee90c372de3b6e159c7b78a7d","libssh2/docs/libssh2_channel_get_exit_status.3":"d374651f3f72f3f179c37b4a44b815a1bdd998f803a121fc8bc5544c397224c8","libssh2/docs/libssh2_channel_handle_extended_data.3":"c8ba2c032cd2cd8fc5877845df624712457dcf1c092975f3c713fe75794fd42b","libssh2/docs/libssh2_channel_handle_extended_data2.3":"17269accf920a28af6bd14770f94067083e2dfa56df4e08663844d0cebb78052","libssh2/docs/libssh2_channel_ignore_extended_data.3":"c00c30e1aa01c699c92c30c98e9ab8e543cb2fb23376b650627c56ecc3a1f275","libssh2/docs/libssh2_channel_open_ex.3":"a4153c3de3d2cb9a2faaa39eeb9b638c829db2cf4aa4a0e0a2cbd51098626e79","libssh2/docs/libssh2_channel_open_session.3":"63ee8e3220149933ebf5219335cf5b9fb107e23808137f782e8846b191ecf629","libssh2/docs/libssh2_channel_process_startup.3":"1023352b8152e5a1a2ccf2bc899e9539fbecaa2dff69ebb68ada088da38fc6b9","libssh2/docs/libssh2_channel_read.3":"1ddb492b078cab328e718563f2fc5dc3fd737078ba272d078f94e554e2938080","libssh2/docs/libssh2_channel_r
 ead_ex.3":"931e1fad6ff1d629ed2b523c75e645a16344be8afebc0e2f50144ac8394146e2","libssh2/docs/libssh2_channel_read_stderr.3":"6b3a6db85f2fdb26a07b95d6046127f3d5c709e6ee4bd72d66b9109e10ca8e1b","libssh2/docs/libssh2_channel_receive_window_adjust.3":"01a3e1d79fce062cba8fefee6b8fe7ca81a1ad7a3c8cccf12801d7f80fd6265a","libssh2/docs/libssh2_channel_receive_window_adjust2.3":"451f2632b8c786a16e87940f2fcb978e9d88fee27cb997c192c9e671b72b27eb","libssh2/docs/libssh2_channel_request_auth_agent.3":"9217dcc14a2c6bee93f5754b2fed7827b3dbb8efc335d7fbf4908e8a531570b4","libssh2/docs/libssh2_channel_request_pty.3":"f7b4d6780a1b6ed5518e425751f55d9930a5bfa8e92dc0458ccdb06d7786ecbe","libssh2/docs/libssh2_channel_request_pty_ex.3":"ab2af9c02a3d127ba99cf27f0496643eb30810edb38a94f7df488f41041ec105","libssh2/docs/libssh2_channel_request_pty_size.3":"5ae6ade5d71da8ce3a31fd804c32600f54a3385b07cb8ed6ac90157a9a1ada26","libssh2/docs/libssh2_channel_request_pty_size_ex.3":"4b296b3a64b71c1842c0f12c70fe866734bc18f51e3907
 acfa3f04c4a997bda3","libssh2/docs/libssh2_channel_send_eof.3":"a83be7ac2b428f6d41df423e38c52d01f86b9fcafde2010336c7a57323808b6c","libssh2/docs/libssh2_channel_set_blocking.3":"767637f9629f9b7bbbe24c3f3e13be0a83174f1542a63fe7daba350beb369447","libssh2/docs/libssh2_channel_setenv.3":"fc8773714c44358cf215d80dfdfeea082cc84ae0f33575d17a7825ffb785b02d","libssh2/docs/libssh2_channel_setenv_ex.3":"d4641d1a3054af1fb1aa4819de5ce002b434e56745118d843adc70d902505447","libssh2/docs/libssh2_channel_shell.3":"e2986078e39068dd61d6d3df0d9e54adb0a489e55ba8051ae6ce3ad5f3c2c191","libssh2/docs/libssh2_channel_subsystem.3":"16e48c8ad515baef23e1ea94895cf0d2c6d397c133adcbbd20300304b64cab4a","libssh2/docs/libssh2_channel_wait_closed.3":"8f7ad8093832b4b343b04eefe492e94a18be6f496e2074037f93b99683296663","libssh2/docs/libssh2_channel_wait_eof.3":"a96b063c1d90129420db176063ea4cb66f1b913a2d2b5ada2f3364eeda2d6543","libssh2/docs/libssh2_channel_window_read.3":"085331a4fb18dd396b016629ad241a7bf03afe78b0a09fec701aa8b
 e526fab2b","libssh2/docs/libssh2_channel_window_read_ex.3":"9faf5e32cc4e1fe69fa2e57dc31cbdf3f0e7bfcea339f3b7196f535bbe6be2e2","libssh2/docs/libssh2_channel_window_write.3":"6daa6fd8d4f74957c709695bd74a741e7808e057cda1a0954e76f92f793d61c4","libssh2/docs/libssh2_channel_window_write_ex.3":"052d12745f7a8a634ba0b3b36cf0a592c2425caf0679aaaca4776b664bd2d5c0","libssh2/docs/libssh2_channel_write.3":"30bfc0efb86bf513f721200a89c9139687d58483826924b9b401797de74b6387","libssh2/docs/libssh2_channel_write_ex.3":"5ee6d5afe244e2839353ed8d7d6688bfde3f090bf951afec404bf486d6f78aac","libssh2/docs/libssh2_channel_write_stderr.3":"e15a48affe5a5044a2b70bf6fc1e3c6a1dc61c10c4440db4828080fe55e5a0f2","libssh2/docs/libssh2_channel_x11_req.3":"e10544721e6dae96d4542abe07b43767ae6fff49a5bc87381aaf72be7d45f51c","libssh2/docs/libssh2_channel_x11_req_ex.3":"ece17b293092b2319ea237a2855a4b9b7c89c6954ecfedbd837d3d02ce4d7a13","libssh2/docs/libssh2_exit.3":"104af206d55e98ffa72ae0c5a505523220c8d6e1de27a37a5139093476d5ede5
 ","libssh2/docs/libssh2_free.3":"8abbc67b852f9fabe09eb84540b610304d896721a04a4bee1e9d0e8f8f08c999","libssh2/docs/libssh2_hostkey_hash.3":"82070c7634690b4bddc49f3c83b343c6f792c902e0e48247d055eaf3284f80e6","libssh2/docs/libssh2_init.3":"926b4044a52cf71dac8ac23cdf51d6e76bc92f5a3a72c65371549e18826c1cc7","libssh2/docs/libssh2_keepalive_config.3":"7ebbb7cdc900d6d6188afc537c05c60a115030609d96571ac447ac396991adc0","libssh2/docs/libssh2_keepalive_send.3":"86ac214dd4c086239d59ac6582926f72544c788ad2fbf3ccc4e678b4109d32a4","libssh2/docs/libssh2_knownhost_add.3":"29a052f853cd3f19efc12612d4e3224271bdc91b10cf6b73e866d7018d25f07b","libssh2/docs/libssh2_knownhost_addc.3":"c5a2b8510dc1df43311f17073e7e720232f7a7e25d9ba7ae80efe2f26a133297","libssh2/docs/libssh2_knownhost_check.3":"2059d72130dc5b99c6faa8b399166a8495cf02b71313d6648778b11b0adab631","libssh2/docs/libssh2_knownhost_checkp.3":"88cac561cc381008f64d4c879bbe626afd669090648441c134cae83a5ea082a9","libssh2/docs/libssh2_knownhost_del.3":"34fbfa2954
 6d2bf0edc380270937658f818d2600e4bdc658d5ce28c7d255e1ef","libssh2/docs/libssh2_knownhost_free.3":"3e319da43cb185d73dc215a75351f330de2194608a1b12b8e0b623c900d4d96e","libssh2/docs/libssh2_knownhost_get.3":"fc04784b136786dafb210e018e758d5272c8d9d531c4fc5baac9f7b90f65bfd2","libssh2/docs/libssh2_knownhost_init.3":"509721c49287e0232b3cfeb41a8d4b44a45a195222a5694baf9d728c77225abc","libssh2/docs/libssh2_knownhost_readfile.3":"6d72d5be2d5dd56b125c1107632c58d5e8a692871182f3f883f5662f39d7dfff","libssh2/docs/libssh2_knownhost_readline.3":"e259eaedbe587c06a74ada7c1cf5bf28a168edfff2a60919985aa6c7a15e56f1","libssh2/docs/libssh2_knownhost_writefile.3":"5ef6daaf96128c0b756c9faf38b5fd60697fa93504a5cb9ce7139a3dc14f7254","libssh2/docs/libssh2_knownhost_writeline.3":"32c23d5b4393297935c3fa6e03d57a3bc1d904e5e469cf775bb0516f9f885147","libssh2/docs/libssh2_poll.3":"c4a377bc2be1c2789de7a57fa42baa51cfbb0bf4121153ee9cd5201507a8c2b0","libssh2/docs/libssh2_poll_channel_read.3":"5b3df35e57c3252fc63e819c69cc6405bd
 fd14c546b5cfc2a521563bcc9cb420","libssh2/docs/libssh2_publickey_add.3":"2e7c2772fb78b750b5aa94c7bd38c100e52493f6fb050762af924e26ab2605dd","libssh2/docs/libssh2_publickey_add_ex.3":"76e23274e8b4756b03359b0fb5bcd05becba4cca1212ae2c164a32c2f10ee50f","libssh2/docs/libssh2_publickey_init.3":"5643aa57554f8daacbbff9e539c68cd1093172bd86d859109e6446ccc91a85d4","libssh2/docs/libssh2_publickey_list_fetch.3":"975705aa9fc187961fbab91751a5f41412a30d73d65bfe54862285061afc6c29","libssh2/docs/libssh2_publickey_list_free.3":"5eba2104f91fb101014441df437c695b9b0b1e106b6268d623f886de6c237503","libssh2/docs/libssh2_publickey_remove.3":"69423e4d9d6b76388f6160eb473e82449700569d449911163609c8b1c629ed43","libssh2/docs/libssh2_publickey_remove_ex.3":"5c1632ac1685361577a4ddfd1f6257ecfc012225e1e8c2b126f93add0b5b6190","libssh2/docs/libssh2_publickey_shutdown.3":"b152e6c493896da374b7b93468b23d7012e6232db06c331c158f9057b8053994","libssh2/docs/libssh2_scp_recv.3":"e3af95d4147fb29a893ee80c8af430b7df1d77048d814c50052
 43c02fe221e18","libssh2/docs/libssh2_scp_recv2.3":"9fc689585ec209d13e5a7c5db6750e07b171103bd29d3522424f6d812473b95e","libssh2/docs/libssh2_scp_send.3":"0b72a5932217f8e561840de2ce3e5077bb40e7631b1dfb6f439d4a2413f83cfd","libssh2/docs/libssh2_scp_send64.3":"3225083c74987af71d4a2947a7852ac810fd87ab12532492f286d7e7d7547456","libssh2/docs/libssh2_scp_send_ex.3":"07818e45119b15208123655f945e1927c0971d21ae6d410fd26944b86cd41745","libssh2/docs/libssh2_session_abstract.3":"56b29e317d2676d842f3854d8ffd89723a40992897b962d9ae07b56b2373a727","libssh2/docs/libssh2_session_banner_get.3":"78804fe78c70c1fcc408a493564c989f3d3da36bf56d14344df150bfc65570c5","libssh2/docs/libssh2_session_banner_set.3":"c058557ca5d9633b560e05492212b52ee3f6477dae79f75c8ab4996828d88f09","libssh2/docs/libssh2_session_block_directions.3":"0006e5c9788d8b2c3976274b715ab712fedb6ee4d3caa09071b62b846b7d44ed","libssh2/docs/libssh2_session_callback_set.3":"6c33ad4047e740e5d020ba14cc5ce06beb0bf02b4b2f88c1ab7fd79e6e5f1b8b","libssh2/do
 cs/libssh2_session_disconnect.3":"382845fee521c18828a9611c286919218fe51a4a3185f37f5c6e8a10a081db66","libssh2/docs/libssh2_session_disconnect_ex.3":"5ed79115477f25aa8cf5998bf46eadc2383fd6e4eacee32622d961d4080ffa11","libssh2/docs/libssh2_session_flag.3":"18317502888f1b7da8ef132500e009c8eed72cec5ddffbeda575a4c5093d8b74","libssh2/docs/libssh2_session_free.3":"7fd404b4fb4c5e955cb2b8fee9b72a89864351e63c553e56a80dfc2af8bf200b","libssh2/docs/libssh2_session_get_blocking.3":"947a5fe43a518c13ba5049d820084ec6eede2bc3687923e67b28a75297431378","libssh2/docs/libssh2_session_get_timeout.3":"4e808b2407358466171f2546c5220def1db4460a16d1f24c60a4a5186d6c0606","libssh2/docs/libssh2_session_handshake.3":"fcb9fc145dc6f3b29871dcbe9c3d27529790e1cd3e20643c8aacb3d3d628fb5b","libssh2/docs/libssh2_session_hostkey.3":"0df40e6f599dacefcebf30b19331e4ce0abfad5bce75f5cffc8f4b7947bca5c6","libssh2/docs/libssh2_session_init.3":"ce1a0e9ecc5a17d607437b01f4ee94d5a0d8c5dbc8a04f1e26d3b74daedae57a","libssh2/docs/libssh2_ses
 sion_init_ex.3":"2c169699aedd0f9ca16fb71a90618738dcdfa5b2b70d857a39c60896ba62b86b","libssh2/docs/libssh2_session_last_errno.3":"fe92e9c94ecb5fa33bbf51f866bb62bc4a1e5c3ea153dbaf34aa6553cd477ebf","libssh2/docs/libssh2_session_last_error.3":"b14e30dc25d7daaf46ef119176af947efabfad29eff7f726635f2adb6260e97a","libssh2/docs/libssh2_session_method_pref.3":"6946c31e6d51b612852bed10d4ea869093a048f6d41131addbcb9c4dbbd767e5","libssh2/docs/libssh2_session_methods.3":"d1aaa1586bf15dad4e9f92828592b80d604280b30a3d0e21a71f5124fd1eb560","libssh2/docs/libssh2_session_set_blocking.3":"33c01981b30ead73c614fcb6f7f224a39d6e849e6a9bccc9b8dd463719e1a39d","libssh2/docs/libssh2_session_set_last_error.3":"147c7ad527163e73f3fe285d16c980de60bba09813535a7623a1e0a037cfd1cd","libssh2/docs/libssh2_session_set_timeout.3":"eae71fab2f62942d4e5b66d93a7f49347a08ad1afdfc9a81ce8fcc0d0a9b0068","libssh2/docs/libssh2_session_startup.3":"425118593ad0eaf0688c686d9b75f12b7cdb23d330445077907c6e2023cfef77","libssh2/docs/libssh2_se
 ssion_supported_algs.3":"a2fe37982e0f274bcaeea77ad33ca8fa06ea9377aa4e8196c3a8a827e2906b74","libssh2/docs/libssh2_sftp_close.3":"95f03395996cb7b2652cab241a7d91d0c57bec6d4d8f8097b2932acb56eb7bff","libssh2/docs/libssh2_sftp_close_handle.3":"c813fa985be5105cc3cacaf23dc01f0442628c005e629115992a280597301368","libssh2/docs/libssh2_sftp_closedir.3":"1230d8cc661c016991f32b757b11ee6ddd1ac551e5522c5e009f21ef624dfdc4","libssh2/docs/libssh2_sftp_fsetstat.3":"a7ab72ebfca8d295a2b48f2c14d831568042ef6a0528e590faa99f5e2dd00675","libssh2/docs/libssh2_sftp_fstat.3":"e354ea4b96d512a34db42be2eaaa2c7fb0bfed554e726aa79db7f45ade1f9dd1","libssh2/docs/libssh2_sftp_fstat_ex.3":"2446ac64b425dbaf115b37d29107b66fc0291c2ebd17898669c406a4fd57b78b","libssh2/docs/libssh2_sftp_fstatvfs.3":"a10a9bf1dda75b0e97966ed003d183728a8ded895eece58e458980bc742f7a39","libssh2/docs/libssh2_sftp_fsync.3":"bee468765b5d4a09a3b473eba0cf436328f29806953bc1f998d8bc97d2a3049f","libssh2/docs/libssh2_sftp_get_channel.3":"90e527f9eb6b0d177603
 28f6e3842f74d1d173fe88a7c9ec2357ca471e9c0f41","libssh2/docs/libssh2_sftp_init.3":"585d782936f71157d141474c94c897d7ea292580445550c25c8fd44f5e03052f","libssh2/docs/libssh2_sftp_last_error.3":"8e7b2fa2c5fe4792a39a5c1c24baf041c970e3021511b36e59979ed64a18b4c7","libssh2/docs/libssh2_sftp_lstat.3":"a01353b26374401029f5094a24beca08988ea201ca2197fef2b14f30bb2658e5","libssh2/docs/libssh2_sftp_mkdir.3":"14e04b070a6c351e2af6bd68f73a408e2982e9a358d5d2af5a46d8b422d27ce3","libssh2/docs/libssh2_sftp_mkdir_ex.3":"44c17758d2b0336f94c4004bdd2debf9e1632ba12c6db6df495c09a71a58e59f","libssh2/docs/libssh2_sftp_open.3":"af9a8c90999412d3371218f59859ff91c6a83eabee75f1712adf94c5bceaf1d6","libssh2/docs/libssh2_sftp_open_ex.3":"11661fbcec142d9afee722f5ce779bd32f6e0a2b2dc45558c3bd47292105231d","libssh2/docs/libssh2_sftp_opendir.3":"62639f60918835e08f3c00d708cb32af319b9a56d3c2cb33ad409b60b347b31d","libssh2/docs/libssh2_sftp_read.3":"1d0435c740470b8a6a427da4331b576833eead72f9d976001d8a1f55fcf24815","libssh2/docs/l
 ibssh2_sftp_readdir.3":"0e98293f67ae019adf8c5e17fa9f31f3e34b082c55ccd2119ee424f30c337fc7","libssh2/docs/libssh2_sftp_readdir_ex.3":"7f9a2bda1d49d12040796015a842b592decfb076230ee9c8260c31e7b12dd2cc","libssh2/docs/libssh2_sftp_readlink.3":"1834815d254c351664cacf38c06a4b232f099787cc09a41ef719a1ff242e4064","libssh2/docs/libssh2_sftp_realpath.3":"6b8e75bf89724998c414487d93f8c4899a3b1f4deba50806a798fdf9f9405bab","libssh2/docs/libssh2_sftp_rename.3":"eb87a9b1c94f38913c0cb62a3a474fe8c8f3cb0a874c61ced396a2d8bb92e510","libssh2/docs/libssh2_sftp_rename_ex.3":"12d2e70027755937df6de8b0836f75509f4fc5f1a5428fe5a92ae3eb23ff4b54","libssh2/docs/libssh2_sftp_rewind.3":"4caf86de2f35e2925ee637a68f7cfc2e76dab54571ada06495a0574e549c6a7c","libssh2/docs/libssh2_sftp_rmdir.3":"86a1935b7bb291041eaa7c0788f417c6398b39fd208b6bb478329299ae72a49f","libssh2/docs/libssh2_sftp_rmdir_ex.3":"17029aa15ef3e1c862731a7ee52e8f730dc8951e62e1c0539b922dbcd66810b0","libssh2/docs/libssh2_sftp_seek.3":"546a134db735df610032fa982d3
 c8c1013ced779e21faeff261d71041bcde8bc","libssh2/docs/libssh2_sftp_seek64.3":"07df7a2c8c9d75b198fa60909baa31e1c883002337a4c6b7a1b3a9c6ceb3a594","libssh2/docs/libssh2_sftp_setstat.3":"39c7f5d489ea5ceb51bd9c7de237464f5c510f3ce0983e57f7b69207ef957e01","libssh2/docs/libssh2_sftp_shutdown.3":"48bf057f1836924e3e5009890cb6e63ec9d11d0aa19abc258c75ee7c7bd097b9","libssh2/docs/libssh2_sftp_stat.3":"7fa4495645b580c216ca2279168b6b2f7c9c73a973dabf1997c02a0409d8c042","libssh2/docs/libssh2_sftp_stat_ex.3":"fd19ff075f44a1713d765330d069fd63cffd8b2dbc09ce9170d926f25d5f70c3","libssh2/docs/libssh2_sftp_statvfs.3":"5762f9ff7d56f44164db57fd048daa60173794c4e7a58ab2fb255e29f0ca2bb8","libssh2/docs/libssh2_sftp_symlink.3":"ae7ea167057c307552405124ad54ee488db7354e7caa974334e88f5b2104c88a","libssh2/docs/libssh2_sftp_symlink_ex.3":"7e22a39bb97548428cddc8a9cf3bc7a1ff57cde878b337a7e177730bf5c51d01","libssh2/docs/libssh2_sftp_tell.3":"ce22525601570f33d91469170d43470a8a9decf0b35ae82c2cea72fff1dc8d8f","libssh2/docs/li
 bssh2_sftp_tell64.3":"db5faf0fd28de4738e3062555c1d6981c2b272d7b89bd85e3e83d2a03237472f","libssh2/docs/libssh2_sftp_unlink.3":"d8c4c60c41e81149fe14a4a00cc114d3f7bb4799ceea4895c67d79363da3ae7c","libssh2/docs/libssh2_sftp_unlink_ex.3":"64b0723444b716d2b809a3b481024523fc8c62ab45d3ec4274040abf824cf611","libssh2/docs/libssh2_sftp_write.3":"a4706e9d6dabcde2aeccba27f7d7d5a3cef33dd21f4bf66bf5b181c3e8a3f9ef","libssh2/docs/libssh2_trace.3":"636417e1798bce85c2058cad56493919c608d426acaac409ec1a489bdef90fe2","libssh2/docs/libssh2_trace_sethandler.3":"b37355eff49dacc9916818db61258f21665fb68993e57ca9040db056453bf8bd","libssh2/docs/libssh2_userauth_authenticated.3":"81115e3ac2549eadafc5ab8c73462d1c5565593106c4d995a920f718e5dd451e","libssh2/docs/libssh2_userauth_hostbased_fromfile.3":"265670d504f8db399e9253af673264b92ae8cc3593912e9b2e6aee436d02fdfe","libssh2/docs/libssh2_userauth_hostbased_fromfile_ex.3":"a71631a3eb07ac88ee21beeabaf6aaccb7e93378c98eed228fa27f1575b04a64","libssh2/docs/libssh2_userauth
 _keyboard_interactive.3":"17d55c3ba83fc9b7a2fa1dbf0e0d1886deb87616298b6bf424b5ac7d63d0da39","libssh2/docs/libssh2_userauth_keyboard_interactive_ex.3":"d62646af0cf3257fa4a599a676f5237c1ab4d07d56b9b66745fe786f640e6afb","libssh2/docs/libssh2_userauth_list.3":"af6928a269c96480a6ea3a3452af7029577f69485fee36ecdd9dde48b4956a5d","libssh2/docs/libssh2_userauth_password.3":"4c8103bb95903b0b2ee6c2b1d0b3eac150ab31314ec023424ab564d29b1678a9","libssh2/docs/libssh2_userauth_password_ex.3":"afa13d3bb9bbdb3672e014aec922b2953556842b69fb602e8dc97f10d569f5d0","libssh2/docs/libssh2_userauth_publickey.3":"874ece028410feb1bb33d481ab2789e6fadc9a9974cf4e0a72517b4c3fb81861","libssh2/docs/libssh2_userauth_publickey_fromfile.3":"6864fc6411955179866986cf95f75ff41a022a4b60ceb177cf503da45a67b88d","libssh2/docs/libssh2_userauth_publickey_fromfile_ex.3":"060d36d8a06538035e0d7c678f78db16d68ad6f930c958ef3c1bd46f96f9ed39","libssh2/docs/libssh2_userauth_publickey_frommemory.3":"5022660ab3c6c7f596b92e887debb3c580dc21f64
 be71b76c83c033c0fe36ef9","libssh2/docs/libssh2_version.3":"d3feeb9f870be0dacc7616c44dffae9abddcd22eec9cc8c18a0526af723ffce8","libssh2/docs/template.3":"740b501cbdd74773bdb93c8a4d1ae1e175f3593c0eb93844ea2cad0c61e14463","libssh2/example/CMakeLists.txt":"f8cc011f16f189f485ed9060d71de862616c254dcfc1fafe49ff6425a4d89757","libssh2/example/Makefile.am":"0e7c6f2ea9a65a6eb253d721cabc8df573cd4d2606ddc7bd7499b701380157a6","libssh2/example/direct_tcpip.c":"1a335122f9e28b3883587768e8332f3883b462def477f8651b83fc1392e96dca","libssh2/example/libssh2_config_cmake.h.in":"115c1b79ea918a83de959f0f50eb98c2ce252b21b566b9ad56f3c23b68e48ae7","libssh2/example/scp.c":"87736832ddc36e80b52ed6b7f1c87eedcb57d739c80dcff5bbf2d610bfc7f7c4","libssh2/example/scp_nonblock.c":"dfa78c57e18acdb437f3a643dbace70802aa7d2d504adcd47ed63f744189e822","libssh2/example/scp_write.c":"3a3c4dfb3c4688558716a364cf0f4d8b767bf30c59cc6b352394a2d698370930","libssh2/example/scp_write_nonblock.c":"8071bf056b72eee39bbb1ee173193a79e6ac8a28127
 24b3e31bb919c6b8ba370","libssh2/example/sftp.c":"6a0bcb5ec7b3066cd040bfc29243fcb36f8375575db17415974a20c29892f6b8","libssh2/example/sftp_RW_nonblock.c":"a2eac2e5433d8e63fd416dd8d0b1424536b4dae701360bf9ec3024495d8c6eb9","libssh2/example/sftp_append.c":"e9aa3ad34d7c9aa119a841e16e99657aa28596b184ff38d09df3a1319dfbf9bd","libssh2/example/sftp_mkdir.c":"51f94316a6fc8ce1c6de9bff0599fa95a950a1424e94b676410d76b1e1edc879","libssh2/example/sftp_mkdir_nonblock.c":"0fb08ab3d217af555d7512693a56c63094642247054def280cbcb08e2a3612c4","libssh2/example/sftp_nonblock.c":"c7236ccc7897e1abd3d9176a33cbd059327d30fc95c7803f7e5f99bf3c448a3f","libssh2/example/sftp_write.c":"7e972aa778422c962ba0ebd2fbae109865b334e33c371ae94a8634e74ffd5473","libssh2/example/sftp_write_nonblock.c":"6b18c9371c2ed1e22b005232f80b99959cc68f2e0dc1351fa73d678e7c64a329","libssh2/example/sftp_write_sliding.c":"b88419136786cd31709d9466b0e4a131b990bbd425096276e5699559863d4bd7","libssh2/example/sftpdir.c":"d186de774a29db36a87fe2f66011acb5c
 5847316791c98f39dc2749a4c448209","libssh2/example/sftpdir_nonblock.c":"6282ae10e701e48063a793ab2e7a819be77f7267dd7ec29264339c41c5dad8ab","libssh2/example/ssh2.c":"2789139110316e87a06b4d6132fb86081c545084358a3ddf6bb5128423eaed49","libssh2/example/ssh2_agent.c":"3184d5a396a9067279ec16070c699a8baffdc02c70930f8cbecbd1cbbd489d84","libssh2/example/ssh2_agent_forwarding.c":"2db3d78ce1c5bdb2453f7d22cdff09cf1dc3e40aceb8a54faffe6f76af88d1c3","libssh2/example/ssh2_echo.c":"91c519486541145f579c550fddb5ffde5933ba0aaf22366ee8aec50c0cfe4933","libssh2/example/ssh2_exec.c":"67afd0ef23627c87eef2e4424967eef26f8154ce50c357cad85f7d3764fcd5b9","libssh2/example/subsystem_netconf.c":"9b076de4366e11ca81e88d60f6dc41ff3ad897d3096f148ce4ce00102d7256b0","libssh2/example/tcpip-forward.c":"0a929eec2a7274e7592ded5f63230de45c1f30578ce92ea14a010a33b231ac42","libssh2/example/x11.c":"310b0aef741a513db213a895fbf772076e35c2ee83eb4ad1f300493ef6b5b436","libssh2/get_ver.awk":"ac9314659d618e57f0d57e9cb2dc5ab14ca342f099de673
 8e93d58b91f698f14","libssh2/git2news.pl":"26cad7a3870941f21348bfdffd05fff7a1e1c650b8e38fe469bab3a2a221f26c","libssh2/include/libssh2.h":"fe2c560b62960a968414c47f9fe640f4a4bcce5340a51a94083d1cc547c98a4e","libssh2/include/libssh2_publickey.h":"2d419bdfbc155cec62cc23d7cb87f3d9361c4f26ce3b3910c74cef715bd2e70b","libssh2/include/libssh2_sftp.h":"8a0c63c323edc42286cc608f9a53cebe46ac91432e1080a8520ab69d3caeadbf","libssh2/libssh2-style.el":"14bd86ae83b499f88b47f57cee18f1a7f4f41650e16e34af4b8ff03970c3c059","libssh2/libssh2.pc.in":"a2c375f048235970c995e4a091fca2cb500574151c356f7682d44deeb90623a0","libssh2/m4/autobuild.m4":"37dfd034b5ea52bede69c54901b818a461ae73e2ab1e28c61c229a87f24a1817","libssh2/m4/lib-ld.m4":"18c4c458009da32c9daf0ea332a539e5edc82ba009b6c2faac004626313f00e5","libssh2/m4/lib-link.m4":"d7aab3772e5b60d3ec57ae8dc66d9b762f5c68ef1e8516df25fadfa8bdfef379","libssh2/m4/lib-prefix.m4":"4797426d11dad1e5e4fdbc8bcbc8b10d9750f47bcb74e4c07a953a15265e902c","libssh2/maketgz":"3a5878c78f38abff
 9158f88cebd11394a5998dd2ea3803a4aa5b4bfa885e46d4","libssh2/nw/GNUmakefile":"d6afc1888b0fdfcb50b29a3d7080a4183de41a444c7063db93a1b56d533d8dd8","libssh2/nw/keepscreen.c":"f95e6f4851f16bde13e51a1f4f6f405a142c6a7940beda74de8058db2f170ef6","libssh2/nw/nwlib.c":"d81b0ad6d05938507ebc3c0510021e889a2d68a74d50709df981d2339798eb78","libssh2/nw/test/GNUmakefile":"fb00a4a6776f14c1789ac8abc0b0136b79813177221355fbd3c5b1907da938e2","libssh2/os400/README400":"f5ce6d4f86e2334f5c271020195fb0964083e19e2f44dea4c4d62e7a9bc9f4da","libssh2/os400/ccsid.c":"07d12155f5b9b2be9e5477fc2818a7e98183eedc247370de04d718eef506fdb8","libssh2/os400/include/alloca.h":"f2b4c60ed1f78832b9141cb64e5d1d8e187d90afcb5f9f1d56dcf3f9e185d236","libssh2/os400/include/stdio.h":"ce35104d75377458c0c38aded5375141abf22e71215ef7533a482ceec279c731","libssh2/os400/include/sys/socket.h":"05599c77ea5f79337a77e7b24f4d63f40b929884141fbb66f356d825c09c8dfb","libssh2/os400/initscript.sh":"b27631198e5eea8048684f8fae95ef27eef1f712742265022bf4eb1ebfe
 589cd","libssh2/os400/libssh2_ccsid.h":"13a0b3c9165d7ef27ce242c64ae191f876a1fdd65f0b4d768cc3235c2509910d","libssh2/os400/libssh2_config.h":"d5615c238ab5642d19c29a04f6e18ef0a1675043861cbe3eebac2297e5acae09","libssh2/os400/libssh2rpg/libssh2.rpgle.in":"0ce3e5bb7c33bb6dcf960af6267b4c0e3cc16259ae881724624c9fafbcc090e6","libssh2/os400/libssh2rpg/libssh2_ccsid.rpgle.in":"439d9e4c68c9b20a618e305e51f54f817a9cc51dd37b62f5792232048ed3ff80","libssh2/os400/libssh2rpg/libssh2_publickey.rpgle":"b138035c36feb1816c6a99b1d98daff7997b05d02325cad1d9909f983e4a330e","libssh2/os400/libssh2rpg/libssh2_sftp.rpgle":"7d6fcfc290b07c8bafbbdfcf61e19456ab6961afe23a0aa142110052a33e7ace","libssh2/os400/macros.h":"38360f3613c00f49178996cf53d2519009a0b3fab161db7aebff143149730c5a","libssh2/os400/make-include.sh":"c75efa9eba5bcaa1e75f60110dd463c2c6866b486186db705d49518c1b0fd8cf","libssh2/os400/make-rpg.sh":"41cce97d1dec97571160c98967db4ab27af9c7890cf4f7aa238b3d6b6aa69eee","libssh2/os400/make-src.sh":"c750bd85a5153b10c
 61c069a7d1ec253ec3587554f2da60a144dc4246ff50e67","libssh2/os400/make.sh":"07f221c0d6a9e7b1c55e5d1cc8e3babe7edb6b4bad3063827b55265bec9456e4","libssh2/os400/os400sys.c":"2c9bc9de576376b0a37c401c64b59990e2f74ceafdb0a8c6555fb8de5be2b01a","libssh2/src/CMakeLists.txt":"30b56cd9854ab0b20d1527f368b35c341ce8bed37708f316edef8e7a229f06a1","libssh2/src/Makefile.am":"5e0e38d3203bf1f1e0f1acc57b98591a4de80cd5efa26e5dde6b7348f2df1a68","libssh2/src/NMakefile":"bad4819608f02f282aae84462a7c3f1d1b199ee0fc86abdc9ab7326ee6482576","libssh2/src/agent.c":"7bbe43a2a9bbc1e6d4c2ff6f2c10d5b9d46920148c10b1788f355b760303862b","libssh2/src/agent.h":"1348e28650ce7f4350e4e1b92e26d7c45e729fe3b9cd68db716e40a64ea15269","libssh2/src/agent_win.c":"1c8d67a82e21c539c62f3a0b4c715fba81ca40cee588588d5e4f1abb389966b1","libssh2/src/bcrypt_pbkdf.c":"76b4d9244aa61fba7db31f4763336d890d5025f9f62f3bb1369eb3b0986fca6f","libssh2/src/blf.h":"db4921417d17d79529c393528e541bad14434777eba8cc131ed74f0317dabfe3","libssh2/src/blowfish.c":"830
 d5c2b3ac01b1a96253cd78304af11bbfef822a0e59bbf12d0d370f0f0f43f","libssh2/src/channel.c":"de351bd081fea82da9d1bc613bb4cce9a1b08bcf18839433b073b4ea5075c077","libssh2/src/channel.h":"3be8e8b444461111fe0d35b21137ffcd4f681c1357616e0db4908bd434e97bbc","libssh2/src/comp.c":"0fd0cfb6b74e2d94a2da15b27e8e99e42f277dd12fd27ccf17bf566ad8009993","libssh2/src/comp.h":"7aa028c23316132522362bc9f397e22bae94e9e620eb80ac12a2009278532926","libssh2/src/crypt.c":"04e3683e3a16046aa7736b2401bdebea1feffc1e7fb928952dbd53adcc5a493e","libssh2/src/crypto.h":"37d8b6726c771d88cee1928391ec5b5126617fc1f04f7e705b8fb041a8fe91cc","libssh2/src/global.c":"9551963ca2fb9c321703db04952d9b05e2e6049e12d8bf6ba6e9291920b87a37","libssh2/src/hostkey.c":"1ff0d3709396e9d0c4061968a7159bbf00af7c3fedc37ec32c4f8cea682dd492","libssh2/src/keepalive.c":"acc373252f0624126226e2528897757da61c870374d5905df29a17fa185214ef","libssh2/src/kex.c":"6fbb83649de7afcb197c285f41f6d2c0576e17bee93d6d51fb85421a21af8258","libssh2/src/knownhost.c":"2ef607c0b
 b2ef7ec9a4cf41158813ca8c62c55ace046a02a2b862cfdede25e75","libssh2/src/libgcrypt.c":"cbbd92a4b70d620517458412390519d40f1e153a882be8d5fe6c5de6d3570336","libssh2/src/libgcrypt.h":"46d7c65c53b1e355327e1b314d5841d41cb5426faee36ab6bbc0b7b48871b9d0","libssh2/src/libssh2.pc.in":"46db28ee6987b9f399c0e3b02dd5374fef2831fd4051109a478e85832e1913df","libssh2/src/libssh2_config_cmake.h.in":"07fe4470fd1643c51e5f2a868b053d733aaee891f1f886f4b8b848fb70db76cb","libssh2/src/libssh2_priv.h":"7cf354751d204d0ae1d3bf8bddbcfe38bebdf792217c34f9ea00947c57fc992d","libssh2/src/mac.c":"3ff6c3d22e5e9a0cc2d69b2f840606f560b83b9d40e276927d0854c20ec35b27","libssh2/src/mac.h":"ead9c368cf6700776d6083363a275e26d0e89de665b40b48fed1f5cd6d783b3b","libssh2/src/mbedtls.c":"3566fc0fc5d2a658780673741678f811e1a4fbc99aebaaeb2419c65b5887c2a7","libssh2/src/mbedtls.h":"e28d5e7b08c0d67f1d8e3e2d2fb7fef69df049cf8e188a7760abd7b50d91c7e7","libssh2/src/misc.c":"64f7a580f0cf00d6cba86de4fd5cf156cba038b2a321efa8504236991edff50f","libssh2/src
 /misc.h":"4bcc54e2280af4e4934e7c14a32e839bc9d09dc33b52b9a75f27366215a61556","libssh2/src/openssl.c":"126dbf0e4676f84a1acb46b154d2d32f42cb47a81f157a16ff1391a02c615baf","libssh2/src/openssl.h":"5dc71961f26506a53b7d724d385e5ba42ce75c83e00862041697e0f015a98166","libssh2/src/os400qc3.c":"f017c70d602941aca07f6fbe5fd55cc9bb8ce6c1d33fdb4e6f408d99edfdec03","libssh2/src/os400qc3.h":"e2d33622b00442fb2e2fcbb26fff7ee3bd997270f89a98a323bfed618956b28b","libssh2/src/packet.c":"e5b3f9dc190f9491a9746dd91e7da8d2f6639ef1a1e62552556753539fc1ddca","libssh2/src/packet.h":"cbd3fe922ff28675f6f39b31131d7832a07263356d0e7d55197e40d5fe244577","libssh2/src/pem.c":"d1adf7211b744554b8c41180c87e8d0aca2a7babceee91c75032e68655e41e22","libssh2/src/publickey.c":"3e1579cdc688dee088294975ee4b09316cc68cd9083ea6170a8d4726d820ea6c","libssh2/src/scp.c":"ef7120de5d824d9d4135b846021af8f42c44ff790dacabc8c4d23bb702abd81c","libssh2/src/session.c":"3d1ab27b52be357e36fa337e7461828029690cda8c69a705222dab2228d85065","libssh2/src/sess
 ion.h":"c3918ff057ebdb51116d7552e27b9f7d18461e1fbba4c1b635465dff909d4623","libssh2/src/sftp.c":"9090319e2732c400a344c78f3e9695ca6e1a3466159ffdae3e3c5f52b10b9586","libssh2/src/sftp.h":"3b4d6460b857e32707116814f1ddc10dbfa5f804e407883e77bdad6c36db8c14","libssh2/src/transport.c":"4116293d9afceb3a8ea8de6a09bb3af42604632b3536f305240b7564be0555fc","libssh2/src/transport.h":"4a57bc5ecc21db41729319d8fd34808f042cfa7d155be306ec2165f2d81f010c","libssh2/src/userauth.c":"144ce811b1acf4be50bba03eee53a625fd5199815d04436858316912168fe05f","libssh2/src/userauth.h":"7d930eb690721808c6d89ba917045827118a3b98b04333935d8e91b49f651b84","libssh2/src/version.c":"544a1389f5a6bde4ec263991d994da3d9529cae5635aab6730702a6575bcc0c5","libssh2/src/wincng.c":"ba1fa277b369df2b51d23f354ecf28a4987ce0a0d29023e6af5ffeafbc4cd359","libssh2/src/wincng.h":"7bbc6e35d281bee22d52883c728b626336d3ec8a4ce6fb384f96bb8b1cfaca8f","libssh2/tests/CMakeLists.txt":"717707a250f05fb65e7009f696c70bd86d7d2ec16883127781b617d0c692cd82","libssh2
 /tests/Makefile.am":"d9f4abf187cfd058373c570fff74009dadfdc9c96f84375ed5649114f0d8369f","libssh2/tests/etc/host":"6eb0f1bb23d7877ddcd502159e6673c053b5ea1846630f21651ab58ea25d7a6f","libssh2/tests/etc/host.pub":"0e2479a973fbaf1f7f5dfebb111e2b199ee59c0dcfdf646d26760eba0b8b2aa8","libssh2/tests/etc/sshd_config":"2ad4ea47ddb633c7a2e000f2d6619d08bf643591f26a7a0b92d0befe518ee951","libssh2/tests/etc/user":"776aebc0c12e466e4b65f1a44ae5235dd70687ab03f283aa3d9a6df70d3bdbbf","libssh2/tests/etc/user.pub":"39bc4445c24c32fe5e64a6ee02025f3508b4334b2813e1a87c40d44ebc5f8c1d","libssh2/tests/key_dsa":"2e5b8a618e853eff7b3e0d2928203529fe18a3ae62b46a82ccd48a750819b8c2","libssh2/tests/key_dsa.pub":"12aecbb237794fc79d4a96cebad1c4badaa1902b3f1788cca83b28a1f977b895","libssh2/tests/key_dsa_wrong":"21f66160d72789400c5420f460fb716cde82b5afc5c09f3f7512d310e3c8e0b2","libssh2/tests/key_dsa_wrong.pub":"0274eed003e62413aa894abad044296c6fb3cc19450457a282674ed3836518ea","libssh2/tests/key_ecdsa":"8fb4d570516afc175869de76
 86125a828e18c38ddd4c2524c5a8d05c95ba7e7d","libssh2/tests/key_ecdsa.pub":"bc756bc47e3afd11437cd40ebe8ce5c8fca92ee03c6e3f01b6c5b44001bbc7c6","libssh2/tests/key_ed25519":"18e808415d2f344a20b7cefac12f0df0af4e404f446f5c690000c21987ce8795","libssh2/tests/key_ed25519.pub":"e52bcbcbdcdbf547a121e92bbb6f5342375719988e33ffe7f228dd2b935c98ba","libssh2/tests/key_ed25519_encrypted":"fd1e9378f94f2d5514e16f32fcf175e8303433750c81f2def3814d5bd44a13e3","libssh2/tests/key_ed25519_encrypted.pub":"7ceb4062d5fe17f190eb32c894e4cfd76e00db7c1b16de7516df8f910649469d","libssh2/tests/key_rsa":"9d8f4c955624a4af6fcb754e74e2abe1d3e7fe6340f6063617cd58bf122a2d59","libssh2/tests/key_rsa.pub":"4293f28b7033d459618b277374d7e932869964de131bba1d427030cb5e70c297","libssh2/tests/key_rsa_encrypted":"fc3872744c7bf6db2df4ab2ea5701370cd8bd39367d659eaeae49b2dbe7bca34","libssh2/tests/key_rsa_encrypted.pub":"1f340ccab8b86e51d4ee7585d61d5e49e3a32338ba9eeca65988a1d751112c5e","libssh2/tests/key_rsa_openssh":"a146196a5b2189b40bc00bdcd
 1958165106ca21e72a7d02c0a7f95a6dd926487","libssh2/tests/key_rsa_openssh.pub":"d564da6c612286603a83af006c3a6efe53885a2417aa25f234818612e16bea66","libssh2/tests/libssh2_config_cmake.h.in":"193a748944f6bccd3787b1c3958ddf95c1c7ad9b25e5b8f4b42cb48987e34668","libssh2/tests/mansyntax.sh":"71c56796eaa4008910b3d67b885b9a7e2c018d0f88be4bb290334afb9ff23bde","libssh2/tests/openssh_fixture.c":"7c17b8373b09dfe53489e96854fa89f6e6e3c13eac838f79179f38ad6323a501","libssh2/tests/openssh_fixture.h":"21935165166ce4518c6534070cc506fcd85ece95238fef29e6b0be784c05d7c0","libssh2/tests/openssh_server/Dockerfile":"fe4f6271644f6a29af0e077902cb7cc80b6226ef0e1976438dcd74148d26823c","libssh2/tests/openssh_server/authorized_keys":"58c4cf998535eb4123eddf7cae7da4413eed50e3827320187380ec7925fcf61e","libssh2/tests/openssh_server/ca_ecdsa":"14e72246d3990d345c30cd3d06c5c7ba9496057d94da2f5a6f14a7c636663206","libssh2/tests/openssh_server/ca_ecdsa.pub":"2925ca6bb4d280aec3dd68041efc2f06e959295932a26f73a263c939c03e3220","libs
 sh2/tests/openssh_server/ssh_host_ecdsa_key":"03753b2b4942081d1f33201a193487ebd5a577e0bfde45f7e03a1de5ae404688","libssh2/tests/openssh_server/ssh_host_ed25519_key":"18e808415d2f344a20b7cefac12f0df0af4e404f446f5c690000c21987ce8795","libssh2/tests/openssh_server/ssh_host_rsa_key":"11a57dc115ca17203d6382ad6fdcd8df33bd0f23ff6bf38ee4a697260ffd1a11","libssh2/tests/ossfuzz/Makefile.am":"049665a167b9f4cd664b12884ae4470c0b0b2077931a056ed55d61784b230d88","libssh2/tests/ossfuzz/ossfuzz.sh":"6fde8ca30e3dfc0ade9da4d06f5e34f73a51c6fea72e3a1348cf5ced10b73d80","libssh2/tests/ossfuzz/ssh2_client_fuzzer.cc":"accadbd90783a3e7fa2311e749aab641f53851a14a17c2e8464bf85c1a5e887a","libssh2/tests/ossfuzz/standaloneengine.cc":"f6eb3ebf7e14252339a21fb887a08b2e7638a7ac77f706ed80508b2c0d54d81d","libssh2/tests/ossfuzz/testinput.h":"ce435e13e87abeec0a297ef3b566268496ecbd517c1d09dfa2232dcbbec9be2c","libssh2/tests/runner.c":"696b83fd77bca60560c1609212c59ad986bf151cf72520b63d23643111a7ce4e","libssh2/tests/session_fixt
 ure.c":"0e81e1d8e9999d24120fd8be8b26cf6984578c504f46d009cb816fce50412762","libssh2/tests/session_fixture.h":"d4f098a586b5f7dd0f3785b86933c08096bc12a2e55f07fff470db6fc7bbd076","libssh2/tests/signed_key_ecdsa":"796da5d8d420f644f47feffffb0357ac99b299471e4d757f21b6cc8bfefe8f0d","libssh2/tests/signed_key_ecdsa-cert.pub":"0f2e6d1b46874a01cc36ed766533301622d64fa88988575ca77eee56da7b3952","libssh2/tests/signed_key_ecdsa.pub":"d6b6f80d9117f896b99933eba19b012f55068ed8b77956f1a7b0510026c2876f","libssh2/tests/simple.c":"4afdeef598aa669b5cd0e7388dcf2e579f2c0f9c954face71d366250101d270f","libssh2/tests/ssh2.c":"3a8605fd3dd6151c569bc12c07ecdc33de7d704b6224da2dedfe3c76494e015b","libssh2/tests/ssh2.sh":"7bbe65ee20f4e47e9264bd74700cca16ee066aba5fb9e4e42f46e1cfdae4930e","libssh2/tests/sshd_fixture.sh.in":"c8b93076f66222f73329472ec151b210e55b39024de5d3c18a4c609b65d13b7e","libssh2/tests/sshdwrap":"21649ba440cd534f4bfd52c0a8de339565768b373c172dca106cffcc8bd06e09","libssh2/tests/test_agent_forward_succeeds
 .c":"a5b9f9009c6818b86f235debc2ee15de5ceb0cfe1d9b539270167058afb4e6ac","libssh2/tests/test_hostkey.c":"f1059c3ac304332342f39f32288afa3f61f9bdbd5d617fe6052491b20bc0672b","libssh2/tests/test_hostkey_hash.c":"e745d8b4ad92c858dc588e3494e183f47d591c1ef2a13b63e2122f478545093a","libssh2/tests/test_keyboard_interactive_auth_fails_with_wrong_response.c":"f585a7df65a87fc4905f0b165531beb41455486919ed3aebbe9804ba5795b9c7","libssh2/tests/test_keyboard_interactive_auth_succeeds_with_correct_response.c":"8a112c876cb2786eed61de0f68f0a93ee3840269d8d6610e8ebeeb9a66c43533","libssh2/tests/test_password_auth_fails_with_wrong_password.c":"e3d588d9c6850ab69bd7674d2027563ff9f1491740637506d80875e66609974d","libssh2/tests/test_password_auth_fails_with_wrong_username.c":"c91608bdda3a83a62876725ae2d7002ccb3332bcbacfc9c9578e7488c0ed4cef","libssh2/tests/test_password_auth_succeeds_with_correct_credentials.c":"80d253225d68bcb7dc4b94b53374aa4de86c6995481de0974b6284bf87a91583","libssh2/tests/test_public_key_auth_fa
 ils_with_wrong_key.c":"104b08aa9bb5f1006e07e59dece417a2d6a5f60ef6c3f8dc62b6a8af95d413e0","libssh2/tests/test_public_key_auth_succeeds_with_correct_dsa_key.c":"4b397de742f0d2fb15e86d20451f109fedd1ba28b0622496a2d030f9e9f9ea5a","libssh2/tests/test_public_key_auth_succeeds_with_correct_ecdsa_key.c":"53bd6d99a243aaedc20f7de5c974c7c04e38090a415d338cef2d7357d7644912","libssh2/tests/test_public_key_auth_succeeds_with_correct_ed25519_key.c":"207f499812271669d2a9ff5a286761a45840de9230c07bf72426fcd59a682317","libssh2/tests/test_public_key_auth_succeeds_with_correct_ed25519_key_from_mem.c":"4dd0a8251a41d0dd68490fb7abb9b0a1cc190af1603815f3050e29e2a7d6bc8a","libssh2/tests/test_public_key_auth_succeeds_with_correct_encrypted_ed25519_key.c":"6e5c107ad53c144892c54459f89ef2cf8a25cbf977bbd978e4517cb5959a2565","libssh2/tests/test_public_key_auth_succeeds_with_correct_encrypted_rsa_key.c":"dbc95a803a54364604ab379b512fc98c33d791a1df4e33e4027b881ecc2e75ed","libssh2/tests/test_public_key_auth_succeeds_with
 _correct_rsa_key.c":"93cdd2513af42d46552baa273401910dedd014951f836175ec98b827532c5b6e","libssh2/tests/test_public_key_auth_succeeds_with_correct_rsa_openssh_key.c":"4e6d3ace02cce1ba8c1b4b6e5d774a8a4d259eef8314fe6c3ae0d6003a87dcd8","libssh2/tests/test_public_key_auth_succeeds_with_correct_signed_ecdsa_key.c":"f16a0dc74d16f0d27f10867f0ddd5b306fc4b16b2bd8e401a5451ce71c7649f5","libssh2/vms/libssh2_config.h":"1c5c4ba6ab33bd1d9e4ce0d84e1107ced89d27a80e8505e1b428fa942edefedc","libssh2/vms/libssh2_make_example.dcl":"7726a5d4f07d522aa712da8a6ca7b998cd93ca950aaa544a5eed1790dc69c775","libssh2/vms/libssh2_make_help.dcl":"9d04ddc32831abf63b7e042dd0677da83599f11497d364b02cbe780419e248e4","libssh2/vms/libssh2_make_kit.dcl":"e7c23c9db4583f6944cd8973cd813a6d65749170417b8384f94db69597f81f1d","libssh2/vms/libssh2_make_lib.dcl":"1549134cd4a4bdf2543f900ea9c811de1c67895e1e830f7ddfb384e7601f56a4","libssh2/vms/man2help.c":"ae61cab505a4a9c87bdd103506ba9a36fd7ba92714edd9f67d022d8a9474e6bc","libssh2/vms/readm
 e.vms":"30b5d682da37cf16352152daa682cb04c56e1044c77fc4c4da77bdc9709c33b8","libssh2/win32/GNUmakefile":"0c120532da875411df50b2f4483add53afd9345b2f4eab5f3c6ca5ccf7b17eb9","libssh2/win32/Makefile.Watcom":"475b8b37143bad986386ca1d2c777e9f8e46d0172ca4e9f70c613c84bbdece4f","libssh2/win32/config.mk":"e2172a92c5b5b9f2215c5c11128009cb6ba8a1f25402990c1f7e8ae78449d289","libssh2/win32/libssh2.dsw":"b16e14f1e5ed93f52e450b03d18691bd15a17b13b69486551c61b455cf823d98","libssh2/win32/libssh2.rc":"29a25c29ed977ba78619a59bc858508caa6f0849607c02da8fa7fe71b6fb7195","libssh2/win32/libssh2_config.h":"d5e704c80aca43c33698bd45059eecde05b098049192bb9f0640af593cdb2cb7","libssh2/win32/msvcproj.foot":"85c21ad71a2ae878242d9b370e96dbcb7433b77dc9fa4d1fc903ce0582e0f62d","libssh2/win32/msvcproj.head":"3a9edda7c4f545c43178c826cb0a83f9e2f38ed61cbe6b3002b9683cfebb4fb1","libssh2/win32/rules.mk":"5f68dc0a3ef0f61d783289c98c00419a0a76a2b866ecd0f86404ca1d3effc12a","libssh2/win32/test/GNUmakefile":"e2c77b03fa88a88d90fe1dcb6c0
 95935ba99b03b56a78f101a373ff208e1369a","libssh2/win32/tests.dsp":"73710a110000074bb299c9b780fb4fdc9e7a7edcefe19428de89c33d65e77841"},"package":"b094a36eb4b8b8c8a7b4b8ae43b2944502be3e59cd87687595cf6b0a71b3f4ca"}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"8981208d3829e782a076099f6d686d1eb3714102e0af7de70822f972ee9f0eda","build.rs":"e9eef35f1c18dd9844960d1d315e84ad99a05ab1247f0f54e3c2eab244988256","lib.rs":"3f59dd52a499c4d707114626a44123f3c969c999599ea527dc04d221cfbf460d","libssh2/CMakeLists.txt":"8530be1d6db3715344fae1900fe73d8e2294930bef33019657064dfc6094cd0f","libssh2/COPYING":"859e60d760a3446ecaf777339f1eef98c527aea40714384d24b882a83ffdd23a","libssh2/Makefile.OpenSSL.inc":"8e82af68b172ddccf94c65c1b4e38b69b3b7f027cc14a54b6d660c5f2bcd4de9","libssh2/Makefile.WinCNG.inc":"79243be1029a0df52a5e79b3dceb80ac462f2e735e25445e38852610bee62f34","libssh2/Makefile.am":"955114c8c455346542067604795f344a693afa544c7efa813abb3b1dbccc59ea","libssh2/Makefile.inc":"3ba04a6366787cd65119ca3a4720ad31267e32d94b49763e123d85bbbc303ce1","libssh2/Makefile.libgcrypt.inc":"3d71dbe94c906d07c70eb8c7eae80fe5ae014565d7a9446bd39b659e91b73b71","libssh2/Makefile.mbedTLS.inc":"18bf8364aaef158a27b65be88ac1fd74af0cbd336930b6ce611b62dab77feebc","li
 bssh2/Makefile.os400qc3.inc":"ac9b0e1731f7dfa20e3987e108a4c5896e6095638ec545c8f2ac64c35b63a455","libssh2/NEWS":"9418b9c8dcafc633c2c16372b2b21ceb70a06243756af21eff173a4b379101d1","libssh2/NMakefile":"2d1cbda9bccd886de3c99dae77f09ac75a7f09f1834272b4a9154d2a0ae9a81a","libssh2/README":"428a810c75712693e66d2104ab64b976992a2670109959a8f771a609022ed25e","libssh2/README.md":"74b0076905edb7acfe526b1ea367aa567ced0599d5a3be8e8aa22c1ca847e269","libssh2/RELEASE-NOTES":"9a88e3e26281797ee09f09cd04e4bd753837b02366dcaf34885b800742bc862f","libssh2/acinclude.m4":"38b4ba61f1ccd764daa1c249fff189e4a897f71e19ead71690f5bcbe25d9d541","libssh2/appveyor.yml":"499cdf346619e52967be12e833561fe2b9eec7a50214b25b8195d67b21eb7262","libssh2/buildconf":"c2102a17b8f50f0d56d20639c05c70347a4e6ac5dcec351c6f851371e2a68a71","libssh2/ci/appveyor/docker-bridge.bat":"24121ac7d7c852358b4d6a7f319e1b593d294a97c027175f8085c741d7792887","libssh2/ci/appveyor/docker-bridge.ps1":"c96ed6844515850165b15790791f80a666f606a1931243fec3eb3a0
 7f7531ead","libssh2/ci/checksrc.pl":"879e805b57e2e86f6894a6a4e395daf1c1c048ee5984e109be74afc750782567","libssh2/ci/checksrc.sh":"a435be07f99eaac5b59f9cf68d88e3541c9fbed09177d0874078c22547edd5e9","libssh2/ci/ossfuzz.sh":"34e596139edfe9aa0a52b73ac1ef860a69968f88b1ed6f0dbdfff3832d08a7d6","libssh2/cmake/CheckFunctionExistsMayNeedLibrary.cmake":"60a8d1afe9a3b71cedb782ac6187a9a041d2792006a7eb3379bc42a9fcb95a4d","libssh2/cmake/CheckNonblockingSocketSupport.cmake":"443b9824a1d7f7cc0a9c1b740ca9824f82f73ac7f0294aa2c1e3192aa3cb5e0d","libssh2/cmake/CopyRuntimeDependencies.cmake":"5a146613512f467192e7917561b305e31d52a85b3f216d5e3c6ca6d2261e9b03","libssh2/cmake/FindLibgcrypt.cmake":"af65a3a8ea63eb935b1602b2b75c7c993558f9118e8c12cf9f2d4614977d8c53","libssh2/cmake/FindmbedTLS.cmake":"db4ad3046a838c325ff39f3f083a2de39c3bcde4c69670610ce27b23c758c50d","libssh2/cmake/SocketLibraries.cmake":"857615772ee6a1b79826eb18889def1a626296262db78def698286930e3c6cbf","libssh2/cmake/Toolchain-Linux-32.cmake":"fc7c2
 718c2e628fe28db38406fb57e9380d202dce8b4d615ef8b818984c37a32","libssh2/cmake/max_warnings.cmake":"1a14b62c40d327d69ad1531e3372523310e642779da33c3865e6fc67df46835b","libssh2/config.rpath":"aa48652ef1709d015f0e627eb5d18d1c198d81c29d5f89a81362512fcba72b01","libssh2/configure.ac":"1a24a7b81c127f3cfe154ede0aad567341c0743178d3f3b41ad59f3fa24c7269","libssh2/docs/AUTHORS":"12228e95c6b41c76d00b6ca8f2bf7bfb3372f3f32b6c62f34882530b9406f26d","libssh2/docs/BINDINGS":"c711b535a9462815d564995eb84b997261fb9a2db4ef82a8c9b3f926dd7498b2","libssh2/docs/CMakeLists.txt":"0cd132f7148c6807399141a611723f6083499751d8a3e326f06879e57bf2c369","libssh2/docs/HACKING":"5d2563866dc4fcc8a4ab352676e3d64b918b75e0a73ce7776b9eef7e8949d3b0","libssh2/docs/HACKING-CRYPTO":"88452e1dab1160dbd7d800c5d1c3b6651bca884b18aea476c6ad0b1fd387edba","libssh2/docs/INSTALL_AUTOTOOLS":"6ca4765ca5ca117514e41067ce05cc24504aa29eab9a76bb9cc1ecc87c3280b1","libssh2/docs/INSTALL_CMAKE.md":"266b25dbe613f02e4662467c23ad80bb42a35ef9d579933ddb2d7b1d
 038089d0","libssh2/docs/Makefile.am":"16050bb16175b6c34dd246fb10628975dc7563412b926a10818e3f85efb6e7ca","libssh2/docs/SECURITY.md":"4314c11322a9970bed60130a2e11a0eb79c9de719a7c7c2cb227356d9771ba2f","libssh2/docs/TODO":"e3a304f76129bdb90371439567dffe2a8841e3a5c326f71000490a11241bc9b0","libssh2/docs/libssh2_agent_connect.3":"5fe15d3e781382a8e935048dd266a89e9c3b63800d4714ceec6c78c512e49f20","libssh2/docs/libssh2_agent_disconnect.3":"e2d1a3af99d888e310c6e22227e11b0a42f1d265451a9e13ac787fe0b8075426","libssh2/docs/libssh2_agent_free.3":"332b5fb986c013ba363bd18d5e39c01a047d79fb22acf673291f1e19b4d8292a","libssh2/docs/libssh2_agent_get_identity.3":"acdccde633dda1740ba043fb3f2b3aed884923c74ff3e2ad2f01d5a6b87955f1","libssh2/docs/libssh2_agent_get_identity_path.3":"148b43bc669d3300b3fbf09ae57050a15ce074c8730ecef78e97ee9309ea179f","libssh2/docs/libssh2_agent_init.3":"09029ddc71d63085dd6ccf92062ce6e31f0d54a1eb40d06587713814ddb4ee5d","libssh2/docs/libssh2_agent_list_identities.3":"a498d332ea55486e
 b1c234468a8cf3c1886eb6b98bdd527a1b44fd06683e7ea2","libssh2/docs/libssh2_agent_set_identity_path.3":"b60fb7e972fc2b420ff0a7452ddbf12597dbc9cb075920da16ee9c0eef7f8425","libssh2/docs/libssh2_agent_userauth.3":"d2119c63fa5bd1a05385bd176a1c8d2ee0139aebec92addd1601edc948f17855","libssh2/docs/libssh2_banner_set.3":"1bd7a8bd59cb74d90cfed26c41701788afe7c0a667f686c5154cd0615d586422","libssh2/docs/libssh2_base64_decode.3":"c48f88f5a6405738bc146161bf442e02c02073e0b9957f5d4bc3bd425bee82e1","libssh2/docs/libssh2_channel_close.3":"e348d7548693066f863dde9a6c7dd21bf394aca51c1cae1c4999309eedfb4451","libssh2/docs/libssh2_channel_direct_tcpip.3":"3a67560c5846880066344d5581840a26a8509854fcf20fda79f9b2156e58757d","libssh2/docs/libssh2_channel_direct_tcpip_ex.3":"5a7665c77afd8aa509c03d5059ece42adb912979e0fab608034e4554e3106439","libssh2/docs/libssh2_channel_eof.3":"7ad4590d1dfccf35bd2f7393e0d14b4247c3108ee2f48685b505c0dd9516e011","libssh2/docs/libssh2_channel_exec.3":"e7f79363e4fa61ce0c00f59e4e97cbc3101f5
 5e2025b1156551aaf50c8522b87","libssh2/docs/libssh2_channel_flush.3":"fcaf2b8577ae6b8196313977d0686175a807fcccd3f3fce433028384da0f7bdd","libssh2/docs/libssh2_channel_flush_ex.3":"a0a60e2c15e2fd19e8399ce45736470782090455856b6a97cab7b9e8cb56b160","libssh2/docs/libssh2_channel_flush_stderr.3":"4f590d465d647b416c583c2b16693a3364e84da2400dfe7f9ffe1928577ca3ae","libssh2/docs/libssh2_channel_forward_accept.3":"4f0621fe2a6aef5fefd50197974beb6e6c89dc41841b1d6052f885a773557ed8","libssh2/docs/libssh2_channel_forward_cancel.3":"230ff1688acf2f4a7ac5d687ca46bd39458192a0662b3b8fa6edd8217c25117f","libssh2/docs/libssh2_channel_forward_listen.3":"fac440afa8233b6d3982b349d56c177ba9fec09464f1c5a5bf40ce32d600197d","libssh2/docs/libssh2_channel_forward_listen_ex.3":"49c5374f3b5c56213fe9a43ef4592cd51097cd1c9017fcb3be97c94847e8efcf","libssh2/docs/libssh2_channel_free.3":"a7e649756ff4a20b0f5bb6bc9f4647ecaff885c8745e9c304cc697c2c677196b","libssh2/docs/libssh2_channel_get_exit_signal.3":"89557c3203331e1d21773b
 557659a0f21e1ecbcee90c372de3b6e159c7b78a7d","libssh2/docs/libssh2_channel_get_exit_status.3":"d374651f3f72f3f179c37b4a44b815a1bdd998f803a121fc8bc5544c397224c8","libssh2/docs/libssh2_channel_handle_extended_data.3":"c8ba2c032cd2cd8fc5877845df624712457dcf1c092975f3c713fe75794fd42b","libssh2/docs/libssh2_channel_handle_extended_data2.3":"17269accf920a28af6bd14770f94067083e2dfa56df4e08663844d0cebb78052","libssh2/docs/libssh2_channel_ignore_extended_data.3":"c00c30e1aa01c699c92c30c98e9ab8e543cb2fb23376b650627c56ecc3a1f275","libssh2/docs/libssh2_channel_open_ex.3":"a4153c3de3d2cb9a2faaa39eeb9b638c829db2cf4aa4a0e0a2cbd51098626e79","libssh2/docs/libssh2_channel_open_session.3":"63ee8e3220149933ebf5219335cf5b9fb107e23808137f782e8846b191ecf629","libssh2/docs/libssh2_channel_process_startup.3":"1023352b8152e5a1a2ccf2bc899e9539fbecaa2dff69ebb68ada088da38fc6b9","libssh2/docs/libssh2_channel_read.3":"1ddb492b078cab328e718563f2fc5dc3fd737078ba272d078f94e554e2938080","libssh2/docs/libssh2_channel_r
 ead_ex.3":"931e1fad6ff1d629ed2b523c75e645a16344be8afebc0e2f50144ac8394146e2","libssh2/docs/libssh2_channel_read_stderr.3":"6b3a6db85f2fdb26a07b95d6046127f3d5c709e6ee4bd72d66b9109e10ca8e1b","libssh2/docs/libssh2_channel_receive_window_adjust.3":"01a3e1d79fce062cba8fefee6b8fe7ca81a1ad7a3c8cccf12801d7f80fd6265a","libssh2/docs/libssh2_channel_receive_window_adjust2.3":"451f2632b8c786a16e87940f2fcb978e9d88fee27cb997c192c9e671b72b27eb","libssh2/docs/libssh2_channel_request_auth_agent.3":"9217dcc14a2c6bee93f5754b2fed7827b3dbb8efc335d7fbf4908e8a531570b4","libssh2/docs/libssh2_channel_request_pty.3":"f7b4d6780a1b6ed5518e425751f55d9930a5bfa8e92dc0458ccdb06d7786ecbe","libssh2/docs/libssh2_channel_request_pty_ex.3":"ab2af9c02a3d127ba99cf27f0496643eb30810edb38a94f7df488f41041ec105","libssh2/docs/libssh2_channel_request_pty_size.3":"5ae6ade5d71da8ce3a31fd804c32600f54a3385b07cb8ed6ac90157a9a1ada26","libssh2/docs/libssh2_channel_request_pty_size_ex.3":"4b296b3a64b71c1842c0f12c70fe866734bc18f51e3907
 acfa3f04c4a997bda3","libssh2/docs/libssh2_channel_send_eof.3":"a83be7ac2b428f6d41df423e38c52d01f86b9fcafde2010336c7a57323808b6c","libssh2/docs/libssh2_channel_set_blocking.3":"767637f9629f9b7bbbe24c3f3e13be0a83174f1542a63fe7daba350beb369447","libssh2/docs/libssh2_channel_setenv.3":"fc8773714c44358cf215d80dfdfeea082cc84ae0f33575d17a7825ffb785b02d","libssh2/docs/libssh2_channel_setenv_ex.3":"d4641d1a3054af1fb1aa4819de5ce002b434e56745118d843adc70d902505447","libssh2/docs/libssh2_channel_shell.3":"e2986078e39068dd61d6d3df0d9e54adb0a489e55ba8051ae6ce3ad5f3c2c191","libssh2/docs/libssh2_channel_subsystem.3":"16e48c8ad515baef23e1ea94895cf0d2c6d397c133adcbbd20300304b64cab4a","libssh2/docs/libssh2_channel_wait_closed.3":"8f7ad8093832b4b343b04eefe492e94a18be6f496e2074037f93b99683296663","libssh2/docs/libssh2_channel_wait_eof.3":"a96b063c1d90129420db176063ea4cb66f1b913a2d2b5ada2f3364eeda2d6543","libssh2/docs/libssh2_channel_window_read.3":"085331a4fb18dd396b016629ad241a7bf03afe78b0a09fec701aa8b
 e526fab2b","libssh2/docs/libssh2_channel_window_read_ex.3":"9faf5e32cc4e1fe69fa2e57dc31cbdf3f0e7bfcea339f3b7196f535bbe6be2e2","libssh2/docs/libssh2_channel_window_write.3":"6daa6fd8d4f74957c709695bd74a741e7808e057cda1a0954e76f92f793d61c4","libssh2/docs/libssh2_channel_window_write_ex.3":"052d12745f7a8a634ba0b3b36cf0a592c2425caf0679aaaca4776b664bd2d5c0","libssh2/docs/libssh2_channel_write.3":"30bfc0efb86bf513f721200a89c9139687d58483826924b9b401797de74b6387","libssh2/docs/libssh2_channel_write_ex.3":"5ee6d5afe244e2839353ed8d7d6688bfde3f090bf951afec404bf486d6f78aac","libssh2/docs/libssh2_channel_write_stderr.3":"e15a48affe5a5044a2b70bf6fc1e3c6a1dc61c10c4440db4828080fe55e5a0f2","libssh2/docs/libssh2_channel_x11_req.3":"e10544721e6dae96d4542abe07b43767ae6fff49a5bc87381aaf72be7d45f51c","libssh2/docs/libssh2_channel_x11_req_ex.3":"ece17b293092b2319ea237a2855a4b9b7c89c6954ecfedbd837d3d02ce4d7a13","libssh2/docs/libssh2_exit.3":"104af206d55e98ffa72ae0c5a505523220c8d6e1de27a37a5139093476d5ede5
 ","libssh2/docs/libssh2_free.3":"8abbc67b852f9fabe09eb84540b610304d896721a04a4bee1e9d0e8f8f08c999","libssh2/docs/libssh2_hostkey_hash.3":"82070c7634690b4bddc49f3c83b343c6f792c902e0e48247d055eaf3284f80e6","libssh2/docs/libssh2_init.3":"926b4044a52cf71dac8ac23cdf51d6e76bc92f5a3a72c65371549e18826c1cc7","libssh2/docs/libssh2_keepalive_config.3":"7ebbb7cdc900d6d6188afc537c05c60a115030609d96571ac447ac396991adc0","libssh2/docs/libssh2_keepalive_send.3":"86ac214dd4c086239d59ac6582926f72544c788ad2fbf3ccc4e678b4109d32a4","libssh2/docs/libssh2_knownhost_add.3":"29a052f853cd3f19efc12612d4e3224271bdc91b10cf6b73e866d7018d25f07b","libssh2/docs/libssh2_knownhost_addc.3":"c5a2b8510dc1df43311f17073e7e720232f7a7e25d9ba7ae80efe2f26a133297","libssh2/docs/libssh2_knownhost_check.3":"2059d72130dc5b99c6faa8b399166a8495cf02b71313d6648778b11b0adab631","libssh2/docs/libssh2_knownhost_checkp.3":"88cac561cc381008f64d4c879bbe626afd669090648441c134cae83a5ea082a9","libssh2/docs/libssh2_knownhost_del.3":"34fbfa2954
 6d2bf0edc380270937658f818d2600e4bdc658d5ce28c7d255e1ef","libssh2/docs/libssh2_knownhost_free.3":"3e319da43cb185d73dc215a75351f330de2194608a1b12b8e0b623c900d4d96e","libssh2/docs/libssh2_knownhost_get.3":"fc04784b136786dafb210e018e758d5272c8d9d531c4fc5baac9f7b90f65bfd2","libssh2/docs/libssh2_knownhost_init.3":"509721c49287e0232b3cfeb41a8d4b44a45a195222a5694baf9d728c77225abc","libssh2/docs/libssh2_knownhost_readfile.3":"6d72d5be2d5dd56b125c1107632c58d5e8a692871182f3f883f5662f39d7dfff","libssh2/docs/libssh2_knownhost_readline.3":"e259eaedbe587c06a74ada7c1cf5bf28a168edfff2a60919985aa6c7a15e56f1","libssh2/docs/libssh2_knownhost_writefile.3":"5ef6daaf96128c0b756c9faf38b5fd60697fa93504a5cb9ce7139a3dc14f7254","libssh2/docs/libssh2_knownhost_writeline.3":"32c23d5b4393297935c3fa6e03d57a3bc1d904e5e469cf775bb0516f9f885147","libssh2/docs/libssh2_poll.3":"c4a377bc2be1c2789de7a57fa42baa51cfbb0bf4121153ee9cd5201507a8c2b0","libssh2/docs/libssh2_poll_channel_read.3":"5b3df35e57c3252fc63e819c69cc6405bd
 fd14c546b5cfc2a521563bcc9cb420","libssh2/docs/libssh2_publickey_add.3":"2e7c2772fb78b750b5aa94c7bd38c100e52493f6fb050762af924e26ab2605dd","libssh2/docs/libssh2_publickey_add_ex.3":"76e23274e8b4756b03359b0fb5bcd05becba4cca1212ae2c164a32c2f10ee50f","libssh2/docs/libssh2_publickey_init.3":"5643aa57554f8daacbbff9e539c68cd1093172bd86d859109e6446ccc91a85d4","libssh2/docs/libssh2_publickey_list_fetch.3":"975705aa9fc187961fbab91751a5f41412a30d73d65bfe54862285061afc6c29","libssh2/docs/libssh2_publickey_list_free.3":"5eba2104f91fb101014441df437c695b9b0b1e106b6268d623f886de6c237503","libssh2/docs/libssh2_publickey_remove.3":"69423e4d9d6b76388f6160eb473e82449700569d449911163609c8b1c629ed43","libssh2/docs/libssh2_publickey_remove_ex.3":"5c1632ac1685361577a4ddfd1f6257ecfc012225e1e8c2b126f93add0b5b6190","libssh2/docs/libssh2_publickey_shutdown.3":"b152e6c493896da374b7b93468b23d7012e6232db06c331c158f9057b8053994","libssh2/docs/libssh2_scp_recv.3":"e3af95d4147fb29a893ee80c8af430b7df1d77048d814c50052
 43c02fe221e18","libssh2/docs/libssh2_scp_recv2.3":"9fc689585ec209d13e5a7c5db6750e07b171103bd29d3522424f6d812473b95e","libssh2/docs/libssh2_scp_send.3":"0b72a5932217f8e561840de2ce3e5077bb40e7631b1dfb6f439d4a2413f83cfd","libssh2/docs/libssh2_scp_send64.3":"3225083c74987af71d4a2947a7852ac810fd87ab12532492f286d7e7d7547456","libssh2/docs/libssh2_scp_send_ex.3":"07818e45119b15208123655f945e1927c0971d21ae6d410fd26944b86cd41745","libssh2/docs/libssh2_session_abstract.3":"56b29e317d2676d842f3854d8ffd89723a40992897b962d9ae07b56b2373a727","libssh2/docs/libssh2_session_banner_get.3":"78804fe78c70c1fcc408a493564c989f3d3da36bf56d14344df150bfc65570c5","libssh2/docs/libssh2_session_banner_set.3":"c058557ca5d9633b560e05492212b52ee3f6477dae79f75c8ab4996828d88f09","libssh2/docs/libssh2_session_block_directions.3":"0006e5c9788d8b2c3976274b715ab712fedb6ee4d3caa09071b62b846b7d44ed","libssh2/docs/libssh2_session_callback_set.3":"6c33ad4047e740e5d020ba14cc5ce06beb0bf02b4b2f88c1ab7fd79e6e5f1b8b","libssh2/do
 cs/libssh2_session_disconnect.3":"382845fee521c18828a9611c286919218fe51a4a3185f37f5c6e8a10a081db66","libssh2/docs/libssh2_session_disconnect_ex.3":"5ed79115477f25aa8cf5998bf46eadc2383fd6e4eacee32622d961d4080ffa11","libssh2/docs/libssh2_session_flag.3":"18317502888f1b7da8ef132500e009c8eed72cec5ddffbeda575a4c5093d8b74","libssh2/docs/libssh2_session_free.3":"7fd404b4fb4c5e955cb2b8fee9b72a89864351e63c553e56a80dfc2af8bf200b","libssh2/docs/libssh2_session_get_blocking.3":"947a5fe43a518c13ba5049d820084ec6eede2bc3687923e67b28a75297431378","libssh2/docs/libssh2_session_get_timeout.3":"4e808b2407358466171f2546c5220def1db4460a16d1f24c60a4a5186d6c0606","libssh2/docs/libssh2_session_handshake.3":"fcb9fc145dc6f3b29871dcbe9c3d27529790e1cd3e20643c8aacb3d3d628fb5b","libssh2/docs/libssh2_session_hostkey.3":"0df40e6f599dacefcebf30b19331e4ce0abfad5bce75f5cffc8f4b7947bca5c6","libssh2/docs/libssh2_session_init.3":"ce1a0e9ecc5a17d607437b01f4ee94d5a0d8c5dbc8a04f1e26d3b74daedae57a","libssh2/docs/libssh2_ses
 sion_init_ex.3":"2c169699aedd0f9ca16fb71a90618738dcdfa5b2b70d857a39c60896ba62b86b","libssh2/docs/libssh2_session_last_errno.3":"fe92e9c94ecb5fa33bbf51f866bb62bc4a1e5c3ea153dbaf34aa6553cd477ebf","libssh2/docs/libssh2_session_last_error.3":"b14e30dc25d7daaf46ef119176af947efabfad29eff7f726635f2adb6260e97a","libssh2/docs/libssh2_session_method_pref.3":"6946c31e6d51b612852bed10d4ea869093a048f6d41131addbcb9c4dbbd767e5","libssh2/docs/libssh2_session_methods.3":"d1aaa1586bf15dad4e9f92828592b80d604280b30a3d0e21a71f5124fd1eb560","libssh2/docs/libssh2_session_set_blocking.3":"33c01981b30ead73c614fcb6f7f224a39d6e849e6a9bccc9b8dd463719e1a39d","libssh2/docs/libssh2_session_set_last_error.3":"147c7ad527163e73f3fe285d16c980de60bba09813535a7623a1e0a037cfd1cd","libssh2/docs/libssh2_session_set_timeout.3":"eae71fab2f62942d4e5b66d93a7f49347a08ad1afdfc9a81ce8fcc0d0a9b0068","libssh2/docs/libssh2_session_startup.3":"425118593ad0eaf0688c686d9b75f12b7cdb23d330445077907c6e2023cfef77","libssh2/docs/libssh2_se
 ssion_supported_algs.3":"a2fe37982e0f274bcaeea77ad33ca8fa06ea9377aa4e8196c3a8a827e2906b74","libssh2/docs/libssh2_sftp_close.3":"95f03395996cb7b2652cab241a7d91d0c57bec6d4d8f8097b2932acb56eb7bff","libssh2/docs/libssh2_sftp_close_handle.3":"c813fa985be5105cc3cacaf23dc01f0442628c005e629115992a280597301368","libssh2/docs/libssh2_sftp_closedir.3":"1230d8cc661c016991f32b757b11ee6ddd1ac551e5522c5e009f21ef624dfdc4","libssh2/docs/libssh2_sftp_fsetstat.3":"a7ab72ebfca8d295a2b48f2c14d831568042ef6a0528e590faa99f5e2dd00675","libssh2/docs/libssh2_sftp_fstat.3":"e354ea4b96d512a34db42be2eaaa2c7fb0bfed554e726aa79db7f45ade1f9dd1","libssh2/docs/libssh2_sftp_fstat_ex.3":"2446ac64b425dbaf115b37d29107b66fc0291c2ebd17898669c406a4fd57b78b","libssh2/docs/libssh2_sftp_fstatvfs.3":"a10a9bf1dda75b0e97966ed003d183728a8ded895eece58e458980bc742f7a39","libssh2/docs/libssh2_sftp_fsync.3":"bee468765b5d4a09a3b473eba0cf436328f29806953bc1f998d8bc97d2a3049f","libssh2/docs/libssh2_sftp_get_channel.3":"90e527f9eb6b0d177603
 28f6e3842f74d1d173fe88a7c9ec2357ca471e9c0f41","libssh2/docs/libssh2_sftp_init.3":"585d782936f71157d141474c94c897d7ea292580445550c25c8fd44f5e03052f","libssh2/docs/libssh2_sftp_last_error.3":"8e7b2fa2c5fe4792a39a5c1c24baf041c970e3021511b36e59979ed64a18b4c7","libssh2/docs/libssh2_sftp_lstat.3":"a01353b26374401029f5094a24beca08988ea201ca2197fef2b14f30bb2658e5","libssh2/docs/libssh2_sftp_mkdir.3":"14e04b070a6c351e2af6bd68f73a408e2982e9a358d5d2af5a46d8b422d27ce3","libssh2/docs/libssh2_sftp_mkdir_ex.3":"44c17758d2b0336f94c4004bdd2debf9e1632ba12c6db6df495c09a71a58e59f","libssh2/docs/libssh2_sftp_open.3":"af9a8c90999412d3371218f59859ff91c6a83eabee75f1712adf94c5bceaf1d6","libssh2/docs/libssh2_sftp_open_ex.3":"11661fbcec142d9afee722f5ce779bd32f6e0a2b2dc45558c3bd47292105231d","libssh2/docs/libssh2_sftp_opendir.3":"62639f60918835e08f3c00d708cb32af319b9a56d3c2cb33ad409b60b347b31d","libssh2/docs/libssh2_sftp_read.3":"1d0435c740470b8a6a427da4331b576833eead72f9d976001d8a1f55fcf24815","libssh2/docs/l
 ibssh2_sftp_readdir.3":"0e98293f67ae019adf8c5e17fa9f31f3e34b082c55ccd2119ee424f30c337fc7","libssh2/docs/libssh2_sftp_readdir_ex.3":"7f9a2bda1d49d12040796015a842b592decfb076230ee9c8260c31e7b12dd2cc","libssh2/docs/libssh2_sftp_readlink.3":"1834815d254c351664cacf38c06a4b232f099787cc09a41ef719a1ff242e4064","libssh2/docs/libssh2_sftp_realpath.3":"6b8e75bf89724998c414487d93f8c4899a3b1f4deba50806a798fdf9f9405bab","libssh2/docs/libssh2_sftp_rename.3":"eb87a9b1c94f38913c0cb62a3a474fe8c8f3cb0a874c61ced396a2d8bb92e510","libssh2/docs/libssh2_sftp_rename_ex.3":"12d2e70027755937df6de8b0836f75509f4fc5f1a5428fe5a92ae3eb23ff4b54","libssh2/docs/libssh2_sftp_rewind.3":"4caf86de2f35e2925ee637a68f7cfc2e76dab54571ada06495a0574e549c6a7c","libssh2/docs/libssh2_sftp_rmdir.3":"86a1935b7bb291041eaa7c0788f417c6398b39fd208b6bb478329299ae72a49f","libssh2/docs/libssh2_sftp_rmdir_ex.3":"17029aa15ef3e1c862731a7ee52e8f730dc8951e62e1c0539b922dbcd66810b0","libssh2/docs/libssh2_sftp_seek.3":"546a134db735df610032fa982d3
 c8c1013ced779e21faeff261d71041bcde8bc","libssh2/docs/libssh2_sftp_seek64.3":"07df7a2c8c9d75b198fa60909baa31e1c883002337a4c6b7a1b3a9c6ceb3a594","libssh2/docs/libssh2_sftp_setstat.3":"39c7f5d489ea5ceb51bd9c7de237464f5c510f3ce0983e57f7b69207ef957e01","libssh2/docs/libssh2_sftp_shutdown.3":"48bf057f1836924e3e5009890cb6e63ec9d11d0aa19abc258c75ee7c7bd097b9","libssh2/docs/libssh2_sftp_stat.3":"7fa4495645b580c216ca2279168b6b2f7c9c73a973dabf1997c02a0409d8c042","libssh2/docs/libssh2_sftp_stat_ex.3":"fd19ff075f44a1713d765330d069fd63cffd8b2dbc09ce9170d926f25d5f70c3","libssh2/docs/libssh2_sftp_statvfs.3":"5762f9ff7d56f44164db57fd048daa60173794c4e7a58ab2fb255e29f0ca2bb8","libssh2/docs/libssh2_sftp_symlink.3":"ae7ea167057c307552405124ad54ee488db7354e7caa974334e88f5b2104c88a","libssh2/docs/libssh2_sftp_symlink_ex.3":"7e22a39bb97548428cddc8a9cf3bc7a1ff57cde878b337a7e177730bf5c51d01","libssh2/docs/libssh2_sftp_tell.3":"ce22525601570f33d91469170d43470a8a9decf0b35ae82c2cea72fff1dc8d8f","libssh2/docs/li
 bssh2_sftp_tell64.3":"db5faf0fd28de4738e3062555c1d6981c2b272d7b89bd85e3e83d2a03237472f","libssh2/docs/libssh2_sftp_unlink.3":"d8c4c60c41e81149fe14a4a00cc114d3f7bb4799ceea4895c67d79363da3ae7c","libssh2/docs/libssh2_sftp_unlink_ex.3":"64b0723444b716d2b809a3b481024523fc8c62ab45d3ec4274040abf824cf611","libssh2/docs/libssh2_sftp_write.3":"a4706e9d6dabcde2aeccba27f7d7d5a3cef33dd21f4bf66bf5b181c3e8a3f9ef","libssh2/docs/libssh2_trace.3":"636417e1798bce85c2058cad56493919c608d426acaac409ec1a489bdef90fe2","libssh2/docs/libssh2_trace_sethandler.3":"b37355eff49dacc9916818db61258f21665fb68993e57ca9040db056453bf8bd","libssh2/docs/libssh2_userauth_authenticated.3":"81115e3ac2549eadafc5ab8c73462d1c5565593106c4d995a920f718e5dd451e","libssh2/docs/libssh2_userauth_hostbased_fromfile.3":"265670d504f8db399e9253af673264b92ae8cc3593912e9b2e6aee436d02fdfe","libssh2/docs/libssh2_userauth_hostbased_fromfile_ex.3":"a71631a3eb07ac88ee21beeabaf6aaccb7e93378c98eed228fa27f1575b04a64","libssh2/docs/libssh2_userauth
 _keyboard_interactive.3":"17d55c3ba83fc9b7a2fa1dbf0e0d1886deb87616298b6bf424b5ac7d63d0da39","libssh2/docs/libssh2_userauth_keyboard_interactive_ex.3":"d62646af0cf3257fa4a599a676f5237c1ab4d07d56b9b66745fe786f640e6afb","libssh2/docs/libssh2_userauth_list.3":"af6928a269c96480a6ea3a3452af7029577f69485fee36ecdd9dde48b4956a5d","libssh2/docs/libssh2_userauth_password.3":"4c8103bb95903b0b2ee6c2b1d0b3eac150ab31314ec023424ab564d29b1678a9","libssh2/docs/libssh2_userauth_password_ex.3":"afa13d3bb9bbdb3672e014aec922b2953556842b69fb602e8dc97f10d569f5d0","libssh2/docs/libssh2_userauth_publickey.3":"874ece028410feb1bb33d481ab2789e6fadc9a9974cf4e0a72517b4c3fb81861","libssh2/docs/libssh2_userauth_publickey_fromfile.3":"6864fc6411955179866986cf95f75ff41a022a4b60ceb177cf503da45a67b88d","libssh2/docs/libssh2_userauth_publickey_fromfile_ex.3":"060d36d8a06538035e0d7c678f78db16d68ad6f930c958ef3c1bd46f96f9ed39","libssh2/docs/libssh2_userauth_publickey_frommemory.3":"5022660ab3c6c7f596b92e887debb3c580dc21f64
 be71b76c83c033c0fe36ef9","libssh2/docs/libssh2_version.3":"d3feeb9f870be0dacc7616c44dffae9abddcd22eec9cc8c18a0526af723ffce8","libssh2/docs/template.3":"740b501cbdd74773bdb93c8a4d1ae1e175f3593c0eb93844ea2cad0c61e14463","libssh2/example/CMakeLists.txt":"f8cc011f16f189f485ed9060d71de862616c254dcfc1fafe49ff6425a4d89757","libssh2/example/Makefile.am":"0e7c6f2ea9a65a6eb253d721cabc8df573cd4d2606ddc7bd7499b701380157a6","libssh2/example/direct_tcpip.c":"1a335122f9e28b3883587768e8332f3883b462def477f8651b83fc1392e96dca","libssh2/example/libssh2_config_cmake.h.in":"115c1b79ea918a83de959f0f50eb98c2ce252b21b566b9ad56f3c23b68e48ae7","libssh2/example/scp.c":"87736832ddc36e80b52ed6b7f1c87eedcb57d739c80dcff5bbf2d610bfc7f7c4","libssh2/example/scp_nonblock.c":"dfa78c57e18acdb437f3a643dbace70802aa7d2d504adcd47ed63f744189e822","libssh2/example/scp_write.c":"3a3c4dfb3c4688558716a364cf0f4d8b767bf30c59cc6b352394a2d698370930","libssh2/example/scp_write_nonblock.c":"8071bf056b72eee39bbb1ee173193a79e6ac8a28127
 24b3e31bb919c6b8ba370","libssh2/example/sftp.c":"6a0bcb5ec7b3066cd040bfc29243fcb36f8375575db17415974a20c29892f6b8","libssh2/example/sftp_RW_nonblock.c":"a2eac2e5433d8e63fd416dd8d0b1424536b4dae701360bf9ec3024495d8c6eb9","libssh2/example/sftp_append.c":"e9aa3ad34d7c9aa119a841e16e99657aa28596b184ff38d09df3a1319dfbf9bd","libssh2/example/sftp_mkdir.c":"51f94316a6fc8ce1c6de9bff0599fa95a950a1424e94b676410d76b1e1edc879","libssh2/example/sftp_mkdir_nonblock.c":"0fb08ab3d217af555d7512693a56c63094642247054def280cbcb08e2a3612c4","libssh2/example/sftp_nonblock.c":"c7236ccc7897e1abd3d9176a33cbd059327d30fc95c7803f7e5f99bf3c448a3f","libssh2/example/sftp_write.c":"7e972aa778422c962ba0ebd2fbae109865b334e33c371ae94a8634e74ffd5473","libssh2/example/sftp_write_nonblock.c":"6b18c9371c2ed1e22b005232f80b99959cc68f2e0dc1351fa73d678e7c64a329","libssh2/example/sftp_write_sliding.c":"b88419136786cd31709d9466b0e4a131b990bbd425096276e5699559863d4bd7","libssh2/example/sftpdir.c":"d186de774a29db36a87fe2f66011acb5c
 5847316791c98f39dc2749a4c448209","libssh2/example/sftpdir_nonblock.c":"6282ae10e701e48063a793ab2e7a819be77f7267dd7ec29264339c41c5dad8ab","libssh2/example/ssh2.c":"2789139110316e87a06b4d6132fb86081c545084358a3ddf6bb5128423eaed49","libssh2/example/ssh2_agent.c":"3184d5a396a9067279ec16070c699a8baffdc02c70930f8cbecbd1cbbd489d84","libssh2/example/ssh2_agent_forwarding.c":"2db3d78ce1c5bdb2453f7d22cdff09cf1dc3e40aceb8a54faffe6f76af88d1c3","libssh2/example/ssh2_echo.c":"91c519486541145f579c550fddb5ffde5933ba0aaf22366ee8aec50c0cfe4933","libssh2/example/ssh2_exec.c":"67afd0ef23627c87eef2e4424967eef26f8154ce50c357cad85f7d3764fcd5b9","libssh2/example/subsystem_netconf.c":"9b076de4366e11ca81e88d60f6dc41ff3ad897d3096f148ce4ce00102d7256b0","libssh2/example/tcpip-forward.c":"0a929eec2a7274e7592ded5f63230de45c1f30578ce92ea14a010a33b231ac42","libssh2/example/x11.c":"310b0aef741a513db213a895fbf772076e35c2ee83eb4ad1f300493ef6b5b436","libssh2/get_ver.awk":"ac9314659d618e57f0d57e9cb2dc5ab14ca342f099de673
 8e93d58b91f698f14","libssh2/git2news.pl":"26cad7a3870941f21348bfdffd05fff7a1e1c650b8e38fe469bab3a2a221f26c","libssh2/include/libssh2.h":"fe2c560b62960a968414c47f9fe640f4a4bcce5340a51a94083d1cc547c98a4e","libssh2/include/libssh2_publickey.h":"2d419bdfbc155cec62cc23d7cb87f3d9361c4f26ce3b3910c74cef715bd2e70b","libssh2/include/libssh2_sftp.h":"8a0c63c323edc42286cc608f9a53cebe46ac91432e1080a8520ab69d3caeadbf","libssh2/libssh2-style.el":"14bd86ae83b499f88b47f57cee18f1a7f4f41650e16e34af4b8ff03970c3c059","libssh2/libssh2.pc.in":"a2c375f048235970c995e4a091fca2cb500574151c356f7682d44deeb90623a0","libssh2/m4/autobuild.m4":"37dfd034b5ea52bede69c54901b818a461ae73e2ab1e28c61c229a87f24a1817","libssh2/m4/lib-ld.m4":"18c4c458009da32c9daf0ea332a539e5edc82ba009b6c2faac004626313f00e5","libssh2/m4/lib-link.m4":"d7aab3772e5b60d3ec57ae8dc66d9b762f5c68ef1e8516df25fadfa8bdfef379","libssh2/m4/lib-prefix.m4":"4797426d11dad1e5e4fdbc8bcbc8b10d9750f47bcb74e4c07a953a15265e902c","libssh2/maketgz":"3a5878c78f38abff
 9158f88cebd11394a5998dd2ea3803a4aa5b4bfa885e46d4","libssh2/nw/GNUmakefile":"d6afc1888b0fdfcb50b29a3d7080a4183de41a444c7063db93a1b56d533d8dd8","libssh2/nw/keepscreen.c":"f95e6f4851f16bde13e51a1f4f6f405a142c6a7940beda74de8058db2f170ef6","libssh2/nw/nwlib.c":"d81b0ad6d05938507ebc3c0510021e889a2d68a74d50709df981d2339798eb78","libssh2/nw/test/GNUmakefile":"fb00a4a6776f14c1789ac8abc0b0136b79813177221355fbd3c5b1907da938e2","libssh2/os400/README400":"f5ce6d4f86e2334f5c271020195fb0964083e19e2f44dea4c4d62e7a9bc9f4da","libssh2/os400/ccsid.c":"07d12155f5b9b2be9e5477fc2818a7e98183eedc247370de04d718eef506fdb8","libssh2/os400/include/alloca.h":"f2b4c60ed1f78832b9141cb64e5d1d8e187d90afcb5f9f1d56dcf3f9e185d236","libssh2/os400/include/stdio.h":"ce35104d75377458c0c38aded5375141abf22e71215ef7533a482ceec279c731","libssh2/os400/include/sys/socket.h":"05599c77ea5f79337a77e7b24f4d63f40b929884141fbb66f356d825c09c8dfb","libssh2/os400/initscript.sh":"b27631198e5eea8048684f8fae95ef27eef1f712742265022bf4eb1ebfe
 589cd","libssh2/os400/libssh2_ccsid.h":"13a0b3c9165d7ef27ce242c64ae191f876a1fdd65f0b4d768cc3235c2509910d","libssh2/os400/libssh2_config.h":"d5615c238ab5642d19c29a04f6e18ef0a1675043861cbe3eebac2297e5acae09","libssh2/os400/libssh2rpg/libssh2.rpgle.in":"0ce3e5bb7c33bb6dcf960af6267b4c0e3cc16259ae881724624c9fafbcc090e6","libssh2/os400/libssh2rpg/libssh2_ccsid.rpgle.in":"439d9e4c68c9b20a618e305e51f54f817a9cc51dd37b62f5792232048ed3ff80","libssh2/os400/libssh2rpg/libssh2_publickey.rpgle":"b138035c36feb1816c6a99b1d98daff7997b05d02325cad1d9909f983e4a330e","libssh2/os400/libssh2rpg/libssh2_sftp.rpgle":"7d6fcfc290b07c8bafbbdfcf61e19456ab6961afe23a0aa142110052a33e7ace","libssh2/os400/macros.h":"38360f3613c00f49178996cf53d2519009a0b3fab161db7aebff143149730c5a","libssh2/os400/make-include.sh":"c75efa9eba5bcaa1e75f60110dd463c2c6866b486186db705d49518c1b0fd8cf","libssh2/os400/make-rpg.sh":"41cce97d1dec97571160c98967db4ab27af9c7890cf4f7aa238b3d6b6aa69eee","libssh2/os400/make-src.sh":"c750bd85a5153b10c
 61c069a7d1ec253ec3587554f2da60a144dc4246ff50e67","libssh2/os400/make.sh":"07f221c0d6a9e7b1c55e5d1cc8e3babe7edb6b4bad3063827b55265bec9456e4","libssh2/os400/os400sys.c":"2c9bc9de576376b0a37c401c64b59990e2f74ceafdb0a8c6555fb8de5be2b01a","libssh2/src/CMakeLists.txt":"30b56cd9854ab0b20d1527f368b35c341ce8bed37708f316edef8e7a229f06a1","libssh2/src/Makefile.am":"5e0e38d3203bf1f1e0f1acc57b98591a4de80cd5efa26e5dde6b7348f2df1a68","libssh2/src/NMakefile":"bad4819608f02f282aae84462a7c3f1d1b199ee0fc86abdc9ab7326ee6482576","libssh2/src/agent.c":"7bbe43a2a9bbc1e6d4c2ff6f2c10d5b9d46920148c10b1788f355b760303862b","libssh2/src/agent.h":"1348e28650ce7f4350e4e1b92e26d7c45e729fe3b9cd68db716e40a64ea15269","libssh2/src/agent_win.c":"1c8d67a82e21c539c62f3a0b4c715fba81ca40cee588588d5e4f1abb389966b1","libssh2/src/bcrypt_pbkdf.c":"76b4d9244aa61fba7db31f4763336d890d5025f9f62f3bb1369eb3b0986fca6f","libssh2/src/blf.h":"db4921417d17d79529c393528e541bad14434777eba8cc131ed74f0317dabfe3","libssh2/src/blowfish.c":"830
 d5c2b3ac01b1a96253cd78304af11bbfef822a0e59bbf12d0d370f0f0f43f","libssh2/src/channel.c":"de351bd081fea82da9d1bc613bb4cce9a1b08bcf18839433b073b4ea5075c077","libssh2/src/channel.h":"3be8e8b444461111fe0d35b21137ffcd4f681c1357616e0db4908bd434e97bbc","libssh2/src/comp.c":"0fd0cfb6b74e2d94a2da15b27e8e99e42f277dd12fd27ccf17bf566ad8009993","libssh2/src/comp.h":"7aa028c23316132522362bc9f397e22bae94e9e620eb80ac12a2009278532926","libssh2/src/crypt.c":"04e3683e3a16046aa7736b2401bdebea1feffc1e7fb928952dbd53adcc5a493e","libssh2/src/crypto.h":"37d8b6726c771d88cee1928391ec5b5126617fc1f04f7e705b8fb041a8fe91cc","libssh2/src/global.c":"9551963ca2fb9c321703db04952d9b05e2e6049e12d8bf6ba6e9291920b87a37","libssh2/src/hostkey.c":"1ff0d3709396e9d0c4061968a7159bbf00af7c3fedc37ec32c4f8cea682dd492","libssh2/src/keepalive.c":"acc373252f0624126226e2528897757da61c870374d5905df29a17fa185214ef","libssh2/src/kex.c":"6fbb83649de7afcb197c285f41f6d2c0576e17bee93d6d51fb85421a21af8258","libssh2/src/knownhost.c":"2ef607c0b
 b2ef7ec9a4cf41158813ca8c62c55ace046a02a2b862cfdede25e75","libssh2/src/libgcrypt.c":"cbbd92a4b70d620517458412390519d40f1e153a882be8d5fe6c5de6d3570336","libssh2/src/libgcrypt.h":"46d7c65c53b1e355327e1b314d5841d41cb5426faee36ab6bbc0b7b48871b9d0","libssh2/src/libssh2.pc.in":"46db28ee6987b9f399c0e3b02dd5374fef2831fd4051109a478e85832e1913df","libssh2/src/libssh2_config_cmake.h.in":"07fe4470fd1643c51e5f2a868b053d733aaee891f1f886f4b8b848fb70db76cb","libssh2/src/libssh2_priv.h":"7cf354751d204d0ae1d3bf8bddbcfe38bebdf792217c34f9ea00947c57fc992d","libssh2/src/mac.c":"3ff6c3d22e5e9a0cc2d69b2f840606f560b83b9d40e276927d0854c20ec35b27","libssh2/src/mac.h":"ead9c368cf6700776d6083363a275e26d0e89de665b40b48fed1f5cd6d783b3b","libssh2/src/mbedtls.c":"3566fc0fc5d2a658780673741678f811e1a4fbc99aebaaeb2419c65b5887c2a7","libssh2/src/mbedtls.h":"e28d5e7b08c0d67f1d8e3e2d2fb7fef69df049cf8e188a7760abd7b50d91c7e7","libssh2/src/misc.c":"64f7a580f0cf00d6cba86de4fd5cf156cba038b2a321efa8504236991edff50f","libssh2/src
 /misc.h":"4bcc54e2280af4e4934e7c14a32e839bc9d09dc33b52b9a75f27366215a61556","libssh2/src/openssl.c":"126dbf0e4676f84a1acb46b154d2d32f42cb47a81f157a16ff1391a02c615baf","libssh2/src/openssl.h":"5dc71961f26506a53b7d724d385e5ba42ce75c83e00862041697e0f015a98166","libssh2/src/os400qc3.c":"f017c70d602941aca07f6fbe5fd55cc9bb8ce6c1d33fdb4e6f408d99edfdec03","libssh2/src/os400qc3.h":"e2d33622b00442fb2e2fcbb26fff7ee3bd997270f89a98a323bfed618956b28b","libssh2/src/packet.c":"e5b3f9dc190f9491a9746dd91e7da8d2f6639ef1a1e62552556753539fc1ddca","libssh2/src/packet.h":"cbd3fe922ff28675f6f39b31131d7832a07263356d0e7d55197e40d5fe244577","libssh2/src/pem.c":"d1adf7211b744554b8c41180c87e8d0aca2a7babceee91c75032e68655e41e22","libssh2/src/publickey.c":"3e1579cdc688dee088294975ee4b09316cc68cd9083ea6170a8d4726d820ea6c","libssh2/src/scp.c":"ef7120de5d824d9d4135b846021af8f42c44ff790dacabc8c4d23bb702abd81c","libssh2/src/session.c":"3d1ab27b52be357e36fa337e7461828029690cda8c69a705222dab2228d85065","libssh2/src/sess
 ion.h":"c3918ff057ebdb51116d7552e27b9f7d18461e1fbba4c1b635465dff909d4623","libssh2/src/sftp.c":"9090319e2732c400a344c78f3e9695ca6e1a3466159ffdae3e3c5f52b10b9586","libssh2/src/sftp.h":"3b4d6460b857e32707116814f1ddc10dbfa5f804e407883e77bdad6c36db8c14","libssh2/src/transport.c":"4116293d9afceb3a8ea8de6a09bb3af42604632b3536f305240b7564be0555fc","libssh2/src/transport.h":"4a57bc5ecc21db41729319d8fd34808f042cfa7d155be306ec2165f2d81f010c","libssh2/src/userauth.c":"144ce811b1acf4be50bba03eee53a625fd5199815d04436858316912168fe05f","libssh2/src/userauth.h":"7d930eb690721808c6d89ba917045827118a3b98b04333935d8e91b49f651b84","libssh2/src/version.c":"544a1389f5a6bde4ec263991d994da3d9529cae5635aab6730702a6575bcc0c5","libssh2/src/wincng.c":"ba1fa277b369df2b51d23f354ecf28a4987ce0a0d29023e6af5ffeafbc4cd359","libssh2/src/wincng.h":"7bbc6e35d281bee22d52883c728b626336d3ec8a4ce6fb384f96bb8b1cfaca8f","libssh2/tests/CMakeLists.txt":"717707a250f05fb65e7009f696c70bd86d7d2ec16883127781b617d0c692cd82","libssh2
 /tests/Makefile.am":"d9f4abf187cfd058373c570fff74009dadfdc9c96f84375ed5649114f0d8369f","libssh2/tests/etc/host":"6eb0f1bb23d7877ddcd502159e6673c053b5ea1846630f21651ab58ea25d7a6f","libssh2/tests/etc/host.pub":"0e2479a973fbaf1f7f5dfebb111e2b199ee59c0dcfdf646d26760eba0b8b2aa8","libssh2/tests/etc/sshd_config":"2ad4ea47ddb633c7a2e000f2d6619d08bf643591f26a7a0b92d0befe518ee951","libssh2/tests/etc/user":"776aebc0c12e466e4b65f1a44ae5235dd70687ab03f283aa3d9a6df70d3bdbbf","libssh2/tests/etc/user.pub":"39bc4445c24c32fe5e64a6ee02025f3508b4334b2813e1a87c40d44ebc5f8c1d","libssh2/tests/key_dsa":"2e5b8a618e853eff7b3e0d2928203529fe18a3ae62b46a82ccd48a750819b8c2","libssh2/tests/key_dsa.pub":"12aecbb237794fc79d4a96cebad1c4badaa1902b3f1788cca83b28a1f977b895","libssh2/tests/key_dsa_wrong":"21f66160d72789400c5420f460fb716cde82b5afc5c09f3f7512d310e3c8e0b2","libssh2/tests/key_dsa_wrong.pub":"0274eed003e62413aa894abad044296c6fb3cc19450457a282674ed3836518ea","libssh2/tests/key_ecdsa":"8fb4d570516afc175869de76
 86125a828e18c38ddd4c2524c5a8d05c95ba7e7d","libssh2/tests/key_ecdsa.pub":"bc756bc47e3afd11437cd40ebe8ce5c8fca92ee03c6e3f01b6c5b44001bbc7c6","libssh2/tests/key_ed25519":"18e808415d2f344a20b7cefac12f0df0af4e404f446f5c690000c21987ce8795","libssh2/tests/key_ed25519.pub":"e52bcbcbdcdbf547a121e92bbb6f5342375719988e33ffe7f228dd2b935c98ba","libssh2/tests/key_ed25519_encrypted":"fd1e9378f94f2d5514e16f32fcf175e8303433750c81f2def3814d5bd44a13e3","libssh2/tests/key_ed25519_encrypted.pub":"7ceb4062d5fe17f190eb32c894e4cfd76e00db7c1b16de7516df8f910649469d","libssh2/tests/key_rsa":"9d8f4c955624a4af6fcb754e74e2abe1d3e7fe6340f6063617cd58bf122a2d59","libssh2/tests/key_rsa.pub":"4293f28b7033d459618b277374d7e932869964de131bba1d427030cb5e70c297","libssh2/tests/key_rsa_encrypted":"fc3872744c7bf6db2df4ab2ea5701370cd8bd39367d659eaeae49b2dbe7bca34","libssh2/tests/key_rsa_encrypted.pub":"1f340ccab8b86e51d4ee7585d61d5e49e3a32338ba9eeca65988a1d751112c5e","libssh2/tests/key_rsa_openssh":"a146196a5b2189b40bc00bdcd
 1958165106ca21e72a7d02c0a7f95a6dd926487","libssh2/tests/key_rsa_openssh.pub":"d564da6c612286603a83af006c3a6efe53885a2417aa25f234818612e16bea66","libssh2/tests/libssh2_config_cmake.h.in":"193a748944f6bccd3787b1c3958ddf95c1c7ad9b25e5b8f4b42cb48987e34668","libssh2/tests/mansyntax.sh":"71c56796eaa4008910b3d67b885b9a7e2c018d0f88be4bb290334afb9ff23bde","libssh2/tests/openssh_fixture.c":"7c17b8373b09dfe53489e96854fa89f6e6e3c13eac838f79179f38ad6323a501","libssh2/tests/openssh_fixture.h":"21935165166ce4518c6534070cc506fcd85ece95238fef29e6b0be784c05d7c0","libssh2/tests/openssh_server/Dockerfile":"fe4f6271644f6a29af0e077902cb7cc80b6226ef0e1976438dcd74148d26823c","libssh2/tests/openssh_server/authorized_keys":"58c4cf998535eb4123eddf7cae7da4413eed50e3827320187380ec7925fcf61e","libssh2/tests/openssh_server/ca_ecdsa":"14e72246d3990d345c30cd3d06c5c7ba9496057d94da2f5a6f14a7c636663206","libssh2/tests/openssh_server/ca_ecdsa.pub":"2925ca6bb4d280aec3dd68041efc2f06e959295932a26f73a263c939c03e3220","libs
 sh2/tests/openssh_server/ssh_host_ecdsa_key":"03753b2b4942081d1f33201a193487ebd5a577e0bfde45f7e03a1de5ae404688","libssh2/tests/openssh_server/ssh_host_ed25519_key":"18e808415d2f344a20b7cefac12f0df0af4e404f446f5c690000c21987ce8795","libssh2/tests/openssh_server/ssh_host_rsa_key":"11a57dc115ca17203d6382ad6fdcd8df33bd0f23ff6bf38ee4a697260ffd1a11","libssh2/tests/ossfuzz/Makefile.am":"049665a167b9f4cd664b12884ae4470c0b0b2077931a056ed55d61784b230d88","libssh2/tests/ossfuzz/ossfuzz.sh":"6fde8ca30e3dfc0ade9da4d06f5e34f73a51c6fea72e3a1348cf5ced10b73d80","libssh2/tests/ossfuzz/ssh2_client_fuzzer.cc":"accadbd90783a3e7fa2311e749aab641f53851a14a17c2e8464bf85c1a5e887a","libssh2/tests/ossfuzz/standaloneengine.cc":"f6eb3ebf7e14252339a21fb887a08b2e7638a7ac77f706ed80508b2c0d54d81d","libssh2/tests/ossfuzz/testinput.h":"ce435e13e87abeec0a297ef3b566268496ecbd517c1d09dfa2232dcbbec9be2c","libssh2/tests/runner.c":"696b83fd77bca60560c1609212c59ad986bf151cf72520b63d23643111a7ce4e","libssh2/tests/session_fixt
 ure.c":"0e81e1d8e9999d24120fd8be8b26cf6984578c504f46d009cb816fce50412762","libssh2/tests/session_fixture.h":"d4f098a586b5f7dd0f3785b86933c08096bc12a2e55f07fff470db6fc7bbd076","libssh2/tests/signed_key_ecdsa":"796da5d8d420f644f47feffffb0357ac99b299471e4d757f21b6cc8bfefe8f0d","libssh2/tests/signed_key_ecdsa-cert.pub":"0f2e6d1b46874a01cc36ed766533301622d64fa88988575ca77eee56da7b3952","libssh2/tests/signed_key_ecdsa.pub":"d6b6f80d9117f896b99933eba19b012f55068ed8b77956f1a7b0510026c2876f","libssh2/tests/simple.c":"4afdeef598aa669b5cd0e7388dcf2e579f2c0f9c954face71d366250101d270f","libssh2/tests/ssh2.c":"3a8605fd3dd6151c569bc12c07ecdc33de7d704b6224da2dedfe3c76494e015b","libssh2/tests/ssh2.sh":"7bbe65ee20f4e47e9264bd74700cca16ee066aba5fb9e4e42f46e1cfdae4930e","libssh2/tests/sshd_fixture.sh.in":"c8b93076f66222f73329472ec151b210e55b39024de5d3c18a4c609b65d13b7e","libssh2/tests/sshdwrap":"21649ba440cd534f4bfd52c0a8de339565768b373c172dca106cffcc8bd06e09","libssh2/tests/test_agent_forward_succeeds
 .c":"a5b9f9009c6818b86f235debc2ee15de5ceb0cfe1d9b539270167058afb4e6ac","libssh2/tests/test_hostkey.c":"f1059c3ac304332342f39f32288afa3f61f9bdbd5d617fe6052491b20bc0672b","libssh2/tests/test_hostkey_hash.c":"e745d8b4ad92c858dc588e3494e183f47d591c1ef2a13b63e2122f478545093a","libssh2/tests/test_keyboard_interactive_auth_fails_with_wrong_response.c":"f585a7df65a87fc4905f0b165531beb41455486919ed3aebbe9804ba5795b9c7","libssh2/tests/test_keyboard_interactive_auth_succeeds_with_correct_response.c":"8a112c876cb2786eed61de0f68f0a93ee3840269d8d6610e8ebeeb9a66c43533","libssh2/tests/test_password_auth_fails_with_wrong_password.c":"e3d588d9c6850ab69bd7674d2027563ff9f1491740637506d80875e66609974d","libssh2/tests/test_password_auth_fails_with_wrong_username.c":"c91608bdda3a83a62876725ae2d7002ccb3332bcbacfc9c9578e7488c0ed4cef","libssh2/tests/test_password_auth_succeeds_with_correct_credentials.c":"80d253225d68bcb7dc4b94b53374aa4de86c6995481de0974b6284bf87a91583","libssh2/tests/test_public_key_auth_fa
 ils_with_wrong_key.c":"104b08aa9bb5f1006e07e59dece417a2d6a5f60ef6c3f8dc62b6a8af95d413e0","libssh2/tests/test_public_key_auth_succeeds_with_correct_dsa_key.c":"4b397de742f0d2fb15e86d20451f109fedd1ba28b0622496a2d030f9e9f9ea5a","libssh2/tests/test_public_key_auth_succeeds_with_correct_ecdsa_key.c":"53bd6d99a243aaedc20f7de5c974c7c04e38090a415d338cef2d7357d7644912","libssh2/tests/test_public_key_auth_succeeds_with_correct_ed25519_key.c":"207f499812271669d2a9ff5a286761a45840de9230c07bf72426fcd59a682317","libssh2/tests/test_public_key_auth_succeeds_with_correct_ed25519_key_from_mem.c":"4dd0a8251a41d0dd68490fb7abb9b0a1cc190af1603815f3050e29e2a7d6bc8a","libssh2/tests/test_public_key_auth_succeeds_with_correct_encrypted_ed25519_key.c":"6e5c107ad53c144892c54459f89ef2cf8a25cbf977bbd978e4517cb5959a2565","libssh2/tests/test_public_key_auth_succeeds_with_correct_encrypted_rsa_key.c":"dbc95a803a54364604ab379b512fc98c33d791a1df4e33e4027b881ecc2e75ed","libssh2/tests/test_public_key_auth_succeeds_with
 _correct_rsa_key.c":"93cdd2513af42d46552baa273401910dedd014951f836175ec98b827532c5b6e","libssh2/tests/test_public_key_auth_succeeds_with_correct_rsa_openssh_key.c":"4e6d3ace02cce1ba8c1b4b6e5d774a8a4d259eef8314fe6c3ae0d6003a87dcd8","libssh2/tests/test_public_key_auth_succeeds_with_correct_signed_ecdsa_key.c":"f16a0dc74d16f0d27f10867f0ddd5b306fc4b16b2bd8e401a5451ce71c7649f5","libssh2/vms/libssh2_config.h":"1c5c4ba6ab33bd1d9e4ce0d84e1107ced89d27a80e8505e1b428fa942edefedc","libssh2/vms/libssh2_make_example.dcl":"7726a5d4f07d522aa712da8a6ca7b998cd93ca950aaa544a5eed1790dc69c775","libssh2/vms/libssh2_make_help.dcl":"9d04ddc32831abf63b7e042dd0677da83599f11497d364b02cbe780419e248e4","libssh2/vms/libssh2_make_kit.dcl":"e7c23c9db4583f6944cd8973cd813a6d65749170417b8384f94db69597f81f1d","libssh2/vms/libssh2_make_lib.dcl":"1549134cd4a4bdf2543f900ea9c811de1c67895e1e830f7ddfb384e7601f56a4","libssh2/vms/man2help.c":"ae61cab505a4a9c87bdd103506ba9a36fd7ba92714edd9f67d022d8a9474e6bc","libssh2/vms/readm
 e.vms":"30b5d682da37cf16352152daa682cb04c56e1044c77fc4c4da77bdc9709c33b8","libssh2/win32/GNUmakefile":"0c120532da875411df50b2f4483add53afd9345b2f4eab5f3c6ca5ccf7b17eb9","libssh2/win32/Makefile.Watcom":"475b8b37143bad986386ca1d2c777e9f8e46d0172ca4e9f70c613c84bbdece4f","libssh2/win32/config.mk":"e2172a92c5b5b9f2215c5c11128009cb6ba8a1f25402990c1f7e8ae78449d289","libssh2/win32/libssh2.dsw":"b16e14f1e5ed93f52e450b03d18691bd15a17b13b69486551c61b455cf823d98","libssh2/win32/libssh2.rc":"29a25c29ed977ba78619a59bc858508caa6f0849607c02da8fa7fe71b6fb7195","libssh2/win32/libssh2_config.h":"d5e704c80aca43c33698bd45059eecde05b098049192bb9f0640af593cdb2cb7","libssh2/win32/msvcproj.foot":"85c21ad71a2ae878242d9b370e96dbcb7433b77dc9fa4d1fc903ce0582e0f62d","libssh2/win32/msvcproj.head":"3a9edda7c4f545c43178c826cb0a83f9e2f38ed61cbe6b3002b9683cfebb4fb1","libssh2/win32/rules.mk":"5f68dc0a3ef0f61d783289c98c00419a0a76a2b866ecd0f86404ca1d3effc12a","libssh2/win32/test/GNUmakefile":"e2c77b03fa88a88d90fe1dcb6c0
 95935ba99b03b56a78f101a373ff208e1369a","libssh2/win32/tests.dsp":"73710a110000074bb299c9b780fb4fdc9e7a7edcefe19428de89c33d65e77841"},"package":"b094a36eb4b8b8c8a7b4b8ae43b2944502be3e59cd87687595cf6b0a71b3f4ca"}
-diff --git a/vendor/libssh2-sys/build.rs b/vendor/libssh2-sys/build.rs
-index d1d33dc00..7f826638f 100644
---- a/vendor/libssh2-sys/build.rs
-+++ b/vendor/libssh2-sys/build.rs
-@@ -121,6 +121,7 @@ fn main() {
-         cfg.define("HAVE_EVP_AES_128_CTR", None);
-         cfg.define("HAVE_POLL", None);
-         cfg.define("HAVE_GETTIMEOFDAY", None);
-+        cfg.define("HAVE_OPAQUE_STRUCTS", None);
- 
-         cfg.file("libssh2/src/openssl.c");
- 
-diff --git a/vendor/openssl-sys/.cargo-checksum.json b/vendor/openssl-sys/.cargo-checksum.json
-index b715fcce9..630bd9108 100644
---- a/vendor/openssl-sys/.cargo-checksum.json
-+++ b/vendor/openssl-sys/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"CHANGELOG.md":"72c413077464ceee173fa19335c4c8072a3583d31b14f9e76aa12971b15d60ce","Cargo.toml":"1f3b38eb0d230a4e675730186afa195a2f46042669903754851ff7ecebdf4f55","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"c5ddde25c2756a1115daaa671fb4297cdc83bf23009c8356ba65b5311d0dd30d","build/cfgs.rs":"193f81ffdf211f056599072e8910d59c2134d3df85fed9ca693bc59f82cb73d4","build/expando.c":"d2e9f4800615d5d3c418e791ea816d0eea6be279419611e9ea267f14a6857a48","build/find_normal.rs":"5b3f48d529657f212e69883f9d3f599d0e1fc9a64f1389cc3760029b4ad6a423","build/find_vendored.rs":"7bf0e59c5646d72ee5a4392ad970fdf5c20288ddaf54dd86a8caff49583b38f5","build/main.rs":"d397af804c0b786978867528635fa9148cd2ad0e6abd591ace21b5bd3719c38d","src/aes.rs":"822bf666db351fe6ef9607c918081d6ad378fc1cedb05290bb746f86980c6088","src/asn1.rs":"801c254afc76b0c29b756bd86a149361609f82ec33c1f1fad39a512fbe4e87ee","src/bio.rs":"3aac4e38ccf8d832b4156908cd3f1ff9c56f84c05d2f07ed7a3e3fcc
 abe965e9","src/bn.rs":"d474633848fd01d8eeaf075c09f335d58f5edb3767cef130374005db38c525b0","src/cms.rs":"1e1500367732915e756ba7dcee4a0691ba4fab770e0cef88267b74111e99e127","src/conf.rs":"511e008c18039f54d856d70b80009426fc7f4ce34fe4304e2c58ebf465031de0","src/crypto.rs":"b1138f1b5d1ce7e4b95b3f8e213309a85fc6620c849d07faa58ef9bb21a690e3","src/dh.rs":"fb3b539eec4434b448b30df19e2e2ac5ffc3bd11bb817c7fb9090186ec3b0146","src/dsa.rs":"ae79baf231681900ea76304285b3ffacf5298c90b8c04d371269cf4adbb5b9fa","src/dtls1.rs":"0477022d5bcf2b7a620c70ece4da08a2958be3eca5a57127c89d79525c692ebd","src/ec.rs":"cdb10092a51cf79e2f88d0678f41a6f21213c8a0d9057f9d4e69d3a3ad3e7a81","src/err.rs":"9e6c84a170dce46db74414a64b9e1855845afbd8180100a2d9412f7509f69284","src/evp.rs":"b6027ba38ebf0c522b35e2245bf4eb61ff69dd863a4a6bd36209a98c421e2008","src/hmac.rs":"fa3976d94a1383f300bdec228270afb8b47c97bb019d727c7d59ba783be3c42e","src/lib.rs":"19ddf11d94bf469abb3f453a6b38886f6ccea4bc6004477f36b200516f5fee44","src/macros.rs":"7ed99c
 00c53ee12ea92634d4ace0af84845ebf98819869746e7896c8eaff23db","src/obj_mac.rs":"2d1c9891bae1fa61eed6a76050de29fa56e297d70dad47bae061fb3d3b9b3bd8","src/object.rs":"5361a1306d779ab7791dbda9b80ca98384efcab9390c8234d253a83af6d2f523","src/ocsp.rs":"614492810c5fadd0c1c4bb5eda165fb7e744eed7b04ae61d582446f5013e733a","src/ossl_typ.rs":"0d8dd0f82ef08672ab3c5059d2335b7eaad2d5afc0a20dbf26c2476c99dcae8e","src/pem.rs":"3fac4a29c67cd06e094c6ce8620a12d37370c5e613a2a491d0cb06a4bcd304bd","src/pkcs12.rs":"57178e3204a6c55abf66facef0d2980cc5776d64f1130db74d3f3d99444017cc","src/pkcs7.rs":"726614946784f919db88fd5282ec66d5b9df2edafc98ade9614758e109176b31","src/rand.rs":"c771057f37c64406aa750f36397fa877caf330a8c725e49356c7081c2b2fdd67","src/rsa.rs":"d45d421339b903b0d33817e93be5e939964431f9caed343e5c4490382cfad5b1","src/safestack.rs":"6c39e28565d34efad707d77561d4caa99e3f028fcac3a2ef6fd403a78de1190c","src/sha.rs":"16a4c77cbc38926b8f8eee07b0beae8dc12cbdc8cfa599d4db66fa84a7b3871d","src/srtp.rs":"1c4dee9e6c139cc70
 416207786e385f199321624fb9fbf3cbf39a8160c0c405d","src/ssl.rs":"fc5b8d28d8ffe12e433128d96a8c1a3142be0b4640996dfd444b099a7139a264","src/ssl3.rs":"9336c816e00847d552dea22587d4ac72ff3cbd469fa5ff750423a19ea11e68eb","src/stack.rs":"1a509907283e5a2bf88cf193ce607f49ce7d2d95547c2ce2abc0fd4567aad334","src/tls1.rs":"60ca3dea1bbfda645bde563b4a878dac129c3f760e3ad572381000fc7a8ef522","src/types.rs":"0b9bafc6f5fd373ec8c01e49339f7fe7ef1d76e44d60cda59f60c06982b4070e","src/x509.rs":"339fba252f073ced5ccf6d5d2e571f1ca4be168500ab5dd19fcda45a6190cf89","src/x509_vfy.rs":"e530e2fd91e959715265b40fba95576bb53ddcb4e2c6586c2192098e0e8b1cc1","src/x509v3.rs":"520253195097d134e553c6378c1db2510eae6ccfcab6f6fb08919697bc0f023b"},"package":"7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb"}
-\ No newline at end of file
-+{"files":{"CHANGELOG.md":"72c413077464ceee173fa19335c4c8072a3583d31b14f9e76aa12971b15d60ce","Cargo.toml":"1f3b38eb0d230a4e675730186afa195a2f46042669903754851ff7ecebdf4f55","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"c5ddde25c2756a1115daaa671fb4297cdc83bf23009c8356ba65b5311d0dd30d","build/cfgs.rs":"193f81ffdf211f056599072e8910d59c2134d3df85fed9ca693bc59f82cb73d4","build/expando.c":"d2e9f4800615d5d3c418e791ea816d0eea6be279419611e9ea267f14a6857a48","build/find_normal.rs":"5b3f48d529657f212e69883f9d3f599d0e1fc9a64f1389cc3760029b4ad6a423","build/find_vendored.rs":"7bf0e59c5646d72ee5a4392ad970fdf5c20288ddaf54dd86a8caff49583b38f5","build/main.rs":"07b603b8de127c6d548a3d3b515974b14f5a083d29477c5b7161597b96c1f005","src/aes.rs":"822bf666db351fe6ef9607c918081d6ad378fc1cedb05290bb746f86980c6088","src/asn1.rs":"801c254afc76b0c29b756bd86a149361609f82ec33c1f1fad39a512fbe4e87ee","src/bio.rs":"3aac4e38ccf8d832b4156908cd3f1ff9c56f84c05d2f07ed7a3e3fcc
 abe965e9","src/bn.rs":"d474633848fd01d8eeaf075c09f335d58f5edb3767cef130374005db38c525b0","src/cms.rs":"1e1500367732915e756ba7dcee4a0691ba4fab770e0cef88267b74111e99e127","src/conf.rs":"511e008c18039f54d856d70b80009426fc7f4ce34fe4304e2c58ebf465031de0","src/crypto.rs":"b1138f1b5d1ce7e4b95b3f8e213309a85fc6620c849d07faa58ef9bb21a690e3","src/dh.rs":"fb3b539eec4434b448b30df19e2e2ac5ffc3bd11bb817c7fb9090186ec3b0146","src/dsa.rs":"ae79baf231681900ea76304285b3ffacf5298c90b8c04d371269cf4adbb5b9fa","src/dtls1.rs":"0477022d5bcf2b7a620c70ece4da08a2958be3eca5a57127c89d79525c692ebd","src/ec.rs":"cdb10092a51cf79e2f88d0678f41a6f21213c8a0d9057f9d4e69d3a3ad3e7a81","src/err.rs":"9e6c84a170dce46db74414a64b9e1855845afbd8180100a2d9412f7509f69284","src/evp.rs":"b6027ba38ebf0c522b35e2245bf4eb61ff69dd863a4a6bd36209a98c421e2008","src/hmac.rs":"fa3976d94a1383f300bdec228270afb8b47c97bb019d727c7d59ba783be3c42e","src/lib.rs":"19ddf11d94bf469abb3f453a6b38886f6ccea4bc6004477f36b200516f5fee44","src/macros.rs":"7ed99c
 00c53ee12ea92634d4ace0af84845ebf98819869746e7896c8eaff23db","src/obj_mac.rs":"2d1c9891bae1fa61eed6a76050de29fa56e297d70dad47bae061fb3d3b9b3bd8","src/object.rs":"5361a1306d779ab7791dbda9b80ca98384efcab9390c8234d253a83af6d2f523","src/ocsp.rs":"614492810c5fadd0c1c4bb5eda165fb7e744eed7b04ae61d582446f5013e733a","src/ossl_typ.rs":"0d8dd0f82ef08672ab3c5059d2335b7eaad2d5afc0a20dbf26c2476c99dcae8e","src/pem.rs":"3fac4a29c67cd06e094c6ce8620a12d37370c5e613a2a491d0cb06a4bcd304bd","src/pkcs12.rs":"57178e3204a6c55abf66facef0d2980cc5776d64f1130db74d3f3d99444017cc","src/pkcs7.rs":"726614946784f919db88fd5282ec66d5b9df2edafc98ade9614758e109176b31","src/rand.rs":"c771057f37c64406aa750f36397fa877caf330a8c725e49356c7081c2b2fdd67","src/rsa.rs":"d45d421339b903b0d33817e93be5e939964431f9caed343e5c4490382cfad5b1","src/safestack.rs":"6c39e28565d34efad707d77561d4caa99e3f028fcac3a2ef6fd403a78de1190c","src/sha.rs":"16a4c77cbc38926b8f8eee07b0beae8dc12cbdc8cfa599d4db66fa84a7b3871d","src/srtp.rs":"1c4dee9e6c139cc70
 416207786e385f199321624fb9fbf3cbf39a8160c0c405d","src/ssl.rs":"fc5b8d28d8ffe12e433128d96a8c1a3142be0b4640996dfd444b099a7139a264","src/ssl3.rs":"9336c816e00847d552dea22587d4ac72ff3cbd469fa5ff750423a19ea11e68eb","src/stack.rs":"1a509907283e5a2bf88cf193ce607f49ce7d2d95547c2ce2abc0fd4567aad334","src/tls1.rs":"60ca3dea1bbfda645bde563b4a878dac129c3f760e3ad572381000fc7a8ef522","src/types.rs":"0b9bafc6f5fd373ec8c01e49339f7fe7ef1d76e44d60cda59f60c06982b4070e","src/x509.rs":"339fba252f073ced5ccf6d5d2e571f1ca4be168500ab5dd19fcda45a6190cf89","src/x509_vfy.rs":"e530e2fd91e959715265b40fba95576bb53ddcb4e2c6586c2192098e0e8b1cc1","src/x509v3.rs":"520253195097d134e553c6378c1db2510eae6ccfcab6f6fb08919697bc0f023b"},"package":"7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb"}
-diff --git a/vendor/openssl-sys/build/main.rs b/vendor/openssl-sys/build/main.rs
-index 243f146bf..d6d2eb4cf 100644
---- a/vendor/openssl-sys/build/main.rs
-+++ b/vendor/openssl-sys/build/main.rs
-@@ -254,6 +254,7 @@ See rust-openssl README for more information:
-             (3, 3, _) => ('3', '3', 'x'),
-             (3, 4, 0) => ('3', '4', '0'),
-             (3, 4, _) => ('3', '4', 'x'),
-+            (3, 5, _) => ('3', '5', 'x'),
-             _ => version_error(),
-         };
- 
--- 
-2.35.1

diff --git a/dev-lang/rust/files/1.63.0-CVE-2022-36113.patch b/dev-lang/rust/files/1.63.0-CVE-2022-36113.patch
deleted file mode 100644
index a87687d..0000000
--- a/dev-lang/rust/files/1.63.0-CVE-2022-36113.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 97b80919e404b0768ea31ae329c3b4da54bed05a Mon Sep 17 00:00:00 2001
-From: Josh Triplett <josh@joshtriplett.org>
-Date: Thu, 18 Aug 2022 17:17:19 +0200
-Subject: [PATCH] CVE-2022-36113: avoid unpacking .cargo-ok from the crate
-
----
- src/cargo/sources/registry/mod.rs | 15 ++++++++++-----
- 1 file changed, 10 insertions(+), 5 deletions(-)
-gyakovlev: 'sed -i 's|/src/cargo|/src/tools/cargo/src/cargo|g'
-
-diff --git a/src/tools/cargo/src/cargo/sources/registry/mod.rs b/src/tools/cargo/src/cargo/sources/registry/mod.rs
-index c17b822fd0..a2863bf78a 100644
---- a/src/tools/cargo/src/cargo/sources/registry/mod.rs
-+++ b/src/tools/cargo/src/cargo/sources/registry/mod.rs
-@@ -639,6 +639,13 @@ impl<'cfg> RegistrySource<'cfg> {
-                     prefix
-                 )
-             }
-+            // Prevent unpacking the lockfile from the crate itself.
-+            if entry_path
-+                .file_name()
-+                .map_or(false, |p| p == PACKAGE_SOURCE_LOCK)
-+            {
-+                continue;
-+            }
-             // Unpacking failed
-             let mut result = entry.unpack_in(parent).map_err(anyhow::Error::from);
-             if cfg!(windows) && restricted_names::is_windows_reserved_path(&entry_path) {
-@@ -654,16 +661,14 @@ impl<'cfg> RegistrySource<'cfg> {
-                 .with_context(|| format!("failed to unpack entry at `{}`", entry_path.display()))?;
-         }
- 
--        // The lock file is created after unpacking so we overwrite a lock file
--        // which may have been extracted from the package.
-+        // Now that we've finished unpacking, create and write to the lock file to indicate that
-+        // unpacking was successful.
-         let mut ok = OpenOptions::new()
--            .create(true)
-+            .create_new(true)
-             .read(true)
-             .write(true)
-             .open(&path)
-             .with_context(|| format!("failed to open `{}`", path.display()))?;
--
--        // Write to the lock file to indicate that unpacking was successful.
-         write!(ok, "ok")?;
- 
-         Ok(unpack_dir.to_path_buf())

diff --git a/dev-lang/rust/files/1.63.0-CVE-2022-36114.patch b/dev-lang/rust/files/1.63.0-CVE-2022-36114.patch
deleted file mode 100644
index 1afbaa9..0000000
--- a/dev-lang/rust/files/1.63.0-CVE-2022-36114.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From d1f9553c825f6d7481453be8d58d0e7f117988a7 Mon Sep 17 00:00:00 2001
-From: Josh Triplett <josh@joshtriplett.org>
-Date: Thu, 18 Aug 2022 17:45:45 +0200
-Subject: [PATCH] CVE-2022-36114: limit the maximum unpacked size of a crate to
- 512MB
-
-This gives users of custom registries the same protections, using the
-same size limit that crates.io uses.
-
-`LimitErrorReader` code copied from crates.io.
----
- src/cargo/sources/registry/mod.rs |  6 +++++-
- src/cargo/util/io.rs              | 27 +++++++++++++++++++++++++++
- src/cargo/util/mod.rs             |  2 ++
- 3 files changed, 34 insertions(+), 1 deletion(-)
- create mode 100644 src/cargo/util/io.rs
-gyakovlev: 'sed -i 's|/src/cargo|/src/tools/cargo/src/cargo|g'
-
-diff --git a/src/tools/cargo/src/cargo/sources/registry/mod.rs b/src/tools/cargo/src/cargo/sources/registry/mod.rs
-index a2863bf78a..c9c414e500 100644
---- a/src/tools/cargo/src/cargo/sources/registry/mod.rs
-+++ b/src/tools/cargo/src/cargo/sources/registry/mod.rs
-@@ -182,7 +182,9 @@ use crate::util::hex;
- use crate::util::interning::InternedString;
- use crate::util::into_url::IntoUrl;
- use crate::util::network::PollExt;
--use crate::util::{restricted_names, CargoResult, Config, Filesystem, OptVersionReq};
-+use crate::util::{
-+    restricted_names, CargoResult, Config, Filesystem, LimitErrorReader, OptVersionReq,
-+};
- 
- const PACKAGE_SOURCE_LOCK: &str = ".cargo-ok";
- pub const CRATES_IO_INDEX: &str = "https://github.com/rust-lang/crates.io-index";
-@@ -194,6 +196,7 @@ const VERSION_TEMPLATE: &str = "{version}";
- const PREFIX_TEMPLATE: &str = "{prefix}";
- const LOWER_PREFIX_TEMPLATE: &str = "{lowerprefix}";
- const CHECKSUM_TEMPLATE: &str = "{sha256-checksum}";
-+const MAX_UNPACK_SIZE: u64 = 512 * 1024 * 1024;
- 
- /// A "source" for a local (see `local::LocalRegistry`) or remote (see
- /// `remote::RemoteRegistry`) registry.
-@@ -615,6 +618,7 @@ impl<'cfg> RegistrySource<'cfg> {
-             }
-         }
-         let gz = GzDecoder::new(tarball);
-+        let gz = LimitErrorReader::new(gz, MAX_UNPACK_SIZE);
-         let mut tar = Archive::new(gz);
-         let prefix = unpack_dir.file_name().unwrap();
-         let parent = unpack_dir.parent().unwrap();
-diff --git a/src/tools/cargo/src/cargo/util/io.rs b/src/tools/cargo/src/cargo/util/io.rs
-new file mode 100644
-index 0000000000..f62672db03
---- /dev/null
-+++ b/src/tools/cargo/src/cargo/util/io.rs
-@@ -0,0 +1,27 @@
-+use std::io::{self, Read, Take};
-+
-+#[derive(Debug)]
-+pub struct LimitErrorReader<R> {
-+    inner: Take<R>,
-+}
-+
-+impl<R: Read> LimitErrorReader<R> {
-+    pub fn new(r: R, limit: u64) -> LimitErrorReader<R> {
-+        LimitErrorReader {
-+            inner: r.take(limit),
-+        }
-+    }
-+}
-+
-+impl<R: Read> Read for LimitErrorReader<R> {
-+    fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
-+        match self.inner.read(buf) {
-+            Ok(0) if self.inner.limit() == 0 => Err(io::Error::new(
-+                io::ErrorKind::Other,
-+                "maximum limit reached when reading",
-+            )),
-+            e => e,
-+        }
-+    }
-+}
-+
-diff --git a/src/tools/cargo/src/cargo/util/mod.rs b/src/tools/cargo/src/cargo/util/mod.rs
-index 28f685c209..47bbf37aad 100644
---- a/src/tools/cargo/src/cargo/util/mod.rs
-+++ b/src/tools/cargo/src/cargo/util/mod.rs
-@@ -14,6 +14,7 @@ pub use self::hasher::StableHasher;
- pub use self::hex::{hash_u64, short_hash, to_hex};
- pub use self::into_url::IntoUrl;
- pub use self::into_url_with_base::IntoUrlWithBase;
-+pub(crate) use self::io::LimitErrorReader;
- pub use self::lev_distance::{closest, closest_msg, lev_distance};
- pub use self::lockserver::{LockServer, LockServerClient, LockServerStarted};
- pub use self::progress::{Progress, ProgressStyle};
-@@ -44,6 +45,7 @@ pub mod important_paths;
- pub mod interning;
- pub mod into_url;
- mod into_url_with_base;
-+mod io;
- pub mod job;
- pub mod lev_distance;
- mod lockserver;

diff --git a/dev-lang/rust/rust-1.62.1.ebuild b/dev-lang/rust/rust-1.62.1.ebuild
deleted file mode 100644
index 3426092..0000000
--- a/dev-lang/rust/rust-1.62.1.ebuild
+++ /dev/null
@@ -1,738 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{8..11} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="amd64 arm arm64 ppc64 ~riscv sparc x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# 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 dist doc miri nightly parallel-compiler profiler rls rustfmt rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 14 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-	wasm? ( sys-devel/lld )
-"
-
-# to bootstrap we need at least exactly previous version, or same.
-# most of the time previous versions fail to bootstrap with newer
-# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
-# but it fails to bootstrap with 1.48.x
-# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-util/cmake-3.13.4
-		dev-util/ninja
-	)
-	test? ( sys-devel/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	elibc_musl? ( sys-libs/libunwind:= )
-	system-llvm? ( ${LLVM_DEPEND} )
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rls? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.61.0-gentoo-musl-target-specs.patch
-	"${FILESDIR}"/1.62.0-libressl.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rls 512 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-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 && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-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 \
-			--without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	default
-}
-
-src_configure() {
-	filter-flags '-flto*' # https://bugs.gentoo.org/862109
-
-	local rust_target="" rust_targets="" arch_cflags use_libcxx="false"
-
-	# 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/wasm_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 profiler; then
-		tools="\"rust-demangler\",$tools"
-	fi
-	if use rls; then
-		tools="\"rls\",\"analysis\",$tools"
-	fi
-	if use rustfmt; then
-		tools="\"rustfmt\",$tools"
-	fi
-	if use rust-src; then
-		tools="\"src\",$tools"
-	fi
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	# https://bugs.gentoo.org/732632
-	if tc-is-clang; then
-		local clang_slot="$(clang-major-version)"
-		if { has_version "sys-devel/clang:${clang_slot}[default-libcxx]" || is-flagq -stdlib=libc++; }; then
-			use_libcxx="true"
-		fi
-	fi
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if [[ ${use_libcxx} == true ]]; then
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		[llvm.build-config]
-		CMAKE_VERBOSE_MAKEFILE = "ON"
-		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
-		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
-		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
-		[build]
-		build-stage = 2
-		test-stage = 2
-		doc-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-	_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}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-		_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)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="${RUSTFLAGS:-}"
-	echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
-	echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	cat "${S}"/config.env || die
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-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
-	)
-}
-
-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() {
-	(
-	IFS=$'\n'
-	env $(cat "${S}"/config.env) DESTDIR="${D}" \
-		"${EPYTHON}" ./x.py install	-vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-	)
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use 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}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-		$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-		$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use 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}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-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.63.0-r1.ebuild b/dev-lang/rust/rust-1.63.0-r1.ebuild
deleted file mode 100644
index c925bff..0000000
--- a/dev-lang/rust/rust-1.63.0-r1.ebuild
+++ /dev/null
@@ -1,771 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{8..11} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc64 ~riscv ~sparc ~x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# 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 dist doc llvm-libunwind miri nightly parallel-compiler profiler rls rustfmt rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 14 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-	wasm? ( sys-devel/lld )
-"
-
-# to bootstrap we need at least exactly previous version, or same.
-# most of the time previous versions fail to bootstrap with newer
-# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
-# but it fails to bootstrap with 1.48.x
-# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-util/cmake-3.13.4
-		dev-util/ninja
-	)
-	test? ( sys-devel/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	system-llvm? (
-		${LLVM_DEPEND}
-		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
-	)
-	!system-llvm? (
-		!llvm-libunwind? (
-			elibc_musl? ( sys-libs/libunwind:= )
-		)
-	)
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rls? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
-	"${FILESDIR}"/1.61.0-gentoo-musl-target-specs.patch
-	"${FILESDIR}"/1.63.0-CVE-2022-36113.patch
-	"${FILESDIR}"/1.63.0-CVE-2022-36114.patch
-	"${FILESDIR}"/1.62.0-libressl.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rls 512 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-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 && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-esetup_unwind_hack() {
-	# https://bugs.gentoo.org/870280
-	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
-	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
-	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
-	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
-	local fakelib="${T}/fakelib"
-	mkdir -p "${fakelib}" || die
-	# we need both symlinks, one for cargo runtime, other for linker.
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
-	export LD_LIBRARY_PATH="${fakelib}"
-	export RUSTFLAGS+=" -L${fakelib}"
-	# this is a literally magic variable that gets through cargo cache, without it some
-	# crates ignore RUSTFLAGS.
-	# this variable can not contain leading space.
-	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
-}
-
-src_prepare() {
-	if ! use system-bootstrap; then
-		has_version sys-devel/gcc || esetup_unwind_hack
-		local rust_stage0_root="${WORKDIR}"/rust-stage0
-		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
-
-		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
-			--without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	default
-}
-
-src_configure() {
-	filter-flags '-flto*' # https://bugs.gentoo.org/862109
-
-	local rust_target="" rust_targets="" arch_cflags use_libcxx="false"
-
-	# 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/wasm_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 profiler; then
-		tools="\"rust-demangler\",$tools"
-	fi
-	if use rls; then
-		tools="\"rls\",\"analysis\",$tools"
-	fi
-	if use rustfmt; then
-		tools="\"rustfmt\",$tools"
-	fi
-	if use rust-src; then
-		tools="\"src\",$tools"
-	fi
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	# https://bugs.gentoo.org/732632
-	if tc-is-clang; then
-		local clang_slot="$(clang-major-version)"
-		if { has_version "sys-devel/clang:${clang_slot}[default-libcxx]" || is-flagq -stdlib=libc++; }; then
-			use_libcxx="true"
-		fi
-	fi
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if [[ ${use_libcxx} == true ]]; then
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		[llvm.build-config]
-		CMAKE_VERBOSE_MAKEFILE = "ON"
-		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
-		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
-		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
-		[build]
-		build-stage = 2
-		test-stage = 2
-		doc-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-	_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}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
-		_EOF_
-		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
-		# but we patch it and set to false here as well
-		if use elibc_musl; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				crt-static = false
-			_EOF_
-		fi
-		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)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="\"${RUSTFLAGS}\""
-	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
-	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
-	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	cat "${S}"/config.env || die
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-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
-	)
-}
-
-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() {
-	(
-	IFS=$'\n'
-	env $(cat "${S}"/config.env) DESTDIR="${D}" \
-		"${EPYTHON}" ./x.py install	-vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-	)
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use 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}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-		$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-		$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use 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}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-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.64.0.ebuild b/dev-lang/rust/rust-1.64.0.ebuild
deleted file mode 100644
index 8592597..0000000
--- a/dev-lang/rust/rust-1.64.0.ebuild
+++ /dev/null
@@ -1,753 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{8..11} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc64 ~riscv ~sparc ~x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# 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 dist doc llvm-libunwind miri nightly parallel-compiler profiler rls rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 14 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-	wasm? ( sys-devel/lld )
-"
-
-# 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
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-util/cmake-3.13.4
-		dev-util/ninja
-	)
-	test? ( sys-devel/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	system-llvm? (
-		${LLVM_DEPEND}
-		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
-	)
-	!system-llvm? (
-		!llvm-libunwind? (
-			elibc_musl? ( sys-libs/libunwind:= )
-		)
-	)
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rls? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.55.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
-	"${FILESDIR}"/1.62.0-libressl.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rls 512 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-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 && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-esetup_unwind_hack() {
-	# https://bugs.gentoo.org/870280
-	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
-	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
-	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
-	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
-	local fakelib="${T}/fakelib"
-	mkdir -p "${fakelib}" || die
-	# we need both symlinks, one for cargo runtime, other for linker.
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
-	export LD_LIBRARY_PATH="${fakelib}"
-	export RUSTFLAGS+=" -L${fakelib}"
-	# this is a literally magic variable that gets through cargo cache, without it some
-	# crates ignore RUSTFLAGS.
-	# this variable can not contain leading space.
-	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
-}
-
-src_prepare() {
-	if ! use system-bootstrap; then
-		has_version sys-devel/gcc || esetup_unwind_hack
-		local rust_stage0_root="${WORKDIR}"/rust-stage0
-		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
-
-		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
-			--without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	default
-}
-
-src_configure() {
-	use system-llvm && filter-flags '-flto*' # https://bugs.gentoo.org/862109
-
-	local rust_target="" rust_targets="" arch_cflags use_libcxx="false"
-	local chost_target="$(get_abi_CHOST ${v##*.})"
-
-	# Collect rust target names to compile standard libs for all ABIs.
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_targets+=",\"$(rust_abi ${chost_target})\""
-	done
-	if use wasm; then
-		rust_targets+=",\"wasm32-unknown-unknown\""
-		if use system-llvm; then
-			# un-hardcode rust-lld linker for this target
-			# https://bugs.gentoo.org/715348
-			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
-		fi
-	fi
-	rust_targets="${rust_targets#,}"
-
-	local tools='"cargo"'
-	use clippy && tools+=',"clippy"'
-	use miri && tools+=',"miri"'
-	use profiler && tools+=',"rust-demangler"'
-	use rls && tools+=',"rls","analysis"'
-	use rustfmt && tools+=',"rustfmt"'
-	use rust-analyzer && tools+=',"rust-analyzer"'
-	use rust-src && tools+=',"src"'
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	# https://bugs.gentoo.org/732632
-	if tc-is-clang; then
-		local clang_slot="$(clang-major-version)"
-		if { has_version "sys-devel/clang:${clang_slot}[default-libcxx]" || is-flagq -stdlib=libc++; }; then
-			use_libcxx="true"
-		fi
-	fi
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if [[ ${use_libcxx} == true ]]; then
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		[llvm.build-config]
-		CMAKE_VERBOSE_MAKEFILE = "ON"
-		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
-		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
-		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
-		[build]
-		build-stage = 2
-		test-stage = 2
-		doc-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-	_EOF_
-
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
-		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
-
-		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${rust_target}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
-		# but we patch it and set to false here as well
-		if use elibc_musl; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				crt-static = false
-			_EOF_
-		fi
-	done
-	if use wasm; then
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.wasm32-unknown-unknown]
-			linker = "$(usex system-llvm lld rust-lld)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="\"${RUSTFLAGS}\""
-	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
-	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
-	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	env | grep "CFLAGS_.*"
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-src_compile() {
-	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -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() {
-	(
-	IFS=$'\n'
-	env $(cat "${S}"/config.env) DESTDIR="${D}" \
-		"${EPYTHON}" ./x.py install	-vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-	)
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use rls && symlinks+=( rls )
-	use rustfmt && symlinks+=( rustfmt cargo-fmt )
-	use rust-analyzer && symlinks+=( rust-analyzer )
-
-	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
-	local i
-	for i in "${symlinks[@]}"; do
-		# we need realpath on /usr/bin/* symlink return version-appended binary path.
-		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
-		# need to fix eselect-rust to remove this hack.
-		local ver_i="${i}-${PV}"
-		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
-			einfo "Installing ${i} symlink"
-			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
-		else
-			ewarn "${i} symlink requested, but source file not found"
-			ewarn "please report this"
-		fi
-		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
-	done
-
-	# symlinks to switch components to active rust in eselect
-	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
-	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use 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
-	if use rust-analyzer; then
-		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
-	fi
-
-	insinto /etc/env.d/rust
-	doins "${T}/provider-${P}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-pkg_postinst() {
-	eselect rust update
-
-	if has_version 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
-}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2023-01-31 23:14 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2023-01-31 23:14 UTC (permalink / raw
  To: gentoo-commits

commit:     65b92d04da4ab9bbbefe6e1eab2cfb15a0fd7a04
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Sat Jan 28 17:20:56 2023 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Tue Jan 31 23:14:27 2023 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=65b92d04

dev-lang/rust: Add 1.67.0

Signed-off-by: orbea <orbea <AT> riseup.net>
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 dev-lang/rust/Manifest                     |  34 ++
 dev-lang/rust/files/1.67.0-bootstrap.patch |  38 ++
 dev-lang/rust/rust-1.67.0.ebuild           | 749 +++++++++++++++++++++++++++++
 3 files changed, 821 insertions(+)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 48fbca7..c3dc06f 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -62,7 +62,41 @@ DIST rust-1.65.0-x86_64-unknown-linux-gnu.tar.xz 162028064 BLAKE2B 8c572cc304c16
 DIST rust-1.65.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7a9287b6125eab2c14a026d6b4d8a3e980b9fedac0436b75b1bf314b093b5e39de0d70045e183a2e823d729d24f43f6251a2fc28b072e3caa1950fbbddf149e6 SHA512 16abed6d7a17b9e5f3e399865ed5fee01272c8e6696ea2e784a6fb149df16da2c4123572dfb56c3c44d407d388033e52b552cd164600629cf61b33c011e4e415
 DIST rust-1.65.0-x86_64-unknown-linux-musl.tar.xz 266683288 BLAKE2B 4312a53bca3e33f6633fd5eed1b17754813e54d688185ff4cca6c5d6b24713994fb5fc424113ab08c121319cc79da3d7d89518d18dbb1b491bc8ba2ec831c12e SHA512 6c7ddc98da3227b23dd681615bb8f8ea883f3bdd9547e35733cf6acaf2a625301c53449b1a3ddf88dad9a5c940f8324c3e1bb31d871092fc848b863256c85935
 DIST rust-1.65.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 054f1b773518a9640f3d9226510cb0b00a7f8dc4a9046c325b82d038a50c699a8bd84f71ed62790e9b96b4d65ad12ea631f6a8bc18b3bafd66db3d21137cd378 SHA512 39aa000c2a1359cfd7d2eda2b22a9b10c0fe4aa024862b7ea67bd488e06fdee6f5cc4e98db7486b84ce53f1c299bbd5391f63e25df0358184533a5fdced4ce61
+DIST rust-1.66.1-aarch64-unknown-linux-gnu.tar.xz 248806760 BLAKE2B fc5474257221705de7a8220029a406145b886914e59a3ae1ca4048b5789d4bdfa1b11506f7473590efb65c36463d0c34b2a185a407fb31247714eab715a9e3f0 SHA512 3f6f0f03d88c7f175efdf9ed541a4e1965df5473a7865e7611ad8df51cf53a12b27e3493c4b2021749e0c912dd844f9117616d2c740a5e9242872f07d3978c48
+DIST rust-1.66.1-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 4fdbf4edaf4a346557996faceda168bbd74064566a902811c52772ba832f4ab96b3128dbe06e06de4e54cceb642b837e1cb1ff7e30ff9c0739f9ec44aedec8a9 SHA512 7e59bba51666275559362515f31fcbb0635055de7d85f3e3d6598b2caa9fe2c5656032c221327debc2d174592cb981c86212ec7860d5b73d55e90c02a0258c58
+DIST rust-1.66.1-aarch64-unknown-linux-musl.tar.xz 228044080 BLAKE2B 8cb2341e84c2f8df44a0484a6a559148260c1300e81e6ab145bb57920d65fd44af8144cd0150ab9c203aa2a000f09e0696a53668e7b8d0984f9fd4710012b736 SHA512 6bb116af95b7946609017afa68eebb5278e568f852d879fd0f068d4ef10afdc7638ced0a87683080240a24f7e52f119cbe0268639906984ef8bddbe4c5dcd43d
+DIST rust-1.66.1-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 6b7ff46ef90437ca89322d66c0ec78d549d65d0d206704ac6e72c9f427e9d7224162291b37dde40b35954795c8879a3f380dfbf1de38da0c979b33ee315d5aea SHA512 935055c5dc28e4b2b44a5b1279d401a0b939ba576c1d8157de083d8a726fed678b5420cfd090e94dc1e9a309cc070329590515c4110fc241f9b5be7f8df2d493
+DIST rust-1.66.1-arm-unknown-linux-gnueabi.tar.xz 207170588 BLAKE2B 0c3a52fb3549c63ccbb43109cf54cb676812d49461344629b1c0f8d4747a40c9f6b6d050c9e27da6dad5914cf491fa7653a107b9f9e3a7f851ebecef2a98588c SHA512 6e4e385caf95a3ddc2fe4a05ecec745b721bf2eac9846d61e8ffaef749b1db2e506b7face55aa72cc7ffcda340f69185f30eb1d456a9f063c7a7c7ed7fd4eb9b
+DIST rust-1.66.1-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 8068dac7f1078470cabdeadfde8722bc96a1271e5572a4b84b7d108b173d87d1be32eef9b9be67b2c6bb3ab72dfc6a524476bfa46e222c29bc93724a183410c6 SHA512 ab3e4c7e470d4f7736e452c7118ab945747db5566b7e6d1c81359c3e224ec348b18193d4cd054772e878f791308dce792630fd4f10f750efc7e0e23b150c16d2
+DIST rust-1.66.1-arm-unknown-linux-gnueabihf.tar.xz 208535556 BLAKE2B cd1454141cd89f63d401047801b88421d9a2906425bfc4482a24fa1b468d2db382a939cb64b836808a1d0438f464d28a83b7e8097e2f97f1053a5fac7bc6de29 SHA512 92abac3fd13319b9edc6daee72689ae29e463bb317ed08580e04ff6f31b0ba5816052b8d26914d9c224ea47399517b388db78ce8ec17629795ea3988c353e2c6
+DIST rust-1.66.1-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B f828310aecad4d96c9074688f0211ba7e5286f0b3e669cb6fb1b9e3ae3adc776d6fdfda0702103cc571771eb404307df6f55c498fbd8dd006e02338cbc14893e SHA512 d3b88b83efd4303b5fde991672594d25c253b0fc6d66875dc217808190903f28a6afe8977a9ac436542c42675a12c0e244bba9aafb239c15f2ffcfe533ed92b2
+DIST rust-1.66.1-armv7-unknown-linux-gnueabihf.tar.xz 212774560 BLAKE2B 4bad7755067da0a99135cc8212928b78ff254e143908712c1cb77d41ce7a8db1c7d2eed3b12b916214d03f0bf0be17d81b2669ddb5f3722fee921f2d65aec491 SHA512 4cd871dd6cdf379c71290287ae2125ef57c2d5d52753285f064a6d96e8cb586cb263ee49f7b099ede8f3e15f1bbc5b286628acf242de4fb3ba8e5d80323c08bf
+DIST rust-1.66.1-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 56504503b1b45a43f10b01f3e470667c93fc12036506b94cefb66f4241bf457d537899c2db4894027ef7f649eec627ad7bef8e1989523aa8ab67ba3f51976f23 SHA512 0a7de37872ac1a8c07ad1ac02d2bec9fb614175a5f394d603ca0c894d3d6cb12a35877e38c807da29ef89c7465a27080cfa0d5fd8ac21884fa5bc3f3c47fbe9b
+DIST rust-1.66.1-i686-unknown-linux-gnu.tar.xz 234959096 BLAKE2B 0e0583c460092539e8813feaa0f65a026f4f52357571be5bcaef114f062c598ac5d2e3f4f22c88514b9b0a9e53e256a25eb2f18353642a8e40c6156df4309b54 SHA512 19cafc7763b40aa48543c5678f3c4d23b552f091bf6dc592f57ec950856802b3e7dee98d06b73ead0861630ff101260d741082fc1cc65c7f256e4591b821068b
+DIST rust-1.66.1-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B dd2c75d23caac69aa5e8cc965d5de9705f9f8e5f0be53cdd87e51deb07875579cf948bd6a7a02f10de3fcdbc70fb1cc46a4b616af44f3296787e5d9a32557490 SHA512 9364bf48b262c797815cc3f38188bdbe595cd39839b5bdcd43f7da07fdd421c61ab93ff4fa65d6b20f7d15e8eff190cb0d8a92a806878b1db5ccb62e80eddfeb
+DIST rust-1.66.1-mips-unknown-linux-gnu.tar.xz 187966796 BLAKE2B 193f18a9c56465d297ee2b3f1d9a8a67d8a6b1d07565503e6f5b31d4bd5b05782f45e95ee50a93e6d1b91275e9769a9d56518349a456f55392dc28b9d3a1ee82 SHA512 8f23b47f38ca42af3dccb395fa183edee3f18a478bdf1f7de2135e5afc6dd87d14508f7e2ada938dd64eb51f5acee27d0417fae6e3b1c114c6c812006206d89c
+DIST rust-1.66.1-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B a04c0f9320d663658b758e6b89709645433a0d16548c511945c439ce134617c8a05d7e9ff988e8f7a1ef62a726284548bf8b259648f614c3a2205ee9c02b3a91 SHA512 4b581b997a643c0ee6105c141c7859e86d9b2cb6dda85d867593829978911dc5a6c343a11712a334b94188078c0d3b1e7e734334b8b4a16b38afab228172bc6b
+DIST rust-1.66.1-mips64-unknown-linux-gnuabi64.tar.xz 184874416 BLAKE2B 64d96a026634cce03496be36ea7a42986e0fedc75d6c61e0f9a6ffe5cd3432bacd353276636c58989d02328be62f760bc0157c5999262bbac5c570dbc049635a SHA512 ce4b5ff464e358b085c18c21697cf7f339c19db163a873bf68b24e2febf42e69e582bbfc9f95cc38a6c96610a8ccfe6ec431cb2f98be10c48f9c1cbf027456a0
+DIST rust-1.66.1-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B fdcc56efc4f7df5d13595661d59354e4fcc757e966360fccf8a86d42f31f952334b9cedd107d23e4132b90e3082013cc26076a0754455d2759e2bb878afe023e SHA512 c5918b76fdfa39ba89c980ec2d252b3755439c8baece26d27f3515e800061370c2715620a052d3f22bd57412d058f5e3f53084bee08b5026b0f50112e6c41b93
+DIST rust-1.66.1-mipsel-unknown-linux-gnu.tar.xz 191073888 BLAKE2B b88ebb699e97e7e243138bf5674956afac0204bcc19882efd59340bd45256e9ba07b7e160895faffd81c62b533b2d305b088c08d3a99060e91025627ec8b7c7b SHA512 9afe6b80df0e24f2cedd65e7ab5fb25cd28be69b3e442c80a8f92291c7ad7ff7c2f8ec2e901bdeeb8084467700db4c19055edfe4ca8ccf7f6ffbf69e5c20426f
+DIST rust-1.66.1-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9a8c4eb0683465c63d1d5f25eedbc2ee96331960cbb2704d67a806852a05544f646cfe8220a3582d6e05dd30e63fdb736d176c0467166192501d168e5a0fb7d2 SHA512 e35e0e6b94feb551dc1a06e36ad0c70fe2641dc5671fc74fe99baede8c40cbca828259eafbf790af43cb8775fcf8c38442d2ca3349277b07bacbb508676b25d3
+DIST rust-1.66.1-powerpc-unknown-linux-gnu.tar.xz 209784584 BLAKE2B d582f2efaf7401dfc8ece24026653dd52acd3bd5f3a87d12eaf1be5170909ebf009189312d59d5508beb6a68bb88545ce97af1d87049dd61b2736ddd9fbb9ffc SHA512 b8a9f4115864e0e6262c603e11b2dd9a66706c120aecbd0e7b0acc79ff1675f0dbbd2c6c0095d21be664a04408e610f07b4e09adc31f73b0fc92dbb2083f9b13
+DIST rust-1.66.1-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 1bf9e84765268fd89e4e18adc5584dc5b7517217e2c042e6a4b4b68d9716f0502df83115308451792d800458c71535f9bebcd1254f0d26e0359cc19e398d651d SHA512 93b7bc720dd9f0324a6a3a066e26d218236f8a87e50d4ee827d1f785eacc1e289d3635d7653d38197294c4ab4bbf6e15acd2341517f1a75c1e48a2034f5bdd3e
+DIST rust-1.66.1-powerpc64-unknown-linux-gnu.tar.xz 211414032 BLAKE2B fcd16f3cffc4a8fa4d42daa75562d48c1a9aeb487b72a461a7a300fc15a51ef478afd8a129a34681c9035b3b846c3fc713e9f128e55ec0f3688022bf92ee2529 SHA512 8acd1e8b4ebd25d31652cbaca0173c87499fce233525d516279557d63c50cbf36d4bdce0bd73ab4b69d9dd95d0f3a91b7b80f77ae3a3f23de7660ee38b5e6b59
+DIST rust-1.66.1-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d07e572b2dd85f47c7cde4d6e328ba35f20f143d637a5b0b9d295f24b9bc3bccd72282718351419784a32c5d26189557beb2fd143792e3115aea4640650b4371 SHA512 dcc1708cb37bcf2820c7f6280fedfbfebc8a85ed76f6e5acc64f6b1f768b32f2895d737f7209ef8a7f81f339047531e28675f3a31e3f648d382359550f255095
+DIST rust-1.66.1-powerpc64le-unknown-linux-gnu.tar.xz 223088628 BLAKE2B 1627b274c35596e7fa932e42d8a14e6487fc74d34b1d8e2c4661d6346bcf3dc6adbea86ad62de8c9901b3cf7616e92e07d5d9f7002ef39d20a0c2a418e2533a5 SHA512 4834a7a794967b32c3daf633c4627e3ae9adb60268bb409f8886607ba8799f98fc8774a8652a41bba1e8147fd51e8a30ceb569cc22ac1f29e23d335974374aa2
+DIST rust-1.66.1-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 105e598220ad4c82ea4822b3b09744f6445e962dc4c9d9c01846f2e51586d2d18c71ed9ec9ed3c3e4d76715879e8e714d3ea47628fa9bad2ceca1c0f34faaa6a SHA512 cc368e40e09fe42df2c01d124912e7dd90b14c694512d6761e4c25cd183998bb1b5426916087ed05488260e916f4ac97f53dac27e278b53ae1f8387c086e384e
+DIST rust-1.66.1-riscv64gc-unknown-linux-gnu.tar.xz 189480332 BLAKE2B 98f9cd36895a415967f4392ec58ff290850bbb094c473ec8a7956888b22dd9cec412f540f73acaa99c17ceb3c2255d6745f1072f7e170ff5e28fb6475ee396fa SHA512 ce35e57cbe0e92a33e9efac4be3c8f650615197728654f775a3784ff28d823907f59fef0743d63d65d034cff8079cbc000a98531f2fcfbeb8f33de66d772a4be
+DIST rust-1.66.1-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B ab78efea869dd2233cfa9929995546c33146ee0d92b262549a44d2b5bfa6e1309cb32c831f8a3be4baeb0e27f1abc044e03d87de23eb28c6057f5ac383d4d9b7 SHA512 c9f5764c78031bdaf8106c53a4774f55acf6308be057bd8acdf1c07863daeb5fbf2a5bc8fcefdf9fc0391a2984e7b1b7aaa11d89402938575df2ca38a3758739
+DIST rust-1.66.1-s390x-unknown-linux-gnu.tar.xz 226436776 BLAKE2B a45528d58550b51a0e5d589e3f44ae5bde739e58e9172d83822068235f753007094129da606b034aa534aa9e5bb85c020adc8f7054d59b61f1fe0fbdece2e894 SHA512 ce22b52c9ea4dd3ac9f8ac84a6a50f7a2c031c485ae01fc57be1ce922b927f2e138862b620dd6a538375a0e6c5ca4d693b32643b26f9f647d0ec1d6eee8a799c
+DIST rust-1.66.1-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e705dc1a56d686c540e9a3667a0e14bff66f27f789f7a4022fb9a7d3919deca0cb264eee8da4fb0d54d625bf86798a2926176c0f148218a97bc4cd94f3c2d192 SHA512 5a657456f75aea4246fb3b7ec8c43ba2ace111ee41ee22ff26c05f246b699eb7ad76703168aafc1ebd88673390e13ac03caf7dcfbf270eef2cb5f943bdd5296f
+DIST rust-1.66.1-x86_64-unknown-linux-gnu.tar.xz 186651920 BLAKE2B de89dd720320da6a8f27f5499e90d417eb3d3a9a934deddda8fdda279694ff33312af14c4c5be1c8b4e22333d5663b4c51c2d1d22914876bc4ab6e39dbf16476 SHA512 8bcbbd4a9246dd48c4109b9c91852b3a470036a8c0ac31b77cb4c05a205644a5829c5c38977240ab51e25778d1f9c7c3cda303da3f6b50a98d6a4eccb0f73782
+DIST rust-1.66.1-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d313eafed62763b0905636ff22d6c736696c55e55d2442512a95e239b5b37199fdb125d312284b2a249782fa61d552284c8eb3ef8c9aa9ea36283a9fb975dd66 SHA512 c491f07c77baeac6b92c2425092c1b3694e72c49d4e6e511597aac03d51930cd414a95b0d691a9b23df266fba8df3dd90bf7d30624383bd213403fe0cbc83ffb
+DIST rust-1.66.1-x86_64-unknown-linux-musl.tar.xz 270294752 BLAKE2B b068a9400f29e9318e8d52f2c37df72f1b8fd91ca0bba342e6681544595a7f2697bf10437be6c4612a36d2781cc915920b498273ab12dbe1163c41d9d4e9b438 SHA512 df03ef29b03924346ef2a4b5dbf1c7ce6e33fb1f357eb04b0fa80e48a607b29f5929ce587412c9dd3f385d6382f0229c19d0ce78d6c060ddc0539429d3cfc606
+DIST rust-1.66.1-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B a262a2a020a142ea8e3906a9c93d9294906ee51f5d22efd4ef041b6032524d2714e0b511f7deb366c0ee3337ecd52f1e091b6bfed01615eaa9026996100afe2d SHA512 f390b3a788c5b15b1acee01505b6501ad4a3170cd2f23ec490b02294ce0a62c3f708f1e66c0ba8258a1042dea0401a1e09d31d34e99558f50b0f65b359354182
 DIST rustc-1.65.0-src.tar.xz 139674928 BLAKE2B a218263fb67e306b153f5a6dae95b5ec653acaa5eb4b833862d6f0fd4685a8cec097dadc1b8a934e1bf6055672c7a617f9a0ad4a7dbf2e78084297f10b7ada04 SHA512 3d0369ed3028209c4ecb9b9e7b5f5e3a20be8cc05199675df4f091d62a96c0734bc1dbd7630928fe162792392ec6d0daf9ceed10771531ce022200c7b631e3be
 DIST rustc-1.65.0-src.tar.xz.asc 801 BLAKE2B 43ff92011cd6f7f34ce0495fa341379e5907d032ea90f91e533e5edaec6ad518aad50a9d8b2694074d6909ee96aa779403b16e95792e962e79c1b967542ae26f SHA512 75b9be53363022c81333117876cbcc573bbd4733edf767cbb164218644efb1a9c4bfc2aa73aaa1e39f248a84f1adacb1930a94a6e63f60093ff760fb9ae02efc
 DIST rustc-1.66.1-src.tar.xz 141692940 BLAKE2B 3fae45345998386fda1b11ec896fac4613b8e3f0092bc0df29c9685f4a4012c0bd1b600911c2d19bcfa8f5a84b8a3c39d4c9e062a62cd61925b59129e1cd72b9 SHA512 1944c024c603140d0a9236043a3bd1d0d211dd8d368d6d82a3a620f1ff43b29624755b0943f2b38b40a188c7eee77a840238ea757eaf435e2a3fa6a0e6b82832
 DIST rustc-1.66.1-src.tar.xz.asc 801 BLAKE2B 18e27c88b39eed29147854733c5533b7fffc417ff0b3bd5982174ffa2c5f6d217e2e28ced4da75863a4557800e7ad7a124a4bbb0def4c20da7ed543602185941 SHA512 4511f41ad3d098a339ea3173e3ffa692d1d3cd3ec9dd45af68e4491471f9a72a2e866f6924090eb366bdf6f856650d981eabe1cd851843a17f4a6e4f1dfbc8a9
+DIST rustc-1.67.0-src.tar.xz 142750964 BLAKE2B 5dcea694548f5162bed6020ca12ecfa178fba479fbe6f29ec310f9c5cfaae13999de7b861498e92561f21001fed295d21dd9230ccb5da2f20c638309e785cfda SHA512 6d1ddb54c0ee2c4f8ccf73f3c306c8d8868feb738d5e77eb5a5d25f716395c27d1b3666929c87f9dc84213a9acfdb56254feac92ef0fea3147e2c644391c12b4
+DIST rustc-1.67.0-src.tar.xz.asc 801 BLAKE2B b46159b7cbe081cb34d82b2642397788d09d09f9e55fd961a491862c2c1827b0752530fa74e1a8245cab9ff898d2f021bfdae4820edca34a87c9e18202d7a31e SHA512 cceb0aa5d43c476a051c77263fe152085b8d7d337f78117077a1e460bb9e31b75becd36a8f571fc1275a268ac1107d680012a82a7378851d2a9f16748d95a929

diff --git a/dev-lang/rust/files/1.67.0-bootstrap.patch b/dev-lang/rust/files/1.67.0-bootstrap.patch
new file mode 100644
index 0000000..eb16066
--- /dev/null
+++ b/dev-lang/rust/files/1.67.0-bootstrap.patch
@@ -0,0 +1,38 @@
+From 675fa0b3dd5fe14b43ad5b7862f4528df7322468 Mon Sep 17 00:00:00 2001
+From: Michael Goulet <michael@errs.io>
+Date: Mon, 12 Dec 2022 18:29:33 +0000
+Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A8=20fix=20unsoundness=20in=20bootstr?=
+ =?UTF-8?q?ap=20cache=20code?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+---
+ src/bootstrap/cache.rs | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/bootstrap/cache.rs b/src/bootstrap/cache.rs
+index be5c9bb078808..05f25af68ea8f 100644
+--- a/src/bootstrap/cache.rs
++++ b/src/bootstrap/cache.rs
+@@ -89,16 +89,16 @@ impl<T: Internable + Hash> Hash for Interned<T> {
+ 
+ impl<T: Internable + Deref> Deref for Interned<T> {
+     type Target = T::Target;
+-    fn deref(&self) -> &'static Self::Target {
++    fn deref(&self) -> &Self::Target {
+         let l = T::intern_cache().lock().unwrap();
+-        unsafe { mem::transmute::<&Self::Target, &'static Self::Target>(l.get(*self)) }
++        unsafe { mem::transmute::<&Self::Target, &Self::Target>(l.get(*self)) }
+     }
+ }
+ 
+ impl<T: Internable + AsRef<U>, U: ?Sized> AsRef<U> for Interned<T> {
+-    fn as_ref(&self) -> &'static U {
++    fn as_ref(&self) -> &U {
+         let l = T::intern_cache().lock().unwrap();
+-        unsafe { mem::transmute::<&U, &'static U>(l.get(*self).as_ref()) }
++        unsafe { mem::transmute::<&U, &U>(l.get(*self).as_ref()) }
+     }
+ }
+ 

diff --git a/dev-lang/rust/rust-1.67.0.ebuild b/dev-lang/rust/rust-1.67.0.ebuild
new file mode 100644
index 0000000..68ed8f4
--- /dev/null
+++ b/dev-lang/rust/rust-1.67.0.ebuild
@@ -0,0 +1,749 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
+	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.xz"
+	KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).1"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+SRC_URI="
+	https://static.rust-lang.org/dist/${SRC}
+	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
+	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
+"
+
+# 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 BSD-1 BSD-2 BSD-4 UoI-NCSA"
+
+IUSE="clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+
+# Please keep the LLVM dependency block separate. Since LLVM is slotted,
+# we need to *really* make sure we're not pulling more than one slot
+# simultaneously.
+
+# How to use it:
+# List all the working slots in LLVM_VALID_SLOTS, newest first.
+LLVM_VALID_SLOTS=( 15 )
+LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
+
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+# (-) usedep needed because we may build with older llvm without that target
+LLVM_DEPEND="|| ( "
+for _s in ${LLVM_VALID_SLOTS[@]}; do
+	LLVM_DEPEND+=" ( "
+	for _x in ${ALL_LLVM_TARGETS[@]}; do
+		LLVM_DEPEND+="
+			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
+			wasm? ( sys-devel/lld:${_s} )"
+	done
+	LLVM_DEPEND+=" )"
+done
+unset _s _x
+LLVM_DEPEND+=" )
+	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
+"
+
+# to bootstrap we need at least exactly previous version, or same.
+# most of the time previous versions fail to bootstrap with newer
+# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
+# but it fails to bootstrap with 1.48.x
+# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
+RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
+RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
+BOOTSTRAP_DEPEND="||
+	(
+		=dev-lang/rust-"${RUST_DEP_PREV}"
+		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
+		=dev-lang/rust-"${RUST_DEP_CURR}"
+		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
+	)
+"
+
+BDEPEND="${PYTHON_DEPS}
+	app-eselect/eselect-rust
+	|| (
+		>=sys-devel/gcc-4.7
+		>=sys-devel/clang-3.5
+	)
+	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
+	!system-llvm? (
+		>=dev-util/cmake-3.13.4
+		dev-util/ninja
+	)
+	test? ( sys-devel/gdb )
+	verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+	>=app-arch/xz-utils-5.2
+	net-misc/curl:=[http2,ssl]
+	sys-libs/zlib:=
+	dev-libs/openssl:0=
+	system-llvm? (
+		${LLVM_DEPEND}
+		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
+	)
+	!system-llvm? (
+		!llvm-libunwind? (
+			elibc_musl? ( sys-libs/libunwind:= )
+		)
+	)
+"
+
+RDEPEND="${DEPEND}
+	app-eselect/eselect-rust
+	sys-apps/lsb-release
+"
+
+REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
+	miri? ( nightly )
+	parallel-compiler? ( nightly )
+	test? ( ${ALL_LLVM_TARGETS[*]} )
+	wasm? ( llvm_targets_WebAssembly )
+	x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+	usr/lib/${PN}/${PV}/bin/.*
+	usr/lib/${PN}/${PV}/libexec/.*
+	usr/lib/${PN}/${PV}/lib/lib.*.so
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+	usr/lib/${PN}/${PV}/lib/lib.*.so.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+	"${FILESDIR}"/1.64.0-libressl.patch
+	"${FILESDIR}"/1.65.0-ignore-broken-and-non-applicable-tests.patch
+	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
+	"${FILESDIR}"/1.67.0-bootstrap.patch
+)
+
+S="${WORKDIR}/${MY_P}-src"
+
+toml_usex() {
+	usex "${1}" true false
+}
+
+bootstrap_rust_version_check() {
+	# never call from pkg_pretend. eselect-rust may be not installed yet.
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
+	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
+	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
+		eerror "Rust >=${rustc_wanted} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too old"
+	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
+		eerror "Rust <${rustc_toonew} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too new"
+	else
+		einfo "Using rust ${rustc_version} to build"
+	fi
+}
+
+pre_build_checks() {
+	local M=8192
+	# multiply requirements by 1.3 if we are doing x86-multilib
+	if use amd64; then
+		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
+	fi
+	M=$(( $(usex clippy 128 0) + ${M} ))
+	M=$(( $(usex miri 128 0) + ${M} ))
+	M=$(( $(usex rustfmt 256 0) + ${M} ))
+	# add 2G if we compile llvm and 256M per llvm_target
+	if ! use system-llvm; then
+		M=$(( 2048 + ${M} ))
+		local ltarget
+		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+		done
+	fi
+	M=$(( $(usex wasm 256 0) + ${M} ))
+	M=$(( $(usex debug 2 1) * ${M} ))
+	eshopts_push -s extglob
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		M=$(( 15 * ${M} / 10 ))
+	fi
+	eshopts_pop
+	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
+	M=$(( $(usex doc 256 0) + ${M} ))
+	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+# Is LLVM being linked against libc++?
+is_libcxx_linked() {
+	local code='#include <ciso646>
+#if defined(_LIBCPP_VERSION)
+	HAVE_LIBCXX
+#endif
+'
+	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
+	[[ ${out} == *HAVE_LIBCXX* ]]
+}
+
+pkg_pretend() {
+	pre_build_checks
+}
+
+pkg_setup() {
+	pre_build_checks
+	python-any-r1_pkg_setup
+
+	export LIBGIT2_NO_PKG_CONFIG=1 #749381
+
+	use system-bootstrap && bootstrap_rust_version_check
+
+	if use system-llvm; then
+		llvm_pkg_setup
+
+		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+		export LLVM_LINK_SHARED=1
+		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+	fi
+}
+
+esetup_unwind_hack() {
+	# https://bugs.gentoo.org/870280
+	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
+	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
+	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
+	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
+	local fakelib="${T}/fakelib"
+	mkdir -p "${fakelib}" || die
+	# we need both symlinks, one for cargo runtime, other for linker.
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
+	export LD_LIBRARY_PATH="${fakelib}"
+	export RUSTFLAGS+=" -L${fakelib}"
+	# this is a literally magic variable that gets through cargo cache, without it some
+	# crates ignore RUSTFLAGS.
+	# this variable can not contain leading space.
+	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
+}
+
+src_prepare() {
+	if ! use system-bootstrap; then
+		has_version sys-devel/gcc || esetup_unwind_hack
+		local rust_stage0_root="${WORKDIR}"/rust-stage0
+		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
+
+		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
+			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
+	fi
+
+	# this libressl version check is terrible
+	sed -e 's/d397af804c0b786978867528635fa9148cd2ad0e6abd591ace21b5bd3719c38d/896afea18b1072d4c715421ff2ed7e428b57aadec44d4680dcb991a6229a1edc/' \
+		-i vendor/openssl-sys/.cargo-checksum.json || die
+	# fix for libressl
+	sed -e 's/7d5ca02f34cffe51db3568c500c9a8a70cef879871a0f466e3344142644acf12/e9eef35f1c18dd9844960d1d315e84ad99a05ab1247f0f54e3c2eab244988256/' \
+		-i vendor/libssh2-sys/.cargo-checksum.json || die
+
+	default
+}
+
+src_configure() {
+	filter-flags '-flto*' # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
+
+	local rust_target="" rust_targets="" arch_cflags
+
+	# Collect rust target names to compile standard libs for all ABIs.
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
+	done
+	if use wasm; then
+		rust_targets+=",\"wasm32-unknown-unknown\""
+		if use system-llvm; then
+			# un-hardcode rust-lld linker for this target
+			# https://bugs.gentoo.org/715348
+			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
+		fi
+	fi
+	rust_targets="${rust_targets#,}"
+
+	local tools='"cargo"'
+	use clippy && tools+=',"clippy"'
+	use miri && tools+=',"miri"'
+	use profiler && tools+=',"rust-demangler"'
+	use rustfmt && tools+=',"rustfmt"'
+	use rust-analyzer && tools+=',"rust-analyzer","analysis"'
+	use rust-src && tools+=',"src"'
+
+	local rust_stage0_root
+	if use system-bootstrap; then
+		local printsysroot
+		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
+		rust_stage0_root="${printsysroot}"
+	else
+		rust_stage0_root="${WORKDIR}"/rust-stage0
+	fi
+	# in case of prefix it will be already prefixed, as --print sysroot returns full path
+	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+	rust_target="$(rust_abi)"
+
+	local cm_btype="$(usex debug DEBUG RELEASE)"
+	cat <<- _EOF_ > "${S}"/config.toml
+		changelog-seen = 2
+		[llvm]
+		download-ci-llvm = false
+		optimize = $(toml_usex !debug)
+		release-debuginfo = $(toml_usex debug)
+		assertions = $(toml_usex debug)
+		ninja = true
+		targets = "${LLVM_TARGETS// /;}"
+		experimental-targets = ""
+		link-shared = $(toml_usex system-llvm)
+		$(if is_libcxx_linked; then
+			# https://bugs.gentoo.org/732632
+			echo "use-libcxx = true"
+			echo "static-libstdcpp = false"
+		fi)
+		$(case "${rust_target}" in
+			i586-*-linux-*)
+				# https://github.com/rust-lang/rust/issues/93059
+				echo 'cflags = "-fcf-protection=none"'
+				echo 'cxxflags = "-fcf-protection=none"'
+				echo 'ldflags = "-fcf-protection=none"'
+				;;
+			*)
+				;;
+		esac)
+		[llvm.build-config]
+		CMAKE_VERBOSE_MAKEFILE = "ON"
+		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
+		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
+		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
+		[build]
+		build-stage = 2
+		test-stage = 2
+		build = "${rust_target}"
+		host = ["${rust_target}"]
+		target = [${rust_targets}]
+		cargo = "${rust_stage0_root}/bin/cargo"
+		rustc = "${rust_stage0_root}/bin/rustc"
+		rustfmt = "${rust_stage0_root}/bin/rustfmt"
+		docs = $(toml_usex doc)
+		compiler-docs = false
+		submodules = false
+		python = "${EPYTHON}"
+		locked-deps = true
+		vendor = true
+		extended = true
+		tools = [${tools}]
+		verbose = 2
+		sanitizers = false
+		profiler = $(toml_usex profiler)
+		cargo-native-static = false
+		[install]
+		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
+		sysconfdir = "etc"
+		docdir = "share/doc/rust"
+		bindir = "bin"
+		libdir = "lib"
+		mandir = "share/man"
+		[rust]
+		# https://github.com/rust-lang/rust/issues/54872
+		codegen-units-std = 1
+		optimize = true
+		debug = $(toml_usex debug)
+		debug-assertions = $(toml_usex debug)
+		debug-assertions-std = $(toml_usex debug)
+		debuginfo-level = $(usex debug 2 0)
+		debuginfo-level-rustc = $(usex debug 2 0)
+		debuginfo-level-std = $(usex debug 2 0)
+		debuginfo-level-tools = $(usex debug 2 0)
+		debuginfo-level-tests = 0
+		backtrace = true
+		incremental = false
+		default-linker = "$(tc-getCC)"
+		parallel-compiler = $(toml_usex parallel-compiler)
+		channel = "$(usex nightly nightly stable)"
+		description = "gentoo"
+		rpath = false
+		verbose-tests = true
+		optimize-tests = $(toml_usex !debug)
+		codegen-tests = true
+		dist-src = false
+		remap-debuginfo = true
+		lld = $(usex system-llvm false $(toml_usex wasm))
+		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+		# https://github.com/rust-lang/rust/issues/74976
+		# https://github.com/rust-lang/rust/issues/76526
+		deny-warnings = $(usex wasm $(usex doc false true) true)
+		backtrace-on-ice = true
+		jemalloc = false
+		[dist]
+		src-tarball = false
+		compression-formats = ["xz"]
+	_EOF_
+
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${rust_target}]
+			ar = "$(tc-getAR)"
+			cc = "$(tc-getCC)"
+			cxx = "$(tc-getCXX)"
+			linker = "$(tc-getCC)"
+			ranlib = "$(tc-getRANLIB)"
+			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
+		# but we patch it and set to false here as well
+		if use elibc_musl; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				crt-static = false
+			_EOF_
+		fi
+	done
+	if use wasm; then
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.wasm32-unknown-unknown]
+			linker = "$(usex system-llvm lld rust-lld)"
+			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
+			profiler = false
+		_EOF_
+	fi
+
+	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
+	# experimental cross support
+	# discussion: https://bugs.gentoo.org/679878
+	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
+	# it would be much better if we could split out stdlib
+	# complilation to separate ebuild and abuse CATEGORY to
+	# just install to /usr/lib/rustlib/<target>
+
+	# extra targets defined as a bash array
+	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
+	# best place would be /etc/portage/env/dev-lang/rust
+	# Example:
+	# RUST_CROSS_TARGETS=(
+	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
+	# )
+	# no extra hand holding is done, no target transformations, all
+	# values are passed as-is with just basic checks, so it's up to user to supply correct values
+	# valid rust targets can be obtained with
+	# 	rustc --print target-list
+	# matching cross toolchain has to be installed
+	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
+	# only gcc toolchains installed with crossdev are checked for now.
+
+	# BUG: we can't pass host flags to cross compiler, so just filter for now
+	# BUG: this should be more fine-grained.
+	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
+
+	local cross_target_spec
+	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
+		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
+		local cross_llvm_target="${cross_target_spec%%:*}"
+		# extracts toolchain triples, <rust-target>:<CTARGET>
+		local cross_triples="${cross_target_spec#*:}"
+		# extracts first element after before : separator
+		local cross_rust_target="${cross_triples%%:*}"
+		# extracts last element after : separator
+		local cross_toolchain="${cross_triples##*:}"
+		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
+		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${cross_rust_target}]
+			ar = "${cross_toolchain}-ar"
+			cc = "${cross_toolchain}-gcc"
+			cxx = "${cross_toolchain}-g++"
+			linker = "${cross_toolchain}-gcc"
+			ranlib = "${cross_toolchain}-ranlib"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		if [[ "${cross_toolchain}" == *-musl* ]]; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+			_EOF_
+		fi
+
+		# append cross target to "normal" target list
+		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
+		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+		rust_targets="${rust_targets},\"${cross_rust_target}\""
+		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+		ewarn
+		ewarn "Enabled ${cross_rust_target} rust target"
+		ewarn "Using ${cross_toolchain} cross toolchain"
+		ewarn
+		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+			ewarn "'sys-devel/binutils[multitarget]' is not installed"
+			ewarn "'strip' will be unable to strip cross libraries"
+			ewarn "cross targets will be installed with full debug information"
+			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+			ewarn
+			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+			ewarn
+		fi
+	done
+	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+	einfo "Rust configured with the following flags:"
+	echo
+	echo RUSTFLAGS="\"${RUSTFLAGS}\""
+	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
+	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
+	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
+	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+	env | grep "CFLAGS_.*"
+	echo
+	einfo "config.toml contents:"
+	cat "${S}"/config.toml || die
+	echo
+}
+
+src_compile() {
+	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -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 ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
+				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
+		then
+				failed+=( "${t}" )
+				eerror "rust_src_test: ${t} failed"
+		fi
+	done
+
+	if [[ ${#failed[@]} -ne 0 ]]; then
+		eerror "rust_src_test: failure summary: ${failed[@]}"
+		die "aborting due to test failures"
+	fi
+}
+
+src_install() {
+	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+
+	# bug #689562, #689160
+	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
+	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+
+	local symlinks=(
+		cargo
+		rustc
+		rustdoc
+		rust-gdb
+		rust-gdbgui
+		rust-lldb
+	)
+
+	use clippy && symlinks+=( clippy-driver cargo-clippy )
+	use miri && symlinks+=( miri cargo-miri )
+	use profiler && symlinks+=( rust-demangler )
+	use rustfmt && symlinks+=( rustfmt cargo-fmt )
+	use rust-analyzer && symlinks+=( rust-analyzer )
+
+	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
+	local i
+	for i in "${symlinks[@]}"; do
+		# we need realpath on /usr/bin/* symlink return version-appended binary path.
+		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
+		# need to fix eselect-rust to remove this hack.
+		local ver_i="${i}-${PV}"
+		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
+			einfo "Installing ${i} symlink"
+			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
+		else
+			ewarn "${i} symlink requested, but source file not found"
+			ewarn "please report this"
+		fi
+		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
+	done
+
+	# symlinks to switch components to active rust in eselect
+	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
+	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
+	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
+	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
+	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+
+	newenvd - "50${P}" <<-_EOF_
+		LDPATH="${EPREFIX}/usr/lib/rust/lib"
+		MANPATH="${EPREFIX}/usr/lib/rust/man"
+	_EOF_
+
+	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+
+	# note: eselect-rust adds EROOT to all paths below
+	cat <<-_EOF_ > "${T}/provider-${P}"
+		/usr/bin/cargo
+		/usr/bin/rustdoc
+		/usr/bin/rust-gdb
+		/usr/bin/rust-gdbgui
+		/usr/bin/rust-lldb
+		/usr/lib/rustlib
+		/usr/lib/rust/lib
+		/usr/lib/rust/libexec
+		/usr/lib/rust/man
+		/usr/share/doc/rust
+	_EOF_
+
+	if use clippy; then
+		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+	fi
+	if use miri; then
+		echo /usr/bin/miri >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+	fi
+	if use profiler; then
+		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
+	fi
+	if use rustfmt; then
+		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
+	fi
+	if use rust-analyzer; then
+		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
+	fi
+
+	insinto /etc/env.d/rust
+	doins "${T}/provider-${P}"
+
+	if use dist; then
+		insinto "/usr/lib/${PN}/${PV}/dist"
+		doins -r "${S}/build/dist/."
+	fi
+}
+
+pkg_postinst() {
+	eselect rust update
+
+	if has_version 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
+}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2023-02-12  2:59 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2023-02-12  2:59 UTC (permalink / raw
  To: gentoo-commits

commit:     d4d16dca421fd2bb35e3dc8268afdcb6f47575cf
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Fri Feb 10 13:52:13 2023 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Sun Feb 12 02:58:59 2023 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=d4d16dca

dev-lang/rust: Add 1.67.1 + Remove 1.67.0

Signed-off-by: orbea <orbea <AT> riseup.net>
Closes: https://github.com/gentoo/libressl/pull/495
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 dev-lang/rust/Manifest                             |  4 +--
 dev-lang/rust/files/1.67.0-bootstrap.patch         | 38 ----------------------
 dev-lang/rust/files/1.67.0-doc-wasm.patch          | 34 +++++++++++++++++++
 .../{rust-1.67.0.ebuild => rust-1.67.1.ebuild}     |  2 +-
 4 files changed, 37 insertions(+), 41 deletions(-)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index c3dc06f..a1a5475 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -98,5 +98,5 @@ DIST rustc-1.65.0-src.tar.xz 139674928 BLAKE2B a218263fb67e306b153f5a6dae95b5ec6
 DIST rustc-1.65.0-src.tar.xz.asc 801 BLAKE2B 43ff92011cd6f7f34ce0495fa341379e5907d032ea90f91e533e5edaec6ad518aad50a9d8b2694074d6909ee96aa779403b16e95792e962e79c1b967542ae26f SHA512 75b9be53363022c81333117876cbcc573bbd4733edf767cbb164218644efb1a9c4bfc2aa73aaa1e39f248a84f1adacb1930a94a6e63f60093ff760fb9ae02efc
 DIST rustc-1.66.1-src.tar.xz 141692940 BLAKE2B 3fae45345998386fda1b11ec896fac4613b8e3f0092bc0df29c9685f4a4012c0bd1b600911c2d19bcfa8f5a84b8a3c39d4c9e062a62cd61925b59129e1cd72b9 SHA512 1944c024c603140d0a9236043a3bd1d0d211dd8d368d6d82a3a620f1ff43b29624755b0943f2b38b40a188c7eee77a840238ea757eaf435e2a3fa6a0e6b82832
 DIST rustc-1.66.1-src.tar.xz.asc 801 BLAKE2B 18e27c88b39eed29147854733c5533b7fffc417ff0b3bd5982174ffa2c5f6d217e2e28ced4da75863a4557800e7ad7a124a4bbb0def4c20da7ed543602185941 SHA512 4511f41ad3d098a339ea3173e3ffa692d1d3cd3ec9dd45af68e4491471f9a72a2e866f6924090eb366bdf6f856650d981eabe1cd851843a17f4a6e4f1dfbc8a9
-DIST rustc-1.67.0-src.tar.xz 142750964 BLAKE2B 5dcea694548f5162bed6020ca12ecfa178fba479fbe6f29ec310f9c5cfaae13999de7b861498e92561f21001fed295d21dd9230ccb5da2f20c638309e785cfda SHA512 6d1ddb54c0ee2c4f8ccf73f3c306c8d8868feb738d5e77eb5a5d25f716395c27d1b3666929c87f9dc84213a9acfdb56254feac92ef0fea3147e2c644391c12b4
-DIST rustc-1.67.0-src.tar.xz.asc 801 BLAKE2B b46159b7cbe081cb34d82b2642397788d09d09f9e55fd961a491862c2c1827b0752530fa74e1a8245cab9ff898d2f021bfdae4820edca34a87c9e18202d7a31e SHA512 cceb0aa5d43c476a051c77263fe152085b8d7d337f78117077a1e460bb9e31b75becd36a8f571fc1275a268ac1107d680012a82a7378851d2a9f16748d95a929
+DIST rustc-1.67.1-src.tar.xz 142758844 BLAKE2B 55b2a98592b1a2e465b7fb224607cbcb23cb13d5053b51abbd2e45428794f457b6925955c5c562f577830353e5287929b3588ee78a30036bf0ca13a3610316d9 SHA512 42d77ee93b168ae139b026138fb48d925624ff436a836aa97ee235f870e61ea11643b0cf7ad20bcafda774c6cd3855a4bc10a2e2ed1c4d82c6f15158963b304d
+DIST rustc-1.67.1-src.tar.xz.asc 801 BLAKE2B eb507c6f53c592921eb31cccb17c9d6027c67fb1311726f2d25fe7d1f8a1aa051efb99d7207a5e4477df0b75898783437e653fa041ed7daa27e7a7c4263ec230 SHA512 6c962f680d74251b55f77a43d6e383be53bacff8428e0d003bda207de1fea7f716b88f16686d22a88d99518a4834bf299731855fb030477a995d5e1f3d0024f4

diff --git a/dev-lang/rust/files/1.67.0-bootstrap.patch b/dev-lang/rust/files/1.67.0-bootstrap.patch
deleted file mode 100644
index eb16066..0000000
--- a/dev-lang/rust/files/1.67.0-bootstrap.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 675fa0b3dd5fe14b43ad5b7862f4528df7322468 Mon Sep 17 00:00:00 2001
-From: Michael Goulet <michael@errs.io>
-Date: Mon, 12 Dec 2022 18:29:33 +0000
-Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A8=20fix=20unsoundness=20in=20bootstr?=
- =?UTF-8?q?ap=20cache=20code?=
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
----
- src/bootstrap/cache.rs | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/src/bootstrap/cache.rs b/src/bootstrap/cache.rs
-index be5c9bb078808..05f25af68ea8f 100644
---- a/src/bootstrap/cache.rs
-+++ b/src/bootstrap/cache.rs
-@@ -89,16 +89,16 @@ impl<T: Internable + Hash> Hash for Interned<T> {
- 
- impl<T: Internable + Deref> Deref for Interned<T> {
-     type Target = T::Target;
--    fn deref(&self) -> &'static Self::Target {
-+    fn deref(&self) -> &Self::Target {
-         let l = T::intern_cache().lock().unwrap();
--        unsafe { mem::transmute::<&Self::Target, &'static Self::Target>(l.get(*self)) }
-+        unsafe { mem::transmute::<&Self::Target, &Self::Target>(l.get(*self)) }
-     }
- }
- 
- impl<T: Internable + AsRef<U>, U: ?Sized> AsRef<U> for Interned<T> {
--    fn as_ref(&self) -> &'static U {
-+    fn as_ref(&self) -> &U {
-         let l = T::intern_cache().lock().unwrap();
--        unsafe { mem::transmute::<&U, &'static U>(l.get(*self).as_ref()) }
-+        unsafe { mem::transmute::<&U, &U>(l.get(*self).as_ref()) }
-     }
- }
- 

diff --git a/dev-lang/rust/files/1.67.0-doc-wasm.patch b/dev-lang/rust/files/1.67.0-doc-wasm.patch
new file mode 100644
index 0000000..06011de
--- /dev/null
+++ b/dev-lang/rust/files/1.67.0-doc-wasm.patch
@@ -0,0 +1,34 @@
+From 92aa5f6b272bcdc020a34f8d90f9ef851b5b4504 Mon Sep 17 00:00:00 2001
+From: John Millikin <john@john-millikin.com>
+Date: Mon, 9 Jan 2023 13:54:21 +0900
+Subject: [PATCH] Disable `linux_ext` in wasm32 and fortanix rustdoc builds.
+
+The `std::os::unix` module is stubbed out when building docs for these
+target platforms. The introduction of Linux-specific extension traits
+caused `std::os::net` to depend on sub-modules of `std::os::unix`,
+which broke rustdoc for the `wasm32-unknown-unknown` target.
+
+Adding an additional `#[cfg]` guard solves that rustdoc failure by
+not declaring `linux_ext` on targets with a stubbed `std::os::unix`.
+---
+ library/std/src/os/net/mod.rs | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/library/std/src/os/net/mod.rs b/library/std/src/os/net/mod.rs
+index 5ec267c41e97c..b7046dd7c598c 100644
+--- a/library/std/src/os/net/mod.rs
++++ b/library/std/src/os/net/mod.rs
+@@ -1,4 +1,13 @@
+ //! OS-specific networking functionality.
+ 
++// See cfg macros in `library/std/src/os/mod.rs` for why these platforms must
++// be special-cased during rustdoc generation.
++#[cfg(not(all(
++    doc,
++    any(
++        all(target_arch = "wasm32", not(target_os = "wasi")),
++        all(target_vendor = "fortanix", target_env = "sgx")
++    )
++)))]
+ #[cfg(any(target_os = "linux", target_os = "android", doc))]
+ pub(super) mod linux_ext;

diff --git a/dev-lang/rust/rust-1.67.0.ebuild b/dev-lang/rust/rust-1.67.1.ebuild
similarity index 99%
rename from dev-lang/rust/rust-1.67.0.ebuild
rename to dev-lang/rust/rust-1.67.1.ebuild
index 68ed8f4..e832848 100644
--- a/dev-lang/rust/rust-1.67.0.ebuild
+++ b/dev-lang/rust/rust-1.67.1.ebuild
@@ -164,7 +164,7 @@ PATCHES=(
 	"${FILESDIR}"/1.64.0-libressl.patch
 	"${FILESDIR}"/1.65.0-ignore-broken-and-non-applicable-tests.patch
 	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
-	"${FILESDIR}"/1.67.0-bootstrap.patch
+	"${FILESDIR}"/1.67.0-doc-wasm.patch
 )
 
 S="${WORKDIR}/${MY_P}-src"


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2023-03-28 18:51 Quentin Retornaz
  0 siblings, 0 replies; 27+ messages in thread
From: Quentin Retornaz @ 2023-03-28 18:51 UTC (permalink / raw
  To: gentoo-commits

commit:     07cb00bc9d5cca20327b14fbeb271c079b191e0c
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Wed Mar 22 02:36:28 2023 +0000
Commit:     Quentin Retornaz <gentoo <AT> retornaz <DOT> com>
CommitDate: Tue Mar 28 18:50:53 2023 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=07cb00bc

dev-lang/rust: Add 1.68.1

Signed-off-by: orbea <orbea <AT> riseup.net>
Closes: https://github.com/gentoo/libressl/pull/508
Signed-off-by: Quentin Retornaz <gentoo <AT> retornaz.com>

 dev-lang/rust/Manifest                             |  34 +
 ....0-ignore-broken-and-non-applicable-tests.patch |  40 ++
 dev-lang/rust/rust-1.68.1.ebuild                   | 749 +++++++++++++++++++++
 3 files changed, 823 insertions(+)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index a1a5475..01d1ce5 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -94,9 +94,43 @@ DIST rust-1.66.1-x86_64-unknown-linux-gnu.tar.xz 186651920 BLAKE2B de89dd720320d
 DIST rust-1.66.1-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d313eafed62763b0905636ff22d6c736696c55e55d2442512a95e239b5b37199fdb125d312284b2a249782fa61d552284c8eb3ef8c9aa9ea36283a9fb975dd66 SHA512 c491f07c77baeac6b92c2425092c1b3694e72c49d4e6e511597aac03d51930cd414a95b0d691a9b23df266fba8df3dd90bf7d30624383bd213403fe0cbc83ffb
 DIST rust-1.66.1-x86_64-unknown-linux-musl.tar.xz 270294752 BLAKE2B b068a9400f29e9318e8d52f2c37df72f1b8fd91ca0bba342e6681544595a7f2697bf10437be6c4612a36d2781cc915920b498273ab12dbe1163c41d9d4e9b438 SHA512 df03ef29b03924346ef2a4b5dbf1c7ce6e33fb1f357eb04b0fa80e48a607b29f5929ce587412c9dd3f385d6382f0229c19d0ce78d6c060ddc0539429d3cfc606
 DIST rust-1.66.1-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B a262a2a020a142ea8e3906a9c93d9294906ee51f5d22efd4ef041b6032524d2714e0b511f7deb366c0ee3337ecd52f1e091b6bfed01615eaa9026996100afe2d SHA512 f390b3a788c5b15b1acee01505b6501ad4a3170cd2f23ec490b02294ce0a62c3f708f1e66c0ba8258a1042dea0401a1e09d31d34e99558f50b0f65b359354182
+DIST rust-1.67.1-aarch64-unknown-linux-gnu.tar.xz 257819328 BLAKE2B 7d2b033f447f5df5879be3e6d55c26a96996910026db8a751e85cc1a0c034e508cb3b207f45a3ddfd491c6f97993374f5a285eb2b6cd0233954f4126db260828 SHA512 b49ad763f88db3414fa5b10e3462992bc880ff36437642f5fc29effe54d7b6bdef16119e039cbb7ae291f142e88b48ab213b9a51cd38c65fd57ccf2bdfaab3db
+DIST rust-1.67.1-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 94e00367ba680137847d41bd8bef7493eac46f04a5b42c0b8252642c30d25db5f813de3603e450cab9a1cdde4c0f065f58d03ee72c29a5c321d87a063a01d05a SHA512 8b558c63fefa00ee0d50cc1b22560572ce5babd9759350f5178eb82e86230e9f9e4f9f4339dcba976e1837f167dc0e3e4f376be7352f9127f0d7af545e93694c
+DIST rust-1.67.1-aarch64-unknown-linux-musl.tar.xz 236561572 BLAKE2B 19168415f8199dec3ce4c148394c7c86dea81df0ecb7cb776395d8f0e7b910ecf8de4c9ef7a87baadfe52af65e612779ae3de8599808032e91c726c4d967139f SHA512 f2931563300d78af1c09dff10a9b8f73d441c559dfffc3907e5a2425d12027061ad2492683404cc2b58cf429446645807f6d3f70caa2dcb6cffe40ac39252f25
+DIST rust-1.67.1-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 7f4bd1c432971ce5f5346f2f39dd1f5bdbc19f13524ee7cae82eb6a3f30a5ecb69fb367fb4e0063e06656f457cff68a2b81ba5ca896a5857312a11fbaea0baf7 SHA512 d568b2d4cbbcba327bd04e9253f25839e0f183c144cafa1e8104b82d64bae3515fe8f16ccce2ff975210b6f54254d451c64fc4a070b80981a945d164897b1c7f
+DIST rust-1.67.1-arm-unknown-linux-gnueabi.tar.xz 215162200 BLAKE2B d922e271d04e2cc18f21fcef6f1aa8f283a7bf56228a1b1a7d81be697333a0f16fdadb12e7350ae130dfac2ca78766990df2001a3b0fc898ad4233c51a7f39c2 SHA512 06bca6150bf088ae19fbdfc0ce74dc0a8f24c111290f9592cb65164dd6cc03c1468a599514052cafabbd1b4040673a0cea69e14b266d59a42bcd7c1701e212ba
+DIST rust-1.67.1-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B c85feb559064bc24b25dab825ac6758c7759cc027dad4885bc87eff0f331f1177963b39096f4ab78490c54d82a0daaab035f58a0d6992eee1acca2a1add4fb50 SHA512 7754053412a2d17b9092166d37ec713c45ff32c9f161fa261bc075b89b43af716861aa15ab8dcf4472ea49d6e3d2f3c4085d536946cec6ff862f75f83debb7d6
+DIST rust-1.67.1-arm-unknown-linux-gnueabihf.tar.xz 215944916 BLAKE2B 7e04f28292669fd0c34dc317c42d67e1b27ad0b910186ee846eab88dec1c14f89a3b599a93d7c81c88c1b040052c3df11a50e6344528054095113131094acc66 SHA512 e4c54745b55e0a5b6b36e9dc058265ae4774855122f111a0029415df2fe5bb564cb641e332ebc1c00d792c7dce6ca370e6440ec20658012c1a605939cd8efa03
+DIST rust-1.67.1-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 0ca0c0ed5423c89e988f0c93e4aa8d8d6cb0e401b664f9ccdb642d736f4e4cfc2fd39d0a142b07d8e5dcacddd304c8dea04617b5e3264a3865a16bfaf49d1274 SHA512 e573a36c401fe5c543f4505bbec1b5e7c962831aba062cdf8e417f5fc3c6eff2bd6c44a6c01bec4cc5fc4ddeea1c5023f90c7f1c44a26a39b9520fee923b61b2
+DIST rust-1.67.1-armv7-unknown-linux-gnueabihf.tar.xz 218109412 BLAKE2B 256cf45036132ba6f4a4dceb80fef0a2bf079fd54b4119e8a869fcf9e093e76e1d7ac84eb920e272b766a328548514e7b0249b6287d8950528aa049ed92b21ba SHA512 05ef4e7f2abdbed1cda6209ab3500f8532e516c7e4f9d08ef0c1cfa790c2454b952ed59a43ed4453e7385b12f672d5029c6c436601d7a34368418c0800f0126d
+DIST rust-1.67.1-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B cc15e8f68745d252e8851b79441684cea1f1214e7088d7ae6592a5d47719d9dd61abb01f37882775c3c00e1b318562ca050caf5ab06a665946886f50575bb1e2 SHA512 68d66234f3bb9c452aa4a2bb5bceaf26dcb71466f05a0aa7f7b7803a866be5cfda1bf3a8f71cc8e84c2168812641da07a0726d7f2f49882b892ae41f51465477
+DIST rust-1.67.1-i686-unknown-linux-gnu.tar.xz 235056732 BLAKE2B b02479f7d145b6ad3db16d62120a6b324a9db79ef0ff7a5900d7ffd9f5cff0416fa74120a70c1c2ef5bc05c6db4a70b18cf52aa49e0972a5c75becd995795803 SHA512 64f0f887f711b276bd9561fa258aee97bef234d84b02912c1c01ec8caccfe3b0bbfdfcfce98cbd6423043c312e577d0fa574f4c703292a58163a7d3286bbf6db
+DIST rust-1.67.1-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 602b2769db2e4810fdb962ce1241118e00d3ee6131267815b9c8602298bd55d249e75ce42b4a4965aa6835d8af762d6e23fb1ba3a3b8a954ef08fa5dd88b30b2 SHA512 18999437af3b51b836cfeb8096c55afa2027e783d32f492eb620964c1731f367d76cf72533b35bd67f3800be4e457f4a1192aa85bfe00a41d673484f2ff56eb1
+DIST rust-1.67.1-mips-unknown-linux-gnu.tar.xz 195834044 BLAKE2B feab999cd49f72bb0865324c3671d92025ebca88601b2b6257ad11ec66b506e65bb3cdfc9a459014d9f2af52bfb410837c30e3bd0c85f407f8ebe4f98be7439a SHA512 3dfbe7e846289cc22da42b630bee54b98749c1d659a0652559b9d4febfac6eb786da18ad1be1316aa3dccc4e213f1f20efc8556da88df7226a5d8a8890b830b2
+DIST rust-1.67.1-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 100dcd13886287128065952d0b535208a0807c22175dd8fd04f16a16d76d2c9d32dd6b6da5ca929c517519e167e100607c7749ed6c512fae89e2e0313e7b7202 SHA512 5cebd45755d5accb15da29423eb7addf18a72326238ef6a0c2ca09776ac008490165d2b1fb069ec7a34d509bdfa7cf1212a87344e0dda4746dfb89afe404225a
+DIST rust-1.67.1-mips64-unknown-linux-gnuabi64.tar.xz 193892140 BLAKE2B d17cc8b42ad0e2a658dbc170dfc7256ecfd0b520cb6670eac4be63e1a92c54ff9018ee4ef9cf90b1e29d052cb6076ccbb163348b99113fd2e0d9155436129f91 SHA512 92e5c3238d4544583ed8ab989d598275e729e7795b0d645a822ca7cdb5be9fe419fba3a7f2d8db11393ce03ac02873ee876ae55f959609f0a6f4b4f1273a7929
+DIST rust-1.67.1-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 95c5e4829068b02c16f7e8e38b2d94a4f913bbd77b226d1c83c8cdc7ef198192b76ff67dc86f7978dd1b9cbb14bb627dc106fc2921a501c340f7d0442629f8e6 SHA512 32be92455ccb54328d1f62381501009e8dbe15f1b4f83e99a894bf5e7eb469a23aeeb3ef440be1ee798e00bfe865ec21d2dd6b2c58a475e1ec789425e53bd356
+DIST rust-1.67.1-mipsel-unknown-linux-gnu.tar.xz 199598332 BLAKE2B b894bef4c2f847a26be0badc6d069fad636f0cf1286a1643b876709ff292bfe3a2307f1a2904bf6e0c596c13dccd91baba0e0c4fcb45a7cfb71e555207a61292 SHA512 9574f8f078deae22bcdbeb89c7aaf1c26a49fb61cd9a7d777421497b85c243fdcbad8c25d1a80aab4ae0b03f6849628318371dc323e27e308c85ac556e2d649f
+DIST rust-1.67.1-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B dac540a5283281c495e4cc629e7d81279c55db4fce3191af55e88cfcb857a0f86eebeff9a0b8ba95d4da4654c5b11c0fb5364db876a4464b799499285f0184a0 SHA512 ccc990923cb5b73391b09e8c7f4479998bb378b07ee12b5a83d6fbe6044f6925429590a116a944163a2d8f7f6a210b6f2302cb5976a99174e012b7646d7cef5c
+DIST rust-1.67.1-powerpc-unknown-linux-gnu.tar.xz 222275832 BLAKE2B e63426d9441a601044d8f0cc8f181bafa7f47bce972518676913d506be5566654e0afe84d63ad0c3a31596231b0a1a10c96e9246fca9bd2b0438f9d72613fc9d SHA512 66fab7b5679bfe59f12dfc5b863196c2cb0b5d0f53d0bd88700586a90a6e8ad4c986fb44979b4320e74ed8b9e4c62b4ab2b3e64e44254355577fc9d1e6b688e4
+DIST rust-1.67.1-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 312da822216930be24d368f4c449b757f1b633e71b6897b19c9d45b7419ff0c39171804d2d8196a967e6e2296bbfcb87f0b2372b3260c6cb62c8fbd9fa192c4b SHA512 38f5ed49201ef0a99c24dd3e0549628e4bedf53f41d62f6e719a91b3afe3aba64ef7ed51a6984b21469c1ea2c5def284d13ff035c67eeee45d304ec04b34fd2a
+DIST rust-1.67.1-powerpc64-unknown-linux-gnu.tar.xz 220473512 BLAKE2B d932865dbf797827507426c61107a0d89aac02d56cf552e21566ef6356173925697b72e3acf3fb8825b10814b476d28f9cee98ece21cb748d83c1526f9d7ebc6 SHA512 6f7b1e33da99bc46014785223bdc9aa5bfbb1a5619037cf48fe5ec46aa82e42e09fc8828b4e2b904bc122f61ccb24cf56caa7077260a1e7486dc3badf018be69
+DIST rust-1.67.1-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B aa72e61de6481748dc29cfb0f40662fb4a7ee6c3792b67efdd55df47abdfe75db4ab1f560175a3dfaaa036a3de0435ea6e2d9ceb1b4ba315c95c561fbfde0ca0 SHA512 e983fe67613257744fb7a147e4b29370795d52833a247b2c568610993a6e3eb5f6212fa511cb72636bcd7209c15181dca9ace05eb4866fcd09e69afad5ad9b77
+DIST rust-1.67.1-powerpc64le-unknown-linux-gnu.tar.xz 232947736 BLAKE2B d7448f4a7196eb67d35f5a280d5c53bdf1e08a7ca640503bac3d8cfa5b43680b231d9d1f560d4907ce7a191cf5f43973a0296e369bb81befbd7ff3f05fd12034 SHA512 c2602a03f389e3cee19c7f775ddab12a0635bb4f3a7d1242eca62cccbe91949ac9900ab1066074a2551b7c9fee57539949236ed37ae941a2c7dc0626320eecc7
+DIST rust-1.67.1-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f48881d0e3c1b1d78898720a46166794a4c52ff8f1bdd8a1e792a0c4be585d7c9e5ff369d2c80d3083d18fc548ec4e24b78fa27aef9b69a240095cc8e09decee SHA512 52af4cbb1792345347ce8864109e28ba0acdc3aab2c88f2db201a79a53d903872d3c70ab84a147d311d36000b2b84a64e2b8b97a9470e41b9d7c390c17facf6c
+DIST rust-1.67.1-riscv64gc-unknown-linux-gnu.tar.xz 199552128 BLAKE2B acfeb341ff2ea1ff035445e616a668d565e0b52a7453c30a46a6cfadad0b0ef6eb72d89904095fd5f0363cabeffd2fbe97b435047d5c3606475da41fb50c6be8 SHA512 5c7e0b8942872d211779f46862d0826240a15f46c95d4038f2f8835ca68cf20f8add3231040a331ca761bf4351e0976518095d606303eac66752e5598df49442
+DIST rust-1.67.1-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 246adaf9b5980413ac32af57d2e089e765336e085bb45799aaeb80311a7a5d73545779c8b2e810b763520d9d5a5d475f764675191c12a2d4b2b313c11230d311 SHA512 bf447737b414839b126fe258bb5dd6d34bb9d47d57fdb68a4cd0b9296fda2c47aa267cc9722f7821bab365b95ee4a2c93631786f89c7cb5197c283897c413016
+DIST rust-1.67.1-s390x-unknown-linux-gnu.tar.xz 235970856 BLAKE2B efbe49525e880b07de613be0d22bb87065e0d64f7006ae07c9deb020b65bcbb6dd20cdc250e740763480426baf9c64adfd06e005b616543f2ef9451e99b7d411 SHA512 308aa7bc5e32c50a0b5c2fdb5e9bae60d8c8ea32fcab72205aea9832f24df35d9331c63503e092ecfee18c1eedcb5a50138837e29bb50d74f526aafbad9e71aa
+DIST rust-1.67.1-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 875b4168bf1458376ba31aa8b27d7bb331cb3bcfaf2645e65d0a2167cf55e6a6a2a0bf5f66438e7cca7c73f1cc02fddeea3be570e37ca80f5cc14fc5e0349423 SHA512 97a0e05fabc4755ffaf23ada6d77dde78b410ef530437a8700673ee986c1fc5015665948fb4c63f2e0716bc022ef7d6f061fee0a1516995a6a4d7ea100d234d2
+DIST rust-1.67.1-x86_64-unknown-linux-gnu.tar.xz 186714164 BLAKE2B 648efbb30233335e31c9a90aed4958325258365cd4aef5e01312005606f23ea42cb6788eb82a11e61fb5111c4d32e052ed815e455c32ed3f6fcb18d963589669 SHA512 1a65ce569fb3262dfb805d0fa2c5c9f987c2c69e547fce366d9d371c8b19a90de279099a942919690aa6d58e2462cfd7bf54240f7ef51dc22ce12e292c46038d
+DIST rust-1.67.1-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 669b7c4b0d5382a7d1d0fe49405f2798f67a9e745711dc2c8e7548ea6fdc8f0fefdab37d0594aec14b2745ce45e7c469e79c0cb1d86077ad9c7b6aafc2656827 SHA512 067681cb4140a29adfa5f4b141e2f3450dad34b95a1e549a6bc8d759e57da5d2ae69cc165efcdef9d83e2eee06edb6acd587d38c9b2f3d000d7a3f79daccc671
+DIST rust-1.67.1-x86_64-unknown-linux-musl.tar.xz 269831452 BLAKE2B a36498528454f1bf0e1812eba005f27e3e281e4e2c117477785f5e48468c3fe316947b7e4360f573f0f4cd6f117e4102db8aeaa616be5bef09fb7518fd230b23 SHA512 9a3eb67239a88b875fe55846a2fffbbb1f2a4cc8eed18b5558f0f989d544a8ddfe0861d5b2b860a779833a1660ee622b30320ec9ef83e841724f7a32f08fda06
+DIST rust-1.67.1-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B b12d0ce1136e355ee027780dfe185ee443de402e531ecc743600aecf081990d4e998fa4a6e6f0f46a886cd806918e23c5e4ccb7cecb0324cb67189984192283f SHA512 37428f0d1d8e2ddb7ce52bce3a297a7f666789d00e7e240180c3e1f7fb5b30bf5e17593cbedebdef95c50406ee82d40ef1f75a576a1a0e02387e1a12ed977c77
 DIST rustc-1.65.0-src.tar.xz 139674928 BLAKE2B a218263fb67e306b153f5a6dae95b5ec653acaa5eb4b833862d6f0fd4685a8cec097dadc1b8a934e1bf6055672c7a617f9a0ad4a7dbf2e78084297f10b7ada04 SHA512 3d0369ed3028209c4ecb9b9e7b5f5e3a20be8cc05199675df4f091d62a96c0734bc1dbd7630928fe162792392ec6d0daf9ceed10771531ce022200c7b631e3be
 DIST rustc-1.65.0-src.tar.xz.asc 801 BLAKE2B 43ff92011cd6f7f34ce0495fa341379e5907d032ea90f91e533e5edaec6ad518aad50a9d8b2694074d6909ee96aa779403b16e95792e962e79c1b967542ae26f SHA512 75b9be53363022c81333117876cbcc573bbd4733edf767cbb164218644efb1a9c4bfc2aa73aaa1e39f248a84f1adacb1930a94a6e63f60093ff760fb9ae02efc
 DIST rustc-1.66.1-src.tar.xz 141692940 BLAKE2B 3fae45345998386fda1b11ec896fac4613b8e3f0092bc0df29c9685f4a4012c0bd1b600911c2d19bcfa8f5a84b8a3c39d4c9e062a62cd61925b59129e1cd72b9 SHA512 1944c024c603140d0a9236043a3bd1d0d211dd8d368d6d82a3a620f1ff43b29624755b0943f2b38b40a188c7eee77a840238ea757eaf435e2a3fa6a0e6b82832
 DIST rustc-1.66.1-src.tar.xz.asc 801 BLAKE2B 18e27c88b39eed29147854733c5533b7fffc417ff0b3bd5982174ffa2c5f6d217e2e28ced4da75863a4557800e7ad7a124a4bbb0def4c20da7ed543602185941 SHA512 4511f41ad3d098a339ea3173e3ffa692d1d3cd3ec9dd45af68e4491471f9a72a2e866f6924090eb366bdf6f856650d981eabe1cd851843a17f4a6e4f1dfbc8a9
 DIST rustc-1.67.1-src.tar.xz 142758844 BLAKE2B 55b2a98592b1a2e465b7fb224607cbcb23cb13d5053b51abbd2e45428794f457b6925955c5c562f577830353e5287929b3588ee78a30036bf0ca13a3610316d9 SHA512 42d77ee93b168ae139b026138fb48d925624ff436a836aa97ee235f870e61ea11643b0cf7ad20bcafda774c6cd3855a4bc10a2e2ed1c4d82c6f15158963b304d
 DIST rustc-1.67.1-src.tar.xz.asc 801 BLAKE2B eb507c6f53c592921eb31cccb17c9d6027c67fb1311726f2d25fe7d1f8a1aa051efb99d7207a5e4477df0b75898783437e653fa041ed7daa27e7a7c4263ec230 SHA512 6c962f680d74251b55f77a43d6e383be53bacff8428e0d003bda207de1fea7f716b88f16686d22a88d99518a4834bf299731855fb030477a995d5e1f3d0024f4
+DIST rustc-1.68.1-src.tar.xz 147834548 BLAKE2B 98e02c1ff3ed37cd52d1f348331ffe007583f078fbd1bc581eb32a098eee816f301cd833ecf9f806b8e0c673aa963b34d2e357c089bdb59a8a7464ab46b18307 SHA512 cf3921bc260db54b0f3afc0e6bc9fe8d560ddb81de5d2d4496746307d42a8010291f119d0cfc463996efce6ef829a0494b4eb6145e21c94fd113ff51ee010e21
+DIST rustc-1.68.1-src.tar.xz.asc 801 BLAKE2B 5e0a2d95360fb5d8bed9e759111db225315b93d3042af19bb9fc9f239cabf9f32b85f2e616913ff3ce5fc8111deeb972bc184584ca473216b7a5320a255304a6 SHA512 5330405c09077070a63c04fc1c7059219d046fbaa24997861365199e48da98be4fe2a04fdc5c54a03166097bde58b4e51bdc8296ca89974d2dcec1da279bdab2

diff --git a/dev-lang/rust/files/1.68.0-ignore-broken-and-non-applicable-tests.patch b/dev-lang/rust/files/1.68.0-ignore-broken-and-non-applicable-tests.patch
new file mode 100644
index 0000000..3ebd6e1
--- /dev/null
+++ b/dev-lang/rust/files/1.68.0-ignore-broken-and-non-applicable-tests.patch
@@ -0,0 +1,40 @@
+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
+---
+ test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile | 2 ++
+ test/ui/env-funky-keys.rs                                   | 1 +
+ 6 files changed, 10 insertions(+)
+
+diff --git a/tests/run-make-fulldeps/sysroot-crates-are-unstable/Makefile b/tests/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
+index 9e770706857..6d92ec5cec8 100644
+--- a/tests/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
++++ b/tests/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
+@@ -1,1 +1,3 @@
++# ignore-test
++
+ all:
+         python2.7 test.py
+diff --git a/tests/ui/env-funky-keys.rs b/tests/ui/env-funky-keys.rs
+index c5c824ac58d..f3fe047a79c 100644
+--- a/tests/ui/env-funky-keys.rs
++++ b/tests/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/rust-1.68.1.ebuild b/dev-lang/rust/rust-1.68.1.ebuild
new file mode 100644
index 0000000..b96d6a3
--- /dev/null
+++ b/dev-lang/rust/rust-1.68.1.ebuild
@@ -0,0 +1,749 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
+	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.xz"
+	KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).1"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+SRC_URI="
+	https://static.rust-lang.org/dist/${SRC}
+	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
+	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
+"
+
+# 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 BSD-1 BSD-2 BSD-4 UoI-NCSA"
+
+IUSE="clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+
+# Please keep the LLVM dependency block separate. Since LLVM is slotted,
+# we need to *really* make sure we're not pulling more than one slot
+# simultaneously.
+
+# How to use it:
+# List all the working slots in LLVM_VALID_SLOTS, newest first.
+LLVM_VALID_SLOTS=( 15 )
+LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
+
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+# (-) usedep needed because we may build with older llvm without that target
+LLVM_DEPEND="|| ( "
+for _s in ${LLVM_VALID_SLOTS[@]}; do
+	LLVM_DEPEND+=" ( "
+	for _x in ${ALL_LLVM_TARGETS[@]}; do
+		LLVM_DEPEND+="
+			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
+			wasm? ( sys-devel/lld:${_s} )"
+	done
+	LLVM_DEPEND+=" )"
+done
+unset _s _x
+LLVM_DEPEND+=" )
+	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
+"
+
+# to bootstrap we need at least exactly previous version, or same.
+# most of the time previous versions fail to bootstrap with newer
+# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
+# but it fails to bootstrap with 1.48.x
+# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
+RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
+RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
+BOOTSTRAP_DEPEND="||
+	(
+		=dev-lang/rust-"${RUST_DEP_PREV}"
+		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
+		=dev-lang/rust-"${RUST_DEP_CURR}"
+		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
+	)
+"
+
+BDEPEND="${PYTHON_DEPS}
+	app-eselect/eselect-rust
+	|| (
+		>=sys-devel/gcc-4.7
+		>=sys-devel/clang-3.5
+	)
+	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
+	!system-llvm? (
+		>=dev-util/cmake-3.13.4
+		dev-util/ninja
+	)
+	test? ( sys-devel/gdb )
+	verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+	>=app-arch/xz-utils-5.2
+	net-misc/curl:=[http2,ssl]
+	sys-libs/zlib:=
+	dev-libs/openssl:0=
+	system-llvm? (
+		${LLVM_DEPEND}
+		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
+	)
+	!system-llvm? (
+		!llvm-libunwind? (
+			elibc_musl? ( sys-libs/libunwind:= )
+		)
+	)
+"
+
+RDEPEND="${DEPEND}
+	app-eselect/eselect-rust
+	sys-apps/lsb-release
+"
+
+REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
+	miri? ( nightly )
+	parallel-compiler? ( nightly )
+	test? ( ${ALL_LLVM_TARGETS[*]} )
+	wasm? ( llvm_targets_WebAssembly )
+	x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+	usr/lib/${PN}/${PV}/bin/.*
+	usr/lib/${PN}/${PV}/libexec/.*
+	usr/lib/${PN}/${PV}/lib/lib.*.so
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+	usr/lib/${PN}/${PV}/lib/lib.*.so.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+	"${FILESDIR}"/1.64.0-libressl.patch
+	"${FILESDIR}"/1.68.0-ignore-broken-and-non-applicable-tests.patch
+	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
+	"${FILESDIR}"/1.67.0-doc-wasm.patch
+)
+
+S="${WORKDIR}/${MY_P}-src"
+
+toml_usex() {
+	usex "${1}" true false
+}
+
+bootstrap_rust_version_check() {
+	# never call from pkg_pretend. eselect-rust may be not installed yet.
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
+	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
+	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
+		eerror "Rust >=${rustc_wanted} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too old"
+	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
+		eerror "Rust <${rustc_toonew} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too new"
+	else
+		einfo "Using rust ${rustc_version} to build"
+	fi
+}
+
+pre_build_checks() {
+	local M=8192
+	# multiply requirements by 1.3 if we are doing x86-multilib
+	if use amd64; then
+		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
+	fi
+	M=$(( $(usex clippy 128 0) + ${M} ))
+	M=$(( $(usex miri 128 0) + ${M} ))
+	M=$(( $(usex rustfmt 256 0) + ${M} ))
+	# add 2G if we compile llvm and 256M per llvm_target
+	if ! use system-llvm; then
+		M=$(( 2048 + ${M} ))
+		local ltarget
+		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+		done
+	fi
+	M=$(( $(usex wasm 256 0) + ${M} ))
+	M=$(( $(usex debug 2 1) * ${M} ))
+	eshopts_push -s extglob
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		M=$(( 15 * ${M} / 10 ))
+	fi
+	eshopts_pop
+	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
+	M=$(( $(usex doc 256 0) + ${M} ))
+	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+# Is LLVM being linked against libc++?
+is_libcxx_linked() {
+	local code='#include <ciso646>
+#if defined(_LIBCPP_VERSION)
+	HAVE_LIBCXX
+#endif
+'
+	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
+	[[ ${out} == *HAVE_LIBCXX* ]]
+}
+
+pkg_pretend() {
+	pre_build_checks
+}
+
+pkg_setup() {
+	pre_build_checks
+	python-any-r1_pkg_setup
+
+	export LIBGIT2_NO_PKG_CONFIG=1 #749381
+
+	use system-bootstrap && bootstrap_rust_version_check
+
+	if use system-llvm; then
+		llvm_pkg_setup
+
+		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+		export LLVM_LINK_SHARED=1
+		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+	fi
+}
+
+esetup_unwind_hack() {
+	# https://bugs.gentoo.org/870280
+	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
+	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
+	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
+	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
+	local fakelib="${T}/fakelib"
+	mkdir -p "${fakelib}" || die
+	# we need both symlinks, one for cargo runtime, other for linker.
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
+	export LD_LIBRARY_PATH="${fakelib}"
+	export RUSTFLAGS+=" -L${fakelib}"
+	# this is a literally magic variable that gets through cargo cache, without it some
+	# crates ignore RUSTFLAGS.
+	# this variable can not contain leading space.
+	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
+}
+
+src_prepare() {
+	if ! use system-bootstrap; then
+		has_version sys-devel/gcc || esetup_unwind_hack
+		local rust_stage0_root="${WORKDIR}"/rust-stage0
+		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
+
+		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
+			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
+	fi
+
+	# this libressl version check is terrible
+	sed -e 's/d397af804c0b786978867528635fa9148cd2ad0e6abd591ace21b5bd3719c38d/896afea18b1072d4c715421ff2ed7e428b57aadec44d4680dcb991a6229a1edc/' \
+		-i vendor/openssl-sys/.cargo-checksum.json || die
+	# fix for libressl
+	sed -e 's/7d5ca02f34cffe51db3568c500c9a8a70cef879871a0f466e3344142644acf12/e9eef35f1c18dd9844960d1d315e84ad99a05ab1247f0f54e3c2eab244988256/' \
+		-i vendor/libssh2-sys/.cargo-checksum.json || die
+
+	default
+}
+
+src_configure() {
+	filter-flags '-flto*' # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
+
+	local rust_target="" rust_targets="" arch_cflags
+
+	# Collect rust target names to compile standard libs for all ABIs.
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
+	done
+	if use wasm; then
+		rust_targets+=",\"wasm32-unknown-unknown\""
+		if use system-llvm; then
+			# un-hardcode rust-lld linker for this target
+			# https://bugs.gentoo.org/715348
+			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
+		fi
+	fi
+	rust_targets="${rust_targets#,}"
+
+	local tools='"cargo"'
+	use clippy && tools+=',"clippy"'
+	use miri && tools+=',"miri"'
+	use profiler && tools+=',"rust-demangler"'
+	use rustfmt && tools+=',"rustfmt"'
+	use rust-analyzer && tools+=',"rust-analyzer","analysis"'
+	use rust-src && tools+=',"src"'
+
+	local rust_stage0_root
+	if use system-bootstrap; then
+		local printsysroot
+		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
+		rust_stage0_root="${printsysroot}"
+	else
+		rust_stage0_root="${WORKDIR}"/rust-stage0
+	fi
+	# in case of prefix it will be already prefixed, as --print sysroot returns full path
+	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+	rust_target="$(rust_abi)"
+
+	local cm_btype="$(usex debug DEBUG RELEASE)"
+	cat <<- _EOF_ > "${S}"/config.toml
+		changelog-seen = 2
+		[llvm]
+		download-ci-llvm = false
+		optimize = $(toml_usex !debug)
+		release-debuginfo = $(toml_usex debug)
+		assertions = $(toml_usex debug)
+		ninja = true
+		targets = "${LLVM_TARGETS// /;}"
+		experimental-targets = ""
+		link-shared = $(toml_usex system-llvm)
+		$(if is_libcxx_linked; then
+			# https://bugs.gentoo.org/732632
+			echo "use-libcxx = true"
+			echo "static-libstdcpp = false"
+		fi)
+		$(case "${rust_target}" in
+			i586-*-linux-*)
+				# https://github.com/rust-lang/rust/issues/93059
+				echo 'cflags = "-fcf-protection=none"'
+				echo 'cxxflags = "-fcf-protection=none"'
+				echo 'ldflags = "-fcf-protection=none"'
+				;;
+			*)
+				;;
+		esac)
+		[llvm.build-config]
+		CMAKE_VERBOSE_MAKEFILE = "ON"
+		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
+		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
+		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
+		[build]
+		build-stage = 2
+		test-stage = 2
+		build = "${rust_target}"
+		host = ["${rust_target}"]
+		target = [${rust_targets}]
+		cargo = "${rust_stage0_root}/bin/cargo"
+		rustc = "${rust_stage0_root}/bin/rustc"
+		rustfmt = "${rust_stage0_root}/bin/rustfmt"
+		docs = $(toml_usex doc)
+		compiler-docs = false
+		submodules = false
+		python = "${EPYTHON}"
+		locked-deps = true
+		vendor = true
+		extended = true
+		tools = [${tools}]
+		verbose = 2
+		sanitizers = false
+		profiler = $(toml_usex profiler)
+		cargo-native-static = false
+		[install]
+		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
+		sysconfdir = "etc"
+		docdir = "share/doc/rust"
+		bindir = "bin"
+		libdir = "lib"
+		mandir = "share/man"
+		[rust]
+		# https://github.com/rust-lang/rust/issues/54872
+		codegen-units-std = 1
+		optimize = true
+		debug = $(toml_usex debug)
+		debug-assertions = $(toml_usex debug)
+		debug-assertions-std = $(toml_usex debug)
+		debuginfo-level = $(usex debug 2 0)
+		debuginfo-level-rustc = $(usex debug 2 0)
+		debuginfo-level-std = $(usex debug 2 0)
+		debuginfo-level-tools = $(usex debug 2 0)
+		debuginfo-level-tests = 0
+		backtrace = true
+		incremental = false
+		default-linker = "$(tc-getCC)"
+		parallel-compiler = $(toml_usex parallel-compiler)
+		channel = "$(usex nightly nightly stable)"
+		description = "gentoo"
+		rpath = false
+		verbose-tests = true
+		optimize-tests = $(toml_usex !debug)
+		codegen-tests = true
+		dist-src = false
+		remap-debuginfo = true
+		lld = $(usex system-llvm false $(toml_usex wasm))
+		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+		# https://github.com/rust-lang/rust/issues/74976
+		# https://github.com/rust-lang/rust/issues/76526
+		deny-warnings = $(usex wasm $(usex doc false true) true)
+		backtrace-on-ice = true
+		jemalloc = false
+		[dist]
+		src-tarball = false
+		compression-formats = ["xz"]
+	_EOF_
+
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${rust_target}]
+			ar = "$(tc-getAR)"
+			cc = "$(tc-getCC)"
+			cxx = "$(tc-getCXX)"
+			linker = "$(tc-getCC)"
+			ranlib = "$(tc-getRANLIB)"
+			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
+		# but we patch it and set to false here as well
+		if use elibc_musl; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				crt-static = false
+			_EOF_
+		fi
+	done
+	if use wasm; then
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.wasm32-unknown-unknown]
+			linker = "$(usex system-llvm lld rust-lld)"
+			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
+			profiler = false
+		_EOF_
+	fi
+
+	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
+	# experimental cross support
+	# discussion: https://bugs.gentoo.org/679878
+	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
+	# it would be much better if we could split out stdlib
+	# complilation to separate ebuild and abuse CATEGORY to
+	# just install to /usr/lib/rustlib/<target>
+
+	# extra targets defined as a bash array
+	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
+	# best place would be /etc/portage/env/dev-lang/rust
+	# Example:
+	# RUST_CROSS_TARGETS=(
+	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
+	# )
+	# no extra hand holding is done, no target transformations, all
+	# values are passed as-is with just basic checks, so it's up to user to supply correct values
+	# valid rust targets can be obtained with
+	# 	rustc --print target-list
+	# matching cross toolchain has to be installed
+	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
+	# only gcc toolchains installed with crossdev are checked for now.
+
+	# BUG: we can't pass host flags to cross compiler, so just filter for now
+	# BUG: this should be more fine-grained.
+	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
+
+	local cross_target_spec
+	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
+		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
+		local cross_llvm_target="${cross_target_spec%%:*}"
+		# extracts toolchain triples, <rust-target>:<CTARGET>
+		local cross_triples="${cross_target_spec#*:}"
+		# extracts first element after before : separator
+		local cross_rust_target="${cross_triples%%:*}"
+		# extracts last element after : separator
+		local cross_toolchain="${cross_triples##*:}"
+		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
+		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${cross_rust_target}]
+			ar = "${cross_toolchain}-ar"
+			cc = "${cross_toolchain}-gcc"
+			cxx = "${cross_toolchain}-g++"
+			linker = "${cross_toolchain}-gcc"
+			ranlib = "${cross_toolchain}-ranlib"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		if [[ "${cross_toolchain}" == *-musl* ]]; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+			_EOF_
+		fi
+
+		# append cross target to "normal" target list
+		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
+		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+		rust_targets="${rust_targets},\"${cross_rust_target}\""
+		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+		ewarn
+		ewarn "Enabled ${cross_rust_target} rust target"
+		ewarn "Using ${cross_toolchain} cross toolchain"
+		ewarn
+		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+			ewarn "'sys-devel/binutils[multitarget]' is not installed"
+			ewarn "'strip' will be unable to strip cross libraries"
+			ewarn "cross targets will be installed with full debug information"
+			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+			ewarn
+			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+			ewarn
+		fi
+	done
+	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+	einfo "Rust configured with the following flags:"
+	echo
+	echo RUSTFLAGS="\"${RUSTFLAGS}\""
+	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
+	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
+	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
+	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+	env | grep "CFLAGS_.*"
+	echo
+	einfo "config.toml contents:"
+	cat "${S}"/config.toml || die
+	echo
+}
+
+src_compile() {
+	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -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 ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
+				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
+		then
+				failed+=( "${t}" )
+				eerror "rust_src_test: ${t} failed"
+		fi
+	done
+
+	if [[ ${#failed[@]} -ne 0 ]]; then
+		eerror "rust_src_test: failure summary: ${failed[@]}"
+		die "aborting due to test failures"
+	fi
+}
+
+src_install() {
+	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+
+	# bug #689562, #689160
+	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
+	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+
+	local symlinks=(
+		cargo
+		rustc
+		rustdoc
+		rust-gdb
+		rust-gdbgui
+		rust-lldb
+	)
+
+	use clippy && symlinks+=( clippy-driver cargo-clippy )
+	use miri && symlinks+=( miri cargo-miri )
+	use profiler && symlinks+=( rust-demangler )
+	use rustfmt && symlinks+=( rustfmt cargo-fmt )
+	use rust-analyzer && symlinks+=( rust-analyzer )
+
+	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
+	local i
+	for i in "${symlinks[@]}"; do
+		# we need realpath on /usr/bin/* symlink return version-appended binary path.
+		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
+		# need to fix eselect-rust to remove this hack.
+		local ver_i="${i}-${PV}"
+		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
+			einfo "Installing ${i} symlink"
+			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
+		else
+			ewarn "${i} symlink requested, but source file not found"
+			ewarn "please report this"
+		fi
+		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
+	done
+
+	# symlinks to switch components to active rust in eselect
+	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
+	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
+	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
+	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
+	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+
+	newenvd - "50${P}" <<-_EOF_
+		LDPATH="${EPREFIX}/usr/lib/rust/lib"
+		MANPATH="${EPREFIX}/usr/lib/rust/man"
+	_EOF_
+
+	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+
+	# note: eselect-rust adds EROOT to all paths below
+	cat <<-_EOF_ > "${T}/provider-${P}"
+		/usr/bin/cargo
+		/usr/bin/rustdoc
+		/usr/bin/rust-gdb
+		/usr/bin/rust-gdbgui
+		/usr/bin/rust-lldb
+		/usr/lib/rustlib
+		/usr/lib/rust/lib
+		/usr/lib/rust/libexec
+		/usr/lib/rust/man
+		/usr/share/doc/rust
+	_EOF_
+
+	if use clippy; then
+		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+	fi
+	if use miri; then
+		echo /usr/bin/miri >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+	fi
+	if use profiler; then
+		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
+	fi
+	if use rustfmt; then
+		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
+	fi
+	if use rust-analyzer; then
+		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
+	fi
+
+	insinto /etc/env.d/rust
+	doins "${T}/provider-${P}"
+
+	if use dist; then
+		insinto "/usr/lib/${PN}/${PV}/dist"
+		doins -r "${S}/build/dist/."
+	fi
+}
+
+pkg_postinst() {
+	eselect rust update
+
+	if has_version 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
+}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2023-06-05  0:15 orbea
  0 siblings, 0 replies; 27+ messages in thread
From: orbea @ 2023-06-05  0:15 UTC (permalink / raw
  To: gentoo-commits

commit:     b099719c24315eda07de65aa4cb59f8f82a0910d
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Sun Jun  4 03:09:25 2023 +0000
Commit:     orbea <orbea <AT> riseup <DOT> net>
CommitDate: Sun Jun  4 22:11:30 2023 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=b099719c

dev-lang/rust: add 1.70.0

Signed-off-by: orbea <orbea <AT> riseup.net>

 dev-lang/rust/Manifest                             |  34 +
 ....0-ignore-broken-and-non-applicable-tests.patch |  30 +
 .../rust/files/1.70.0-libressl-openssl-sys.patch   |  10 +
 dev-lang/rust/files/rehash-crate.sh                |  18 +
 dev-lang/rust/metadata.xml                         |   1 +
 dev-lang/rust/rust-1.70.0.ebuild                   | 751 +++++++++++++++++++++
 6 files changed, 844 insertions(+)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 391a113..ab34a95 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -158,6 +158,38 @@ DIST rust-1.68.2-x86_64-unknown-linux-gnu.tar.xz 185953856 BLAKE2B 11fc1f284c772
 DIST rust-1.68.2-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 06f3d90126dfe5dcfb8147c8529f333bf635c5c669cc0b5d45156fed85e87aaaa67d8d9c4b250f77e1f0998e77e5635d3f3056447a032eac07bf847fc532a383 SHA512 1d826f0f8ed896d54139b4ae78205aee5cee3ce6f5449d94b8edb8fc19ab589bde6720eb1644502fc45fe0bd452e2e5209de83c99f7c4285a896cfaacbfdad36
 DIST rust-1.68.2-x86_64-unknown-linux-musl.tar.xz 270073164 BLAKE2B 7d69a578e1d4a8fa75cfea6e630265f1c73cca08ed86ddc7858e7770755431dbf13ddaadcf8035fc2b7d2d7b7144a08b3e3a9fa20afcb5cfed7a31d82098fe5e SHA512 b0294141f1e51176664ae841ea55991826ccd15d0d36b03471831baa202ecb97434bf96479e167772bd62f05b80b49878f89a065a91e00026f0aabe7c02fe552
 DIST rust-1.68.2-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 7de58f292729b349fe0694c724aa88ae5bec5a313952fbf7e62a361c7fba4cdedbd99238a4a826d7b627af30ddf4aca8646f6b061f44983a52dcf2ae8d52e56a SHA512 867e0c20049352fb696b99de9d0d8c5df8da0f1ea8eb9a0446884c2d741df7434bf83303694de208e75e64cd73664b979cf117d02db804bff9b4d6de8ee43638
+DIST rust-1.69.0-aarch64-unknown-linux-gnu.tar.xz 207128044 BLAKE2B 884ed5dab3b4f18e25eb1461178828f8945a4db81da212680134b834c1bbac300314f65f9a6310de1b980ec9deed20b5651369a835cc067e8450e65c373fcda8 SHA512 981ab5a7a221b381e766f09a3172e18eedddfeaec27814ef7e15cf5969b721c4191cfe1f734995f96e8ec5cd403be2e8824fa4b501926b58d42b71d11c0b56b4
+DIST rust-1.69.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 1bf54eb4df4f8fa28dc2afafd2ee50b72f0c235e817e31147cf3777d5e82f09b92d516e985ea9901ca8fdb233ea4fe6e231148bda858c83a8ead7f4e40719a0f SHA512 a26efbfc2cef15be20759e4cf2ad71a6eccc200ca8362cb8bddea0877e91ac82cc4f393111054d1fab161c1483ed0c054ca38c02ddc91fa8d986235459948e8b
+DIST rust-1.69.0-aarch64-unknown-linux-musl.tar.xz 189395128 BLAKE2B 333082be0e62375a8dacd9e1ebfbd754876950e0f3d31fc591dcc7476754463fa804aa8b6063d7649cd0ae280ac96b10e4ce5ba29a3c973f3e9b1f7528a998e8 SHA512 c5ee5bba97b48e1a5d313d88eed8df8f492b4a8b962b91516cb883af16d359150db6727f01dcc933d19e8bba0cb75a2015a09cb26d4d03afd54c13a52d454003
+DIST rust-1.69.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 8cf01b352a5d007922b65d01959ff1255eaa4b5957f97a8c83641fc77cc24a8820016da3bb73e1a8097737df639dc614f5609e64b9eca8c97991be5d08470b79 SHA512 f0ca993cd6516128e28b69eec0d924c2f6012cf7de4d3a83c4c85df0c04a4457667ac9b79e922222f67f269d81d1fcd04b2e960e1668e6dcf0efc765cbfa27ec
+DIST rust-1.69.0-arm-unknown-linux-gnueabi.tar.xz 171128532 BLAKE2B 1f07df78da360395f87998e9403253d903c3a236d7fb9213fb96f27c80e2b9bb3214473b077d4bed71f3d2dcc8630ed12b2c19938f2127f4cfd167b4c21ca334 SHA512 c8faf0a3145b26a5abf74dbd5875cb7cd440b9a992db70d1996f454ca8343c4f18d8cbb8e6560b3224de0a324ef813aab63b7e99abcfc0e80ed3844f994f0733
+DIST rust-1.69.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 0addeaf1934fcdd92081204b28314b1ddac661e7ab147cdc023e88fa4560bf2e2ecda1fefd977afef759e32faca1abb022c6256634692ddd0e551b6a903fa2db SHA512 00e05ea2a89171ed66d2221177f8c140226583cf88fab6e4243403a845b899c8e86552bf49bee4083f0b4ec5091fea0f34281cae40aafa58bfc3c5b00e3e9907
+DIST rust-1.69.0-arm-unknown-linux-gnueabihf.tar.xz 171080940 BLAKE2B 3b38493b46b97d52c5b5fd71bec210f1cd6eae2a0d80dc87af17ea5cc47cae430caae3e59ecc25c39dc33f5f08c949025df3e96088f8e7bef70ea9ae4b154c24 SHA512 7292479f7e120f280a5b72013e848ec507baaec439a8418de66016632644aee5d4a8459b6c207de3b664b8fabc4457f94bafd6b9b5a87f2737cecb30f1fa5832
+DIST rust-1.69.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 96fb133bfea0c8d84df18b179731d967112ef7a8d741ef9f8cf6cdb6117ae101128b885b59b379c95d6d96687335e52b2a59e4c28ffb63a2db618d22847e7bfa SHA512 152d290b4915f11465557da8cd4850e4d744d8aa53df81b25d7da5eabad2d7738c9a3f3d1b0fa6ff7bacbd0fcb55dc4641c6b4edff52d2bfdb2f79eca59cdb68
+DIST rust-1.69.0-armv7-unknown-linux-gnueabihf.tar.xz 175695416 BLAKE2B 5c01d80e65b06ebd0625677e997590632afab0a7c5a96bbb91def50d107f307282ed92fd394de81de5ebe801fce583405199975566f801c75bf831d4b24a45d0 SHA512 d2d235adcc7e280dd14d2dbe01c718095f5c138246eca8e6df4e2ef5b74ec1add3300776c09d184047956a9163d24f9c5aae75d4ac611f57490684299cfa929a
+DIST rust-1.69.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B d939f3c29eb916c7e2c94776736d052ddead2e071e068ec94e180d4f5f922abbb165cf596574a3e3e2954d7cd79ecc20619f563ad9495cef0f9ee84fae2fbacc SHA512 13692854268ec690ac9307d118ef27d2e81693f1e33583e934e387ab2538a9b778e46d84f326aafe239272d7941489877a9cd43f31ccf37a294b0be466ea3498
+DIST rust-1.69.0-i686-unknown-linux-gnu.tar.xz 199132360 BLAKE2B 1e0b79d6883ef72335a41dad4a9811c27de1c9c926bbf3140c6201140f53d4d68c1ad5c8002b040b29c74d6454508cdf48cb583b0fa4317ab645d8945fba3f63 SHA512 345ad4da1443abc8fe160c40cbe42a02e6e1e93c8be7e09e8d025ade744d02ccb4a4d07379f27f8e70f694199359451b402cfdd37045c390e4f8013ff5b59228
+DIST rust-1.69.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 4371d5ff495bd9f9dad690a411ea1455fa4275b2324d6d8d0fc7a6c93baa44dc32448c122a4e8d6206ddf23e22e687614e94fac6ba8b4ca630328c02c8f7732c SHA512 7fc72cdc552e3c8474478352cd4ec450cab19660d5dd148680293f9ca6adf6ea370abcb707407c9975f9bd213cfd02fc2d32c1c11bf6a32c892e02d9ee6c246d
+DIST rust-1.69.0-mips-unknown-linux-gnu.tar.xz 151257112 BLAKE2B 098ec6973981845f7fa96a3a32051ceee0859abfdef3ce6d9486fb5c170ed194dca688013c8666c135db5f8d6ba468ec5e42db7d57265f0618909fa14c69adf1 SHA512 d5605d87cab05f499959f03c4bbb607c8e51d4c4e93f83bedd5ab7f8fd0fffd11cafc59f6b866bffd30f76ea37f5a69512491d46fbb613a82eadba63e17ce13f
+DIST rust-1.69.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f39075809e42bc83d2be8057095f4cb95bed16a63a9d10f898ba878852f2b4f25fb734a34510be506b0efafe39d450719d5f59a5f4c52bea6f6d5299993c0526 SHA512 ccf22fe8ee696b7402ec0afa9a5564d514ce423fc62220eb3429d366e5c526786d82919ce4740a9d0af61b1fccf457dc2bd4328d863820918614e8edd4c21c1c
+DIST rust-1.69.0-mips64-unknown-linux-gnuabi64.tar.xz 149208900 BLAKE2B e68ebbd8ed27384097d1a847a51e7f60c5ef353b21b1c595ac7398762699117f24d43bd8f968b4f8ce48da9646f818d4252e13dcb2c68dc8ad976318a65e033f SHA512 b26304ebaf78655cf5c7966473f9d65c2c969ce61109d3fcaa852ec09de11eedb144a55feaf19695387ff82aa604aeefc20ef59f315bde56bbaa66303432cb6b
+DIST rust-1.69.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 219cdecb36deabaf099c09e665fb44f44dd16a49097f4bc101c9d5201f21e6f0ba91ee4751b8d336929d7a270cbf4d58ea48827f80a3c3c74003addfe2b2974e SHA512 aa866c1caac3b35ae1d3b846db7a92dc2c826de4b3671bf7cd3c0fb21f6aba68adfeee843fb351284c3cf816dfae8faef165b12f1821b2d63efd37c149b2eeed
+DIST rust-1.69.0-mipsel-unknown-linux-gnu.tar.xz 154656916 BLAKE2B d3c20130eecee206cca2c017f30e842b155cb4774129790347c6ae11276ff12dc31e6636a7c82e8064129d68bac275141c652a25234b157658d053162f28b4b9 SHA512 dad06c90b20d9f343a87dccfd9379c7fa8a914eccd77bb4e6f3a6f322e165db25001c13f78dee85055b7aea29b01f72f7cc1602a39ea911183ffd768c7e601da
+DIST rust-1.69.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 4d5b46911d51b7fd1494318552b43bfe7448566fb0870229d90f0a237a863f3638a1b1b455c17016021f5b1d94acbe7ac048e71f7a1894cdd6b318431c64a6e2 SHA512 d089842013c4054c74929a4ad4d1cf6362b32e87a4bb5cf3613b260110d7fef69209605795d97484c8fd34287297ec70d6826d19693417cc9ac56b24079fc29b
+DIST rust-1.69.0-powerpc-unknown-linux-gnu.tar.xz 168723248 BLAKE2B b39871cac143d16565e777301ec17d41fc9887c7355c5c2b97c969c87910ece8531cb11ada056b6c94977ad3db81fb9304308065e07be570ecbcecd8529e64be SHA512 9211aa19c792ae12cfeb646a214761b3c2b012b33402a6b881b2d8bbf12a5da1f528b2b9adeeb42afcf18eb5161d430e9dd08ff96e3f048f5e6ae94a7abcdfbc
+DIST rust-1.69.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e697fb9abb9f497214eca3d54550c6e11a713d70f996b5f2ab9fab0833b0d2c20ee5da1407f8b0a862c39f35e9eb85a731529c828ce1530954c29a33bd0ea215 SHA512 b2f1adafdc9632dc553d4c88d1eced2f73eef5ae76a3b051e4e338cb99b0a1ef1280dd2a8783c55d40688c05f4ebd2e77fc785a4e3827ae5f1a0f3734cffec64
+DIST rust-1.69.0-powerpc64-unknown-linux-gnu.tar.xz 168097900 BLAKE2B 1e476381ec036a23fae6a469471a31998461df22f4eefa3faefe286a6ffdc40aa29fdcb07702cf162261820e00161b95d3a4c04bcd23d843e70221d233237106 SHA512 5e9787f2c92373d044a99a23419ae8adbdd83beeec32f5403e2011b650e8a5020e16a9aecab21079dc1e4c906dca6ffc5c581e47a75e841df86f478b5c2e7d0a
+DIST rust-1.69.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 89928b51bfbbbdfa22cff5baa78a8b33d54f98c523302e12632d4180aca17f1c37ad5f57907422cad3ea5a5eb54e667478078a8af36511ad6657aa0fd5bd5e34 SHA512 bf08e394b3797baf388c4f9753e0a57e51f110e65128817b1e48ac066a4db3c60b9ea988b6af5c6ee7651656ff98a1785cb349ea4557a14cd40ef5071770fde8
+DIST rust-1.69.0-powerpc64le-unknown-linux-gnu.tar.xz 177527584 BLAKE2B 1c9efdc5098384b9f2b8ba44e3704bb380fee70a6653ef5dace2773c7083de60ec9814f43253db5febe43746e0ed054cecc30763f8a92ca70a4b4ce0d83ada64 SHA512 132c95339994171cc3ee71b844cd29c1ca4c2b9cb2e55d8d2b6dab0b43efabb6674b19b0298ee18fab2f6b137c2b4baa3574e3d5985a46f622f489222647499e
+DIST rust-1.69.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 209bf72584da1c9bd224ffd070562b72f4240ba802dbb9b3079f330767df90490c4dc808a87d04a31834123b6583ebb62faaecc082edfe2130643f2e577cc274 SHA512 1345173b8b52afa3584e5351a1f2996c823e202ec60d020e43bd0bc8078ba99251586c63e12e9874fa8cae8153fa50c111fe1f27f5d7f27f3df9e11bd2d794f7
+DIST rust-1.69.0-riscv64gc-unknown-linux-gnu.tar.xz 162502700 BLAKE2B 148788555052d5578837e63d9e3a78bb18e9b6e3928b7ec86664c278147f2429342244cc66422807290a61d3f0ed2291aba297dd74562db0b60db0b9f801959b SHA512 af4a7f8ed69aa9e75c457f5c808e3f465dcfa38c9f224f4962a309a1f6352aecd75a1a434d43f15a16382f54d99e7d162a496ab7ab89dd41ab0481f07e4c0546
+DIST rust-1.69.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e02800b42cdee6d7e78fc5ace9f4b8d7f50b6c02aa1107ef1e025bbd1bf91a2dbc200b7f5198e8fffe3b1f81192acd3b8e8eb8af60c0603f03d449ec17c4d4d9 SHA512 79fb21ef8e1049cbdab2f148b8b5ad5f81f93ed338dd76a69ff457200c32acfaef1ddc76bb462e3317aea55aeefe1593073c637c26ced417767f86ffb311e6e1
+DIST rust-1.69.0-s390x-unknown-linux-gnu.tar.xz 192163756 BLAKE2B 9191b2276af1fd2872ae77f0a366b71a56efb4a7507d6a5c3fe301ed2a8165b417abf8a5c85f08b7e8a171318f9f27abb31a777e347f24e59272df95e1448959 SHA512 36fb7ea2b6bd61d0a05cf5dadbbfc4d623271baa3819ee3f6c91389e39da6c22c4a568eb78c4a3ab5e270bba163afd742d0d585f0d381c758709405c3292c5e9
+DIST rust-1.69.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5191016cf56b106230791dafa2baaaa9ee9c40009b304831eb81ba5f536588eca43840c66e927f80f677780c15ac19278f710b12a5753e063af6257cc2c1fb6b SHA512 10625fa96fcdc2f19abace688a7c5f6aa8078959d52e7f1a635bb5624d32eb71ba055fa14d89f8724813385d52f7e55f307a9b1b76236c999c2b36634acc14cc
+DIST rust-1.69.0-x86_64-unknown-linux-gnu.tar.xz 152594196 BLAKE2B f46e89bb76033bddaf8dd96d6abc5ad45965c4235bd97bef9d827d528bb385348c11a8916e9443d888dea6d6637a7460d2d0b61d3b1d642e5d908d0551ee64c6 SHA512 6031403e7009d758074e76a0aa9d4d90c236799439832e0b6fe1e481afb20a330952d92a3627efa28029958ee36f2b93e123a0f4e1e446bca2f1ede2e4bfc621
+DIST rust-1.69.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b12e73829cef5aed2f1fef7c51122d4f4db11622d53860013e3a396ea7a1bf945ce2142aed3d4720c89f0bda223d5fd8f1665da11be185faff949f45a4d65206 SHA512 79d5315ee87e2a02425671376d1a5ed0d947e85fd5bd5a09c6634ac4bc9baa31f1ae57380e3ed00f597f8594c67a319a86ed4f9bd34aafcca43aba388cd0ec39
+DIST rust-1.69.0-x86_64-unknown-linux-musl.tar.xz 1003928 BLAKE2B d22105d51f5785c3cda6256d77032c1b4d680f11afa7d180334db4c2b1915e410cca81abe760ad6d4ccfc2e6503e43e8387543ada3d427654903aebc9c511090 SHA512 1195938d4ef89b83f159d65bb4d69c35795785325a53eebe491fa25f459f9e3de61b0446fddb8e62790ca47bf716dffbc1ba5416a6fcf1da4ae06343c0b3d281
+DIST rust-1.69.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B cd06fb7b95c997cb6ba84a662733a629397a93ba226daf3cb8e0ec3b76ca7a4ec2b264f3b6ea2960ebd4863db259ffaf0cb5ec90a579a910c8c77ea392238b7a SHA512 5f7741db315cf88965a372243a1d0111e5061cc23365980cb80adebc7ed40e5bd12ce981c1e0e9ea802d941f75a8bd917a89d793f49a35a2633c6f807758802e
 DIST rustc-1.65.0-src.tar.xz 139674928 BLAKE2B a218263fb67e306b153f5a6dae95b5ec653acaa5eb4b833862d6f0fd4685a8cec097dadc1b8a934e1bf6055672c7a617f9a0ad4a7dbf2e78084297f10b7ada04 SHA512 3d0369ed3028209c4ecb9b9e7b5f5e3a20be8cc05199675df4f091d62a96c0734bc1dbd7630928fe162792392ec6d0daf9ceed10771531ce022200c7b631e3be
 DIST rustc-1.65.0-src.tar.xz.asc 801 BLAKE2B 43ff92011cd6f7f34ce0495fa341379e5907d032ea90f91e533e5edaec6ad518aad50a9d8b2694074d6909ee96aa779403b16e95792e962e79c1b967542ae26f SHA512 75b9be53363022c81333117876cbcc573bbd4733edf767cbb164218644efb1a9c4bfc2aa73aaa1e39f248a84f1adacb1930a94a6e63f60093ff760fb9ae02efc
 DIST rustc-1.66.1-src.tar.xz 141692940 BLAKE2B 3fae45345998386fda1b11ec896fac4613b8e3f0092bc0df29c9685f4a4012c0bd1b600911c2d19bcfa8f5a84b8a3c39d4c9e062a62cd61925b59129e1cd72b9 SHA512 1944c024c603140d0a9236043a3bd1d0d211dd8d368d6d82a3a620f1ff43b29624755b0943f2b38b40a188c7eee77a840238ea757eaf435e2a3fa6a0e6b82832
@@ -170,3 +202,5 @@ DIST rustc-1.68.2-src.tar.xz 147835648 BLAKE2B 4b6deab818d915afe67a96f4d32a758c1
 DIST rustc-1.68.2-src.tar.xz.asc 801 BLAKE2B 6ac2444950e5f919d09823ea3eef50364ad7b295126b090178872970f03c43ca9747779e0873138ca3a0b753eff79d2ef36d8b70c6a6050039ba9f9018571016 SHA512 86ccbb8ea89f820ba92ad9cbfb8f4bda3393e2c24d699355fd559a2339ff39bcce2a027ebd1b043f11de24b00cdac8c42d252915b36e711eb1d80f49a8007d47
 DIST rustc-1.69.0-src.tar.xz 127242864 BLAKE2B 03f7f3784cb137bede0593dfc008347bb0bb25c982c058175ac2b0442c2593a5a7e2c4539c848ad4375d994c1b7900019120790f0fe12385b413eecc1647d70a SHA512 724398fc208ec18adbd8ba81a445e23d1001b746990f36b869126be8a45f1cdfa75f5b9cbdd0abbab506f91a56d3736ab247677699ebd69525245558cfc01a60
 DIST rustc-1.69.0-src.tar.xz.asc 801 BLAKE2B 2f9b95440c35403fe663f91531cc73681c1c5d5dcbaa10d53a36d542656c097eb4a4320fc12d8df228d5dfb57dd12eb9441c3bd0ba54b7d180e23ded3d2527bb SHA512 8f4c7e6e246a676f53d77b331fe5153eedbd3d8e9f6d922fecc78c8c6fdbbef4610308c93e5af6d8e0d744e6b3ce4bf01b39e29813475a50a38240f679c25156
+DIST rustc-1.70.0-src.tar.xz 140736896 BLAKE2B f07a800e35dca074df0c76fa91f512ae3ad2aacfd3cf9ba4a6c0fbb057e06b562bb03824c9417f4375965960e2e3cee5c2ba873e0de7aa0f68bd82b9e4dd2fb0 SHA512 21b35185fdcc35a059ee5ef6dca2b68f5f1d199e97f425a571cfc318a852c36a57bccf68e7673b4cb7cd83128f30d0b3eb93009a978f3ba3909b7eee50d40631
+DIST rustc-1.70.0-src.tar.xz.asc 801 BLAKE2B 172744ff679c4554a6992b08a6bdcd65bd133f3db2d7f2eb1fa3659683aeb65228f9c57d101d9d050256217bb4fbbc0ccaf892bfcd8ef69ac742e12e75548c68 SHA512 0b26b176bf957ea5c2465a8da05992907165f11dccfb8f3a8a2c851b20fc9083e8bca80fefee2534d3326e721f41d19ef75b7f49692a342ab7ef5cdb2e8c52a4

diff --git a/dev-lang/rust/files/1.70.0-ignore-broken-and-non-applicable-tests.patch b/dev-lang/rust/files/1.70.0-ignore-broken-and-non-applicable-tests.patch
new file mode 100644
index 0000000..2e12c78
--- /dev/null
+++ b/dev-lang/rust/files/1.70.0-ignore-broken-and-non-applicable-tests.patch
@@ -0,0 +1,30 @@
+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
+---
+ test/ui/env-funky-keys.rs                                   | 1 +
+ 6 files changed, 10 insertions(+)
+
+diff --git a/tests/ui/env-funky-keys.rs b/tests/ui/env-funky-keys.rs
+index c5c824ac58d..f3fe047a79c 100644
+--- a/tests/ui/env-funky-keys.rs
++++ b/tests/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.70.0-libressl-openssl-sys.patch b/dev-lang/rust/files/1.70.0-libressl-openssl-sys.patch
new file mode 100644
index 0000000..12d3029
--- /dev/null
+++ b/dev-lang/rust/files/1.70.0-libressl-openssl-sys.patch
@@ -0,0 +1,10 @@
+--- a/build/main.rs.orig
++++ b/build/main.rs
+@@ -284,6 +284,7 @@
+             (3, 6, _) => ('3', '6', 'x'),
+             (3, 7, 0) => ('3', '7', '0'),
+             (3, 7, 1) => ('3', '7', '1'),
++            (3, _, _) => ('3', 'x', 'x'),
+             _ => version_error(),
+         };
+ 

diff --git a/dev-lang/rust/files/rehash-crate.sh b/dev-lang/rust/files/rehash-crate.sh
new file mode 100644
index 0000000..8f738b7
--- /dev/null
+++ b/dev-lang/rust/files/rehash-crate.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+# $1 = crate patch file
+
+set -euf
+
+cargo='.cargo-checksum.json'
+
+grep -- '+++' "${1:?}" | while read -r _ f; do
+	file="${f#*/}"
+	orig_sum="$(grep -Po "(?<=\"${file}\":\")[0-9a-fA-F]+(?=\")" \
+		"${cargo}")"
+	if [ -n "${orig_sum}" ]; then
+		sum="$(sha256sum "${file}")"
+		sed -i "s|${orig_sum}|${sum%% *}|" "${cargo}"
+	fi
+done
+
+exit 0

diff --git a/dev-lang/rust/metadata.xml b/dev-lang/rust/metadata.xml
index e28f627..d67d277 100644
--- a/dev-lang/rust/metadata.xml
+++ b/dev-lang/rust/metadata.xml
@@ -12,6 +12,7 @@
 	<use>
 		<flag name="clippy">Install clippy, Rust code linter</flag>
 		<flag name="dist">Install dist tarballs (used for bootstrapping)</flag>
+		<flag name="lto">Optimize the build using Link Time Optimization (LTO)</flag>
 		<flag name="miri">Install miri, an interpreter for Rust's mid-level intermediate representation (requires USE=nightly, sometimes is broken)</flag>
 		<flag name="nightly">Enable nightly (UNSTABLE) features (NOTE: it does not install nightly version, just enables features marked as nightly at time of release)</flag>
 		<flag name="parallel-compiler">Build a multi-threaded rustc (experimental, not tested by upstream)</flag>

diff --git a/dev-lang/rust/rust-1.70.0.ebuild b/dev-lang/rust/rust-1.70.0.ebuild
new file mode 100644
index 0000000..4224051
--- /dev/null
+++ b/dev-lang/rust/rust-1.70.0.ebuild
@@ -0,0 +1,751 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9..12} )
+
+inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
+	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.xz"
+	#KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+SRC_URI="
+	https://static.rust-lang.org/dist/${SRC}
+	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
+	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
+"
+
+# keep in sync with llvm ebuild of the same version as bundled one.
+ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai LoongArch Mips MSP430
+	NVPTX PowerPC RISCV Sparc SystemZ VE WebAssembly X86 XCore )
+ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
+LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
+
+LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4 UoI-NCSA"
+
+IUSE="clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+
+# Please keep the LLVM dependency block separate. Since LLVM is slotted,
+# we need to *really* make sure we're not pulling more than one slot
+# simultaneously.
+
+# How to use it:
+# List all the working slots in LLVM_VALID_SLOTS, newest first.
+LLVM_VALID_SLOTS=( 16 )
+LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
+
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+# (-) usedep needed because we may build with older llvm without that target
+LLVM_DEPEND="|| ( "
+for _s in ${LLVM_VALID_SLOTS[@]}; do
+	LLVM_DEPEND+=" ( "
+	for _x in ${ALL_LLVM_TARGETS[@]}; do
+		LLVM_DEPEND+="
+			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
+			wasm? ( sys-devel/lld:${_s} )"
+	done
+	LLVM_DEPEND+=" )"
+done
+unset _s _x
+LLVM_DEPEND+=" )
+	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
+"
+
+# to bootstrap we need at least exactly previous version, or same.
+# most of the time previous versions fail to bootstrap with newer
+# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
+# but it fails to bootstrap with 1.48.x
+# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
+RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
+RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
+BOOTSTRAP_DEPEND="||
+	(
+		=dev-lang/rust-"${RUST_DEP_PREV}"
+		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
+		=dev-lang/rust-"${RUST_DEP_CURR}"
+		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
+	)
+"
+
+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-3.13.4
+		dev-util/ninja
+	)
+	test? ( sys-devel/gdb )
+	verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+	>=app-arch/xz-utils-5.2
+	net-misc/curl:=[http2,ssl]
+	sys-libs/zlib:=
+	dev-libs/openssl:0=
+	system-llvm? (
+		${LLVM_DEPEND}
+		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
+	)
+	!system-llvm? (
+		!llvm-libunwind? (
+			elibc_musl? ( sys-libs/libunwind:= )
+		)
+	)
+"
+
+RDEPEND="${DEPEND}
+	app-eselect/eselect-rust
+	sys-apps/lsb-release
+"
+
+REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
+	miri? ( nightly )
+	parallel-compiler? ( nightly )
+	test? ( ${ALL_LLVM_TARGETS[*]} )
+	wasm? ( llvm_targets_WebAssembly )
+	x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+	usr/lib/${PN}/${PV}/bin/.*
+	usr/lib/${PN}/${PV}/libexec/.*
+	usr/lib/${PN}/${PV}/lib/lib.*.so
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+	usr/lib/${PN}/${PV}/lib/lib.*.so.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+	"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
+	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
+	"${FILESDIR}"/1.67.0-doc-wasm.patch
+)
+
+S="${WORKDIR}/${MY_P}-src"
+
+toml_usex() {
+	usex "${1}" true false
+}
+
+bootstrap_rust_version_check() {
+	# never call from pkg_pretend. eselect-rust may be not installed yet.
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
+	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
+	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
+		eerror "Rust >=${rustc_wanted} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too old"
+	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
+		eerror "Rust <${rustc_toonew} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too new"
+	else
+		einfo "Using rust ${rustc_version} to build"
+	fi
+}
+
+pre_build_checks() {
+	local M=8192
+	# multiply requirements by 1.3 if we are doing x86-multilib
+	if use amd64; then
+		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
+	fi
+	M=$(( $(usex clippy 128 0) + ${M} ))
+	M=$(( $(usex miri 128 0) + ${M} ))
+	M=$(( $(usex rustfmt 256 0) + ${M} ))
+	# add 2G if we compile llvm and 256M per llvm_target
+	if ! use system-llvm; then
+		M=$(( 2048 + ${M} ))
+		local ltarget
+		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+		done
+	fi
+	M=$(( $(usex wasm 256 0) + ${M} ))
+	M=$(( $(usex debug 2 1) * ${M} ))
+	eshopts_push -s extglob
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		M=$(( 15 * ${M} / 10 ))
+	fi
+	eshopts_pop
+	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
+	M=$(( $(usex doc 256 0) + ${M} ))
+	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+# Is LLVM being linked against libc++?
+is_libcxx_linked() {
+	local code='#include <ciso646>
+#if defined(_LIBCPP_VERSION)
+	HAVE_LIBCXX
+#endif
+'
+	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
+	[[ ${out} == *HAVE_LIBCXX* ]]
+}
+
+pkg_pretend() {
+	pre_build_checks
+}
+
+pkg_setup() {
+	pre_build_checks
+	python-any-r1_pkg_setup
+
+	export LIBGIT2_NO_PKG_CONFIG=1 #749381
+
+	use system-bootstrap && bootstrap_rust_version_check
+
+	if use system-llvm; then
+		llvm_pkg_setup
+
+		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+		export LLVM_LINK_SHARED=1
+		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+	fi
+}
+
+esetup_unwind_hack() {
+	# https://bugs.gentoo.org/870280
+	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
+	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
+	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
+	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
+	local fakelib="${T}/fakelib"
+	mkdir -p "${fakelib}" || die
+	# we need both symlinks, one for cargo runtime, other for linker.
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
+	export LD_LIBRARY_PATH="${fakelib}"
+	export RUSTFLAGS+=" -L${fakelib}"
+	# this is a literally magic variable that gets through cargo cache, without it some
+	# crates ignore RUSTFLAGS.
+	# this variable can not contain leading space.
+	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
+}
+
+src_prepare() {
+	local libressl_patch="${FILESDIR}/1.70.0-libressl-openssl-sys.patch"
+	pushd vendor/openssl-sys > /dev/null || die
+	eapply "${libressl_patch}"
+	"${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${libressl_patch}" || die
+	popd > /dev/null || die
+
+	if ! use system-bootstrap; then
+		has_version sys-devel/gcc || esetup_unwind_hack
+		local rust_stage0_root="${WORKDIR}"/rust-stage0
+		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
+
+		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
+			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
+	fi
+
+	default
+}
+
+src_configure() {
+	filter-flags '-flto*' # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
+
+	local rust_target="" rust_targets="" arch_cflags
+
+	# Collect rust target names to compile standard libs for all ABIs.
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
+	done
+	if use wasm; then
+		rust_targets+=",\"wasm32-unknown-unknown\""
+		if use system-llvm; then
+			# un-hardcode rust-lld linker for this target
+			# https://bugs.gentoo.org/715348
+			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
+		fi
+	fi
+	rust_targets="${rust_targets#,}"
+
+	# cargo and rustdoc are mandatory and should always be included
+	local tools='"cargo","rustdoc"'
+	use clippy && tools+=',"clippy"'
+	use miri && tools+=',"miri"'
+	use profiler && tools+=',"rust-demangler"'
+	use rustfmt && tools+=',"rustfmt"'
+	use rust-analyzer && tools+=',"rust-analyzer"'
+	use rust-src && tools+=',"src"'
+
+	local rust_stage0_root
+	if use system-bootstrap; then
+		local printsysroot
+		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
+		rust_stage0_root="${printsysroot}"
+	else
+		rust_stage0_root="${WORKDIR}"/rust-stage0
+	fi
+	# in case of prefix it will be already prefixed, as --print sysroot returns full path
+	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+	rust_target="$(rust_abi)"
+
+	local cm_btype="$(usex debug DEBUG RELEASE)"
+	cat <<- _EOF_ > "${S}"/config.toml
+		changelog-seen = 2
+		[llvm]
+		download-ci-llvm = false
+		optimize = $(toml_usex !debug)
+		release-debuginfo = $(toml_usex debug)
+		assertions = $(toml_usex debug)
+		ninja = true
+		targets = "${LLVM_TARGETS// /;}"
+		experimental-targets = ""
+		link-shared = $(toml_usex system-llvm)
+		$(if is_libcxx_linked; then
+			# https://bugs.gentoo.org/732632
+			echo "use-libcxx = true"
+			echo "static-libstdcpp = false"
+		fi)
+		$(case "${rust_target}" in
+			i586-*-linux-*)
+				# https://github.com/rust-lang/rust/issues/93059
+				echo 'cflags = "-fcf-protection=none"'
+				echo 'cxxflags = "-fcf-protection=none"'
+				echo 'ldflags = "-fcf-protection=none"'
+				;;
+			*)
+				;;
+		esac)
+		enable-warnings = false
+		[llvm.build-config]
+		CMAKE_VERBOSE_MAKEFILE = "ON"
+		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
+		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
+		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
+		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
+		[build]
+		build-stage = 2
+		test-stage = 2
+		build = "${rust_target}"
+		host = ["${rust_target}"]
+		target = [${rust_targets}]
+		cargo = "${rust_stage0_root}/bin/cargo"
+		rustc = "${rust_stage0_root}/bin/rustc"
+		rustfmt = "${rust_stage0_root}/bin/rustfmt"
+		docs = $(toml_usex doc)
+		compiler-docs = false
+		submodules = false
+		python = "${EPYTHON}"
+		locked-deps = true
+		vendor = true
+		extended = true
+		tools = [${tools}]
+		verbose = 2
+		sanitizers = false
+		profiler = $(toml_usex profiler)
+		cargo-native-static = false
+		[install]
+		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
+		sysconfdir = "etc"
+		docdir = "share/doc/rust"
+		bindir = "bin"
+		libdir = "lib"
+		mandir = "share/man"
+		[rust]
+		# https://github.com/rust-lang/rust/issues/54872
+		codegen-units-std = 1
+		optimize = true
+		debug = $(toml_usex debug)
+		debug-assertions = $(toml_usex debug)
+		debug-assertions-std = $(toml_usex debug)
+		debuginfo-level = $(usex debug 2 0)
+		debuginfo-level-rustc = $(usex debug 2 0)
+		debuginfo-level-std = $(usex debug 2 0)
+		debuginfo-level-tools = $(usex debug 2 0)
+		debuginfo-level-tests = 0
+		backtrace = true
+		incremental = false
+		default-linker = "$(tc-getCC)"
+		parallel-compiler = $(toml_usex parallel-compiler)
+		channel = "$(usex nightly nightly stable)"
+		description = "gentoo"
+		rpath = false
+		verbose-tests = true
+		optimize-tests = $(toml_usex !debug)
+		codegen-tests = true
+		dist-src = false
+		remap-debuginfo = true
+		lld = $(usex system-llvm false $(toml_usex wasm))
+		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+		# https://github.com/rust-lang/rust/issues/74976
+		# https://github.com/rust-lang/rust/issues/76526
+		deny-warnings = $(usex wasm $(usex doc false true) true)
+		backtrace-on-ice = true
+		jemalloc = false
+		lto = "$(usex lto fat off)"
+		[dist]
+		src-tarball = false
+		compression-formats = ["xz"]
+		compression-profile = "balanced"
+	_EOF_
+
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${rust_target}]
+			ar = "$(tc-getAR)"
+			cc = "$(tc-getCC)"
+			cxx = "$(tc-getCXX)"
+			linker = "$(tc-getCC)"
+			ranlib = "$(tc-getRANLIB)"
+			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
+		# but we patch it and set to false here as well
+		if use elibc_musl; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				crt-static = false
+			_EOF_
+		fi
+	done
+	if use wasm; then
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.wasm32-unknown-unknown]
+			linker = "$(usex system-llvm lld rust-lld)"
+			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
+			profiler = false
+		_EOF_
+	fi
+
+	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
+	# experimental cross support
+	# discussion: https://bugs.gentoo.org/679878
+	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
+	# it would be much better if we could split out stdlib
+	# complilation to separate ebuild and abuse CATEGORY to
+	# just install to /usr/lib/rustlib/<target>
+
+	# extra targets defined as a bash array
+	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
+	# best place would be /etc/portage/env/dev-lang/rust
+	# Example:
+	# RUST_CROSS_TARGETS=(
+	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
+	# )
+	# no extra hand holding is done, no target transformations, all
+	# values are passed as-is with just basic checks, so it's up to user to supply correct values
+	# valid rust targets can be obtained with
+	# 	rustc --print target-list
+	# matching cross toolchain has to be installed
+	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
+	# only gcc toolchains installed with crossdev are checked for now.
+
+	# BUG: we can't pass host flags to cross compiler, so just filter for now
+	# BUG: this should be more fine-grained.
+	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
+
+	local cross_target_spec
+	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
+		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
+		local cross_llvm_target="${cross_target_spec%%:*}"
+		# extracts toolchain triples, <rust-target>:<CTARGET>
+		local cross_triples="${cross_target_spec#*:}"
+		# extracts first element after before : separator
+		local cross_rust_target="${cross_triples%%:*}"
+		# extracts last element after : separator
+		local cross_toolchain="${cross_triples##*:}"
+		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
+		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${cross_rust_target}]
+			ar = "${cross_toolchain}-ar"
+			cc = "${cross_toolchain}-gcc"
+			cxx = "${cross_toolchain}-g++"
+			linker = "${cross_toolchain}-gcc"
+			ranlib = "${cross_toolchain}-ranlib"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		if [[ "${cross_toolchain}" == *-musl* ]]; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+			_EOF_
+		fi
+
+		# append cross target to "normal" target list
+		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
+		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+		rust_targets="${rust_targets},\"${cross_rust_target}\""
+		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+		ewarn
+		ewarn "Enabled ${cross_rust_target} rust target"
+		ewarn "Using ${cross_toolchain} cross toolchain"
+		ewarn
+		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+			ewarn "'sys-devel/binutils[multitarget]' is not installed"
+			ewarn "'strip' will be unable to strip cross libraries"
+			ewarn "cross targets will be installed with full debug information"
+			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+			ewarn
+			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+			ewarn
+		fi
+	done
+	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+	einfo "Rust configured with the following flags:"
+	echo
+	echo RUSTFLAGS="\"${RUSTFLAGS}\""
+	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
+	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
+	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
+	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+	env | grep "CFLAGS_.*"
+	echo
+	einfo "config.toml contents:"
+	cat "${S}"/config.toml || die
+	echo
+}
+
+src_compile() {
+	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -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 ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
+				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
+		then
+				failed+=( "${t}" )
+				eerror "rust_src_test: ${t} failed"
+		fi
+	done
+
+	if [[ ${#failed[@]} -ne 0 ]]; then
+		eerror "rust_src_test: failure summary: ${failed[@]}"
+		die "aborting due to test failures"
+	fi
+}
+
+src_install() {
+	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+
+	# bug #689562, #689160
+	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
+	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+
+	local symlinks=(
+		cargo
+		rustc
+		rustdoc
+		rust-gdb
+		rust-gdbgui
+		rust-lldb
+	)
+
+	use clippy && symlinks+=( clippy-driver cargo-clippy )
+	use miri && symlinks+=( miri cargo-miri )
+	use profiler && symlinks+=( rust-demangler )
+	use rustfmt && symlinks+=( rustfmt cargo-fmt )
+	use rust-analyzer && symlinks+=( rust-analyzer )
+
+	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
+	local i
+	for i in "${symlinks[@]}"; do
+		# we need realpath on /usr/bin/* symlink return version-appended binary path.
+		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
+		# need to fix eselect-rust to remove this hack.
+		local ver_i="${i}-${PV}"
+		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
+			einfo "Installing ${i} symlink"
+			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
+		else
+			ewarn "${i} symlink requested, but source file not found"
+			ewarn "please report this"
+		fi
+		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
+	done
+
+	# symlinks to switch components to active rust in eselect
+	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
+	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
+	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
+	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
+	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+
+	newenvd - "50${P}" <<-_EOF_
+		LDPATH="${EPREFIX}/usr/lib/rust/lib"
+		MANPATH="${EPREFIX}/usr/lib/rust/man"
+	_EOF_
+
+	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+
+	# note: eselect-rust adds EROOT to all paths below
+	cat <<-_EOF_ > "${T}/provider-${P}"
+		/usr/bin/cargo
+		/usr/bin/rustdoc
+		/usr/bin/rust-gdb
+		/usr/bin/rust-gdbgui
+		/usr/bin/rust-lldb
+		/usr/lib/rustlib
+		/usr/lib/rust/lib
+		/usr/lib/rust/libexec
+		/usr/lib/rust/man
+		/usr/share/doc/rust
+	_EOF_
+
+	if use clippy; then
+		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+	fi
+	if use miri; then
+		echo /usr/bin/miri >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+	fi
+	if use profiler; then
+		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
+	fi
+	if use rustfmt; then
+		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
+	fi
+	if use rust-analyzer; then
+		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
+	fi
+
+	insinto /etc/env.d/rust
+	doins "${T}/provider-${P}"
+
+	if use dist; then
+		insinto "/usr/lib/${PN}/${PV}/dist"
+		doins -r "${S}/build/dist/."
+	fi
+}
+
+pkg_postinst() {
+	eselect rust update
+
+	if has_version 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
+}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2023-07-24 19:34 orbea
  0 siblings, 0 replies; 27+ messages in thread
From: orbea @ 2023-07-24 19:34 UTC (permalink / raw
  To: gentoo-commits

commit:     b0040ec9a6bb90d0390b7cf1e663f8f211cc147a
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Mon Jul 24 19:27:29 2023 +0000
Commit:     orbea <orbea <AT> riseup <DOT> net>
CommitDate: Mon Jul 24 19:27:29 2023 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=b0040ec9

dev-lang/rust: sync ::gentoo

Signed-off-by: orbea <orbea <AT> riseup.net>

 dev-lang/rust/files/1.71.0-lint-docs-libpath.patch | 39 ++++++++++++++++++++++
 dev-lang/rust/files/rehash-crate.sh                |  2 +-
 dev-lang/rust/rust-1.71.0.ebuild                   |  1 +
 3 files changed, 41 insertions(+), 1 deletion(-)

diff --git a/dev-lang/rust/files/1.71.0-lint-docs-libpath.patch b/dev-lang/rust/files/1.71.0-lint-docs-libpath.patch
new file mode 100644
index 0000000..27c6738
--- /dev/null
+++ b/dev-lang/rust/files/1.71.0-lint-docs-libpath.patch
@@ -0,0 +1,39 @@
+https://bugs.gentoo.org/910595
+https://github.com/rust-lang/rust/issues/113678
+
+https://github.com/rust-lang/rust/commit/67b5990472e3cac643d8cf90f45fe42201ddec3c
+From: jyn <github@jyn.dev>
+Date: Mon, 10 Jul 2023 15:59:30 -0500
+Subject: [PATCH] Revert "Fix `x test lint-docs` when download-rustc is
+ enabled"
+
+This was not the correct fix. The problem was two-fold:
+- `download-rustc` didn't respect `llvm.assertions`
+- `rust-dev` was missing a bump to `download-ci-llvm-stamp`
+
+The first is fixed in this PR and the latter was fixed a while ago. Revert this change to avoid breaking `rpath = false`.
+--- a/src/tools/lint-docs/src/groups.rs
++++ b/src/tools/lint-docs/src/groups.rs
+@@ -39,7 +39,6 @@ impl<'a> LintExtractor<'a> {
+     fn collect_groups(&self) -> Result<LintGroups, Box<dyn Error>> {
+         let mut result = BTreeMap::new();
+         let mut cmd = Command::new(self.rustc_path);
+-        cmd.env_remove("LD_LIBRARY_PATH");
+         cmd.arg("-Whelp");
+         let output = cmd.output().map_err(|e| format!("failed to run command {:?}\n{}", cmd, e))?;
+         if !output.status.success() {
+--- a/src/tools/lint-docs/src/lib.rs
++++ b/src/tools/lint-docs/src/lib.rs
+@@ -403,12 +403,6 @@ impl<'a> LintExtractor<'a> {
+         fs::write(&tempfile, source)
+             .map_err(|e| format!("failed to write {}: {}", tempfile.display(), e))?;
+         let mut cmd = Command::new(self.rustc_path);
+-        // NOTE: bootstrap sets `LD_LIBRARY_PATH` for building lint-docs itself.
+-        // Unfortunately, lint-docs is a bootstrap tool while rustc is built from source,
+-        // and sometimes the paths conflict. In particular, when using `download-rustc`,
+-        // the LLVM versions can differ between `ci-llvm` and `ci-rustc-sysroot`.
+-        // Unset LD_LIBRARY_PATH here so it doesn't interfere with running the compiler.
+-        cmd.env_remove("LD_LIBRARY_PATH");
+         if options.contains(&"edition2015") {
+             cmd.arg("--edition=2015");
+         } else {

diff --git a/dev-lang/rust/files/rehash-crate.sh b/dev-lang/rust/files/rehash-crate.sh
index 1ffd775..c43f542 100644
--- a/dev-lang/rust/files/rehash-crate.sh
+++ b/dev-lang/rust/files/rehash-crate.sh
@@ -5,7 +5,7 @@ set -euf
 
 cargo='.cargo-checksum.json'
 
-grep -- '+++' "${1:?}" | while read -r _ f; do
+grep -- '^[+][+][+] ' "${1:?}" | while read -r _ f; do
 	file="${f#*/}"
 	orig_sum="$(grep -Eo "\"${file}\":\"[0-9a-fA-F]+\"" "${cargo}" |
 		cut -d':' -f2 | tr -d '"')"

diff --git a/dev-lang/rust/rust-1.71.0.ebuild b/dev-lang/rust/rust-1.71.0.ebuild
index 180a20f..be3e2a9 100644
--- a/dev-lang/rust/rust-1.71.0.ebuild
+++ b/dev-lang/rust/rust-1.71.0.ebuild
@@ -163,6 +163,7 @@ VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
 
 PATCHES=(
 	"${FILESDIR}"/1.71.0-fix-bashcomp-installation.patch
+	"${FILESDIR}"/1.71.0-lint-docs-libpath.patch
 	"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
 	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
 	"${FILESDIR}"/1.67.0-doc-wasm.patch


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2023-10-09 14:00 orbea
  0 siblings, 0 replies; 27+ messages in thread
From: orbea @ 2023-10-09 14:00 UTC (permalink / raw
  To: gentoo-commits

commit:     acfc7bfa9a1b2a3e0620bfaea017bfa86c426ed0
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Mon Oct  2 15:29:20 2023 +0000
Commit:     orbea <orbea <AT> riseup <DOT> net>
CommitDate: Mon Oct  2 15:29:20 2023 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=acfc7bfa

dev-lang/rust: add 1.72.0-r1, drop 1.72.0

Signed-off-by: orbea <orbea <AT> riseup.net>

 dev-lang/rust/Manifest                             |  64 ++++-----
 .../files/1.72.0-bump-libc-deps-to-0.2.146.patch   | 156 +++++++++++++++++++++
 .../{rust-1.72.0.ebuild => rust-1.72.0-r1.ebuild}  |  15 +-
 3 files changed, 198 insertions(+), 37 deletions(-)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index a700886..564615a 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -236,42 +236,34 @@ DIST rust-1.70.0-x86_64-unknown-linux-gnu.tar.xz 163456784 BLAKE2B 49a8397a7129a
 DIST rust-1.70.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e5fae8b3c87f54b39d922fe0c7694e0ba115ae34a668cc873390fc9e4638baaff5b6d1b4c67228c6bfc57b4da9bf77d6a452ca12bf6653d5610895b8ba19d64d SHA512 352749df741287107b966fd603113c51e82a426a7151e224e3a8d1cc7bd4658ef86147f6fce62caccd7b5779d9961be72cbb618db79a2850e8a8c4b0bc229ad3
 DIST rust-1.70.0-x86_64-unknown-linux-musl.tar.xz 233692884 BLAKE2B 295e815bbee6dc135ad17dd78801999afa7880a7a8f5ad4932a7580f1b03d50b850bcc3eb68e9d679e0a2d68392d446423ea752e47bb22d64823bf3222e0b377 SHA512 5e42224e109d525a321c107005660059ddcb0414392abc660b80fb09a55c936c79215989646be0aff6b0427b2f5d82a2a19ec3bd3235883a2037575808aeb69b
 DIST rust-1.70.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 7c5be81109607f191f339cfef87c736e2d35d4a045511036ee6e9bd68f22fbaae825ad5c463b0a5bf29606a8b9cf488172d1338aa4d034767b0f59243613c250 SHA512 241863164ee1a0d702080c9967e2ec5bb7af9222236316c8857b89b517fcbdc362b26ff3e362c4be7fd2989d3fd2aad0a0476feacecd2604855dfa53f5f1af27
-DIST rust-1.71.1-aarch64-unknown-linux-gnu.tar.xz 209839296 BLAKE2B da65e966a6bd8c6a8a13e5ab747da2a8d9b55f90fc20c1bd041ccc1a2f4e2d11d50d2ed9cc7f3a470e7f886ec8b891ef98ea1295491414d5afeae7f83fa3a555 SHA512 a2ea1383a6ea965e4b0c3a7c648bb357fb531a6984418756abcff3c526ccd9221a28aeedd11b65180fd166575e07a00151460dbc15e3b132a0bcac643911d242
-DIST rust-1.71.1-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 52d1fbdba32db7ac2578615fd10a3db1da84441274bb190624e517aec67279c7330f7c6b7fa0835d8e1cd8f578d34952813228a6a221e41c4193e9a079cc6fb6 SHA512 63cbbdd9a73f0223444565b60f59765a734633ef8e93843639969b96fb67550b85fe58079d486a927174f95619f0d6fdfe3f3b84d871f776bc48986be7965238
-DIST rust-1.71.1-aarch64-unknown-linux-musl.tar.xz 193170880 BLAKE2B 26384119108f4503d35f79fc5401c46e1eee326eca4dc6cc282949d2f195928fda5d3bf56c0509b04fdaa3e7c3c47f4ba44b2b82a60b02f7bc520360b0433efe SHA512 3e79692cd4dba512516eb48970dc9711448c33e1d7a5ebe7c5fadaed7f053ae9c1a8e6efcd1713f87dd84107a37b0fb21b1246e0d5c3e0dab677e5c7ed210825
-DIST rust-1.71.1-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 223d21586b07645d5860a3a023f42a191fc2490ad9e5736c3b2335565227780aa1f87174060cd6f87c4c873b965bb32b1556fb60fe70a7dc0f753409adabb024 SHA512 197197752e5ce110a1a96ecab8d1ae3aa82769a199c51b42a14b1f0749045a280f00aea0dd0653211bb941b80fbf43960d1e11766cf2dc35be3a34445e336423
-DIST rust-1.71.1-arm-unknown-linux-gnueabi.tar.xz 173870064 BLAKE2B 3c2e440e22199e081f6121513cf2a86b22ba0da08569d0b95edd1a69d890e191bda150429f4329c9932d45c44d49e8dfe1902513bb379b039dabfeb8bca36a44 SHA512 c59b1ba5d8bc29a2d1bb57f19e584af28ac92d8bbf889b80d443684e09a6249453bea429226078c9ffcc4d04a7a03f3605d82e3d8b412ca83720cabf5595a8e5
-DIST rust-1.71.1-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 38a5fe9e5e67298909d6a36e625b990128649975d47e544847a2d6067ff88fa63cc0c3e1c8e2c8697f0a0f39584b4e60cb8f29390cc6abad721c681a4cf183e2 SHA512 a7230aa7f507e5e4d71d2701fd5c1abe29e3c53109d67a5133fc32ea32018c6ea6dfe512a0e58acfa8d2c39dbaeee2cafe420aef4979e95ce9d62b7520b9b01c
-DIST rust-1.71.1-arm-unknown-linux-gnueabihf.tar.xz 174277632 BLAKE2B c317f946f4fa7b4e5c4e39bf4035108ff1a6085420f932eaa532cb89f15babf4b80a5c231f9980300d4ea18b6dd369bcda33bdceeb7065b03fdde41a01165e76 SHA512 ff4b6ac0e6691820f525a84505a3556a729cb189700209c084e9fe981bd076ad7ec30fb748666b7f51ee901ac039d596670bf782c60018590980ff1e61cd396b
-DIST rust-1.71.1-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 2fa6e24ac4cd9ec4772655c5e8b135a0118c38ebb41462940669df0c65c0091e60306a5a09cb020dcdaf06aca7b2c8cdff904dd2a5f4ca87acfbc5775adf2b6c SHA512 c9cf9c1f8e19fe0576dd805f21ed8afd1d3536fa8ba00fcd39d6e6638198fca51114a8d99cd62164d8a0aee6bdf37831e678f08241fb8ba63ccdd6e8c7225717
-DIST rust-1.71.1-armv7-unknown-linux-gnueabihf.tar.xz 178239136 BLAKE2B ae0ca46260aa4bb60760812f50e606ecc18fc14b3dfa56135cb6a83249c0cd5e0544d29ef5eb34d3ce45e53552f736c8db2928b3d65d847a9b3d61be7e863ee2 SHA512 56c63d4e9dd99ba3604bec5c0f0d8c2a51a93c0d11beed721d99cca05b20310f4439c049ee5b3ddb6e723381e315ac991d9a7327cea86e852b6cfca4cc7f9a0d
-DIST rust-1.71.1-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B d5cea850a1930a316574c977542e7026eed67dc244d8857c720d9de168f39b5437912634cd5ebefb63e8d58200e7b11d69b8c6ea0e257642a0df7c1ae8026c80 SHA512 2d06f90f916e4f184d536b695d123628a28f452ad4fb3da53dd3fcf5e013df594e8ee6eb1819268bc5b20ceb1c05d6d3b68a4021e60c73c7da934fc05014d2c1
-DIST rust-1.71.1-i686-unknown-linux-gnu.tar.xz 202188608 BLAKE2B 153f94771d68ab8bc25d1e38afea206cdd182a1ca0b7ea8616b932617c2368acaffda959ce3220506d7b2601b5120ce65ab83fbef167429b1b8a76108f3137b6 SHA512 e835354cee992f751d994943718d8908bc687a540b91b4b296962ceb0047d447e5b12a7cfc6661de8a4ee9c90722f8274c3e6a37f6842e8012f883cff32ac2aa
-DIST rust-1.71.1-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d2e47ce2eaf7d8c16a12630778cffb25fdbbe23d978ff46d02fb6363f6ce45a6295cb948f7b20c9a966d14f832a38e3c53018188b54fcfaac7b2df85508990a9 SHA512 2e5d191ba550965de6962c595c5dd063f96603522eff467433f3cffb31539e3406c1a62e3fd37a66c4eeaff2c1200a33439c6ca5133dc00930c89c7713ecb0ee
-DIST rust-1.71.1-loongarch64-unknown-linux-gnu.tar.xz 158000652 BLAKE2B 6ca5a251202330755f53eff6151abb724cbfbdf190e19d15df009e33cb17795b74a491e8a6c040ea69fcb603d19b7baf6f1f47afb5a984bcbb6239640748e003 SHA512 be33401e6f02669102e51524ecb2a4bcb75a539084ed0e04f80bd389be8432a7f3952304b21397fc1d6894d86a263da40831625a04b72536dd2af79b0d2e1845
-DIST rust-1.71.1-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5b744b2bd11ff69ac0c66af93a80c0c9f4d6aec465109033a8ffc63d2a1a8bb0e9cde1d3e9aa65e27287105673230acd07511e58112b7c5beb0c452323cea72a SHA512 a5d71f2555bfda22c0366a35032ab902071e3c75e781d1b1c5d090b6b6dac78046b31b789f71f9ed4adf80523903add324c1eb8e8f8a7b744d6a7d8cc6d3be68
-DIST rust-1.71.1-mips-unknown-linux-gnu.tar.xz 152451900 BLAKE2B 86804480dec985aecedec561707ce7dd2dff5e85b25da940051c2d89ae905b630ed7bb0df9e9bf6373917c5f6f513049b8be4b0b673d7c0dd77d8095700e6103 SHA512 0d3069e17c23e6651bc6dc2f7dd4de6b5b54e24ade5aa81a8ddbaa5f4f13c26084c3a04d246181d49fbb15cedede2a5d8f3e4a21080654a257c1b4285dcdef27
-DIST rust-1.71.1-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 217ca15420e4ccce2ea287913eaee07b90a1ec534a805b899032a8ba18f7b6a75feba873b8fa773efef32cbb0b265da08ff026e6d387c824e63000b04e7419b5 SHA512 2e0355d8364a9e6b711012fc8e1f227c76290804d967def666ae30e899f52197da06dc1498191f6b9de6868730eb8883ca0849351981efd82a5b9d12da9681d0
-DIST rust-1.71.1-mips64-unknown-linux-gnuabi64.tar.xz 150685836 BLAKE2B 90496f5f9b3af09d9da3b45913a57ac2b1035838cf4940d3a6d4c2fb6bd1c5dacc86b144e8be851a35bcce19100ed2cc800d840c3182b01ea1954353060d56d4 SHA512 af97988af615c7cfe08db0424169cb133f97914fcc75a76356ae3b0eeac2c8eed436208694d218a75879db163963d87523d23d6ce5ccc91688679950536c13df
-DIST rust-1.71.1-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 04665afa887c047d2e888ee4275faab1efda5f7dbeb4222c056af53c756a00ccfa5cd0f5a792df4bff325cb870f50ce6cb09e713afeeec201050eaa14dd6b0da SHA512 560d1e474e177cdc28cf94b10f72785ccc0db748a185b5bee8ab0c9598d3ef7152f79bffa7f11594be06ae07c3d56bc8176bfbd40284a6888d20e77bd036b9e6
-DIST rust-1.71.1-mips64el-unknown-linux-gnuabi64.tar.xz 153800316 BLAKE2B 63787c2fd44406d45de5f153259237df8116aa5419d241c92c5e9509db1fdea6fbfa0b119bca83cbc23a2abdfd50365de7c7e3f37bb0f7d402382657c97ad226 SHA512 a6c8399f2f4e56340d1712c71f03ac87ecb8f3694f0c4f1ce64a1f810de850f5ece7361cd93e8881d83cea2094a82a51f0d54cb795c4d02a5a1d94ed49b8f0cf
-DIST rust-1.71.1-mips64el-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B b69e13a4dd21447d7a39c24f96e9416c7b68bdb4af08c1ee7e312d78d2b064d1d67e397c0f04f9f8c68498ff3934350729021c9a4ee521967bdb63f53ab08c17 SHA512 9bcf27125cdf776719c87adb2947b1b9965dd3dcb231293a225e2424906e759f97ce2972d2f7ecaf69d708266303b8dc776c3e119c070e1c21ef59fb90405050
-DIST rust-1.71.1-mipsel-unknown-linux-gnu.tar.xz 155924032 BLAKE2B a4862cfd02053dc8303de9158929da634980c15d8fe32b7b51b316e6aa83de1f0d075ea4acd250d5bb210cb269bff373613bd45eba003f38439e22831b433dc2 SHA512 96708e1481c4790d5c2938ce7664cf83c2b9295023af017345ab0c9afa37bd43c2db93b9e8097d8d1aa6c913bab0db9324f057ecb25aa65bc16295cc625f2bdd
-DIST rust-1.71.1-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 90063d27ffb9071f6c10cc54d17073ea79436dab947b7f8f0a8f2d7c0671edc66f7e45d5954af77f30f8c3a005d2951af56f129d311cf328c9987bd5a5ea9802 SHA512 a2bc87f7c1baaf6f245b1d008162a1e5f52b6f949a3e06f69a7ae22315fc7770403ace7289830cfa60f6e66fabbb23352fabb5f0c24be05d58f4f891a8d6e956
-DIST rust-1.71.1-powerpc-unknown-linux-gnu.tar.xz 172809692 BLAKE2B dd6e3c96d168dc2ad4b3bca38a42a2b3c5c0ec5555f042ffb9a7e1d6430bce3659953c2c6c5454843ab41e648e479c5cef2645f2ce0bafe72892ff1ed014787d SHA512 bc2a8b9fc8494cdbab89364c15212f7f8e9af416639f9dd05cc57f0ffe18288be7ec489d18061387c43a2f8f4ab1273bcd7de58126546b59a42ae80e9a2c45d8
-DIST rust-1.71.1-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 620a63d1732cc0cccdc3bf6b141e2467c0ba50668d72be44cf04becfa9e0c30e5a5a4a7f5ae39fd1321130703bc6522c78e9bfdb23e7b3354fd760eb4d118991 SHA512 f6467c3ab3694fb89db06c67e6fb8afde75b4ab86752d9c918c89ca6bcc8914bf45da71076142eeea2dd10910edea42ab0d8144ff7b769b22edcf9bdb447e381
-DIST rust-1.71.1-powerpc64-unknown-linux-gnu.tar.xz 172399116 BLAKE2B ebc82664a4e9f651e9111e862a9cc341615526c6e7af2b181a653eb7d6a0c52156bf1cd35671c6e5aea41fa2653f042a9c865212bef6e8844a88fb9bb7a8891a SHA512 94395abdeb1615f594e4fc86d8bad85a01bbab05893bc8af7890ec509a2006d51c1a8723d3cc8082a214ee851fe4ba06707e01c3f009ed340d791d35e034341a
-DIST rust-1.71.1-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6d3565b8d9ec5b6d719dbe06120469e2a6f1ac42708bd7ef9705e796f0a4c528929a3984a7090a4da6521b09a53b48db119dc388d66f782f01a1ebfa61c8df21 SHA512 847fa662ddf9234a4a6b73e9d515b06fd0af0f098a826463ddb7df406dfdb25ca7b37110e90ff07f0a58cdf2c42755ccac70f057243b44f3b733ddc449cbde2a
-DIST rust-1.71.1-powerpc64le-unknown-linux-gnu.tar.xz 183620460 BLAKE2B f8c562813364a2ddcad26287f227ea93af4d91fb083998835e469a676c9be1c0262e88d0cb7e06cdd1293ba8807334744d4e4000c58d9f34c07fc851b0e31e5b SHA512 f8f627d847e405c9960a01f59eb1e14aa647e42004cbeaabe734c110827921f019cc01bea13f2ea0b5b3c2e4391f60b6ccbe4298182593564169cce0db6c9ae6
-DIST rust-1.71.1-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 2c09621ed09918bcebc6561f7f12e387be7919568929d0215a6bc5333610c158acca2998ff8c918956d8289da2f3e2ed4850c0ce45a9f1d85a304063eb8d5671 SHA512 5f5361a954d4b0510d48cf5b2f2bd0722f9d99a7b28aab8f3dfea9303489d9b60f6e20ee4fc61b74619d3c0fd298ab9bb903b3509f55c448886e428ba9e28d71
-DIST rust-1.71.1-riscv64gc-unknown-linux-gnu.tar.xz 164813572 BLAKE2B f86f7443da64afd416ea3119933a05a7638ee41576e9d761f491376b781e9362992223186109a6b930ee8a012dac5c37547448dcb903bd5bc480b66f8fef3123 SHA512 525a345dcb09141e4f4f5ef911c8f8dd63180fab956752ce0e9f5e2821c89603a2896e7042e019f61ae8807052e96b52bec492f49508dad2a351ce1a9c6de79b
-DIST rust-1.71.1-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6d37bd643caa5780e80a51876228bd12175132af89f1fd35dbd55f8c5544afd21c3e844027083d9cd5ba48bd41c3dc8c1427b400c2141dc3e1d128a6f5672ba2 SHA512 ee22b054810c12dbd48e9ac4006d74f2545c5fa090b80f831673e0850e16122569376380d1edea6c6195bf76441c0751ab52c6a143a643e656af0880c12578c5
-DIST rust-1.71.1-s390x-unknown-linux-gnu.tar.xz 195515792 BLAKE2B e8618c69ccc350c7e63461080a3768bf4d7b26f57e75a98a6e62625cb0deed8cf93dc00e485051d01b9996c6b48d3d1a84f88d5194b618d06e926c5543524071 SHA512 7915806421c07b70acf31bab86086981dcabee08e826668c8225db68c4f895fd16ba3e16b710416d2b96de3c30a9dcd137107a04ced21972d3fe52500e56178e
-DIST rust-1.71.1-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 4266dea5182a07d4ea1f28e6a362a2233df684836af9b5d2b78e87aea2626575d3af6716868b1cc10d2f38d77910d845c3997da7bf93fe865d8486d63dbc9e1b SHA512 a70d2d4592021294734ca9e069ce1f22e2531323524e4bc6477efae074026e0685e31c1d06328e2b17eb87a27dd7ec6793804c87280a002733b87a676c374729
-DIST rust-1.71.1-x86_64-unknown-linux-gnu.tar.xz 161080376 BLAKE2B 40bf80551c032dd62e19bae5a235575c5d8894ea75f77dd34510499b4f4e779e27da0faa98aaeacb57f73e9632ee90ff0f60f167108529ade67198841215d109 SHA512 15c5ff75b02357beefe717a36e7755d2841778ce4e39020d2b920239e4c8d0adfc17ee65de7bf42493d287bdfca194189f3276adc0374ac3d1a6af63270ef954
-DIST rust-1.71.1-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B ce029d9af59f26535a3fa121f20672f7eaad5019934457ac7ddc059dafcb2c3a37e5683923d4bba3f3a735805f11092189cf84d0a6352a5f9f475bd3eb00cdf5 SHA512 0376b16b9c845738c3c291ab2a73a3ecb20cbb8bdd0820568a0683c84b211e639413b3046d756e607a0f1b23695c9dcb351711fcc474e6faa8fe3098b1fefefd
-DIST rust-1.71.1-x86_64-unknown-linux-musl.tar.xz 232096648 BLAKE2B 7f4deafa57baa300f037ce3d9dbd101d5d28cf29368c4b2fc8e51799e59382155076aa0a3c0b6fa0c076693fd43dfaf80ad7685cd44233d7c31037c091a90224 SHA512 55b507a30d62a36aece4a2c2cab985e09d9552ae331c1cab51d949777261600e61d4f05ca1e81fe8b37591fb91939b1cdb55e6930d70e5126eea1a78caa74eb4
-DIST rust-1.71.1-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B d4a9f89274bf4b0004248764c07c7f82f8708f81a826d7509611b75e51d280707a75ff2c9d6b372e79259f7086b3e962afe51c3f0b98dd3fdd4feb683783c9fb SHA512 8be13b63b48740bec80772a826f06a012de58b1294f87374d7b4c844c90f3093ffe86bd3f1d989987696aa095302cc4644e3137fa2c9e1363c9ae8c3e1a05268
+DIST rust-1.72.0-aarch64-unknown-linux-gnu.tar.xz 212153292 BLAKE2B 2896fb7c195bfb0b1b8313c390458c86e18986e2c1fcd973380e26ed78ea955c20c37475c9788fe9b23435020393fd8408566091c2974ba439b86f3b34676100 SHA512 7843b39ac259267c276834c66bb139f0548e5ee2dd1bf9e3830b07cf687e15f4b27f343dc13ff155bd86c8f0580f7f16576bb6731b782447fd0f0511f8c75e95
+DIST rust-1.72.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B aa8b2eac07010a0e564d6681831f99e3379ab5a2520c3fc29cc67803afdcb8952b596b653d8bd8e15305f1ce5b9c97ec611a3d3e8f4f3ab2dd2dd066c0401218 SHA512 308f82d5acdd18469b751d97d89617502ba554e6dfe72cc38cbcda0abb5705dc667f0c18a69aa1260143cfb4a93ce7c77726a917ab2060f7cd7d4a071387fc28
+DIST rust-1.72.0-aarch64-unknown-linux-musl.tar.xz 195414824 BLAKE2B 0bcd33b23ab927c36d2fe4eeca98edf421824d1ac9d88593bfd29476c8faec6fd7deddf0e6efad38faa0000986b234c7f5aed8d15eab9ca37569a434ddfddbf3 SHA512 7ab0adfabe9e5e3226add9fcc34445fecf9bea270cacf5e87c13edfa240c2b26f34cf035386ccd9b8c1edcbd74285d903d3dd7a96f6f1a928f4f60c6e619324d
+DIST rust-1.72.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 243c5108f2f56f742d589a3d510758c7377e5ff2625e1414f6cf5340c111780ad6397305fb01d28af50a9484662777c70328f9b2f490f3e2e3f934a4ff133604 SHA512 49289ccbc79f022d23eaa9d4d9e551365be6cd348e23f01ac099e103cc6cd2508b30494057e181a8246d7c9fe1d7fefb6ff473608e3d8835d098ad6c00dc02a5
+DIST rust-1.72.0-arm-unknown-linux-gnueabi.tar.xz 175875544 BLAKE2B 20dc09b8e2cc48a7a52f184baac30c523cd180524b178a91a72c6b7bc91e8ce0fe3e4d2605b1f9b5aa1535daf29a8e92328bd919a9f5913002086726f5e6d8b7 SHA512 2b8da66ec7575fe4e77d34247cbd91b376f5f00039c02855964883fe0e3610c47f087ff3486b36181ab7724dcecec78762636c9c9fd17a2e9410bee5f7efc84f
+DIST rust-1.72.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 8a5cbed0df91a723f3c96b612c2eeb2580073fc895467a051b714b8d29956caee3199422686ebdeec6f38c8b0b05e5ef7a79f4a5ba92d77ed500ffcc4e3532f9 SHA512 a3259d475ad2722319a15ebcdc5c5c7a74b38813d7ee2de5d1d69e7ddcb9cd2bd3144655df73e1f5736262de5166d444a4aa9ec638ab4e2228de0e5b91fc46e0
+DIST rust-1.72.0-arm-unknown-linux-gnueabihf.tar.xz 176030324 BLAKE2B 8285f86700cd5dfb7ad2bdd70fc58a5222e64d7bb70aa51984001ce379b4fc7117e90faba1c3465357a27691231aab1c601f9b603418fb2004a4b2a8ed74a083 SHA512 9f810fd926b7d425c14ae40f8e47f59609fb18618ff4b16f26cc42904f9797a9633852a6747c2a7ecc130adada08ded4c99565a53d563b17ad04350d15145666
+DIST rust-1.72.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 6465556de7829ac1c02fc8cf6f9f394d87d8af9326710c100f24de5cdca62c3a6dcb831177d98d9b060a6e4338985513072f3430418e4378c1988509d8f10528 SHA512 3a85a1a7111fc86a5974700de196f716c6cef0436a7bbf791be7ec5eed3252ae654d48f60c5056e5d5000196b34d7cd32d821670677363aa9a94200ff269d6d7
+DIST rust-1.72.0-armv7-unknown-linux-gnueabihf.tar.xz 180272644 BLAKE2B e3c1d8cfdb4a3ed8e445ea1814d62f1d072de67f0c217908c7cdbffb30614cabcf8582e393a62ac43624e0d131bde1c51426ca04d9dfbbec265887b674863b83 SHA512 36f7d44e52668e4e67700834d0614d7f37f3b7219eecd1008ff9660f79226a011bac75402ecd43ae12ef5479d2e2187b10691057c188fc5046cb79138bf6e521
+DIST rust-1.72.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 09ed6107a45ffc61a80dd2ef21a286d184f0a2c8c57a8c0e41fa1eca786941cef06b66b5035eefade29781912118ff1da11a7f7fbb3ab3b4873d8cd2249e3f03 SHA512 7735c460247df0a6536561967090eeb5784a44d1a1cabbefd6d57a0afd74bbaeec96f65e206388f7958b32568997ecadaf83c9e75451986e70fb05167584bae4
+DIST rust-1.72.0-i686-unknown-linux-gnu.tar.xz 203434692 BLAKE2B 2affd5b42c664939ea0c15837baf51c9f315aa456c41e916300b45a3eb06c26995394d292380470442f0fd4b187fb58a1730ecbe9a4928837a7ccc0d59d8ed2b SHA512 fc8ed251d6c9888894b168506e5980cb9802b43485de5c9145d128257b1b60d363612115149f39cc13a9e18929422deb8285dd999abdcdb089d2318dec8ec606
+DIST rust-1.72.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 16048265dcb012b67fe9de44c11353a2506b314c45482721648358ee84dd500d13c30ab55e14f0cbc6837761924904355f02a0001a042819201c096965c8bc74 SHA512 5f16000c95372d9799787c3bb0f4d948cca18ab806e368ccee17d4bddb20352492906d54cd56fa3d50545374a70e42a893c37463baaccd1e612358a7c809a9e6
+DIST rust-1.72.0-loongarch64-unknown-linux-gnu.tar.xz 160819080 BLAKE2B 66b5f34f9dbbc633fc240a240d5b0555ac55c5cfddbadeb22168ab90be83410a75a9fbb154fd1aeec2ba8447ff76ed2984966c7352b46afb52fdb2eae82b02a1 SHA512 fdebcca89a65d5cfa6c9d65f89a34989af0b8c5c1396dc182ff6d4ce320111ae6b23c2e06786ebefd8dc40dc391342d38fed38a193daf0b42b6dac64cd79d36e
+DIST rust-1.72.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d7e483773ee6c105829d7b711904dd14194c9e69d6ad1271c45ff826d78cd23da3e8f5dfea688adb157a9c2697d3c36b1e88e7ee2789d571bc90e41701e46540 SHA512 0644e4d76dda08cd95bc45c5797252b26318841844f4d0baa49212c1121c773b64d2a4ea993c83d412e33433e604b1cbdb86ff60f8328cad2f5c741ebfc24a42
+DIST rust-1.72.0-powerpc-unknown-linux-gnu.tar.xz 175099316 BLAKE2B 7eaa2dc7816f63a9a4288d852b2ba7b3e13c5155f5f9a8a6ebb4a2d20f03e900b52054689958a07e7f52918835536ce92a117f8ffa014196040c3bf340d33b78 SHA512 f2e87a12a2d5146011fd9df5532df06b7a936c2ee4866b95d0d484099240df9aa13597877d8f1ef56537928b196dfb89d2b2084784ff9b2f86eb37407661bc4a
+DIST rust-1.72.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 681fae9a730a7f8006e30d05378ca518abd8514edbf69d82e6485f11a8a98f14c819f63618412fbb4c525a4b60367498d79c0b935f6be5c7b8a59f4e60775bfd SHA512 c4f5020297ff35043c1985e04ef5322b18283d1ee24a84cc29fef3f3e48e87612bece6ea5e86a5573b86133fb1cda7402aae98c897062b18d3ab71da48e3b68b
+DIST rust-1.72.0-powerpc64-unknown-linux-gnu.tar.xz 174927468 BLAKE2B 2b7c0d3b22a6b6b80f2f9771a6a6ef678575d94c2dd0dffcde0ab572507a09b663a5a4106f72865b57da37c9e710f75d38882fa0345a73f6f1498566a77e52de SHA512 c7b7f9c2b525c8ea1ec9f9c0090a8a4c098f5680b22b04b30ac86da29586b04d2a901498035ffdb94793b2732ee985c71137c63c1f7b938496568ce8b82d678f
+DIST rust-1.72.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5b9a6805c0ca7af4931d47c9950358b896689b452b898f0ae5d21a4c4027c20c321ce6cb2b150ac3b2508ccf0a3a430124a44974cb011572a126594374e9c182 SHA512 239bb2ae442d2b7d970bcbab4bfca77e09ae17d2caf4a2cdcc231d1c9f1aceb4b98a050eb3f3fae3184c2b6f451d32cafdd0d1e11c2714e180f3e3769b9a1b42
+DIST rust-1.72.0-powerpc64le-unknown-linux-gnu.tar.xz 185829712 BLAKE2B 305af3179f7a66e6fd7b8886e9f86e4fd4d2d71654658f0804182bf7ba1a5da6c71903fd89e899eebb74ccae366ada580a7b4a33436b3b82af928ff5d081fce9 SHA512 2401d3490c1e3ec32d185f7f5886c355384ba2cf28c5d14ace0d2b8d14eb5c5cdf4c507c67c104849decc23bdeb7223a151214e11b67c2276dc8f795878c76cb
+DIST rust-1.72.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 10bd90f3e07d892adcc04d9ca43454a78a5e260dc0e90978ebd50d48aaab488466584180324970f790eb181165f2d3961c515225c95efa55ee3d53d4a8f831a8 SHA512 e72d4482171090bd1e801a94b7ddf7002555e37aea9e9543e3d7f263df938ff223c0980dbae4b56665ea42e2c352e94f0f18c418fad02cd68d3b6d7f087f4e7a
+DIST rust-1.72.0-riscv64gc-unknown-linux-gnu.tar.xz 167275368 BLAKE2B 0e77dadf640c0fae29f720458caffb3dfe1d9a6514526676e1da333098341eba20d2df9b191005e5d66e6396b9e12c25520692f862ad84c1fc91eb1a6a71c470 SHA512 157da3684962c3145206910627bebc9fc5f01fc8d7e56477bae2796bc8fafdcc504dcb77cbdcc96cb2288b0cb019452116df7740fae3a87b5274d103da7f3a41
+DIST rust-1.72.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e660968bd401882034d63884e60ddf0e50a42c1e17a517aaf153731a0d319d9de5c074381fd1e56b535e1a870afe2b17b7dbfbbef33463a6bf4ac0a78226abdd SHA512 87bb2b30710a4159d1b2b87dffd45be772dfaf58218459109c8279da21440ce423cf5ee28fee0281c3b2b9eb433880c0f63177b0b775027b15095c9b6ea99bd0
+DIST rust-1.72.0-s390x-unknown-linux-gnu.tar.xz 197718192 BLAKE2B 465815892d2c4c76978fb3f14fae021f95007f17e3b6937ac64f22432aed808e77eda6081f0918d7fd48e00364099ea147e21dd80ffe93600088d7d1b39ae9fb SHA512 5ba7b7fe39fdf9a542040807283ded3271e37a8576e387c7d5333936623f688192902686027e491a6c5405906102afc0dfd465fd4093956b88942d54e5974e45
+DIST rust-1.72.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B cdf0ee76397801ac561e39cddd1eb1ee94454ff52df8e117a35aec010d4534b1ec024e1e1981579924bd976a1a48bc1217c990adb307a2c4fdf618c85801cd0e SHA512 a333a1ecd37aedb9f32365396dcf69e235a3c084bdb34b656929ce38ad78b5a26092ece2b81380efb32544ba578a657615132c02c7f4491855c9ca90d77fb863
+DIST rust-1.72.0-x86_64-unknown-linux-gnu.tar.xz 163402880 BLAKE2B 0f498510f8bbaba4b36e9e1cdc8e1e0482b4f26bc7f42a600b3e3f2294490f230a87d955c4f79c53ce277163660752a39889456d743c74adb2659cde536e09bc SHA512 f02fc82181fe2665aa66ca4948b66abf031c9ca273bb11ba69d1e99bf5bd1707010c4baaa04d8c83e9e97e7bb60440e3562380077903a459f689ef5dbac3ff40
+DIST rust-1.72.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 51083330fef8b0e9f4fafe71e3a08891bec9be8e1c2e64ef37cba463e99c13f44639981c8aae6c86d50c6a23c4846a4f056535dbcbf39a2d9096615862feff87 SHA512 284b74f87e192451ba95cc423089d64334f43da8c221f45acb683a088e7dfd783c488c7ed3fe68619aff4c245271cdcf4b1b8c5f0bef1f8c3d3af0ca13d394c4
+DIST rust-1.72.0-x86_64-unknown-linux-musl.tar.xz 234831716 BLAKE2B 3ee1a5727ad120bcf173dcee3770e342f107777984b06782f5ae588a58e5da94ad4550b00c168ddbe84350605100558bc01e139763b5734cdea32545ee6ee41e SHA512 62d5967669164ce7e8b6815298d79380ca96cce5a6c8a67db84cd3d5fdb6825ba9d2a91d59c2185a93b1c26030ef017c63942dc7a363e742d0abf356bca6f1f5
+DIST rust-1.72.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B e04731dd5edfe93d17cb032d772917d49bd46f195738cefe2e685f42b9ba5148d120e8d71c627cae46a665235f14ac0b35aff58498ff92da7edfdc5d6e562773 SHA512 2ed245aa779c594f8d9cbcbf63e7c68165d600408a25288163ceebf78946210a36958a3df80c50b2006e11930e09ecec0eee233ff659a9d2ffc78c1b55d3b0fc
 DIST rustc-1.65.0-src.tar.xz 139674928 BLAKE2B a218263fb67e306b153f5a6dae95b5ec653acaa5eb4b833862d6f0fd4685a8cec097dadc1b8a934e1bf6055672c7a617f9a0ad4a7dbf2e78084297f10b7ada04 SHA512 3d0369ed3028209c4ecb9b9e7b5f5e3a20be8cc05199675df4f091d62a96c0734bc1dbd7630928fe162792392ec6d0daf9ceed10771531ce022200c7b631e3be
 DIST rustc-1.65.0-src.tar.xz.asc 801 BLAKE2B 43ff92011cd6f7f34ce0495fa341379e5907d032ea90f91e533e5edaec6ad518aad50a9d8b2694074d6909ee96aa779403b16e95792e962e79c1b967542ae26f SHA512 75b9be53363022c81333117876cbcc573bbd4733edf767cbb164218644efb1a9c4bfc2aa73aaa1e39f248a84f1adacb1930a94a6e63f60093ff760fb9ae02efc
 DIST rustc-1.66.1-src.tar.xz 141692940 BLAKE2B 3fae45345998386fda1b11ec896fac4613b8e3f0092bc0df29c9685f4a4012c0bd1b600911c2d19bcfa8f5a84b8a3c39d4c9e062a62cd61925b59129e1cd72b9 SHA512 1944c024c603140d0a9236043a3bd1d0d211dd8d368d6d82a3a620f1ff43b29624755b0943f2b38b40a188c7eee77a840238ea757eaf435e2a3fa6a0e6b82832

diff --git a/dev-lang/rust/files/1.72.0-bump-libc-deps-to-0.2.146.patch b/dev-lang/rust/files/1.72.0-bump-libc-deps-to-0.2.146.patch
new file mode 100644
index 0000000..bd1c4b5
--- /dev/null
+++ b/dev-lang/rust/files/1.72.0-bump-libc-deps-to-0.2.146.patch
@@ -0,0 +1,156 @@
+This patch bumps all libc dependencies and checksums to 0.2.146, which includes the fix for musl 1.2.4.
+
+--- a/vendor/addr2line-0.20.0/Cargo.lock
++++ b/vendor/addr2line-0.20.0/Cargo.lock
+@@ -246,9 +246,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
+ 
+ [[package]]
+ name = "libc"
+-version = "0.2.141"
++version = "0.2.146"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
+ 
+ [[package]]
+ name = "libtest-mimic"
+--- a/vendor/backtrace-0.3.67/Cargo.lock
++++ b/vendor/backtrace-0.3.67/Cargo.lock
+@@ -64,9 +64,9 @@ checksum = "dec7af912d60cdbd3677c1af9352
+ 
+ [[package]]
+ name = "libc"
+-version = "0.2.138"
++version = "0.2.146"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
+ 
+ [[package]]
+ name = "libloading"
+--- a/vendor/bstr/Cargo.lock
++++ b/vendor/bstr/Cargo.lock
+@@ -34,9 +34,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "libc"
+-version = "0.2.138"
++version = "0.2.146"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
+ 
+ [[package]]
+ name = "memchr"
+--- a/vendor/cranelift-jit/Cargo.lock
++++ b/vendor/cranelift-jit/Cargo.lock
+@@ -224,9 +224,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "libc"
+-version = "0.2.141"
++version = "0.2.146"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
+ 
+ [[package]]
+ name = "log"
+--- a/vendor/crossbeam-channel/Cargo.lock
++++ b/vendor/crossbeam-channel/Cargo.lock
+@@ -50,9 +50,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "libc"
+-version = "0.2.141"
++version = "0.2.146"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
+ 
+ [[package]]
+ name = "num_cpus"
+--- a/vendor/elasticlunr-rs/Cargo.lock
++++ b/vendor/elasticlunr-rs/Cargo.lock
+@@ -555,9 +555,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
+ 
+ [[package]]
+ name = "libc"
+-version = "0.2.140"
++version = "0.2.146"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
+ 
+ [[package]]
+ name = "lindera"
+--- a/vendor/handlebars/Cargo.lock
++++ b/vendor/handlebars/Cargo.lock
+@@ -550,9 +550,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
+ 
+ [[package]]
+ name = "libc"
+-version = "0.2.140"
++version = "0.2.146"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
+ 
+ [[package]]
+ name = "lock_api"
+--- a/vendor/icu_locid/Cargo.lock
++++ b/vendor/icu_locid/Cargo.lock
+@@ -318,9 +318,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
+ 
+ [[package]]
+ name = "libc"
+-version = "0.2.141"
++version = "0.2.146"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
+ 
+ [[package]]
+ name = "litemap"
+--- a/vendor/libffi/Cargo.lock
++++ b/vendor/libffi/Cargo.lock
+@@ -10,9 +10,9 @@ checksum = "50d30906286121d95be3d479533b
+ 
+ [[package]]
+ name = "libc"
+-version = "0.2.140"
++version = "0.2.146"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
+ 
+ [[package]]
+ name = "libffi"
+--- a/vendor/terminal_size/Cargo.lock
++++ b/vendor/terminal_size/Cargo.lock
+@@ -47,9 +47,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "libc"
+-version = "0.2.140"
++version = "0.2.146"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
+ 
+ [[package]]
+ name = "linux-raw-sys"
+--- a/vendor/tracing-tree/Cargo.lock
++++ b/vendor/tracing-tree/Cargo.lock
+@@ -100,9 +100,9 @@ checksum = "e2abad23fbc42b3700f2f279844d
+ 
+ [[package]]
+ name = "libc"
+-version = "0.2.141"
++version = "0.2.146"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
++checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
+ 
+ [[package]]
+ name = "log"

diff --git a/dev-lang/rust/rust-1.72.0.ebuild b/dev-lang/rust/rust-1.72.0-r1.ebuild
similarity index 97%
rename from dev-lang/rust/rust-1.72.0.ebuild
rename to dev-lang/rust/rust-1.72.0-r1.ebuild
index fe4ccac..3c98e6a 100644
--- a/dev-lang/rust/rust-1.72.0.ebuild
+++ b/dev-lang/rust/rust-1.72.0-r1.ebuild
@@ -22,7 +22,9 @@ else
 	KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
 fi
 
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).1"
+# Temporarily set to 1.72.0 since it fixed issues in the stdlib that prevented bootstrapping on musl 1.2.4. Set back to
+# normal in 1.73.0.
+RUST_STAGE0_VERSION="${PV}"
 
 DESCRIPTION="Systems programming language from Mozilla"
 HOMEPAGE="https://www.rust-lang.org/"
@@ -162,6 +164,7 @@ RESTRICT="test"
 VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/rust.asc
 
 PATCHES=(
+	"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch
 	"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
 	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
 	"${FILESDIR}"/1.67.0-doc-wasm.patch
@@ -169,6 +172,10 @@ PATCHES=(
 
 S="${WORKDIR}/${MY_P}-src"
 
+clear_vendor_checksums() {
+	sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
+}
+
 eapply_crate() {
 	pushd "${1:?}" > /dev/null || die
 	local patch="${2:?}"
@@ -292,6 +299,12 @@ esetup_unwind_hack() {
 src_prepare() {
 	eapply_crate vendor/openssl-sys "${FILESDIR}"/1.72.0-libressl-openssl-sys.patch
 
+	# Clear vendor checksums for crates that we patched to bump libc.
+	for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
+		terminal_size tracing-tree; do
+		clear_vendor_checksums "${i}"
+	done
+
 	if ! use system-bootstrap; then
 		has_version sys-devel/gcc || esetup_unwind_hack
 		local rust_stage0_root="${WORKDIR}"/rust-stage0


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2024-02-12 23:16 orbea
  0 siblings, 0 replies; 27+ messages in thread
From: orbea @ 2024-02-12 23:16 UTC (permalink / raw
  To: gentoo-commits

commit:     78ec9fa9a7fec0f594924e2903972db76c96114f
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Mon Feb 12 22:18:44 2024 +0000
Commit:     orbea <orbea <AT> riseup <DOT> net>
CommitDate: Mon Feb 12 22:18:44 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=78ec9fa9

dev-lang/rust: add 1.75.0-r1

Signed-off-by: orbea <orbea <AT> riseup.net>

 dev-lang/rust/Manifest                             |  30 +
 .../files/1.75.0-handle-vendored-sources.patch     |  45 ++
 .../rust/files/1.75.0-musl-dynamic-linking.patch   |  19 +
 dev-lang/rust/rust-1.75.0-r1.ebuild                | 797 +++++++++++++++++++++
 4 files changed, 891 insertions(+)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 91c69ab..f6d351f 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -88,6 +88,34 @@ DIST rust-1.73.0-x86_64-unknown-linux-gnu.tar.xz 161588916 BLAKE2B 10c1c57641e2a
 DIST rust-1.73.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 22e68ec4e6bfa49c15344675abd20ef9449d928943dafc64bfa1cf78dd36ccbce4802af8d4adb84762194dabc512efa74655a93785c127e6942ebeca8f6e3303 SHA512 56e53a1047a23a7f37250a785de2422ee2a3a72fdedb9a02530b3cc1cd978370cbbfc0e67d75f3d537f48c6c78f91d3de949ac2c9392a79404609b169cedaa40
 DIST rust-1.73.0-x86_64-unknown-linux-musl.tar.xz 236190528 BLAKE2B 062b54b31742bc846bdff63fb38be3a3a1f6d2f061da26cee6a0b089feee995fe3dbea536675495ed75d47d657c3d4bf04e36f6752f59f8308f7eb9a397d6e38 SHA512 abd01e0c98a8aa447d01613e24302ca81a8cce7d41179ed60834a39ed1942de0459add3c498a63f94bb1ee8662a2750b375b49894e3108da45f47d3a643cfdba
 DIST rust-1.73.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 9822879d0f14eb5387a623d111ed7a3b1ff038522c071608bd254c4b3479da8a1e9ed78c69c267c1156c45a9cbb2f7db00d123b85f28021a743d392d1cb65c75 SHA512 ff65fd3ca47afeb10f7434d8d4f91b6649739167639c3eadf178aa1339553c5316bd0bb393cd53fcce17c126dcf8db1f1dca6e87044b14762bb20ed8f5a500b7
+DIST rust-1.74.0-aarch64-unknown-linux-gnu.tar.xz 216169516 BLAKE2B 830b97f710a3249c4d1df6b37dc9c429cd8d8c8edb0a77de8d04460bc2132ababa6777dc92b82b8a3b3839256f2dc522128d31a81c8b5ae9820a483368292cc2 SHA512 40a98f9238af1a60a0506e3e1b88e1d61ce68ed6380c78c77b638b1fccbc8cd0e39d7c042a70dcde454a3fe95b6c49950820f728b847dda218fdd91fef7066de
+DIST rust-1.74.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6b15fd93514659cc64759b7c7c3e26781b87f58022d91bbeacc64906c681ed37b825031e9fd78051671b35c5abbf4d76c11e320742d5b482f36e98ed9d8691e7 SHA512 2480367abacb766e015c3287568cc2ea2f186b48cafe709595641e40471b4da1e29b5e41d2a3b5eb7d9f9329725e46e4110800952e554e84212e3a1ad36f06c5
+DIST rust-1.74.0-aarch64-unknown-linux-musl.tar.xz 196821888 BLAKE2B aa8444b243a670ce5130a0436bbe100b75912a03bf8b3f99f5dbef9b3459fbb3b6e0d0fae6e9d9ec368e95b20f563a8821ed7698cf699b169887dbc63a7a71f4 SHA512 22255c52052977b272dc740853359c15e2764164b38afd473830dd69830d4897d60dc037f0e6190df8a31ee22f80d69f60d7dad968a41b91f23368328e11eef5
+DIST rust-1.74.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B f3ab9235640f5314de7a01564fa60563f123d7d4d8755b4263a687fb22b4d874cbaaf9184436e62c8e65d23c64685d33333f3585dcc518fa90229d1a045186e8 SHA512 2ba35243e3d626347a442bb9b798e698e654d65d81d3d2391b791f33636a74e51b2c5f6270d37abe641f6e243dc70169e990e9fe1ed0392936f272b65216bd08
+DIST rust-1.74.0-arm-unknown-linux-gnueabi.tar.xz 180475660 BLAKE2B 33ac40eec4641d71ed03226dcc0cef62fb4b108835ca8532110237c41c5c1eaf5f2a78ae3b97fd69043898439816702df6d1ce8bbfea36622736b62db1de7d7c SHA512 4f90237267516870a9d236add52b70c4e3ffe2b12ce0280faea4f740aa81b0ab8fdbb0e6e58425c8e33a0795a4bd18cf766d222b9d6f8ec9e972d4ce10ac0640
+DIST rust-1.74.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B cb1c623548cd2dad04ba2130883fe6ca70466ad8e8d10a0bcbe42ecbf7f3e10c5f62eeccb5300d133458e26c9b340ea9f5aeb3b3bd35420e39ca4c2a751946d9 SHA512 eccee9e6ec905d4b30b620236bb2c3648f4c5e00518c2e1b0ad5d009865d56abfc866f1a100acc8c7ef559590052cd858cd247bd091d31821b27bfef00b9487f
+DIST rust-1.74.0-arm-unknown-linux-gnueabihf.tar.xz 180651920 BLAKE2B 34be0e8e7621bae3a7ae0c0c5fb94df55b42035d4a6219d773e109cf8e17082c81e0b8e831421f702bf269e095b0fd6bb798a8ccd78f12b099e5cfa638458572 SHA512 c6f7f9aa592985206a3af47f8d61e094e0fe3c714deb6c569a8a0bef8f5dd897f8f27ab33dd184eb28a9267c877f21527dd421baa312bbdf08994cb69aeb6ba0
+DIST rust-1.74.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 81703b2035f44dd3272cce97671205d6f838f1ef09dc22e25316567119da12ecae6c38d5cd54a82f70253a65357c60cac3d2c6c91ceb90614baedb5fb3707306 SHA512 aa7d6320d868f4b05274a964570f6d1e5bb4b0f72da0875d43356ff2a48a4d1a2605dce1097e88fdb3cae502c05373540799175bf205676088654a0288718995
+DIST rust-1.74.0-armv7-unknown-linux-gnueabihf.tar.xz 184856340 BLAKE2B 5002309dbc31916ff4984637c646136c0be0ff682d105f579f3e66dc3aac51feffd9fe70e1e4020bf554155bab88fceafd0a223ff6f2d8d3c885233b4592303e SHA512 8beb260a0f07b11b91a21ff7a6bc863d412006a4b7a582c769ac6991ef8d93ccbdf3b3e9921ba16fd2d3c4354aec706298fce182c910c26e4fcc61575e6f6213
+DIST rust-1.74.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 6945a1ad0917f5cca07e1d8e292644054a613ccbc7d6d8d8b4bbe1d0e580bd1e7e40c62383fd9ec3a465d9af1db02f28eacb98bfcd5bd9f4c4431f74824f1a7e SHA512 c3652f8a7336e5ba4c45a31a089d99fd9e36bf8f7b593a3bcbb728a24d3d76f81ac908b0ae97905b27ec0697364ce01ef6adcc1853756da300989b4ab4bc6d15
+DIST rust-1.74.0-i686-unknown-linux-gnu.tar.xz 211708688 BLAKE2B ef83549b86e4da0c8ea61d14dc302dd10459798fccabaafaec7e8f24ff2a4695e4378706c48092b8afd3dffac7d995e53100bf0d5f3caf73dcdfda764cd3e656 SHA512 b97e1ee46d8ea20af6a61ee933c66b5314f55c3c3879bd8101943a769dda3ded7c91899fb7eb26ecdbe1f01f35e9784398cb85d494b03bf0673d2c1c8ed27f9a
+DIST rust-1.74.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9a0916d77499972812edda89c04563d41e899a68f73fc8867d878e938ef6b37057e97e7209b033d6624674f472b9e8441fd89bc0a82a9ec17c85381b07809367 SHA512 562931b7a78a92ae6f07e502fb044c1ed45ffca94690cf8316c55c85ed37ce426ec72b526a10c4da8bbe947f1b253e618338028ea064eab8bc446ffb291b5aa6
+DIST rust-1.74.0-loongarch64-unknown-linux-gnu.tar.xz 161629420 BLAKE2B da3b11b1c8ce2d3e1f30885279e4524f795bb8680f0f076fc154c7ffcf067d5933f2a89c2c5dc142859adebeda9eebd9559193a5829a114bc670262872069fa1 SHA512 a3d75491371d74d14d5ea3e1578040b1baf67166c899e0c590599d1a5efe5d6fa11c6efa9f2525ef2011650cf62d7e1384f71f9bd33357296915a9564b2f0c3a
+DIST rust-1.74.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 58d483bd3f21344f3a2da5ee4a88b2a536baab0503d0fa52f7c97ac7f6cee308401246cedc5b2c38d7d6ecf57290e2e0f48f8a84c72cfd5aca7e2d2310723963 SHA512 28fc0773a95b0822b262dbd48f37b637ec95cfe7694b2b2c9d5b18e0492c802d29dbb0013382fadf2037250faf9b3019cd38882102f864136be1e64623c89882
+DIST rust-1.74.0-powerpc-unknown-linux-gnu.tar.xz 174911076 BLAKE2B 3539adb3fdcdaf6163a58aeaa2d5f1a7ca5e13119d19a559b328d2e994ea5c0147ffc410391c6a7d2714f814b4254d847791a3737596e4fdc97defc7e3838000 SHA512 95b76ca4f0667ed63e76b99ef7b3667d88e13592de941a6cdb85e970ac766667c2d1f7161e20e1d8d63d5968fd5c82f2c0bce5d84f11d59b438b0ef16679faf6
+DIST rust-1.74.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 58262a22b6a589bebf51a494e4bf0217b58cdf214c2eb0bbfa9d9fea20f0a21ab0ce76271772c452fc2d5a0b049bf09c84b342eced0995b9456e68747aaf4c63 SHA512 3c694d9ec22c03d07cbd64dde1bf5f532beafdf3d974e77e5fc09adc1484bb1572625d62fd1e0d13613c4b63c2efd82f58ec9e4a2a8ff87b2527b2da7896e703
+DIST rust-1.74.0-powerpc64-unknown-linux-gnu.tar.xz 176265620 BLAKE2B 2885cb229d612e702e47e7fcbb18a60c9b5aefaacbf14ae146b3078b53e3e64d05273268d4e2e0c61dac1f7f1a5238f82c0ab7e0a05aca25478e661e6f5c7600 SHA512 ce6c5eab3de7ce6800137aa02c19a9c1513738af140c9cb1cf1c89f33f71de50d022a6af92eaadb26898422c7beebb6d6870f2d766e3eb4e363afcffe75a2627
+DIST rust-1.74.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e3c29be027c55bd51b1520c9d573b2e3c6b8c094568d57b940db9b895532405717676cfbbb7486b78fed6d3c79453a760132ffe2b2b86bfbf67a7872809cc5ff SHA512 baed4414207068429bf5c4bf445650936bd1ace3bde19f8fdede269a4204e37964c6b172d2d347fa93e472128fbe7ae5696be82d5ef873aa6a3c588a1621f1e2
+DIST rust-1.74.0-powerpc64le-unknown-linux-gnu.tar.xz 187255560 BLAKE2B 29fd06bd7a3f0229b0c1513045932a7786ce10501469f46ffaa9d747d7badb63c69a0d1f13ece3b09ee811b492e1214ad4bf2b875269caf829e5a6eea449f0f1 SHA512 96a18b9938f8e7c6772a7215d866f6bbbb28d379ebfe4f0fe0e32fcb4fdc5f3b7441edbdce3b04fa30ef91f8d5c2a2c1fe75ad0cce1ce1f2ed75cbbeceb1e64e
+DIST rust-1.74.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 0cd802412a19cb27510c91831f953ece98b0ac65c8ad6f91e1b136694403b71b1fd29aa8eccf45384eb59ed72e7a6e4218226826e243d1bd232444c277f8f0e2 SHA512 a73c22b8b0a319c3b0997e463f4cafbae8ce3fd5e66d42db07aa60b6e366a92afe640ac36b0a941879df3510d9341b3cb3c895e2c864c0ebd4b2bab7c5426dd9
+DIST rust-1.74.0-riscv64gc-unknown-linux-gnu.tar.xz 181305504 BLAKE2B 708e30456c32d7fd6d8d07e18bfcc73d339e5c6f5ea92fb3958b538c8a3bc4b79d02c79e2de9a5e2480ec7ae6cab6a36d345cb183a811d738aef0536fd143701 SHA512 050ac10adbed179c646c6348fa43a1bcfa18084de444032d8c064b5f1a7b059aeadbf9e06a75079b2dd9170e1cb078205c2a675e0c39fa694c813f2da2d616dd
+DIST rust-1.74.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B a3be1f47f23d62f46b6c2b1dae6d07243c90690f3d097b24b4f7b2a22471d39160593e2703b5baf6a3c701f167d8941241511bca5c78ba79a25da37387ea1cf0 SHA512 a9c4c3e22bafb1c53c71d9836873e84c6a1b3adffeb361394d584b829b5239df39cfacfbddb96c93f4ecf48c4ea98421da3c46245f32659aed49961198db18de
+DIST rust-1.74.0-s390x-unknown-linux-gnu.tar.xz 201169576 BLAKE2B c8d5b9d621fe3a1f3ffe28a09cc0660636d33c6aba5463a99570d4061d736847b95cbb7bb3cd0c2d6a007aa8c4b08364867a5b6d4d12b7f34887327ecfdf041a SHA512 96c00ceb9bea19637d92151ff8ac289e0bc62f05e08a4ebe0221d08271a4e80e0fd628ef2c59240796dd289b6d16efa6d6191aafad1adb11f2d8fff92df3084d
+DIST rust-1.74.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 779fef510b53e24a6b20d868a3dcb349ececfb35f5e7059ccb0ef125d24361a8732e8459051a8b1e4da2ad1c6de342f15f857d4973ac4a1b9c19236cb66c4040 SHA512 bd266f3b6c09c73d400541a436890c85fd7d7b82241ed9952ab41481a1f19df8b477228a54ea4c215f0313aa7515d6b659e8ebc78f6186ac2b9fb2ec04cfa902
+DIST rust-1.74.0-x86_64-unknown-linux-gnu.tar.xz 155920616 BLAKE2B 6213da724e5052fd72aa35816aeded0136c873bdac5536b8d6efd8e830d1db6b909313f58462b5ebeeab148ded4d29a36f2dd5439ac6c1d1c68f73d137928376 SHA512 27dace338e78e437d5b8214778f75e79dec604ca54023ac6046c6761ad02db4790f3df902589a934ef2ec7e162ae201f9a5f6b0bb2e688d5c1eca90462cd75b1
+DIST rust-1.74.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9d81f9c2861963a34b0bf9bb15a584db502d388b15f73ce98f78cae6bea0357403d9bd0e6f8ea427a9f4db5946ba7dbb4242e7fb4400b561b7431235f0dbe2d5 SHA512 e1e5e3850715379d30c557791a4eeba2bea090ac85e09a982579a703b2582eddfbc060e21420f418cb492e8d4abe87d5bd81b5acf6ee8bd17b80bb6e0f65b721
+DIST rust-1.74.0-x86_64-unknown-linux-musl.tar.xz 235589268 BLAKE2B d695695ebbb3bf0dea28b9d337f82d5828e6ee70cf7220c849a6008b32f2b590ff57ee35efd58d9a38cd17e0f77ac1187765e8fd6470e0ee2c6cf75f3e3f1489 SHA512 3a8d4cb87d1295b07f0ed48f6e01e69801be3c93744948ef0145217b0cb17581c11c618a07b72edb0945c2ffbe85c59ec1cfd99ef6a60c2e96486f9d5d04d38a
+DIST rust-1.74.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 0ba1390f67b88fc694df26df22c99ae40f56ccdffb479d9228a17a153de965f8c31dfb4d2c65dad4819d42a0b66b96ff9d3e2c404848dd91141220fdce40710f SHA512 efc779bd0e6fb41297a67efdf731abe3857dace889be284d8ac1e6c239a35749185ad5ac3b82c3b2e55edab3f0e51754c8e53e07d207cf8b4b68ede20cdb8591
 DIST rustc-1.71.0-src.tar.xz 151962928 BLAKE2B da8d83cd6621947816630ae487efe7d087266c1352949cedbbd441ba7c7f7c7beb13b9470e66e2f3359c37a050d0e44d22481c418532d3ebb339a456ab092648 SHA512 2c93bafdd248563765a285add48ca77c1e4bad4d5431675ae6a5cdee4cfe7a41e6bcc880a489ca1069a307fd9a005f2d5f8e230dfc95b4a69152b4f9ca49ac44
 DIST rustc-1.71.0-src.tar.xz.asc 801 BLAKE2B e5ddc4b18a6caeeb63c5aed5b5d15989d086f408787d2e603e50e7b8548dc078683062627280fd2a0393bec01c314eb1cc59f9b0e3146abf07b8365a0b44c640 SHA512 cb1b208c8b2bfccf02c73c4246fb238edb0dd10e292c1ef781920964e54e40add3089d988769982c0ce06b719014685b1c37daa2d08b513d86ad73808f4ce3ac
 DIST rustc-1.71.1-src.tar.xz 151983068 BLAKE2B 3dfdbc246feb84a79ae94c2de978c5585ee06cf6b683d2245869b62e28f7c79f89cc589f5431537713bf088236a0b824acefc1b68e418e9eb72e1eea98054e3f SHA512 fd0e5a16bdbeb539184513583089e55f681cb772810df357b6b1464853f7022ac02edab3dd155b2262ed0047e2a25dea3808dd078dcdfce9d399384465009db4
@@ -98,3 +126,5 @@ DIST rustc-1.73.0-src.tar.xz 154319536 BLAKE2B 077bdedb36fdbc30db3c6331ac6014615
 DIST rustc-1.73.0-src.tar.xz.asc 801 BLAKE2B fac2f8652e9a103e8a678b30222e1a505671253827d1d092c4964230a535a85e21cedf00b70f108ac5cb2db961b50e482223e8eaa5b0d585777dd43d80c5931e SHA512 e80ef6280c50522a575f040610184fcf5f45444db2534c6a334e66a69f3338b43d8b34cf035685f28d0e8f006427bbe413611c49fe028c9f72810d74ccfab15e
 DIST rustc-1.74.1-src.tar.xz 155968724 BLAKE2B e05f2379ac94b286f85791a138e1928e5b5b5a7749f0981d82c40c2a12860f55bf96bb2f0e924e35a0f8b2447b13052d38adea909aaa3199105787bb5a4861b3 SHA512 14c7e7ed2f38ab60299d8c7d41d78f042b6b57ef822d577b5138e60bdde31cf141eccd4332a25bc5da3d58eb5313d63c1448b5dfe9e11b8055bb8ea133a9038d
 DIST rustc-1.74.1-src.tar.xz.asc 801 BLAKE2B ddf73175b164233babf31ca3a381b03e20c0f36d017c1d5f85d6ab11f0986d861ab23b11c061e6b2444ced70c3d6a494cc3de4ec86f0deb221a805491bd75420 SHA512 9a96ff9ba9a4e2af4e267b2ec126fc0675c78d0eb767703daa2f28491c3d85c2ab00fbd8584390bf658812ec6c4ab6c57e43b386db59fd505bd3134a8873a09e
+DIST rustc-1.75.0-src.tar.xz 159624388 BLAKE2B 8937b80585eddaa3e1f1ef948899d14a170308518c6fef9fe569560cdd870053776956743f796055f2119399b9ca6c0df12fedd789ae46324d071e5126c4e495 SHA512 7b0f25d91b1b5c317980fc88e059200bd43b56a70b445fbc72fb9b96e09775bfd3a98e9bd9d662af80f0ce3aef527c777ee82777e96ca876f47a972d63da8606
+DIST rustc-1.75.0-src.tar.xz.asc 801 BLAKE2B 434da96b1dc93a5aeed07f4961b087fdd15870e407283ecc00df08dbc1e9f6c65fe459b3a25d39ee55900d53ee583207098ecf3d63f5d6ea114ef0b8398b6a63 SHA512 a0e948553af77ca6e2daa82c69d79079ef7d4ec61957bdff99efd73748200d6c7caa9282daeb3fe3ef849d81a48e66a25336df4c7b6f62f975266aa8b9b93d3a

diff --git a/dev-lang/rust/files/1.75.0-handle-vendored-sources.patch b/dev-lang/rust/files/1.75.0-handle-vendored-sources.patch
new file mode 100644
index 0000000..c68ceba
--- /dev/null
+++ b/dev-lang/rust/files/1.75.0-handle-vendored-sources.patch
@@ -0,0 +1,45 @@
+From 4b7e0a0b56aa2446e670dfd6558380a1039a86aa Mon Sep 17 00:00:00 2001
+From: Arlo Siemsen <arsiem@microsoft.com>
+Date: Thu, 4 Jan 2024 11:40:56 -0600
+Subject: [PATCH] Handle vendored sources when remapping paths
+
+Signed-off-by: Randy Barlow <randy@electronsweatshop.com>
+---
+ src/bootstrap/src/core/builder.rs | 19 ++++++++++++-------
+ 1 file changed, 12 insertions(+), 7 deletions(-)
+
+diff --git a/src/bootstrap/src/core/builder.rs b/src/bootstrap/src/core/builder.rs
+index 4e20babc55a..3770d0687b2 100644
+--- a/src/bootstrap/src/core/builder.rs
++++ b/src/bootstrap/src/core/builder.rs
+@@ -1799,15 +1799,20 @@ pub fn cargo(
+         }
+ 
+         if self.config.rust_remap_debuginfo {
+-            // FIXME: handle vendored sources
+-            let registry_src = t!(home::cargo_home()).join("registry").join("src");
+             let mut env_var = OsString::new();
+-            for entry in t!(std::fs::read_dir(registry_src)) {
+-                if !env_var.is_empty() {
+-                    env_var.push("\t");
+-                }
+-                env_var.push(t!(entry).path());
++            if self.config.vendor {
++                let vendor = self.build.src.join("vendor");
++                env_var.push(vendor);
+                 env_var.push("=/rust/deps");
++            } else {
++                let registry_src = t!(home::cargo_home()).join("registry").join("src");
++                for entry in t!(std::fs::read_dir(registry_src)) {
++                    if !env_var.is_empty() {
++                        env_var.push("\t");
++                    }
++                    env_var.push(t!(entry).path());
++                    env_var.push("=/rust/deps");
++                }
+             }
+             cargo.env("RUSTC_CARGO_REGISTRY_SRC_TO_REMAP", env_var);
+         }
+-- 
+2.43.0
+

diff --git a/dev-lang/rust/files/1.75.0-musl-dynamic-linking.patch b/dev-lang/rust/files/1.75.0-musl-dynamic-linking.patch
new file mode 100644
index 0000000..7dc34f8
--- /dev/null
+++ b/dev-lang/rust/files/1.75.0-musl-dynamic-linking.patch
@@ -0,0 +1,19 @@
+From e42709c46647dab342b826d30324f3e6e5590e00 Mon Sep 17 00:00:00 2001
+From: Jory Pratt <anarchy@gentoo.org>
+Date: Tue, 2 Aug 2022 18:32:53 -0500
+Subject: [PATCH] Enable dynamic linking by default for musl
+
+Signed-off-by: Jory Pratt <anarchy@gentoo.org>
+--- a/compiler/rustc_target/src/spec/base/linux_musl.rs
++++ b/compiler/rustc_target/src/spec/base/linux_musl.rs
+@@ -10,7 +10,7 @@ pub fn opts() -> TargetOptions {
+     base.crt_objects_fallback = Some(CrtObjectsFallback::Musl);
+ 
+     // These targets statically link libc by default
+-    base.crt_static_default = true;
++    base.crt_static_default = false;
+ 
+     base
+ }
+-- 
+2.35.1

diff --git a/dev-lang/rust/rust-1.75.0-r1.ebuild b/dev-lang/rust/rust-1.75.0-r1.ebuild
new file mode 100644
index 0000000..fe636c4
--- /dev/null
+++ b/dev-lang/rust/rust-1.75.0-r1.ebuild
@@ -0,0 +1,797 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+
+inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
+	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.xz"
+	KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+SRC_URI="
+	https://static.rust-lang.org/dist/${SRC}
+	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
+	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
+"
+
+# keep in sync with llvm ebuild of the same version as bundled one.
+ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
+	LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE
+	WebAssembly X86 XCore Xtensa )
+ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
+LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
+
+LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
+
+IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+
+# Please keep the LLVM dependency block separate. Since LLVM is slotted,
+# we need to *really* make sure we're not pulling more than one slot
+# simultaneously.
+
+# How to use it:
+# List all the working slots in LLVM_VALID_SLOTS, newest first.
+LLVM_VALID_SLOTS=( 17 )
+LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
+
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+# (-) usedep needed because we may build with older llvm without that target
+LLVM_DEPEND="|| ( "
+for _s in ${LLVM_VALID_SLOTS[@]}; do
+	LLVM_DEPEND+=" ( "
+	for _x in ${ALL_LLVM_TARGETS[@]}; do
+		LLVM_DEPEND+="
+			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
+			wasm? ( sys-devel/lld:${_s} )"
+	done
+	LLVM_DEPEND+=" )"
+done
+unset _s _x
+LLVM_DEPEND+=" )
+	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
+"
+
+# to bootstrap we need at least exactly previous version, or same.
+# most of the time previous versions fail to bootstrap with newer
+# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
+# but it fails to bootstrap with 1.48.x
+# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
+RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
+RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
+BOOTSTRAP_DEPEND="||
+	(
+		=dev-lang/rust-"${RUST_DEP_PREV}"
+		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
+		=dev-lang/rust-"${RUST_DEP_CURR}"
+		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
+	)
+"
+
+BDEPEND="${PYTHON_DEPS}
+	app-eselect/eselect-rust
+	|| (
+		>=sys-devel/gcc-4.7
+		>=sys-devel/clang-3.5
+	)
+	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
+	!system-llvm? (
+		>=dev-build/cmake-3.13.4
+		app-alternatives/ninja
+	)
+	test? ( dev-debug/gdb )
+	verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+	>=app-arch/xz-utils-5.2
+	net-misc/curl:=[http2,ssl]
+	sys-libs/zlib:=
+	dev-libs/openssl:0=
+	system-llvm? (
+		${LLVM_DEPEND}
+		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
+	)
+	!system-llvm? (
+		!llvm-libunwind? (
+			elibc_musl? ( sys-libs/libunwind:= )
+		)
+	)
+"
+
+RDEPEND="${DEPEND}
+	app-eselect/eselect-rust
+	sys-apps/lsb-release
+"
+
+REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
+	miri? ( nightly )
+	parallel-compiler? ( nightly )
+	rust-analyzer? ( rust-src )
+	test? ( ${ALL_LLVM_TARGETS[*]} )
+	wasm? ( llvm_targets_WebAssembly )
+	x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+	usr/lib/${PN}/${PV}/bin/.*
+	usr/lib/${PN}/${PV}/libexec/.*
+	usr/lib/${PN}/${PV}/lib/lib.*.so
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+	usr/lib/${PN}/${PV}/lib/lib.*.so.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+	"${FILESDIR}"/1.75.0-musl-dynamic-linking.patch
+	"${FILESDIR}"/1.74.1-cross-compile-libz.patch
+	#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch  # pending refresh
+	"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
+	"${FILESDIR}"/1.67.0-doc-wasm.patch
+	# This patch shouldn't be necessary for later versions of Rust because its
+	# code was backported from master.
+	"${FILESDIR}"/1.75.0-handle-vendored-sources.patch
+)
+
+S="${WORKDIR}/${MY_P}-src"
+
+clear_vendor_checksums() {
+	sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
+}
+
+eapply_crate() {
+	pushd "${1:?}" > /dev/null || die
+	local patch="${2:?}"
+	eapply "${patch}"
+	"${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die
+	popd > /dev/null || die
+}
+
+toml_usex() {
+	usex "${1}" true false
+}
+
+bootstrap_rust_version_check() {
+	# never call from pkg_pretend. eselect-rust may be not installed yet.
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
+	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
+	local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
+		eerror "Rust >=${rustc_wanted} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too old"
+	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
+		eerror "Rust <${rustc_toonew} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too new"
+	else
+		einfo "Using rust ${rustc_version} to build"
+	fi
+}
+
+pre_build_checks() {
+	local M=8192
+	# multiply requirements by 1.3 if we are doing x86-multilib
+	if use amd64; then
+		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
+	fi
+	M=$(( $(usex clippy 128 0) + ${M} ))
+	M=$(( $(usex miri 128 0) + ${M} ))
+	M=$(( $(usex rustfmt 256 0) + ${M} ))
+	# add 2G if we compile llvm and 256M per llvm_target
+	if ! use system-llvm; then
+		M=$(( 2048 + ${M} ))
+		local ltarget
+		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+		done
+	fi
+	M=$(( $(usex wasm 256 0) + ${M} ))
+	M=$(( $(usex debug 2 1) * ${M} ))
+	eshopts_push -s extglob
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		M=$(( 15 * ${M} / 10 ))
+	fi
+	eshopts_pop
+	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
+	M=$(( $(usex doc 256 0) + ${M} ))
+	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+# Is LLVM being linked against libc++?
+is_libcxx_linked() {
+	local code='#include <ciso646>
+#if defined(_LIBCPP_VERSION)
+	HAVE_LIBCXX
+#endif
+'
+	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
+	[[ ${out} == *HAVE_LIBCXX* ]]
+}
+
+pkg_pretend() {
+	pre_build_checks
+}
+
+pkg_setup() {
+	pre_build_checks
+	python-any-r1_pkg_setup
+
+	export LIBGIT2_NO_PKG_CONFIG=1 #749381
+	if tc-is-cross-compiler; then
+		export PKG_CONFIG_ALLOW_CROSS=1
+		export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
+		export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
+		export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
+
+		use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
+		use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
+		local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
+		use "llvm_targets_${cross_llvm_target}" || \
+			die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
+	fi
+
+	use system-bootstrap && bootstrap_rust_version_check
+
+	if use system-llvm; then
+		llvm_pkg_setup
+
+		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+		export LLVM_LINK_SHARED=1
+		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+	fi
+}
+
+esetup_unwind_hack() {
+	# https://bugs.gentoo.org/870280
+	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
+	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
+	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
+	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
+	local fakelib="${T}/fakelib"
+	mkdir -p "${fakelib}" || die
+	# we need both symlinks, one for cargo runtime, other for linker.
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
+	export LD_LIBRARY_PATH="${fakelib}"
+	export RUSTFLAGS+=" -L${fakelib}"
+	# this is a literally magic variable that gets through cargo cache, without it some
+	# crates ignore RUSTFLAGS.
+	# this variable can not contain leading space.
+	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
+}
+
+src_prepare() {
+	eapply_crate vendor/openssl-sys "${FILESDIR}"/1.72.0-libressl-openssl-sys.patch
+
+	# Clear vendor checksums for crates that we patched to bump libc.
+	# NOTE: refresh this on each bump.
+	#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
+	#	terminal_size tracing-tree; do
+	#	clear_vendor_checksums "${i}"
+	#done
+
+	if ! use system-bootstrap; then
+		has_version sys-devel/gcc || esetup_unwind_hack
+		local rust_stage0_root="${WORKDIR}"/rust-stage0
+		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
+
+		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
+			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
+	fi
+
+	default
+}
+
+src_configure() {
+	filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
+
+	local rust_target="" rust_targets="" arch_cflags
+
+	# Collect rust target names to compile standard libs for all ABIs.
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
+	done
+	if use wasm; then
+		rust_targets+=",\"wasm32-unknown-unknown\""
+		if use system-llvm; then
+			# un-hardcode rust-lld linker for this target
+			# https://bugs.gentoo.org/715348
+			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die
+		fi
+	fi
+	rust_targets="${rust_targets#,}"
+
+	# cargo and rustdoc are mandatory and should always be included
+	local tools='"cargo","rustdoc"'
+	use clippy && tools+=',"clippy"'
+	use miri && tools+=',"miri"'
+	use profiler && tools+=',"rust-demangler"'
+	use rustfmt && tools+=',"rustfmt"'
+	use rust-analyzer && tools+=',"rust-analyzer"'
+	use rust-src && tools+=',"src"'
+
+	local rust_stage0_root
+	if use system-bootstrap; then
+		local printsysroot
+		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
+		rust_stage0_root="${printsysroot}"
+	else
+		rust_stage0_root="${WORKDIR}"/rust-stage0
+	fi
+	# in case of prefix it will be already prefixed, as --print sysroot returns full path
+	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+	rust_target="$(rust_abi)"
+	rust_build="$(rust_abi "${CBUILD}")"
+	rust_host="$(rust_abi "${CHOST}")"
+
+	local cm_btype="$(usex debug DEBUG RELEASE)"
+	cat <<- _EOF_ > "${S}"/config.toml
+		changelog-seen = 2
+		[llvm]
+		download-ci-llvm = false
+		optimize = $(toml_usex !debug)
+		release-debuginfo = $(toml_usex debug)
+		assertions = $(toml_usex debug)
+		ninja = true
+		targets = "${LLVM_TARGETS// /;}"
+		experimental-targets = ""
+		link-shared = $(toml_usex system-llvm)
+		$(if is_libcxx_linked; then
+			# https://bugs.gentoo.org/732632
+			echo "use-libcxx = true"
+			echo "static-libstdcpp = false"
+		fi)
+		$(case "${rust_target}" in
+			i586-*-linux-*)
+				# https://github.com/rust-lang/rust/issues/93059
+				echo 'cflags = "-fcf-protection=none"'
+				echo 'cxxflags = "-fcf-protection=none"'
+				echo 'ldflags = "-fcf-protection=none"'
+				;;
+			*)
+				;;
+		esac)
+		enable-warnings = false
+		[llvm.build-config]
+		CMAKE_VERBOSE_MAKEFILE = "ON"
+		$(if ! tc-is-cross-compiler; then
+			# When cross-compiling, LLVM is compiled twice, once for host and
+			# once for target.  Unfortunately, this build configuration applies
+			# to both, which means any flags applicable to one target but not
+			# the other will break.  Conditionally disable respecting user
+			# flags when cross-compiling.
+			echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\""
+			echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\""
+			echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\""
+		fi)
+		[build]
+		build-stage = 2
+		test-stage = 2
+		build = "${rust_build}"
+		host = ["${rust_host}"]
+		target = [${rust_targets}]
+		cargo = "${rust_stage0_root}/bin/cargo"
+		rustc = "${rust_stage0_root}/bin/rustc"
+		rustfmt = "${rust_stage0_root}/bin/rustfmt"
+		docs = $(toml_usex doc)
+		compiler-docs = false
+		submodules = false
+		python = "${EPYTHON}"
+		locked-deps = true
+		vendor = true
+		extended = true
+		tools = [${tools}]
+		verbose = 2
+		sanitizers = false
+		profiler = $(toml_usex profiler)
+		cargo-native-static = false
+		[install]
+		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
+		sysconfdir = "etc"
+		docdir = "share/doc/rust"
+		bindir = "bin"
+		libdir = "lib"
+		mandir = "share/man"
+		[rust]
+		# https://github.com/rust-lang/rust/issues/54872
+		codegen-units-std = 1
+		optimize = true
+		debug = $(toml_usex debug)
+		debug-assertions = $(toml_usex debug)
+		debug-assertions-std = $(toml_usex debug)
+		debuginfo-level = $(usex debug 2 0)
+		debuginfo-level-rustc = $(usex debug 2 0)
+		debuginfo-level-std = $(usex debug 2 0)
+		debuginfo-level-tools = $(usex debug 2 0)
+		debuginfo-level-tests = 0
+		backtrace = true
+		incremental = false
+		$(if ! tc-is-cross-compiler; then
+			echo "default-linker = \"$(tc-getCC)\""
+		fi)
+		parallel-compiler = $(toml_usex parallel-compiler)
+		channel = "$(usex nightly nightly stable)"
+		description = "gentoo"
+		rpath = false
+		verbose-tests = true
+		optimize-tests = $(toml_usex !debug)
+		codegen-tests = true
+		dist-src = false
+		remap-debuginfo = true
+		lld = $(usex system-llvm false $(toml_usex wasm))
+		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+		# https://github.com/rust-lang/rust/issues/74976
+		# https://github.com/rust-lang/rust/issues/76526
+		deny-warnings = $(usex wasm $(usex doc false true) true)
+		backtrace-on-ice = true
+		jemalloc = false
+		lto = "$(usex lto fat off)"
+		[dist]
+		src-tarball = false
+		compression-formats = ["xz"]
+		compression-profile = "balanced"
+	_EOF_
+
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${rust_target}]
+			ar = "$(tc-getAR)"
+			cc = "$(tc-getCC)"
+			cxx = "$(tc-getCXX)"
+			linker = "$(tc-getCC)"
+			ranlib = "$(tc-getRANLIB)"
+			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
+		# but we patch it and set to false here as well
+		if use elibc_musl; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				crt-static = false
+			_EOF_
+		fi
+	done
+	if use wasm; then
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.wasm32-unknown-unknown]
+			linker = "$(usex system-llvm lld rust-lld)"
+			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
+			profiler = false
+		_EOF_
+	fi
+
+	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
+	# experimental cross support
+	# discussion: https://bugs.gentoo.org/679878
+	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
+	# it would be much better if we could split out stdlib
+	# complilation to separate ebuild and abuse CATEGORY to
+	# just install to /usr/lib/rustlib/<target>
+
+	# extra targets defined as a bash array
+	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
+	# best place would be /etc/portage/env/dev-lang/rust
+	# Example:
+	# RUST_CROSS_TARGETS=(
+	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
+	# )
+	# no extra hand holding is done, no target transformations, all
+	# values are passed as-is with just basic checks, so it's up to user to supply correct values
+	# valid rust targets can be obtained with
+	# 	rustc --print target-list
+	# matching cross toolchain has to be installed
+	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
+	# only gcc toolchains installed with crossdev are checked for now.
+
+	# BUG: we can't pass host flags to cross compiler, so just filter for now
+	# BUG: this should be more fine-grained.
+	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
+
+	local cross_target_spec
+	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
+		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
+		local cross_llvm_target="${cross_target_spec%%:*}"
+		# extracts toolchain triples, <rust-target>:<CTARGET>
+		local cross_triples="${cross_target_spec#*:}"
+		# extracts first element after before : separator
+		local cross_rust_target="${cross_triples%%:*}"
+		# extracts last element after : separator
+		local cross_toolchain="${cross_triples##*:}"
+		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
+		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${cross_rust_target}]
+			ar = "${cross_toolchain}-ar"
+			cc = "${cross_toolchain}-gcc"
+			cxx = "${cross_toolchain}-g++"
+			linker = "${cross_toolchain}-gcc"
+			ranlib = "${cross_toolchain}-ranlib"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		if [[ "${cross_toolchain}" == *-musl* ]]; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+			_EOF_
+		fi
+
+		# append cross target to "normal" target list
+		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
+		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+		rust_targets="${rust_targets},\"${cross_rust_target}\""
+		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+		ewarn
+		ewarn "Enabled ${cross_rust_target} rust target"
+		ewarn "Using ${cross_toolchain} cross toolchain"
+		ewarn
+		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+			ewarn "'sys-devel/binutils[multitarget]' is not installed"
+			ewarn "'strip' will be unable to strip cross libraries"
+			ewarn "cross targets will be installed with full debug information"
+			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+			ewarn
+			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+			ewarn
+		fi
+	done
+	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+	einfo "Rust configured with the following flags:"
+	echo
+	echo RUSTFLAGS="\"${RUSTFLAGS}\""
+	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
+	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
+	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
+	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+	env | grep "CFLAGS_.*"
+	echo
+	einfo "config.toml contents:"
+	cat "${S}"/config.toml || die
+	echo
+}
+
+src_compile() {
+	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+}
+
+src_test() {
+	# https://rustc-dev-guide.rust-lang.org/tests/intro.html
+
+	# those are basic and codegen tests.
+	local tests=(
+		codegen
+		codegen-units
+		compile-fail
+		incremental
+		mir-opt
+		pretty
+		run-make
+	)
+
+	# fails if llvm is not built with ALL targets.
+	# and known to fail with system llvm sometimes.
+	use system-llvm || tests+=( assembly )
+
+	# fragile/expensive/less important tests
+	# or tests that require extra builds
+	# TODO: instead of skipping, just make some nonfatal.
+	if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
+		tests+=(
+			rustdoc
+			rustdoc-js
+			rustdoc-js-std
+			rustdoc-ui
+			run-make-fulldeps
+			ui
+			ui-fulldeps
+		)
+	fi
+
+	local i failed=()
+	einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
+	for i in "${tests[@]}"; do
+		local t="src/test/${i}"
+		einfo "rust_src_test: running ${t}"
+		if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
+				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
+		then
+				failed+=( "${t}" )
+				eerror "rust_src_test: ${t} failed"
+		fi
+	done
+
+	if [[ ${#failed[@]} -ne 0 ]]; then
+		eerror "rust_src_test: failure summary: ${failed[@]}"
+		die "aborting due to test failures"
+	fi
+}
+
+src_install() {
+	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+
+	# bug #689562, #689160
+	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
+	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+
+	local symlinks=(
+		cargo
+		rustc
+		rustdoc
+		rust-gdb
+		rust-gdbgui
+		rust-lldb
+	)
+
+	use clippy && symlinks+=( clippy-driver cargo-clippy )
+	use miri && symlinks+=( miri cargo-miri )
+	use profiler && symlinks+=( rust-demangler )
+	use rustfmt && symlinks+=( rustfmt cargo-fmt )
+	use rust-analyzer && symlinks+=( rust-analyzer )
+
+	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
+	local i
+	for i in "${symlinks[@]}"; do
+		# we need realpath on /usr/bin/* symlink return version-appended binary path.
+		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
+		# need to fix eselect-rust to remove this hack.
+		local ver_i="${i}-${PV}"
+		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
+			einfo "Installing ${i} symlink"
+			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
+		else
+			ewarn "${i} symlink requested, but source file not found"
+			ewarn "please report this"
+		fi
+		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
+	done
+
+	# symlinks to switch components to active rust in eselect
+	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
+	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
+	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
+	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
+	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+
+	newenvd - "50${P}" <<-_EOF_
+		LDPATH="${EPREFIX}/usr/lib/rust/lib"
+		MANPATH="${EPREFIX}/usr/lib/rust/man"
+	_EOF_
+
+	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+
+	# note: eselect-rust adds EROOT to all paths below
+	cat <<-_EOF_ > "${T}/provider-${P}"
+		/usr/bin/cargo
+		/usr/bin/rustdoc
+		/usr/bin/rust-gdb
+		/usr/bin/rust-gdbgui
+		/usr/bin/rust-lldb
+		/usr/lib/rustlib
+		/usr/lib/rust/lib
+		/usr/lib/rust/libexec
+		/usr/lib/rust/man
+		/usr/share/doc/rust
+	_EOF_
+
+	if use clippy; then
+		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+	fi
+	if use miri; then
+		echo /usr/bin/miri >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+	fi
+	if use profiler; then
+		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
+	fi
+	if use rustfmt; then
+		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
+	fi
+	if use rust-analyzer; then
+		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
+	fi
+
+	insinto /etc/env.d/rust
+	doins "${T}/provider-${P}"
+
+	if use dist; then
+		insinto "/usr/lib/${PN}/${PV}/dist"
+		doins -r "${S}/build/dist/."
+	fi
+}
+
+pkg_postinst() {
+	eselect rust update
+
+	if has_version dev-debug/gdb || has_version dev-debug/lldb; then
+		elog "Rust installs a helper script for calling GDB and LLDB,"
+		elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
+	fi
+
+	if has_version app-editors/emacs; then
+		elog "install app-emacs/rust-mode to get emacs support for rust."
+	fi
+
+	if has_version app-editors/gvim || has_version app-editors/vim; then
+		elog "install app-vim/rust-vim to get vim support for rust."
+	fi
+}
+
+pkg_postrm() {
+	eselect rust cleanup
+}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2024-02-12 23:16 orbea
  0 siblings, 0 replies; 27+ messages in thread
From: orbea @ 2024-02-12 23:16 UTC (permalink / raw
  To: gentoo-commits

commit:     7e57bc091cd779e3685effa0648edaf105c03a8c
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Mon Feb 12 21:13:03 2024 +0000
Commit:     orbea <orbea <AT> riseup <DOT> net>
CommitDate: Mon Feb 12 21:13:03 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=7e57bc09

dev-lang/rust: sync ::gentoo

Signed-off-by: orbea <orbea <AT> riseup.net>

 .../rust/files/1.74.1-cross-compile-libz.patch     | 19 +++++++++
 dev-lang/rust/metadata.xml                         |  8 ++++
 dev-lang/rust/rust-1.74.1.ebuild                   | 47 +++++++++++++++++-----
 3 files changed, 63 insertions(+), 11 deletions(-)

diff --git a/dev-lang/rust/files/1.74.1-cross-compile-libz.patch b/dev-lang/rust/files/1.74.1-cross-compile-libz.patch
new file mode 100644
index 0000000..f2a881b
--- /dev/null
+++ b/dev-lang/rust/files/1.74.1-cross-compile-libz.patch
@@ -0,0 +1,19 @@
+https://paste.sr.ht/~kchibisov/682321e0fd4a3ece4a4b7b71591896f5cd3cdb22
+https://github.com/gentoo/gentoo/pull/35246#discussion_r1484525497
+
+diff --git a/compiler/rustc_llvm/build.rs b/compiler/rustc_llvm/build.rs
+index f606fa483ca..8a2e1c40e8b 100644
+--- a/compiler/rustc_llvm/build.rs
++++ b/compiler/rustc_llvm/build.rs
+@@ -237,10 +237,7 @@ fn main() {
+     // of llvm-config, not the target that we're attempting to link.
+     let mut cmd = Command::new(&llvm_config);
+     cmd.arg(llvm_link_arg).arg("--libs");
+-
+-    if !is_crossed {
+-        cmd.arg("--system-libs");
+-    }
++    cmd.arg("--system-libs");
+ 
+     if (target.starts_with("arm") && !target.contains("freebsd"))
+         || target.starts_with("mips-")

diff --git a/dev-lang/rust/metadata.xml b/dev-lang/rust/metadata.xml
index e28f627..65d7703 100644
--- a/dev-lang/rust/metadata.xml
+++ b/dev-lang/rust/metadata.xml
@@ -5,6 +5,14 @@
 		<email>gyakovlev@gentoo.org</email>
 		<name>Georgy Yakovlev</name>
 	</maintainer>
+	<maintainer type="person" proxied="yes">
+		<email>randy@electronsweatshop.com</email>
+		<name>Randy Barlow</name>
+	</maintainer>
+	<maintainer type="person" proxied="yes">
+		<email>navi@vlhl.dev</email>
+		<name>Anna Figueiredo Gomes</name>
+	</maintainer>
 	<maintainer type="project">
 		<email>rust@gentoo.org</email>
 		<name>Rust Project</name>

diff --git a/dev-lang/rust/rust-1.74.1.ebuild b/dev-lang/rust/rust-1.74.1.ebuild
index eee5354..d6fd639 100644
--- a/dev-lang/rust/rust-1.74.1.ebuild
+++ b/dev-lang/rust/rust-1.74.1.ebuild
@@ -163,6 +163,7 @@ RESTRICT="test"
 VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
 
 PATCHES=(
+	"${FILESDIR}"/1.74.1-cross-compile-libz.patch
 	#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch  # pending refresh
 	"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
 	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
@@ -192,7 +193,7 @@ bootstrap_rust_version_check() {
 	[[ ${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) )
+	local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
 	rustc_version=${rustc_version[0]#rust-bin-}
 	rustc_version=${rustc_version#rust-}
 
@@ -264,6 +265,18 @@ pkg_setup() {
 	python-any-r1_pkg_setup
 
 	export LIBGIT2_NO_PKG_CONFIG=1 #749381
+	if tc-is-cross-compiler; then
+		export PKG_CONFIG_ALLOW_CROSS=1
+		export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
+		export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
+		export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
+
+		use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
+		use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
+		local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
+		use "llvm_targets_${cross_llvm_target}" || \
+			die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
+	fi
 
 	use system-bootstrap && bootstrap_rust_version_check
 
@@ -297,6 +310,7 @@ esetup_unwind_hack() {
 
 src_prepare() {
 	eapply_crate vendor/openssl-sys "${FILESDIR}"/1.72.0-libressl-openssl-sys.patch
+
 	# Clear vendor checksums for crates that we patched to bump libc.
 	# NOTE: refresh this on each bump.
 	#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
@@ -307,7 +321,7 @@ src_prepare() {
 	if ! use system-bootstrap; then
 		has_version sys-devel/gcc || esetup_unwind_hack
 		local rust_stage0_root="${WORKDIR}"/rust-stage0
-		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
+		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
 
 		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
 			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
@@ -356,6 +370,8 @@ src_configure() {
 	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
 
 	rust_target="$(rust_abi)"
+	rust_build="$(rust_abi "${CBUILD}")"
+	rust_host="$(rust_abi "${CHOST}")"
 
 	local cm_btype="$(usex debug DEBUG RELEASE)"
 	cat <<- _EOF_ > "${S}"/config.toml
@@ -387,17 +403,24 @@ src_configure() {
 		enable-warnings = false
 		[llvm.build-config]
 		CMAKE_VERBOSE_MAKEFILE = "ON"
-		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
-		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
-		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
+		$(if ! tc-is-cross-compiler; then
+			# When cross-compiling, LLVM is compiled twice, once for host and
+			# once for target.  Unfortunately, this build configuration applies
+			# to both, which means any flags applicable to one target but not
+			# the other will break.  Conditionally disable respecting user
+			# flags when cross-compiling.
+			echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\""
+			echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\""
+			echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\""
+		fi)
 		[build]
 		build-stage = 2
 		test-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
+		build = "${rust_build}"
+		host = ["${rust_host}"]
 		target = [${rust_targets}]
 		cargo = "${rust_stage0_root}/bin/cargo"
 		rustc = "${rust_stage0_root}/bin/rustc"
@@ -435,7 +458,9 @@ src_configure() {
 		debuginfo-level-tests = 0
 		backtrace = true
 		incremental = false
-		default-linker = "$(tc-getCC)"
+		$(if ! tc-is-cross-compiler; then
+			echo "default-linker = \"$(tc-getCC)\""
+		fi)
 		parallel-compiler = $(toml_usex parallel-compiler)
 		channel = "$(usex nightly nightly stable)"
 		description = "gentoo"


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2024-02-12 23:16 orbea
  0 siblings, 0 replies; 27+ messages in thread
From: orbea @ 2024-02-12 23:16 UTC (permalink / raw
  To: gentoo-commits

commit:     c224964f0f8395366b2249c270674ef68541338d
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Mon Feb 12 21:12:01 2024 +0000
Commit:     orbea <orbea <AT> riseup <DOT> net>
CommitDate: Mon Feb 12 21:12:01 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=c224964f

dev-lang/rust: drop versions

Signed-off-by: orbea <orbea <AT> riseup.net>

 dev-lang/rust/Manifest                             |  216 ---
 dev-lang/rust/files/1.64.0-libressl.patch          |   24 -
 ...64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch |   60 -
 ....0-ignore-broken-and-non-applicable-tests.patch |   40 -
 dev-lang/rust/files/1.67.1-rustc_expand.patch      | 1427 --------------------
 .../rust/files/1.70.0-libressl-openssl-sys.patch   |   10 -
 dev-lang/rust/rust-1.65.0.ebuild                   |  762 -----------
 dev-lang/rust/rust-1.66.1.ebuild                   |  760 -----------
 dev-lang/rust/rust-1.67.1-r1.ebuild                |  751 ----------
 dev-lang/rust/rust-1.68.2.ebuild                   |  750 ----------
 dev-lang/rust/rust-1.69.0-r1.ebuild                |  751 ----------
 dev-lang/rust/rust-1.70.0.ebuild                   |  752 -----------
 12 files changed, 6303 deletions(-)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 50ff5bb..91c69ab 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -1,207 +1,3 @@
-DIST rust-1.64.0-aarch64-unknown-linux-gnu.tar.xz 245636524 BLAKE2B 90e405bc6e7f47aec091924bcd7a35017d591936b2697f2b0ddc5271e65fa431cc193a2b392489b6636896fa2d4f3d8f5096d197cfed36e812ea7f3986130c85 SHA512 c163b19a56148646ebbdb10b5b20459a206b4a1c45a2de9ce69f2e45dc5527cc69920f81007ee6fb75080782d534a2a39f7580d0c8cfdcf36ebed971b2513b63
-DIST rust-1.64.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 3ed79e6a5168676c19b9092692576b72b7bee6cc6fc6fc9213d492ac9641974e0bfefd9eee2663852580ee05038becb3045ff4410fe96aa8e529afc4d3652abb SHA512 14e635fbd60512e8d36c50c2c07d510236cc73661a6294f0a01fe260a945581885c60783e72cbcc0d85b87a161e0940b34b496380bbab659c6e5d0dbb4050a4d
-DIST rust-1.64.0-aarch64-unknown-linux-musl.tar.xz 226328036 BLAKE2B 43119c95866b3bd7e1b0832079f4fa23d79f5168e1aeb1d9a984897486cdaabbf035150e5633114c3d87afc8cf47e2d591e7c32961cc7cef99595fec303bc348 SHA512 8af3a7293b73d5f3129a17651cc8009290e5eade4802a872bb2a568444c60b4227a89d419c751fa394bf81a38f553a7418a0abd6ec3234737148d1561b91bace
-DIST rust-1.64.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 4807f2cef672af6be484e5a7368110ebc84d4bb7aa0f97819171c43b066fac041aa341bc5df696347ecdc7e5de37dc8c159ef7308c8a487c105b977edc794a7b SHA512 ec4c9eb3d9207970f19ca9d6b12bfc293786fed57e20a3a9fa25fc6b70a80a12752c6f57c095731edc1fde1c608a94f7d89e89219f8ecd89a13758df891cc0ee
-DIST rust-1.64.0-arm-unknown-linux-gnueabi.tar.xz 207018112 BLAKE2B 1f8d1bb48e5f529b84c99a6941aa0c3c6d49287492b9f63f8e9d5688bd530c67ce9ea2dcd8951a34c96d54d559f4e84cdb569397613bbedba892341fd90817d9 SHA512 07dfe4449359c89719f440da7986f35fdc1873270a8910a708a0f37daef10cf7d8dca7b6b4fb6d741bed490ba12d4e9b455aa1d13d9ae80f22e2b9c879beafac
-DIST rust-1.64.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B d0653612a7e9bd4cf27ae5f7f4152ee0f14fde8d5e20a7b738a6925e395083ac851500e2b65e0a40a5b883fa441f11ec7574a5e40b4964fb38f237bdf0b17349 SHA512 3314a83af0a0fd2dbd73531952002a47d89ef155cf68037b387c5c7afbe7dc69c68bf0fa429eb45a721ae9176a82a876de04091e8fc3929c3c4825ee214c6124
-DIST rust-1.64.0-arm-unknown-linux-gnueabihf.tar.xz 208017632 BLAKE2B fc10f068fb154021391c309f36d2d18bdfe09b3e17d9ac02e8f0c258d87959ce7b62dfab80ebbfc6d0c68fa6beeb25daa7b7b3a7ce763637121c7afdcb32699a SHA512 bac5fe98e68a782683a5df0d199e8ce67d9db9fbe9f590075b34e33c898198d372abd94eeef48330d1a7799fa1396add3b1ffc154281dd5bd276f4409e3b4027
-DIST rust-1.64.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 210e7de45ab02fd2c83c1978104cedd28daa2499e475143660d5e3a6a4dd4897a866c6df22f929c61da08d2b61df489277fff73492a7e7a7749f2fe293de97df SHA512 221a0a70c03e049d2c6095575a2aabe1d32937123c86550b1f6f1b23734e996ff4bfc167b7e679809e3e383c25f15100772d8f75456e556d4ebd3aa73d789908
-DIST rust-1.64.0-armv7-unknown-linux-gnueabihf.tar.xz 212867232 BLAKE2B b3f9501c4cd68d9ca59d8a5c49cc512c0a97605eb74158c590db4ceabce5ff1aa99373c676d15676627c0631de8b58bfc4ca21463dd1109d6ec6451db909bea4 SHA512 3fc482ed9dd1648ccfd2fb459eb7c738ca26eab396b1a39b316cef10b8663e97b0ec008035936cf5e47f7cf9f8a0416cf09d638af174ffdf5b58b54b2ecb6975
-DIST rust-1.64.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B ba21487ad1a304be6cf2a12446ed674fb67e9d4b1b107ca675af236a45de6647bf96512a70a2e813466e85d388b51c674dc7435c185011ec9572bf28cbf513f6 SHA512 384f09eec47175b2cc40560a6b2ad4e792ab4b78e5c750231a312858882281ef33b40e797ccbb0a0bcb2ea3dfae4703b80941d936eb4cea229166375511b1514
-DIST rust-1.64.0-i686-unknown-linux-gnu.tar.xz 232295664 BLAKE2B 452a13cb499a29167a403b54d86c08fa84b4a10d51d7ef37954bc79f13d0ada0b3a256b32f804977d03b9e31331ef250e160b14f1c8fcdf93876001b9827957a SHA512 763966e449ce46e998f0ed9670d7e6cfae3a7147360c9cb85003cf382e1e01dabc1a448d35a102aafa96105fa65c284ec161b9bfa5061225de6d6acbf40ad480
-DIST rust-1.64.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b6055151a6442c5ae5968a380e3c5e9367307f91bc7304bcbd90d2a9434145682a70416125bb8dfecfcfce5449e6497591034adbfd4b5537601492757915c131 SHA512 1bb9b52aca4fc0f300e31d96e5fe5fbe0bec45a1ed848da66e1c83ef4fea20ebec86478ed94efd13dad3f8c6d52a330356d39a894387b87202e66400268fd4e0
-DIST rust-1.64.0-mips-unknown-linux-gnu.tar.xz 167831852 BLAKE2B 76e00291f2e2b18f2261677c1d6e322f8fef01da96514306b1fefc1a29e7e4fd0e5971614ad5c3a03a9a54321a01954d856b21df032205317c21b37470a6909c SHA512 29965d77a7fd6bcc74862d1c24a5f4843eb1870ece25691afdfa464c66617cb683cc73f8b991dee96d06e5e4791f6b71f7c81cf4f1d97539c3b9cbb15bf490da
-DIST rust-1.64.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 81f100c9a788c863b2f2388e7264b8e6b4ea062fd46d6c0e922561f491cf86227c46511ab538d8bc56a9b2d01d2ae19f105966ea00f2ea86592128e4c26b55ae SHA512 41e59d670efc9085c6e3ed59bb8808dc747eebfbd65ed976da04ff70095d91f15b43f8d257a09d2a6ee1cb07c5d1f49081529e0fc8234a26599a28ddaf167f4b
-DIST rust-1.64.0-mips64-unknown-linux-gnuabi64.tar.xz 172953460 BLAKE2B 68aa0d08ba233ebe95c1107574ce9165cc2afc0a43db044b6951055e30f22ed6070f9fe10f0482923f767e39fb99f887da59dcf679c3e9c16345f943b0c3012c SHA512 59250c13e980fc38b6da08faf7713c1c9ea2865793cfb0032a65a499bbfd4f7af94604bbdab4e0fd34a0be6b74db8cdcb8c3859e5c13d8a29d8c953d67a9bc84
-DIST rust-1.64.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B eb53e83dde3acdc3cfb84c7285a1373c4059c0c06e4cfe855339ce817a0a8cbea33da9fa0894a9640871003e8058482e46a31b04dd9ad1d8ae8e9ac1b3c72f7b SHA512 2e8438ca78bfd610c8c7b99a4aa2663cfddc611fa4495f490789d7838b80a8f90b9eb7f59171da187fdbc8a17b4ebc20eb69ccdaa75cca4966246e78dd41473d
-DIST rust-1.64.0-mips64el-unknown-linux-gnuabi64.tar.xz 175504748 BLAKE2B 9399b396f23b5fac32c3f78902e2a2ba21b2ec4d6f1333a963c7f8b025f45667c2a895b36e25991d71f0fe9938807c592b955bbafc6a627fdf98384c371f366a SHA512 97d929193c5fbbf20a2347570a803b1f62f7af40745e82996bf286b2b87edf24f6c1f1a938d4571d6ec1583d8940cca03390c3f5517ac1026e277d92cf650db2
-DIST rust-1.64.0-mips64el-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 8d728073e720b39572b1150e04bc58cd0c1cf0b96e56699ad52cb3bb32dc28b9c5d8e163f07419f289c1ad028a99036c8cb979e02c7df425e74a883239a7b2f2 SHA512 56458270e4810c3bc711aeb14b0f89ec56352a3fb98a5f34a56a1309ce5ff265806cc9c147bd4268c2e1cdd51dd13659aa4f58ad6de9b2ce2e6e89981798c996
-DIST rust-1.64.0-mipsel-unknown-linux-gnu.tar.xz 172189848 BLAKE2B aff9136ab374a3e39674c17b1ffa4fb8fe077301284b5dde927e0cf56e51edbb912b40d852aac4ad4d4e39f3ae20e68174dac338af6682735e8a031607652176 SHA512 9283e1e9eeff6c67c49e656709e1a6c6c52329aa913c6024af3aebd889b594f48f0c8172270c579a52d5980f7a42730a6184254b5c8002928f8f93c484dad211
-DIST rust-1.64.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 613ac8c773cc6585a99295e2770879cf7a9a56e1ac43256a1d8a56a12bd9b8aa08e49df96819805f4e98230d5c6d106eae837102c21f044e7e0b7756c453c529 SHA512 24d15870efaf03a916d69a358871a427869bc41ce164dcf8968564dc3f213603d0572f34b8ebbcd98d6653ff1e70664baf8c2dbdb32a0779f361338d4d3a0f43
-DIST rust-1.64.0-powerpc-unknown-linux-gnu.tar.xz 204541208 BLAKE2B 5bbd65d8aece3e32bca62d8a8b210cf155a786501c96e509462d0c45b15f19910794ff85ade0c42b575f41bd47f4f3250c011152b968ff1ad000ead6b7a200ad SHA512 13cc41679bf1bdb94d042de18696685087f3bfc84c0f99567b8c9dc6a5796c0f122499254ca8032eced8fa53623133a8b6652e14f398a9cea95ac3364a227f45
-DIST rust-1.64.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f4ed9d8a006f787d67b7aa18361079724dad1378416fabf18d380a67a45db6475d7da8e5389a057fd117da6af6dc7d891f9e6567af09f91c538ba6459b4e12db SHA512 f616b0e5ef7e0689f33905864c8d48405e18b5ada73c3cb9a8f9a6d80173ee3abf10448403fe7790be902123d55295412ff7af77db4770f6c824439af39e0a20
-DIST rust-1.64.0-powerpc64-unknown-linux-gnu.tar.xz 210911224 BLAKE2B b8726c1036d8de07684a7ed439a7d8365722d1224644a76219df776fc6bb0c97200afbc92a6054cbe0e98127c239cde9c06ef56a73a92b9ff320c135f8c0ecaf SHA512 8ed6150a13dfa136e16e0cee775f8c9d2926569fa17b6b88fb4e9ce1c1a127c8fda828a944e18e2bf184a0ae39a61db478103ad96acb6139e7cb25b69efdffcd
-DIST rust-1.64.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b8659a6b076db11acf124d73492fd21250df3924323616931cd8a8bfd5bb00ee1c48caf4e2448bd8e0120a3bf838cf73dcb810bfae8f87d487fb507b0ad132af SHA512 c24287ac0d49fda9fdc63421cc1901b8b55fee8b0701436a2d2c809ea03cec666b5a3c941a400bf73f4365576fc2a3bac85060013df76275dcc3dc32d376bbaa
-DIST rust-1.64.0-powerpc64le-unknown-linux-gnu.tar.xz 224504724 BLAKE2B dfe47070e6f9c1812b0d980c98e21c71e3d34ca41d7c4c0995b559a02cf394ec6043500a34f245624588fccd83335c32a4c57bb092b3c079f705ab4d8f1547d9 SHA512 545b1076d7bb3d32775e1a7343cbe1c6feaf5042f7a4524841970846b64251b5bc7be080994f129868f183072fb793f32a8a0ab588ac9b484e25cfac636630b8
-DIST rust-1.64.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 757dfda571cca4c2028464701970e66fc0a644cf2eec71b52ad6e499b05b3f4af1a9d4515b7ae116b07d5231b8e81ecc0a9e07c9e6603a5babada41e860f6b83 SHA512 fb22306416bb6b3021e53eebb97cb5f34a64873124b0c25409115feba2c2955082456b47b383e4ddaf3ce440b64547d9eabe444b75a78014aa119f7299bec99d
-DIST rust-1.64.0-riscv64gc-unknown-linux-gnu.tar.xz 191293592 BLAKE2B c32eb7b75b33b1eb53eab0b5823ade30c6dcffd8daddf04b7914a5f48ace80873573392659c5bd5a525cd954a9f078cdefba2873a3a1905f58cf9307360a4791 SHA512 b6e97215a5e8fa6f42cd609dd949f598f69779e8318f3c44e757f7c38fc67588db8169e0f263c7f121cdd3bd8c6cc225a32cc3aa80fcd7f718f9bee6f15cd94c
-DIST rust-1.64.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d922b1c72bd0fb7cfa0455f56d8c6ecee491a96e6bc54c0058ff01d8b152c2a87b4ade33f4445f345564fd1a2c9a54b81b52c1a37a32f1f91a78acc82a568567 SHA512 8860237891950bf1b9b958c950194b3617c5a865bdb1ea7834e84f74781b26959fb8a729d2043ee8cd63ee1144e307691b4adaf252d31c72f4e02ba60cea694e
-DIST rust-1.64.0-s390x-unknown-linux-gnu.tar.xz 225451932 BLAKE2B f7043af9d80b814e8b7988be8ddd2e14df361d08d89e96aed93a99b15719288aee064ed496008e486ee424cd8a9fa0edb78b34addd00646c1359d2bf504317ec SHA512 92702533159a4009be38314f03e26d36b45869709a0bc8f6394dddbd1ff61529f928071dadec36ba325cde589c5ac6b649ffc3c6db625473ed54e1686ada1723
-DIST rust-1.64.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 64c74bd0bb84f4c751dc1de20d12bfb9370cdf1db7957db07fa2f58ad692a10b8ee11a5c4bedc2f66f0291a91a1346d00de8e6f7ab57cd151003447aa8481dc9 SHA512 6301908c83618b61543c28026682901a342fb562b1cd1a2f78f8b0a388f06ea42b943bf822a67c2c4b1a2b4236250673a9d5bba95b85e182131a97395bffecbc
-DIST rust-1.64.0-x86_64-unknown-linux-gnu.tar.xz 161922032 BLAKE2B e8a0d13deab59b5f6e50aaf5a9fc39e032b759dadf4a7034f8824677de34940fab0e6e430299379f305f0849556608fc7db207db52bea6523ad83abda4e04624 SHA512 ab687e9142963c5f9d6d577022a0783eea9a3473ff6186950d2c6a15640bf7d3042857eaa1bffc1e472385893eded6e171d7f59dce988752830697398c766bd1
-DIST rust-1.64.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d13ab08a8ce4b9a92c60ab5b8c21087158b66d9a673b7a960103757a2b12216cab8e7713cda08753a5f5f921aa9c7d571da77a90166d6e7362549a49d6c1a501 SHA512 fda5b45652c0929fea19146dd2c5a895ae4c6db9a1bf448a7364899854ffa06a8eb52b35bfe28c8acdfb1633cd8afe6c5eabd622b7887ed267b1b72220ef4e6f
-DIST rust-1.64.0-x86_64-unknown-linux-musl.tar.xz 265843112 BLAKE2B 2b267b5b9aae610734759a690e36600eeeedab7e0b679e651df269d7b71b147984c1d16cab4658076f05a8a854afc74d83e6e61dac3a8a6bf2b56660d3483285 SHA512 c722ddb6a7bfc5b8767e2a37e697f625b4e775582423720d1b01737ec3269c82e2212f7e5a672a062fa49c8c15c0d2d182ea14dd048cfd9e07704cbc04fd8ef0
-DIST rust-1.64.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 783791aca41910e8074fd1c7f29e6fc1fdf51f80b1515bac99431305dbe6085574b2b2366c087675b6a9d98931a0cff1117cd864f634fdb4dd53792aab8ce5f9 SHA512 a6d0a72e9edbbc1e6caef7a9c0ec46518b95172afa4a33b2258286458d7b9afe72f9de8411a83567520a126b8377777e125cc639bac197a0495f17120fbcc1ad
-DIST rust-1.65.0-aarch64-unknown-linux-gnu.tar.xz 244905108 BLAKE2B 437213698ea99f4113f294ded23ae0e5dd27dec2715b37495a991deac462aecc36d34311014a822c8a94c50852abcab8f08d8df900509f2b29716c6ace939f16 SHA512 be706f4432a8ae3b8f9b6f41eb2dcb3bc5b8f648970d5324c0de4979f1d58b9d8d5f774628090fee8f8c59eff2c4a55ce96743d4b23ae209e1951fbbc486797b
-DIST rust-1.65.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 1f023c371059404fa8fdb4d558117a650d323acf99c6ebbf937b337fcddb195bc68d739a3d06b4b8647d245a6e4effaff0008aad357b65e1e50bb62345e39bd0 SHA512 80285639fb445ac8b1c0cd36a28b72930e8c0e9c761473c5e2ee4d3daccc669afd7d2eb5e2788e5a3394e215bb5cb705fb1fd0d25a79d863c62a5e8d31282257
-DIST rust-1.65.0-aarch64-unknown-linux-musl.tar.xz 226435448 BLAKE2B 01388644e9383e1b1638b121b3af3a75787a3c243d9675df1a3c6bd45b8b52900fd7178b6a46c22b31a0cf2a33fa177370eec43c75ce5d050d8c4c716c4c25ff SHA512 654f4684dc6f9ee38f509f9abcd0628644df894d47e9cb139a990124cd34124da960656596a05eacf78bb762edb42e5e7536975a37e777366666d6f381766068
-DIST rust-1.65.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 111c2cf8308cce95c764d7e4c852d0070060a64db263a7ebc7de339a5084d42d9fb735c051cfda05eca2dc0481d7bd684dbd2a71b2ad4b527699619b5b2cd002 SHA512 d45b95d327fd3e6ed93e177cec7a53895450fa6a3b6bd71d7581c135aa3d36d45cdaa1e63977d966f60318cfa193a5af01227fd19e5b0e6edf6d15f67f03f49d
-DIST rust-1.65.0-arm-unknown-linux-gnueabi.tar.xz 205884452 BLAKE2B 79d399452cc745bce3fd350059a0cfdbcf8eef590af1f3b6963461ce962e86739d51b948fd7a7fd8a7bbedd9744b9d6b7d141bb25539452db6449aef6e654a12 SHA512 160a7daf5720a4349154eaee83ce42c412efe98ecf1c5bcc406efd8271038ca5b64d39ef8b7113acc5f7e08d7d41d53cc2ff342df2022aeccdf75a18570b6d2d
-DIST rust-1.65.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 0cf153865d61e041d680d5c984f952464a26acdcfb1265b2e34857b4e9ce2f575db56fa477cdeb3a8ae7505cced6644a3ddfe5a537a1184e463cb0ccb5157a1b SHA512 ab7dfb3e9e17daebd9fc02103585ef388688e91d50f72600456702970b9092847e1f08d4679474a1656b809e459a63d73f2bd717e97d389c614cbcf1a0be6c86
-DIST rust-1.65.0-arm-unknown-linux-gnueabihf.tar.xz 206130456 BLAKE2B e7e1cf41d0f1bb14788664b40d343f6b971d4a4a402991f540e64070e41d1605cb9e747915f5cdad666699fae257481f3d8924d9349462caca8f878a50705447 SHA512 36b1f984248162e13a39f17ac601dd5946fe6684217523952a4096bba4799cbf50e339619e5cfba6f2c0968e3f1991ab3054c2dbe9ca14851115dcfcb437327e
-DIST rust-1.65.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 71266fec366ab842bc2f974ddab79226d7dcdd451b4728b80642a9deb7062f672e18ecfceb427bd5c6660f1ee3393d7e60db22bf71d8f433d5debf8a20221ce2 SHA512 2666e29e5c1a0722c5d94c9c7ed893aef09ef780bb54cc0eb486922e747b39a26cbc383313f67929cd94155a0527f165ebe3b4e6a9a1e166942e6c1c53fe8ae8
-DIST rust-1.65.0-armv7-unknown-linux-gnueabihf.tar.xz 211761236 BLAKE2B 1e53831405ebc8bf2a24020715207a9d1c283e78f3d7feebebbe1029aa6495f7549aacceed291b209adaec135f2ef782d9e6dc97e018e21cff605cdcc6d8669a SHA512 3a54dee8768a67a08ad81cc89925971ff7b2e1fd054cb387c4f0dc5319e2bacaa4cdcb32bfa78e296401d07e5f4152d74ab6dbb1d0af068b01523b66e4cc1e48
-DIST rust-1.65.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 0ee1b71d77b777c32037f348203893be76310ae7548c40461a457b293376ffe617c2952f0d8f3a0e7913bee8f2d737898a74eac4f8afaa56e27e4871347a772e SHA512 ccd3ab729c0c692a1f70009f358130f60b2ee751f041c90baa4d3483243b72048e307c1f95e9c9e4c88d4c585e8bf49d9b24f6029b9ebbaa1e26730eecf3ebeb
-DIST rust-1.65.0-i686-unknown-linux-gnu.tar.xz 232207860 BLAKE2B 4f16a150a6baf641ac4deb14c9bdcfa1e110584a5d0646c2d0c689a159c1a5b048b820213f991fb11884311352a7fbe5a2a6e5d681b12b4e98648e10e434f808 SHA512 ebf7c91f95add689fd01c613e3d42502c4582559e3467d529fb61fa130ffcbd4e41c867e0cab6bf89fb6d49971ba205608928d54a493c7baf89669e8f8fbab98
-DIST rust-1.65.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 325a28f4199613aee583f2aacecc01f938ebc3aceb338d21ee78ab10d9311dd86ca0c29fdf2ae86d33087a520bcba02bcbb6ec32c53947b3e6c6945f19f9940a SHA512 0e3eb96a3327bbb33536e4d9438fe5635ae4c094b4bf689a1cfeec87194d0965c0ef8f9cbe62034fdaf8afd4cb5c2e2376805f234a5f0793e8fa500201cc60d3
-DIST rust-1.65.0-mips-unknown-linux-gnu.tar.xz 172934452 BLAKE2B da7d02247e357235a13fbd330763431bd8f259ff3c4e0cd70b3baf6b05efc82dad1e561ad5ad65eda0d195b3f443d402450bde8328ebee320817d022827630e1 SHA512 5f843083096349a75f959c0d00009033413afdbf984c6e5df46e181d6001a05b64e428bc96c58330b7cc32d8fb6b71d400e592b1c7916c644a341d409222fac5
-DIST rust-1.65.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e5323fc58614bb2f61831d9a3bd4e3e17e61d7d876e8ccea0d7bcd90d515cdb09cf6112922260fa7d53ba9944b183918448b31c2de431cee8b2f13e6e82f66ea SHA512 b0544165a5b7b49ea7861ca7cea20d6667976667c2253816f942f9b1473306615df5e5e8c1d28028ae79d7cdfe8bfcecefa8df65648976240af40ac08a8ca458
-DIST rust-1.65.0-mips64-unknown-linux-gnuabi64.tar.xz 170733288 BLAKE2B 59211c452f921cc337762bcd50cf6cbe8b59b843c1f8afcb82705092ffd4465b663f3428c718b473235be5308cf13663bebc87a2ce93abc81b11192479261527 SHA512 75012281166d17805ae718b4ef55084f6b59c2ff10ef44ab03efd03e0a72539438ab953384e62f2c90042ed5b044478e17ce64d6e9ad85bf3d40ab55bfaa37fd
-DIST rust-1.65.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 491ed32a0804f9b69cfe7622eed951aea8a88e6bb9d0cb90e7fb836807fbb0c02ca1d0f4ce54ec366fb5d314bab7702b2395218c8c6746f35b6a0654f079e8a2 SHA512 afad470d8ab02729ac1fba678a0459279e4b8bf687e7ae90bf51ddd5fab5b9f1d6e421ade260d101405387e793fda7fd6ed35df3a97875342fd93feb2e1598e9
-DIST rust-1.65.0-mips64el-unknown-linux-gnuabi64.tar.xz 174670568 BLAKE2B 5cadd21fe86c15fc305ced94c3ef002c7c9494857aecf2c82a1d79bacbe72f9ea37c4f9cc552cc2af256b5602ad8a0cce28483a0a0f44ee887f22f240a231b46 SHA512 f16a3b29ce635eb8a384c9bd802778cdddfb030459cbc7beb2b5c861bbc7287bf20dbb552d48f8548086436b5dacd8aa3f4eebe82a2bad5785791f6db2c52d93
-DIST rust-1.65.0-mips64el-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 57ea482eab56a7e17f37709efadd39fdd8ee536de16522996b2a9ab78f8450dd1b14f76360fcab79f3017d3ace389c10755e8865c93e4979a1c37ee5fb039f4c SHA512 ee045f7f129434ee1a1c7dc0612ecb93a4bddc17e5ed3f5b3c751ddf001e4a711f5419c9de7756335fcf59dc6119facb12c8f37fae8acbfb4c407c896761a4ad
-DIST rust-1.65.0-mipsel-unknown-linux-gnu.tar.xz 177698400 BLAKE2B eac9bbef703dd3d7a96dcb31ee0fd6f46d7046ec5d8e810605285a9b71248f0e97412f881d3ec77b4ce79057367523e36cde1a19733944d5a0fb56fc71e1d95f SHA512 2ae3976913b4d5f6a2bb7a778ffe7cad5bcfa643e37c217790605c5260cef44a2a98baaa5cc4fb70fbf63d5ae10c8d10ebd684d1f21a66c6915c5c58f488d7f0
-DIST rust-1.65.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 26b706e4c8a05a0e27050c8806d47dba83bf2e529ff10f622bd166aede62b2868a2be746c1b0c5d824df58658d5d125310004922bdd4a1224eb050368483b1df SHA512 49a35c5152d2cab469159b83b081f11897040e5b6ef641e4774a45bdf79b936860302812697469ea4429cfbfa90238958342d03bbca019a80fc7fcf666c571a1
-DIST rust-1.65.0-powerpc-unknown-linux-gnu.tar.xz 209510928 BLAKE2B ae05250069277c54f3658aa2474de6ce122de81f54a529cbed63b6e4c2354638904a018453a31dc2ecb364aa0c14bce23d97c4065cf8f7f0feb65e9107be78eb SHA512 a622011ac3c63b1b4f55a3fcf98fd1771af67b64a366473136b28f58e100635b823243e9a12f7694ee303e7338c40431e25554d5d72c16a72d0252c24c2cb7d1
-DIST rust-1.65.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 1cd4262dc17770b85290cd85599e2992d8797ad775b329865997ed1a70b21a02ca68d642aa5ac11c3a08e60870c5de2f720e2a34b05658870573e0688ee23613 SHA512 d4b7fbe1cd9cef0815521b756f7bf201f782ad240d1a23a25d5768726d35cc4ac49163688d731a8d8be38abc7f0da14c960f513ae153251d24a917b4234d578d
-DIST rust-1.65.0-powerpc64-unknown-linux-gnu.tar.xz 209586876 BLAKE2B b54fcaa7dece3cae687c02ee0dd89a54d764cfccef2a465bc2356ff8ab358473dfe7a72988cfa2f5abfbc5228b555aa8f92d84ca88d43b20ff9fada0f3c9a26c SHA512 2615aba626dac4795cc065bf04472a2884786ca306e2349f7b58819b25a1a34a711d5a9773507b815180c0c4d8c4ba94891fe3d0581a9e7e0ee8d230eb5404eb
-DIST rust-1.65.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7d01b6a884f467489c5c69bf11baef91224144440e7ebfd935a27a34abd1449d777113d87c9c886d5e0266ae8482105f83cd2b6acb28760436a3b350a9752bd5 SHA512 459ea4225bd26426b2c405be8ff95122597d4cc00d012675d7c4ddd7ce4c9ebebdb9d9b15bcc3b629f0c28ee66e4c9ae7dfebb2f6931e0393c7613fcf8d33f15
-DIST rust-1.65.0-powerpc64le-unknown-linux-gnu.tar.xz 221871252 BLAKE2B 95bf6f73e72b1473ebc81eb3a4dce9616b4c7e30c2ea19460318f20242492e5f25ac883d52cdcf1bca9d43dd40c95c0fc1dec04f20c092c17045456177f643f7 SHA512 8e532f28e3d3249001f4e6adc5cff3265e9bcbe9090ce5e250ba49b01a56dc10eb65fde1d0030bc953a2822738e1318b0119d6710d2b28735c22a2f0e2ca1513
-DIST rust-1.65.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B c2f8ad615cbf2dfd88a93db429d394fd092eb0bcb5c46d481aa2f39542fac03be3d18b1690457a5bbd73ab06263e930d1cf44272f42a90d0f5e34c3d10713d47 SHA512 c2e8832df43c1579e7022a6798d71c751ffd15ab52c6c86c7b2514f5d26665e9b2305ae9dfbb97efed89e1884c18e92175e43650ccf794f167794eb158e04e5b
-DIST rust-1.65.0-riscv64gc-unknown-linux-gnu.tar.xz 189556248 BLAKE2B f64876cfb9fd985f6d6a49b052ed007761a97d5e9e6e6bb2b7b44ad4a6d5b75dfa4e067a1de2878679171fb3c4c194b404cb6074f39a634196e95e989f80fd8a SHA512 0e16f18478de557303971f65166c4abc799da4bd41dc3787a79ac850c8f00db9e0bd505d101f471b9c9d2753a766c41be65af2e320a8a31188e816a18ad316bb
-DIST rust-1.65.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5026637766f3038cc096f6c1f6c214b2fcd91435cabd2687ec6005005cb746c08335ccbf667bd3a0da7c607b8c1f5f5bb1a084574780e0cc0d4d3827a753cd5f SHA512 7f2c209b7ed0a5b3af6506d3aba9f61c16e6026ea077e45fdd1efa668a4744234c5dc51de0f074d743b282ffec63de5ac13e559eee2c3bcf82b4d42fd8845837
-DIST rust-1.65.0-s390x-unknown-linux-gnu.tar.xz 226037296 BLAKE2B 8266773f4767aa44c764c938c89d2c7382b26aeec3a4947ff4d0b4bdfd8b97512599c28f6c8db5d3ef4c6ac23eca87735214352009167e7e22ddbfa979549646 SHA512 31728e9d3e2cf9659beeb3ee64e760ee98847262dd0807d33af720e5ecce4685a7963c559febcbc910ed47b686b258a9247f7d8f171a8c5883f5656282d19030
-DIST rust-1.65.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B efaaa539e4a89c6dc485d34ea8fc9ac4291b9dbbbfa67737e9ae438f45a010b398cf211a4b257cdb5a6ca3a8fdfd62e54f6a13987f09ed9825f3bc31be87b000 SHA512 8d7e65293a8ede819a023801341b5fb927586d1d98a8b4fa43b60501c08aacf2ff408024639778571e9a54527e2bc798b7e23e314188fc032b936dc3b14b82a6
-DIST rust-1.65.0-x86_64-unknown-linux-gnu.tar.xz 162028064 BLAKE2B 8c572cc304c165ac7d689ea4447498cebb3e91efa75c704833d34de46383038fb92b47fb568eb93ab9cc463616fef396c7a88b9019ec5c007748a22147069849 SHA512 255ad04109925684d201b89cf2462818a1b65fea503791dd83d5ef0802b1e80b5f6e4c444dcd516196836e8b41b039ddd4855c4e1440d28fe48e78e21e923c8a
-DIST rust-1.65.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7a9287b6125eab2c14a026d6b4d8a3e980b9fedac0436b75b1bf314b093b5e39de0d70045e183a2e823d729d24f43f6251a2fc28b072e3caa1950fbbddf149e6 SHA512 16abed6d7a17b9e5f3e399865ed5fee01272c8e6696ea2e784a6fb149df16da2c4123572dfb56c3c44d407d388033e52b552cd164600629cf61b33c011e4e415
-DIST rust-1.65.0-x86_64-unknown-linux-musl.tar.xz 266683288 BLAKE2B 4312a53bca3e33f6633fd5eed1b17754813e54d688185ff4cca6c5d6b24713994fb5fc424113ab08c121319cc79da3d7d89518d18dbb1b491bc8ba2ec831c12e SHA512 6c7ddc98da3227b23dd681615bb8f8ea883f3bdd9547e35733cf6acaf2a625301c53449b1a3ddf88dad9a5c940f8324c3e1bb31d871092fc848b863256c85935
-DIST rust-1.65.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 054f1b773518a9640f3d9226510cb0b00a7f8dc4a9046c325b82d038a50c699a8bd84f71ed62790e9b96b4d65ad12ea631f6a8bc18b3bafd66db3d21137cd378 SHA512 39aa000c2a1359cfd7d2eda2b22a9b10c0fe4aa024862b7ea67bd488e06fdee6f5cc4e98db7486b84ce53f1c299bbd5391f63e25df0358184533a5fdced4ce61
-DIST rust-1.66.1-aarch64-unknown-linux-gnu.tar.xz 248806760 BLAKE2B fc5474257221705de7a8220029a406145b886914e59a3ae1ca4048b5789d4bdfa1b11506f7473590efb65c36463d0c34b2a185a407fb31247714eab715a9e3f0 SHA512 3f6f0f03d88c7f175efdf9ed541a4e1965df5473a7865e7611ad8df51cf53a12b27e3493c4b2021749e0c912dd844f9117616d2c740a5e9242872f07d3978c48
-DIST rust-1.66.1-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 4fdbf4edaf4a346557996faceda168bbd74064566a902811c52772ba832f4ab96b3128dbe06e06de4e54cceb642b837e1cb1ff7e30ff9c0739f9ec44aedec8a9 SHA512 7e59bba51666275559362515f31fcbb0635055de7d85f3e3d6598b2caa9fe2c5656032c221327debc2d174592cb981c86212ec7860d5b73d55e90c02a0258c58
-DIST rust-1.66.1-aarch64-unknown-linux-musl.tar.xz 228044080 BLAKE2B 8cb2341e84c2f8df44a0484a6a559148260c1300e81e6ab145bb57920d65fd44af8144cd0150ab9c203aa2a000f09e0696a53668e7b8d0984f9fd4710012b736 SHA512 6bb116af95b7946609017afa68eebb5278e568f852d879fd0f068d4ef10afdc7638ced0a87683080240a24f7e52f119cbe0268639906984ef8bddbe4c5dcd43d
-DIST rust-1.66.1-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 6b7ff46ef90437ca89322d66c0ec78d549d65d0d206704ac6e72c9f427e9d7224162291b37dde40b35954795c8879a3f380dfbf1de38da0c979b33ee315d5aea SHA512 935055c5dc28e4b2b44a5b1279d401a0b939ba576c1d8157de083d8a726fed678b5420cfd090e94dc1e9a309cc070329590515c4110fc241f9b5be7f8df2d493
-DIST rust-1.66.1-arm-unknown-linux-gnueabi.tar.xz 207170588 BLAKE2B 0c3a52fb3549c63ccbb43109cf54cb676812d49461344629b1c0f8d4747a40c9f6b6d050c9e27da6dad5914cf491fa7653a107b9f9e3a7f851ebecef2a98588c SHA512 6e4e385caf95a3ddc2fe4a05ecec745b721bf2eac9846d61e8ffaef749b1db2e506b7face55aa72cc7ffcda340f69185f30eb1d456a9f063c7a7c7ed7fd4eb9b
-DIST rust-1.66.1-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 8068dac7f1078470cabdeadfde8722bc96a1271e5572a4b84b7d108b173d87d1be32eef9b9be67b2c6bb3ab72dfc6a524476bfa46e222c29bc93724a183410c6 SHA512 ab3e4c7e470d4f7736e452c7118ab945747db5566b7e6d1c81359c3e224ec348b18193d4cd054772e878f791308dce792630fd4f10f750efc7e0e23b150c16d2
-DIST rust-1.66.1-arm-unknown-linux-gnueabihf.tar.xz 208535556 BLAKE2B cd1454141cd89f63d401047801b88421d9a2906425bfc4482a24fa1b468d2db382a939cb64b836808a1d0438f464d28a83b7e8097e2f97f1053a5fac7bc6de29 SHA512 92abac3fd13319b9edc6daee72689ae29e463bb317ed08580e04ff6f31b0ba5816052b8d26914d9c224ea47399517b388db78ce8ec17629795ea3988c353e2c6
-DIST rust-1.66.1-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B f828310aecad4d96c9074688f0211ba7e5286f0b3e669cb6fb1b9e3ae3adc776d6fdfda0702103cc571771eb404307df6f55c498fbd8dd006e02338cbc14893e SHA512 d3b88b83efd4303b5fde991672594d25c253b0fc6d66875dc217808190903f28a6afe8977a9ac436542c42675a12c0e244bba9aafb239c15f2ffcfe533ed92b2
-DIST rust-1.66.1-armv7-unknown-linux-gnueabihf.tar.xz 212774560 BLAKE2B 4bad7755067da0a99135cc8212928b78ff254e143908712c1cb77d41ce7a8db1c7d2eed3b12b916214d03f0bf0be17d81b2669ddb5f3722fee921f2d65aec491 SHA512 4cd871dd6cdf379c71290287ae2125ef57c2d5d52753285f064a6d96e8cb586cb263ee49f7b099ede8f3e15f1bbc5b286628acf242de4fb3ba8e5d80323c08bf
-DIST rust-1.66.1-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 56504503b1b45a43f10b01f3e470667c93fc12036506b94cefb66f4241bf457d537899c2db4894027ef7f649eec627ad7bef8e1989523aa8ab67ba3f51976f23 SHA512 0a7de37872ac1a8c07ad1ac02d2bec9fb614175a5f394d603ca0c894d3d6cb12a35877e38c807da29ef89c7465a27080cfa0d5fd8ac21884fa5bc3f3c47fbe9b
-DIST rust-1.66.1-i686-unknown-linux-gnu.tar.xz 234959096 BLAKE2B 0e0583c460092539e8813feaa0f65a026f4f52357571be5bcaef114f062c598ac5d2e3f4f22c88514b9b0a9e53e256a25eb2f18353642a8e40c6156df4309b54 SHA512 19cafc7763b40aa48543c5678f3c4d23b552f091bf6dc592f57ec950856802b3e7dee98d06b73ead0861630ff101260d741082fc1cc65c7f256e4591b821068b
-DIST rust-1.66.1-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B dd2c75d23caac69aa5e8cc965d5de9705f9f8e5f0be53cdd87e51deb07875579cf948bd6a7a02f10de3fcdbc70fb1cc46a4b616af44f3296787e5d9a32557490 SHA512 9364bf48b262c797815cc3f38188bdbe595cd39839b5bdcd43f7da07fdd421c61ab93ff4fa65d6b20f7d15e8eff190cb0d8a92a806878b1db5ccb62e80eddfeb
-DIST rust-1.66.1-mips-unknown-linux-gnu.tar.xz 187966796 BLAKE2B 193f18a9c56465d297ee2b3f1d9a8a67d8a6b1d07565503e6f5b31d4bd5b05782f45e95ee50a93e6d1b91275e9769a9d56518349a456f55392dc28b9d3a1ee82 SHA512 8f23b47f38ca42af3dccb395fa183edee3f18a478bdf1f7de2135e5afc6dd87d14508f7e2ada938dd64eb51f5acee27d0417fae6e3b1c114c6c812006206d89c
-DIST rust-1.66.1-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B a04c0f9320d663658b758e6b89709645433a0d16548c511945c439ce134617c8a05d7e9ff988e8f7a1ef62a726284548bf8b259648f614c3a2205ee9c02b3a91 SHA512 4b581b997a643c0ee6105c141c7859e86d9b2cb6dda85d867593829978911dc5a6c343a11712a334b94188078c0d3b1e7e734334b8b4a16b38afab228172bc6b
-DIST rust-1.66.1-mips64-unknown-linux-gnuabi64.tar.xz 184874416 BLAKE2B 64d96a026634cce03496be36ea7a42986e0fedc75d6c61e0f9a6ffe5cd3432bacd353276636c58989d02328be62f760bc0157c5999262bbac5c570dbc049635a SHA512 ce4b5ff464e358b085c18c21697cf7f339c19db163a873bf68b24e2febf42e69e582bbfc9f95cc38a6c96610a8ccfe6ec431cb2f98be10c48f9c1cbf027456a0
-DIST rust-1.66.1-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B fdcc56efc4f7df5d13595661d59354e4fcc757e966360fccf8a86d42f31f952334b9cedd107d23e4132b90e3082013cc26076a0754455d2759e2bb878afe023e SHA512 c5918b76fdfa39ba89c980ec2d252b3755439c8baece26d27f3515e800061370c2715620a052d3f22bd57412d058f5e3f53084bee08b5026b0f50112e6c41b93
-DIST rust-1.66.1-mips64el-unknown-linux-gnuabi64.tar.xz 187791816 BLAKE2B b81e214da1dc385bb1af0b01dcdaa5f2f9751b5faa6c9e05f501baeb6f1a298bb0af8829dd04736b76a063a5c28e303f2e295a54bd9093e6520ffd3de37f254f SHA512 4a21385af4b8441ecb717979e2b7329ce9384aa0008c350032d704d57e719464b0efa527745caa55c8e8784a4ae46b19b59631c5649fa50c0c83395864756c95
-DIST rust-1.66.1-mips64el-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 896dd352cdfe8b920c036bf7dd40d8cf810993c21703dec7c30b6cb3eeb96d949fcb513c3982030ab34ae18fd158e4ad9910445af7515aaec45ceed5b6f1affe SHA512 a92e152ce501b43e7f808af2ced2f7528ab788c43334e3a127066b1e2dea24535c8e50a10e2ae766ec841520592e3171ff267eeadcfc995ac71478ddbafcefc3
-DIST rust-1.66.1-mipsel-unknown-linux-gnu.tar.xz 191073888 BLAKE2B b88ebb699e97e7e243138bf5674956afac0204bcc19882efd59340bd45256e9ba07b7e160895faffd81c62b533b2d305b088c08d3a99060e91025627ec8b7c7b SHA512 9afe6b80df0e24f2cedd65e7ab5fb25cd28be69b3e442c80a8f92291c7ad7ff7c2f8ec2e901bdeeb8084467700db4c19055edfe4ca8ccf7f6ffbf69e5c20426f
-DIST rust-1.66.1-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9a8c4eb0683465c63d1d5f25eedbc2ee96331960cbb2704d67a806852a05544f646cfe8220a3582d6e05dd30e63fdb736d176c0467166192501d168e5a0fb7d2 SHA512 e35e0e6b94feb551dc1a06e36ad0c70fe2641dc5671fc74fe99baede8c40cbca828259eafbf790af43cb8775fcf8c38442d2ca3349277b07bacbb508676b25d3
-DIST rust-1.66.1-powerpc-unknown-linux-gnu.tar.xz 209784584 BLAKE2B d582f2efaf7401dfc8ece24026653dd52acd3bd5f3a87d12eaf1be5170909ebf009189312d59d5508beb6a68bb88545ce97af1d87049dd61b2736ddd9fbb9ffc SHA512 b8a9f4115864e0e6262c603e11b2dd9a66706c120aecbd0e7b0acc79ff1675f0dbbd2c6c0095d21be664a04408e610f07b4e09adc31f73b0fc92dbb2083f9b13
-DIST rust-1.66.1-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 1bf9e84765268fd89e4e18adc5584dc5b7517217e2c042e6a4b4b68d9716f0502df83115308451792d800458c71535f9bebcd1254f0d26e0359cc19e398d651d SHA512 93b7bc720dd9f0324a6a3a066e26d218236f8a87e50d4ee827d1f785eacc1e289d3635d7653d38197294c4ab4bbf6e15acd2341517f1a75c1e48a2034f5bdd3e
-DIST rust-1.66.1-powerpc64-unknown-linux-gnu.tar.xz 211414032 BLAKE2B fcd16f3cffc4a8fa4d42daa75562d48c1a9aeb487b72a461a7a300fc15a51ef478afd8a129a34681c9035b3b846c3fc713e9f128e55ec0f3688022bf92ee2529 SHA512 8acd1e8b4ebd25d31652cbaca0173c87499fce233525d516279557d63c50cbf36d4bdce0bd73ab4b69d9dd95d0f3a91b7b80f77ae3a3f23de7660ee38b5e6b59
-DIST rust-1.66.1-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d07e572b2dd85f47c7cde4d6e328ba35f20f143d637a5b0b9d295f24b9bc3bccd72282718351419784a32c5d26189557beb2fd143792e3115aea4640650b4371 SHA512 dcc1708cb37bcf2820c7f6280fedfbfebc8a85ed76f6e5acc64f6b1f768b32f2895d737f7209ef8a7f81f339047531e28675f3a31e3f648d382359550f255095
-DIST rust-1.66.1-powerpc64le-unknown-linux-gnu.tar.xz 223088628 BLAKE2B 1627b274c35596e7fa932e42d8a14e6487fc74d34b1d8e2c4661d6346bcf3dc6adbea86ad62de8c9901b3cf7616e92e07d5d9f7002ef39d20a0c2a418e2533a5 SHA512 4834a7a794967b32c3daf633c4627e3ae9adb60268bb409f8886607ba8799f98fc8774a8652a41bba1e8147fd51e8a30ceb569cc22ac1f29e23d335974374aa2
-DIST rust-1.66.1-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 105e598220ad4c82ea4822b3b09744f6445e962dc4c9d9c01846f2e51586d2d18c71ed9ec9ed3c3e4d76715879e8e714d3ea47628fa9bad2ceca1c0f34faaa6a SHA512 cc368e40e09fe42df2c01d124912e7dd90b14c694512d6761e4c25cd183998bb1b5426916087ed05488260e916f4ac97f53dac27e278b53ae1f8387c086e384e
-DIST rust-1.66.1-riscv64gc-unknown-linux-gnu.tar.xz 189480332 BLAKE2B 98f9cd36895a415967f4392ec58ff290850bbb094c473ec8a7956888b22dd9cec412f540f73acaa99c17ceb3c2255d6745f1072f7e170ff5e28fb6475ee396fa SHA512 ce35e57cbe0e92a33e9efac4be3c8f650615197728654f775a3784ff28d823907f59fef0743d63d65d034cff8079cbc000a98531f2fcfbeb8f33de66d772a4be
-DIST rust-1.66.1-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B ab78efea869dd2233cfa9929995546c33146ee0d92b262549a44d2b5bfa6e1309cb32c831f8a3be4baeb0e27f1abc044e03d87de23eb28c6057f5ac383d4d9b7 SHA512 c9f5764c78031bdaf8106c53a4774f55acf6308be057bd8acdf1c07863daeb5fbf2a5bc8fcefdf9fc0391a2984e7b1b7aaa11d89402938575df2ca38a3758739
-DIST rust-1.66.1-s390x-unknown-linux-gnu.tar.xz 226436776 BLAKE2B a45528d58550b51a0e5d589e3f44ae5bde739e58e9172d83822068235f753007094129da606b034aa534aa9e5bb85c020adc8f7054d59b61f1fe0fbdece2e894 SHA512 ce22b52c9ea4dd3ac9f8ac84a6a50f7a2c031c485ae01fc57be1ce922b927f2e138862b620dd6a538375a0e6c5ca4d693b32643b26f9f647d0ec1d6eee8a799c
-DIST rust-1.66.1-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e705dc1a56d686c540e9a3667a0e14bff66f27f789f7a4022fb9a7d3919deca0cb264eee8da4fb0d54d625bf86798a2926176c0f148218a97bc4cd94f3c2d192 SHA512 5a657456f75aea4246fb3b7ec8c43ba2ace111ee41ee22ff26c05f246b699eb7ad76703168aafc1ebd88673390e13ac03caf7dcfbf270eef2cb5f943bdd5296f
-DIST rust-1.66.1-x86_64-unknown-linux-gnu.tar.xz 186651920 BLAKE2B de89dd720320da6a8f27f5499e90d417eb3d3a9a934deddda8fdda279694ff33312af14c4c5be1c8b4e22333d5663b4c51c2d1d22914876bc4ab6e39dbf16476 SHA512 8bcbbd4a9246dd48c4109b9c91852b3a470036a8c0ac31b77cb4c05a205644a5829c5c38977240ab51e25778d1f9c7c3cda303da3f6b50a98d6a4eccb0f73782
-DIST rust-1.66.1-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d313eafed62763b0905636ff22d6c736696c55e55d2442512a95e239b5b37199fdb125d312284b2a249782fa61d552284c8eb3ef8c9aa9ea36283a9fb975dd66 SHA512 c491f07c77baeac6b92c2425092c1b3694e72c49d4e6e511597aac03d51930cd414a95b0d691a9b23df266fba8df3dd90bf7d30624383bd213403fe0cbc83ffb
-DIST rust-1.66.1-x86_64-unknown-linux-musl.tar.xz 270294752 BLAKE2B b068a9400f29e9318e8d52f2c37df72f1b8fd91ca0bba342e6681544595a7f2697bf10437be6c4612a36d2781cc915920b498273ab12dbe1163c41d9d4e9b438 SHA512 df03ef29b03924346ef2a4b5dbf1c7ce6e33fb1f357eb04b0fa80e48a607b29f5929ce587412c9dd3f385d6382f0229c19d0ce78d6c060ddc0539429d3cfc606
-DIST rust-1.66.1-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B a262a2a020a142ea8e3906a9c93d9294906ee51f5d22efd4ef041b6032524d2714e0b511f7deb366c0ee3337ecd52f1e091b6bfed01615eaa9026996100afe2d SHA512 f390b3a788c5b15b1acee01505b6501ad4a3170cd2f23ec490b02294ce0a62c3f708f1e66c0ba8258a1042dea0401a1e09d31d34e99558f50b0f65b359354182
-DIST rust-1.67.1-aarch64-unknown-linux-gnu.tar.xz 257819328 BLAKE2B 7d2b033f447f5df5879be3e6d55c26a96996910026db8a751e85cc1a0c034e508cb3b207f45a3ddfd491c6f97993374f5a285eb2b6cd0233954f4126db260828 SHA512 b49ad763f88db3414fa5b10e3462992bc880ff36437642f5fc29effe54d7b6bdef16119e039cbb7ae291f142e88b48ab213b9a51cd38c65fd57ccf2bdfaab3db
-DIST rust-1.67.1-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 94e00367ba680137847d41bd8bef7493eac46f04a5b42c0b8252642c30d25db5f813de3603e450cab9a1cdde4c0f065f58d03ee72c29a5c321d87a063a01d05a SHA512 8b558c63fefa00ee0d50cc1b22560572ce5babd9759350f5178eb82e86230e9f9e4f9f4339dcba976e1837f167dc0e3e4f376be7352f9127f0d7af545e93694c
-DIST rust-1.67.1-aarch64-unknown-linux-musl.tar.xz 236561572 BLAKE2B 19168415f8199dec3ce4c148394c7c86dea81df0ecb7cb776395d8f0e7b910ecf8de4c9ef7a87baadfe52af65e612779ae3de8599808032e91c726c4d967139f SHA512 f2931563300d78af1c09dff10a9b8f73d441c559dfffc3907e5a2425d12027061ad2492683404cc2b58cf429446645807f6d3f70caa2dcb6cffe40ac39252f25
-DIST rust-1.67.1-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 7f4bd1c432971ce5f5346f2f39dd1f5bdbc19f13524ee7cae82eb6a3f30a5ecb69fb367fb4e0063e06656f457cff68a2b81ba5ca896a5857312a11fbaea0baf7 SHA512 d568b2d4cbbcba327bd04e9253f25839e0f183c144cafa1e8104b82d64bae3515fe8f16ccce2ff975210b6f54254d451c64fc4a070b80981a945d164897b1c7f
-DIST rust-1.67.1-arm-unknown-linux-gnueabi.tar.xz 215162200 BLAKE2B d922e271d04e2cc18f21fcef6f1aa8f283a7bf56228a1b1a7d81be697333a0f16fdadb12e7350ae130dfac2ca78766990df2001a3b0fc898ad4233c51a7f39c2 SHA512 06bca6150bf088ae19fbdfc0ce74dc0a8f24c111290f9592cb65164dd6cc03c1468a599514052cafabbd1b4040673a0cea69e14b266d59a42bcd7c1701e212ba
-DIST rust-1.67.1-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B c85feb559064bc24b25dab825ac6758c7759cc027dad4885bc87eff0f331f1177963b39096f4ab78490c54d82a0daaab035f58a0d6992eee1acca2a1add4fb50 SHA512 7754053412a2d17b9092166d37ec713c45ff32c9f161fa261bc075b89b43af716861aa15ab8dcf4472ea49d6e3d2f3c4085d536946cec6ff862f75f83debb7d6
-DIST rust-1.67.1-arm-unknown-linux-gnueabihf.tar.xz 215944916 BLAKE2B 7e04f28292669fd0c34dc317c42d67e1b27ad0b910186ee846eab88dec1c14f89a3b599a93d7c81c88c1b040052c3df11a50e6344528054095113131094acc66 SHA512 e4c54745b55e0a5b6b36e9dc058265ae4774855122f111a0029415df2fe5bb564cb641e332ebc1c00d792c7dce6ca370e6440ec20658012c1a605939cd8efa03
-DIST rust-1.67.1-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 0ca0c0ed5423c89e988f0c93e4aa8d8d6cb0e401b664f9ccdb642d736f4e4cfc2fd39d0a142b07d8e5dcacddd304c8dea04617b5e3264a3865a16bfaf49d1274 SHA512 e573a36c401fe5c543f4505bbec1b5e7c962831aba062cdf8e417f5fc3c6eff2bd6c44a6c01bec4cc5fc4ddeea1c5023f90c7f1c44a26a39b9520fee923b61b2
-DIST rust-1.67.1-armv7-unknown-linux-gnueabihf.tar.xz 218109412 BLAKE2B 256cf45036132ba6f4a4dceb80fef0a2bf079fd54b4119e8a869fcf9e093e76e1d7ac84eb920e272b766a328548514e7b0249b6287d8950528aa049ed92b21ba SHA512 05ef4e7f2abdbed1cda6209ab3500f8532e516c7e4f9d08ef0c1cfa790c2454b952ed59a43ed4453e7385b12f672d5029c6c436601d7a34368418c0800f0126d
-DIST rust-1.67.1-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B cc15e8f68745d252e8851b79441684cea1f1214e7088d7ae6592a5d47719d9dd61abb01f37882775c3c00e1b318562ca050caf5ab06a665946886f50575bb1e2 SHA512 68d66234f3bb9c452aa4a2bb5bceaf26dcb71466f05a0aa7f7b7803a866be5cfda1bf3a8f71cc8e84c2168812641da07a0726d7f2f49882b892ae41f51465477
-DIST rust-1.67.1-i686-unknown-linux-gnu.tar.xz 235056732 BLAKE2B b02479f7d145b6ad3db16d62120a6b324a9db79ef0ff7a5900d7ffd9f5cff0416fa74120a70c1c2ef5bc05c6db4a70b18cf52aa49e0972a5c75becd995795803 SHA512 64f0f887f711b276bd9561fa258aee97bef234d84b02912c1c01ec8caccfe3b0bbfdfcfce98cbd6423043c312e577d0fa574f4c703292a58163a7d3286bbf6db
-DIST rust-1.67.1-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 602b2769db2e4810fdb962ce1241118e00d3ee6131267815b9c8602298bd55d249e75ce42b4a4965aa6835d8af762d6e23fb1ba3a3b8a954ef08fa5dd88b30b2 SHA512 18999437af3b51b836cfeb8096c55afa2027e783d32f492eb620964c1731f367d76cf72533b35bd67f3800be4e457f4a1192aa85bfe00a41d673484f2ff56eb1
-DIST rust-1.67.1-mips-unknown-linux-gnu.tar.xz 195834044 BLAKE2B feab999cd49f72bb0865324c3671d92025ebca88601b2b6257ad11ec66b506e65bb3cdfc9a459014d9f2af52bfb410837c30e3bd0c85f407f8ebe4f98be7439a SHA512 3dfbe7e846289cc22da42b630bee54b98749c1d659a0652559b9d4febfac6eb786da18ad1be1316aa3dccc4e213f1f20efc8556da88df7226a5d8a8890b830b2
-DIST rust-1.67.1-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 100dcd13886287128065952d0b535208a0807c22175dd8fd04f16a16d76d2c9d32dd6b6da5ca929c517519e167e100607c7749ed6c512fae89e2e0313e7b7202 SHA512 5cebd45755d5accb15da29423eb7addf18a72326238ef6a0c2ca09776ac008490165d2b1fb069ec7a34d509bdfa7cf1212a87344e0dda4746dfb89afe404225a
-DIST rust-1.67.1-mips64-unknown-linux-gnuabi64.tar.xz 193892140 BLAKE2B d17cc8b42ad0e2a658dbc170dfc7256ecfd0b520cb6670eac4be63e1a92c54ff9018ee4ef9cf90b1e29d052cb6076ccbb163348b99113fd2e0d9155436129f91 SHA512 92e5c3238d4544583ed8ab989d598275e729e7795b0d645a822ca7cdb5be9fe419fba3a7f2d8db11393ce03ac02873ee876ae55f959609f0a6f4b4f1273a7929
-DIST rust-1.67.1-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 95c5e4829068b02c16f7e8e38b2d94a4f913bbd77b226d1c83c8cdc7ef198192b76ff67dc86f7978dd1b9cbb14bb627dc106fc2921a501c340f7d0442629f8e6 SHA512 32be92455ccb54328d1f62381501009e8dbe15f1b4f83e99a894bf5e7eb469a23aeeb3ef440be1ee798e00bfe865ec21d2dd6b2c58a475e1ec789425e53bd356
-DIST rust-1.67.1-mips64el-unknown-linux-gnuabi64.tar.xz 197223484 BLAKE2B 7130399156aab2972b680ef6a00337f9c33c1491648059d6705073c1990d959c21bbad55cb3de8bc7eec7a6163eb5b62b98e0ef5d8566434c356a3f1971bac48 SHA512 f77536697a3a24b03e3de54da00e0bf28b3506af1d20976256f3a0785c2b9acb745c7ce70a60c5e39c3ac728a57c018bc67cf0fc97f92b680b73e18f8e76e034
-DIST rust-1.67.1-mips64el-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 1972af2185453d079e993f46ec45a7caf5926c079c205c992d2536d6b09a57e6a3f9442e422481307c0adb01ba896051ade0f1fe0eeccc4761fbcf6748540c39 SHA512 7ae033e29054154a9e735274e2b4f4c6ae8f5bbf1ab2138124130b53191ecede373948955fd2a0cb771ac3e596d416c4d38e362f295c38451b039dc3a55ae266
-DIST rust-1.67.1-mipsel-unknown-linux-gnu.tar.xz 199598332 BLAKE2B b894bef4c2f847a26be0badc6d069fad636f0cf1286a1643b876709ff292bfe3a2307f1a2904bf6e0c596c13dccd91baba0e0c4fcb45a7cfb71e555207a61292 SHA512 9574f8f078deae22bcdbeb89c7aaf1c26a49fb61cd9a7d777421497b85c243fdcbad8c25d1a80aab4ae0b03f6849628318371dc323e27e308c85ac556e2d649f
-DIST rust-1.67.1-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B dac540a5283281c495e4cc629e7d81279c55db4fce3191af55e88cfcb857a0f86eebeff9a0b8ba95d4da4654c5b11c0fb5364db876a4464b799499285f0184a0 SHA512 ccc990923cb5b73391b09e8c7f4479998bb378b07ee12b5a83d6fbe6044f6925429590a116a944163a2d8f7f6a210b6f2302cb5976a99174e012b7646d7cef5c
-DIST rust-1.67.1-powerpc-unknown-linux-gnu.tar.xz 222275832 BLAKE2B e63426d9441a601044d8f0cc8f181bafa7f47bce972518676913d506be5566654e0afe84d63ad0c3a31596231b0a1a10c96e9246fca9bd2b0438f9d72613fc9d SHA512 66fab7b5679bfe59f12dfc5b863196c2cb0b5d0f53d0bd88700586a90a6e8ad4c986fb44979b4320e74ed8b9e4c62b4ab2b3e64e44254355577fc9d1e6b688e4
-DIST rust-1.67.1-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 312da822216930be24d368f4c449b757f1b633e71b6897b19c9d45b7419ff0c39171804d2d8196a967e6e2296bbfcb87f0b2372b3260c6cb62c8fbd9fa192c4b SHA512 38f5ed49201ef0a99c24dd3e0549628e4bedf53f41d62f6e719a91b3afe3aba64ef7ed51a6984b21469c1ea2c5def284d13ff035c67eeee45d304ec04b34fd2a
-DIST rust-1.67.1-powerpc64-unknown-linux-gnu.tar.xz 220473512 BLAKE2B d932865dbf797827507426c61107a0d89aac02d56cf552e21566ef6356173925697b72e3acf3fb8825b10814b476d28f9cee98ece21cb748d83c1526f9d7ebc6 SHA512 6f7b1e33da99bc46014785223bdc9aa5bfbb1a5619037cf48fe5ec46aa82e42e09fc8828b4e2b904bc122f61ccb24cf56caa7077260a1e7486dc3badf018be69
-DIST rust-1.67.1-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B aa72e61de6481748dc29cfb0f40662fb4a7ee6c3792b67efdd55df47abdfe75db4ab1f560175a3dfaaa036a3de0435ea6e2d9ceb1b4ba315c95c561fbfde0ca0 SHA512 e983fe67613257744fb7a147e4b29370795d52833a247b2c568610993a6e3eb5f6212fa511cb72636bcd7209c15181dca9ace05eb4866fcd09e69afad5ad9b77
-DIST rust-1.67.1-powerpc64le-unknown-linux-gnu.tar.xz 232947736 BLAKE2B d7448f4a7196eb67d35f5a280d5c53bdf1e08a7ca640503bac3d8cfa5b43680b231d9d1f560d4907ce7a191cf5f43973a0296e369bb81befbd7ff3f05fd12034 SHA512 c2602a03f389e3cee19c7f775ddab12a0635bb4f3a7d1242eca62cccbe91949ac9900ab1066074a2551b7c9fee57539949236ed37ae941a2c7dc0626320eecc7
-DIST rust-1.67.1-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f48881d0e3c1b1d78898720a46166794a4c52ff8f1bdd8a1e792a0c4be585d7c9e5ff369d2c80d3083d18fc548ec4e24b78fa27aef9b69a240095cc8e09decee SHA512 52af4cbb1792345347ce8864109e28ba0acdc3aab2c88f2db201a79a53d903872d3c70ab84a147d311d36000b2b84a64e2b8b97a9470e41b9d7c390c17facf6c
-DIST rust-1.67.1-riscv64gc-unknown-linux-gnu.tar.xz 199552128 BLAKE2B acfeb341ff2ea1ff035445e616a668d565e0b52a7453c30a46a6cfadad0b0ef6eb72d89904095fd5f0363cabeffd2fbe97b435047d5c3606475da41fb50c6be8 SHA512 5c7e0b8942872d211779f46862d0826240a15f46c95d4038f2f8835ca68cf20f8add3231040a331ca761bf4351e0976518095d606303eac66752e5598df49442
-DIST rust-1.67.1-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 246adaf9b5980413ac32af57d2e089e765336e085bb45799aaeb80311a7a5d73545779c8b2e810b763520d9d5a5d475f764675191c12a2d4b2b313c11230d311 SHA512 bf447737b414839b126fe258bb5dd6d34bb9d47d57fdb68a4cd0b9296fda2c47aa267cc9722f7821bab365b95ee4a2c93631786f89c7cb5197c283897c413016
-DIST rust-1.67.1-s390x-unknown-linux-gnu.tar.xz 235970856 BLAKE2B efbe49525e880b07de613be0d22bb87065e0d64f7006ae07c9deb020b65bcbb6dd20cdc250e740763480426baf9c64adfd06e005b616543f2ef9451e99b7d411 SHA512 308aa7bc5e32c50a0b5c2fdb5e9bae60d8c8ea32fcab72205aea9832f24df35d9331c63503e092ecfee18c1eedcb5a50138837e29bb50d74f526aafbad9e71aa
-DIST rust-1.67.1-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 875b4168bf1458376ba31aa8b27d7bb331cb3bcfaf2645e65d0a2167cf55e6a6a2a0bf5f66438e7cca7c73f1cc02fddeea3be570e37ca80f5cc14fc5e0349423 SHA512 97a0e05fabc4755ffaf23ada6d77dde78b410ef530437a8700673ee986c1fc5015665948fb4c63f2e0716bc022ef7d6f061fee0a1516995a6a4d7ea100d234d2
-DIST rust-1.67.1-x86_64-unknown-linux-gnu.tar.xz 186714164 BLAKE2B 648efbb30233335e31c9a90aed4958325258365cd4aef5e01312005606f23ea42cb6788eb82a11e61fb5111c4d32e052ed815e455c32ed3f6fcb18d963589669 SHA512 1a65ce569fb3262dfb805d0fa2c5c9f987c2c69e547fce366d9d371c8b19a90de279099a942919690aa6d58e2462cfd7bf54240f7ef51dc22ce12e292c46038d
-DIST rust-1.67.1-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 669b7c4b0d5382a7d1d0fe49405f2798f67a9e745711dc2c8e7548ea6fdc8f0fefdab37d0594aec14b2745ce45e7c469e79c0cb1d86077ad9c7b6aafc2656827 SHA512 067681cb4140a29adfa5f4b141e2f3450dad34b95a1e549a6bc8d759e57da5d2ae69cc165efcdef9d83e2eee06edb6acd587d38c9b2f3d000d7a3f79daccc671
-DIST rust-1.67.1-x86_64-unknown-linux-musl.tar.xz 269831452 BLAKE2B a36498528454f1bf0e1812eba005f27e3e281e4e2c117477785f5e48468c3fe316947b7e4360f573f0f4cd6f117e4102db8aeaa616be5bef09fb7518fd230b23 SHA512 9a3eb67239a88b875fe55846a2fffbbb1f2a4cc8eed18b5558f0f989d544a8ddfe0861d5b2b860a779833a1660ee622b30320ec9ef83e841724f7a32f08fda06
-DIST rust-1.67.1-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B b12d0ce1136e355ee027780dfe185ee443de402e531ecc743600aecf081990d4e998fa4a6e6f0f46a886cd806918e23c5e4ccb7cecb0324cb67189984192283f SHA512 37428f0d1d8e2ddb7ce52bce3a297a7f666789d00e7e240180c3e1f7fb5b30bf5e17593cbedebdef95c50406ee82d40ef1f75a576a1a0e02387e1a12ed977c77
-DIST rust-1.68.2-aarch64-unknown-linux-gnu.tar.xz 257441012 BLAKE2B 621615e68cfffb46552577a9e30e863518fa37f53bb8e00bc639f048d7f05910fd31473ca00242a83b3dafd96db73a19648e0b11641f26ccfaaca5ed17abb2b8 SHA512 77fabd0ff2a4e7df8142663932ca146c7f5b463cc7f1d4c2b3ca1c862c29f746a0ca77eff6d37fe582aa4c2cb2c007a1e5d0a1c0214caf1b0792b14934f693aa
-DIST rust-1.68.2-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B eeba8414c9bf414f9a6de46045f9e49ab1a6436c30fcce989aedd2c0658557336f9e919b0372f33fcf11ff3fe64ab9ede54fb9d6e6f4ae8504a6b9401a6f7933 SHA512 f2edefb84d75653d3f107349f3962983ff56cc6538c75b8b00e25e790a51e19be10848906ccb90b80bf7742fca2dfa3bfdc4ce974aae6130c7dd71905c9bbbad
-DIST rust-1.68.2-aarch64-unknown-linux-musl.tar.xz 235749524 BLAKE2B fc90040069f265d781d73f46bccff8df773830d2d178205126f7a1e67b5c22ca0d87dfeb47f46370522c758804e26fe29cdad29706045bd07404685afc2f77c3 SHA512 fceddcdb17f618c576b74590067f9cd476133e86b9c22079400de98489247aba07e12987f29c043067daf1f86e240d8990f0c02b7d58e647d75d8fe82d3229f5
-DIST rust-1.68.2-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 14e072f897ceb80afc01c9bd531f3f85c9b5dffdfe9a0d6e9a41d9c6f5177427afb0a97916385b480594eee4a787184d9d66d05863d0c6885ab1bb0e37a224c6 SHA512 05c42ebcd370782ec5eaeca05fbb5da929eb2f555a8f3e68f622d153f0076cebf7eb78151e95b02e7959b431a7cee670033a172a5eb77116c802e68c20ee622e
-DIST rust-1.68.2-arm-unknown-linux-gnueabi.tar.xz 213433720 BLAKE2B 29d1040c4f553a52b996720b37d26f76f21f7cefb8152eb50166668bf2b380c0e3202e9d6e2643846fdb957b25d4d07f50be4c41d0055c8d7f2bfcb4f5a4a5bf SHA512 851efffc3b47237f1516198c7dd6ea23d432126854707fcc5e23b7de0d8e149d34b53aafa6af7ad2bdee8d45e61c4771fdc96867635aa8ce2f76fe14e450ed2b
-DIST rust-1.68.2-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 7f36e95ed463f260db65f50e0b469789007436f4bf560573a5ca0d6e1c23c99b62a361b98c6c5fa6a7c4056007ef2427f7fd61a501f73750470626a5b70db473 SHA512 6dcea7816a2be7292bcd1ffc50bb11db9803bc5d93207be99c03089d324bb527f117106f55b215069bbb5e84806beb30073d226e2cc6d257402b073b6561ed18
-DIST rust-1.68.2-arm-unknown-linux-gnueabihf.tar.xz 214517972 BLAKE2B 76fb64798cc6e7a1c9c6334e6cef0ab18c72f2c00c0399e55f9344565c0fcd19941eabafadc46351cc4fd940fd5b0c199754621614fa72b9d6d0c1d3286b3dc0 SHA512 d66922d4d2260ecc66e8de5863b946609e7452f8c76585e7399d1c08865f273bd2a6d2037ad36fd2c02ab7c3010f1e84d252adadca2a9662d16a8f70b920c7ba
-DIST rust-1.68.2-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B ca3a22fceb130eb57a6b645fa5e9697044cbb6a09365c73a31410dd734cfe81fb79b2c2e706435e483f12436bf77dad26d22e9a92f0d8bb2e7c084a0324dc5c8 SHA512 4b630cd85b773f0105d14702fbb8e6ec83d97f73a0cd3e06fec92fcea5806f7ee44d4c83d50f181d8d87a64416f5a79eb1cbee7ffedb1934ab1716ee7812f8ce
-DIST rust-1.68.2-armv7-unknown-linux-gnueabihf.tar.xz 218111640 BLAKE2B 13a22fdc55de06c0f4172aa34fda616596cac9bf80a9da9aaed5be9ac44d559e682e3f352a72a8beebb7eee6c0d2c561575f73f28436606e84857b9ed2af48c1 SHA512 a1855a420ca87d72c50465c282236f42ad1ccffbc746f5dcd0f7abc908fcde512228fcc80fc1babaa7ba10ce9f1d841e3eaf577e892644a1260cff110e2e5327
-DIST rust-1.68.2-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B e2db4662c03f7e419f190eefd1334b0d59b768d670376810246e186ce6f9041b103c72946c35d3c459b194962f06c9120d239aeb0988dbd54dee698b2bf304a2 SHA512 5a700f246674136a42884f9888b6a625578fa07d238764d8f72a0092ab1e3b0f4afcbd8e35b5a4a91389fcd181278563cbb694a60d779a272951948487c811bc
-DIST rust-1.68.2-i686-unknown-linux-gnu.tar.xz 234323888 BLAKE2B 71cda528925d6b3200c9e1c5350f276cb653c727186f1ce235f82aff9cf65f28dad01f221b46c32825222cbf59605f4011d9e4c2324bdb06d3f57cdba80391b6 SHA512 f804b8327d6811a88884d928f77325645da1de0fa2b957f3cde3658474e720015ddadb5d38229d62bb46469df4d7c54511f774289157910e07cce51bd6685059
-DIST rust-1.68.2-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B aad0ddb4ea4a9d0a886e1682a255e994ebf24e2a75c54b92a00a511e4334625acc55d4ea0556d5e3bbe82f45d8013a4631d43f81d829f592dda05667719aa0fc SHA512 549f10d92a47edb2b3fdf20f7c4567315f5910f3cb66edc5ba3f61a25d1840778ff971f275511169f748bfbbe7f485214cb172faecbd572992e4ff645a8f35e5
-DIST rust-1.68.2-mips-unknown-linux-gnu.tar.xz 194817776 BLAKE2B 23583f6a367951823c335e15df9655402cc75db4a04685ba398fee58d6bfda86ae8fbefc4af7adc363b6f2011a025086f200a9c0afe156c2fe508f717e0fbdbf SHA512 6d981882a9e07c0d7662a442869c2961251db1ed8bf222ddf3e7079479af72c188dffb1418252230ab7f1b2a9e1e11a5aa6f8b9f59b2fb4ac9f71c163b8614d6
-DIST rust-1.68.2-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9b57cdf81a81780f78ba6f3d13f917bacb35e01966c87cc07f08cd852a1473fec35d115c7951fd41367e465bd90ab90e7ca019e5edf61a92318d6bb2e9c76c2b SHA512 f87a10c3f2e457f8776d51a3fb80aadbf32e95e169b4c5b494d6f6f28164d970c2a82750dd352a574376b827a8ba741705fc8891b25f24744bc9e0572be30f21
-DIST rust-1.68.2-mips64-unknown-linux-gnuabi64.tar.xz 193006892 BLAKE2B 672f8ff8d8da0fd50565ca96263f97b9fa6fae754a35b8eec98ac82310fb5531f76f15ad141f8f78e6f8c94c96bd849b3f47983305386264aab87e724b3ff5d3 SHA512 c007dcaf7dafba7f927b717e140cb161dea7810aa358580b543db59066ff655b600177df211f120db34267444237d2cd7e56d666d813a06507638227f0278b7d
-DIST rust-1.68.2-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B f409f4a07a4c3d341a621433892c5d272896061d7b1dc585fcf3f81caec108164634720ebc40f53df82007ec3dbc7af695c34659c3f2c62241ccc12cd2fd732a SHA512 a3edacb8f7daa8578cc9461eb443918477295a04e55845451a98645575132758b8f6232cfcd18d03421b84b9d2ebee4bf52c58339b47a1cbc02435d65462404d
-DIST rust-1.68.2-mips64el-unknown-linux-gnuabi64.tar.xz 197892024 BLAKE2B 1ab3293d37fafb39f265d2000832b75b4961db19a616a567204448bbbd9c5cb1987e94f557e6c002032fc1e121efeec9cf2fd91579493acf57c24972d5184965 SHA512 fbfebd7d3ccc174397b6724b42f4554bc51149bb4774ccc333eaf1652413d972ba360bfc342b8afc402d77296fc4d429950446bcf570cfd0a96606ac672782e0
-DIST rust-1.68.2-mips64el-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 5c8942be4e2fc20abcee92e1d1599daeedc3d0333216127a9c0791287dbf555d62ad1da5e69541abe4fa80deaa4195a508bd4d6228b67673c97e35586db8e82b SHA512 1ab78418a2a6bc1af4e9ac76bdbc9e6ed1baa793ab0c61b5b17b0856dfbf0085d10990e8254db42c45f635285e722f065e49ff4ceb24a601ac3cdf3ff313a269
-DIST rust-1.68.2-mipsel-unknown-linux-gnu.tar.xz 200273160 BLAKE2B 49800150c3ef7dd8cabe97d0e2a6af2de45bab8d5e7f03791d1acae8caf066d6393c56344136e8cd7867ac0756606e82ab3a1390b25bba038ab940a4ba403c82 SHA512 73985bf7ff96bf13a29f84d8a1daf93e1547548697ef79a601808e5d10a31cf813d724b8e3d3872da5e719b35298563843fa1e7b69021655b898e732d95cfce5
-DIST rust-1.68.2-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5090f375f6638eff5af4d2b8ed3ae4dc274378548aa8336ee0458383a8e28f566329eeb5e4b11ecb7c2b0bcd2bf974f0fb0c073712ba5dc6daec73a1f07181f2 SHA512 69089eefd8c20ccc508527225710b1b7122dc2dd887ed43d18ace4df888d0dcb7d2981eff89115d06eca5607593ce22246a4cace4139e88da0882b8d1d3b2e67
-DIST rust-1.68.2-powerpc-unknown-linux-gnu.tar.xz 220703376 BLAKE2B 05e7d9bbd4359376a568b4f9cabae340edb002e96713f9c5bd6b4e12c42fd947e53c1ece1cf9dfcb004489aa4c3f72d3c8a689df3c137b8ab362e536d62f2bcd SHA512 1fd9b3a58581a10dbbd01522cf3f5c1dedea91c283aacace3b1c2eab1460cd3141d1b817c8cf60e6488872777919b6723129315add84bd6e8b98d12e53a45419
-DIST rust-1.68.2-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B fee49ea534e0f48b4613ac4cb4d62687bdaf48261fbf9237a3ead0fcfbf144dd3c2f5c500465f31e1ff358494a8251fe45045ffd3305bb99e5eb7fb3da635350 SHA512 426d61a3655167de5639432ef635e69e551c514d4105df208ce10dfa27c9ac7f7bcba04302e540cbdfd8fc2953c2a9e5dd7e61c905a2c42a05382df36072afeb
-DIST rust-1.68.2-powerpc64-unknown-linux-gnu.tar.xz 219023868 BLAKE2B f81398dab67be593d968b3f9b1c3d3c3c96670e8e099d31d9d00662e966ed3269bca8fb84f4b2af6182d5ba74ab25a7adca38e11569600e91929fac381252ab8 SHA512 87db3e97fb20f72b24ef114ce79e22e600c2effd2f17b90d91a9b190203edf7c6c73f78f1eb6e6efb999b99ca2397bee1470bcfde7099c7eda6fed7fa2a93deb
-DIST rust-1.68.2-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B fc7ec509b4a6d3e607aa6e437a65e61956104b5206a1c452faee393f6dcec6d4823bdb9409918e86adec15132191d0541e5c39c72b49dc4423b58caec64b8b35 SHA512 0c4902853ea0036ad73a93d239b07f771060ea2fc0b38bd71e690551214b36e3fd903d8d57c435b7d1ae867aa78016012d4c04745c0f67c63c3d0b36e560f348
-DIST rust-1.68.2-powerpc64le-unknown-linux-gnu.tar.xz 231072852 BLAKE2B e989fbd54f97605ad33af295a458bab2eeb8866d367965102d2e66cf5dba5a38e9e8c4eae784dd738c70705fa8014561087e1e526508546e7aa393afd55c4307 SHA512 810dd24af733b5493fe37ebb0af59b0fd03587d862e4b63fe9357d0acbbfb8103430a2313d07a2bef7a2c2ffcf0a4f5cf8a8b2c4a1dd1212446ff49ba4fc2a70
-DIST rust-1.68.2-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 2e9becc108c2b85601530ceb07ef9103297e0fefc01c7a4302a5c23d083f679372cf7cf1328a429ab6f1b06a29fcb34eecbb33f7d8790ca5a515ecafa7672e74 SHA512 23499a386e87e6a7a9c64f2a00d36f4602fcbbc03b3561afcaa741b29bcb6ceb50a8d040dd012bd1cacec2d8899a5840419e70bee1840de5a027a5a111a64864
-DIST rust-1.68.2-riscv64gc-unknown-linux-gnu.tar.xz 207916672 BLAKE2B 81c09e028d0e68730146daf4e1b50c4cad9a5df37ca5e5f50325a86ed97e6198773b94589e6fde2856d09aadab62aacc1c6362d869968ca3c261775b4958b9f8 SHA512 b532575e7aa7f1ee32109b5beb22f184e81346773edf362a44b24363b38ca10744d96052cee82d1a98c026edb39b6195332922847f184ca3dd8d25a8a5e03fd9
-DIST rust-1.68.2-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 31bb980aa2a6b45e7a51cba0f14ed86674617f2cf8ee0583765d01502bf754f59a0cd960ad50a1e21ea8f6898e83e307d39be1eecc2b3344f5681c1908cfb436 SHA512 66c8a3efd1c579784321f24edcb4113c184516912ad490c9088d2141ac527af85acc64b6c67454661d1a991a710758cbebbfaaac7ae086b463fbdae7d1c89bb0
-DIST rust-1.68.2-s390x-unknown-linux-gnu.tar.xz 234071260 BLAKE2B dbcd38a0503d3e131a7786e11874cf0e3dbca13c5ae7c9b605caec529aae5c498722d2685557be43387e2d2b855892720b6e84021765bebdfeea4a2dbe7502f1 SHA512 00614d53a4d34b4714febfc7c4eb2f92446ba928e8bfde0de537de51474704525456b628b60634f0220278c5d403da55c793a30d744362b181cacb1a9d8fac1b
-DIST rust-1.68.2-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9eb99100e0e61ffa6f031b9f04fbcedccfbecd897e3232c8e192e52b3d5c103f8558de5e23e7eb19487eec890c0fef2c9be952edfdcd2f1a05b5b09d3a0fa82e SHA512 4d36bab880a386e6e70d23682435e1a960be3c88387ffcd955a55ce451acd3d49085b0db05230f874519aef12192eebbbbc26627807a6fa7021c89ff5d82f814
-DIST rust-1.68.2-x86_64-unknown-linux-gnu.tar.xz 185953856 BLAKE2B 11fc1f284c77261d69b2ba582843cbd15f3bde832cfa038764e68711de73c9a86f9e36f69a81606b4d5dcb0f9c0f413c88cb400e17511b980671a246ff63aa2a SHA512 7f3344591be014b86e55c21fab27587b00756aa46a366cde2149fafa36b5dfae29e126f70511b40bfad131a1d4d27c8cf82add3474b69e2c498c7380961a23e5
-DIST rust-1.68.2-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 06f3d90126dfe5dcfb8147c8529f333bf635c5c669cc0b5d45156fed85e87aaaa67d8d9c4b250f77e1f0998e77e5635d3f3056447a032eac07bf847fc532a383 SHA512 1d826f0f8ed896d54139b4ae78205aee5cee3ce6f5449d94b8edb8fc19ab589bde6720eb1644502fc45fe0bd452e2e5209de83c99f7c4285a896cfaacbfdad36
-DIST rust-1.68.2-x86_64-unknown-linux-musl.tar.xz 270073164 BLAKE2B 7d69a578e1d4a8fa75cfea6e630265f1c73cca08ed86ddc7858e7770755431dbf13ddaadcf8035fc2b7d2d7b7144a08b3e3a9fa20afcb5cfed7a31d82098fe5e SHA512 b0294141f1e51176664ae841ea55991826ccd15d0d36b03471831baa202ecb97434bf96479e167772bd62f05b80b49878f89a065a91e00026f0aabe7c02fe552
-DIST rust-1.68.2-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 7de58f292729b349fe0694c724aa88ae5bec5a313952fbf7e62a361c7fba4cdedbd99238a4a826d7b627af30ddf4aca8646f6b061f44983a52dcf2ae8d52e56a SHA512 867e0c20049352fb696b99de9d0d8c5df8da0f1ea8eb9a0446884c2d741df7434bf83303694de208e75e64cd73664b979cf117d02db804bff9b4d6de8ee43638
-DIST rust-1.69.0-aarch64-unknown-linux-gnu.tar.xz 207128044 BLAKE2B 884ed5dab3b4f18e25eb1461178828f8945a4db81da212680134b834c1bbac300314f65f9a6310de1b980ec9deed20b5651369a835cc067e8450e65c373fcda8 SHA512 981ab5a7a221b381e766f09a3172e18eedddfeaec27814ef7e15cf5969b721c4191cfe1f734995f96e8ec5cd403be2e8824fa4b501926b58d42b71d11c0b56b4
-DIST rust-1.69.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 1bf54eb4df4f8fa28dc2afafd2ee50b72f0c235e817e31147cf3777d5e82f09b92d516e985ea9901ca8fdb233ea4fe6e231148bda858c83a8ead7f4e40719a0f SHA512 a26efbfc2cef15be20759e4cf2ad71a6eccc200ca8362cb8bddea0877e91ac82cc4f393111054d1fab161c1483ed0c054ca38c02ddc91fa8d986235459948e8b
-DIST rust-1.69.0-aarch64-unknown-linux-musl.tar.xz 189395128 BLAKE2B 333082be0e62375a8dacd9e1ebfbd754876950e0f3d31fc591dcc7476754463fa804aa8b6063d7649cd0ae280ac96b10e4ce5ba29a3c973f3e9b1f7528a998e8 SHA512 c5ee5bba97b48e1a5d313d88eed8df8f492b4a8b962b91516cb883af16d359150db6727f01dcc933d19e8bba0cb75a2015a09cb26d4d03afd54c13a52d454003
-DIST rust-1.69.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 8cf01b352a5d007922b65d01959ff1255eaa4b5957f97a8c83641fc77cc24a8820016da3bb73e1a8097737df639dc614f5609e64b9eca8c97991be5d08470b79 SHA512 f0ca993cd6516128e28b69eec0d924c2f6012cf7de4d3a83c4c85df0c04a4457667ac9b79e922222f67f269d81d1fcd04b2e960e1668e6dcf0efc765cbfa27ec
-DIST rust-1.69.0-arm-unknown-linux-gnueabi.tar.xz 171128532 BLAKE2B 1f07df78da360395f87998e9403253d903c3a236d7fb9213fb96f27c80e2b9bb3214473b077d4bed71f3d2dcc8630ed12b2c19938f2127f4cfd167b4c21ca334 SHA512 c8faf0a3145b26a5abf74dbd5875cb7cd440b9a992db70d1996f454ca8343c4f18d8cbb8e6560b3224de0a324ef813aab63b7e99abcfc0e80ed3844f994f0733
-DIST rust-1.69.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 0addeaf1934fcdd92081204b28314b1ddac661e7ab147cdc023e88fa4560bf2e2ecda1fefd977afef759e32faca1abb022c6256634692ddd0e551b6a903fa2db SHA512 00e05ea2a89171ed66d2221177f8c140226583cf88fab6e4243403a845b899c8e86552bf49bee4083f0b4ec5091fea0f34281cae40aafa58bfc3c5b00e3e9907
-DIST rust-1.69.0-arm-unknown-linux-gnueabihf.tar.xz 171080940 BLAKE2B 3b38493b46b97d52c5b5fd71bec210f1cd6eae2a0d80dc87af17ea5cc47cae430caae3e59ecc25c39dc33f5f08c949025df3e96088f8e7bef70ea9ae4b154c24 SHA512 7292479f7e120f280a5b72013e848ec507baaec439a8418de66016632644aee5d4a8459b6c207de3b664b8fabc4457f94bafd6b9b5a87f2737cecb30f1fa5832
-DIST rust-1.69.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 96fb133bfea0c8d84df18b179731d967112ef7a8d741ef9f8cf6cdb6117ae101128b885b59b379c95d6d96687335e52b2a59e4c28ffb63a2db618d22847e7bfa SHA512 152d290b4915f11465557da8cd4850e4d744d8aa53df81b25d7da5eabad2d7738c9a3f3d1b0fa6ff7bacbd0fcb55dc4641c6b4edff52d2bfdb2f79eca59cdb68
-DIST rust-1.69.0-armv7-unknown-linux-gnueabihf.tar.xz 175695416 BLAKE2B 5c01d80e65b06ebd0625677e997590632afab0a7c5a96bbb91def50d107f307282ed92fd394de81de5ebe801fce583405199975566f801c75bf831d4b24a45d0 SHA512 d2d235adcc7e280dd14d2dbe01c718095f5c138246eca8e6df4e2ef5b74ec1add3300776c09d184047956a9163d24f9c5aae75d4ac611f57490684299cfa929a
-DIST rust-1.69.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B d939f3c29eb916c7e2c94776736d052ddead2e071e068ec94e180d4f5f922abbb165cf596574a3e3e2954d7cd79ecc20619f563ad9495cef0f9ee84fae2fbacc SHA512 13692854268ec690ac9307d118ef27d2e81693f1e33583e934e387ab2538a9b778e46d84f326aafe239272d7941489877a9cd43f31ccf37a294b0be466ea3498
-DIST rust-1.69.0-i686-unknown-linux-gnu.tar.xz 199132360 BLAKE2B 1e0b79d6883ef72335a41dad4a9811c27de1c9c926bbf3140c6201140f53d4d68c1ad5c8002b040b29c74d6454508cdf48cb583b0fa4317ab645d8945fba3f63 SHA512 345ad4da1443abc8fe160c40cbe42a02e6e1e93c8be7e09e8d025ade744d02ccb4a4d07379f27f8e70f694199359451b402cfdd37045c390e4f8013ff5b59228
-DIST rust-1.69.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 4371d5ff495bd9f9dad690a411ea1455fa4275b2324d6d8d0fc7a6c93baa44dc32448c122a4e8d6206ddf23e22e687614e94fac6ba8b4ca630328c02c8f7732c SHA512 7fc72cdc552e3c8474478352cd4ec450cab19660d5dd148680293f9ca6adf6ea370abcb707407c9975f9bd213cfd02fc2d32c1c11bf6a32c892e02d9ee6c246d
-DIST rust-1.69.0-mips-unknown-linux-gnu.tar.xz 151257112 BLAKE2B 098ec6973981845f7fa96a3a32051ceee0859abfdef3ce6d9486fb5c170ed194dca688013c8666c135db5f8d6ba468ec5e42db7d57265f0618909fa14c69adf1 SHA512 d5605d87cab05f499959f03c4bbb607c8e51d4c4e93f83bedd5ab7f8fd0fffd11cafc59f6b866bffd30f76ea37f5a69512491d46fbb613a82eadba63e17ce13f
-DIST rust-1.69.0-mips-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f39075809e42bc83d2be8057095f4cb95bed16a63a9d10f898ba878852f2b4f25fb734a34510be506b0efafe39d450719d5f59a5f4c52bea6f6d5299993c0526 SHA512 ccf22fe8ee696b7402ec0afa9a5564d514ce423fc62220eb3429d366e5c526786d82919ce4740a9d0af61b1fccf457dc2bd4328d863820918614e8edd4c21c1c
-DIST rust-1.69.0-mips64-unknown-linux-gnuabi64.tar.xz 149208900 BLAKE2B e68ebbd8ed27384097d1a847a51e7f60c5ef353b21b1c595ac7398762699117f24d43bd8f968b4f8ce48da9646f818d4252e13dcb2c68dc8ad976318a65e033f SHA512 b26304ebaf78655cf5c7966473f9d65c2c969ce61109d3fcaa852ec09de11eedb144a55feaf19695387ff82aa604aeefc20ef59f315bde56bbaa66303432cb6b
-DIST rust-1.69.0-mips64-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B 219cdecb36deabaf099c09e665fb44f44dd16a49097f4bc101c9d5201f21e6f0ba91ee4751b8d336929d7a270cbf4d58ea48827f80a3c3c74003addfe2b2974e SHA512 aa866c1caac3b35ae1d3b846db7a92dc2c826de4b3671bf7cd3c0fb21f6aba68adfeee843fb351284c3cf816dfae8faef165b12f1821b2d63efd37c149b2eeed
-DIST rust-1.69.0-mips64el-unknown-linux-gnuabi64.tar.xz 152863108 BLAKE2B f5a34e4f38720e670c0b518cfbd790fc8a49c3a118961147b1f3cbd2945f806329b1faca39d0fa64906d78a165306d7e782cfab35e718faa2a9cdda9802d95c2 SHA512 b236bf8d57e6a3df4b4f6c618a5b4df9545579fa34938f0c14d10a189b92ded98726cfa60a5a0b066e7fe6cf8a775af83c2ac44d45ec1e180ba65dd040368617
-DIST rust-1.69.0-mips64el-unknown-linux-gnuabi64.tar.xz.asc 801 BLAKE2B a1e090aabcf732168139dde571fe014946c5eef8a38a9b75bcb13f23edac4e03b84a6524d49177daf5bc7ff4e916fdc4bdf4a55070263bd619602a04d1440f7a SHA512 d27667f2c16ebbd218e20ce686e7a3c3eae93e27694ee317b4c50ddcc70350d5ed038b217088ec84c9c5c5b93ae32c46981926bf9f90fd2e5c2bb32437b0d5d9
-DIST rust-1.69.0-mipsel-unknown-linux-gnu.tar.xz 154656916 BLAKE2B d3c20130eecee206cca2c017f30e842b155cb4774129790347c6ae11276ff12dc31e6636a7c82e8064129d68bac275141c652a25234b157658d053162f28b4b9 SHA512 dad06c90b20d9f343a87dccfd9379c7fa8a914eccd77bb4e6f3a6f322e165db25001c13f78dee85055b7aea29b01f72f7cc1602a39ea911183ffd768c7e601da
-DIST rust-1.69.0-mipsel-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 4d5b46911d51b7fd1494318552b43bfe7448566fb0870229d90f0a237a863f3638a1b1b455c17016021f5b1d94acbe7ac048e71f7a1894cdd6b318431c64a6e2 SHA512 d089842013c4054c74929a4ad4d1cf6362b32e87a4bb5cf3613b260110d7fef69209605795d97484c8fd34287297ec70d6826d19693417cc9ac56b24079fc29b
-DIST rust-1.69.0-powerpc-unknown-linux-gnu.tar.xz 168723248 BLAKE2B b39871cac143d16565e777301ec17d41fc9887c7355c5c2b97c969c87910ece8531cb11ada056b6c94977ad3db81fb9304308065e07be570ecbcecd8529e64be SHA512 9211aa19c792ae12cfeb646a214761b3c2b012b33402a6b881b2d8bbf12a5da1f528b2b9adeeb42afcf18eb5161d430e9dd08ff96e3f048f5e6ae94a7abcdfbc
-DIST rust-1.69.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e697fb9abb9f497214eca3d54550c6e11a713d70f996b5f2ab9fab0833b0d2c20ee5da1407f8b0a862c39f35e9eb85a731529c828ce1530954c29a33bd0ea215 SHA512 b2f1adafdc9632dc553d4c88d1eced2f73eef5ae76a3b051e4e338cb99b0a1ef1280dd2a8783c55d40688c05f4ebd2e77fc785a4e3827ae5f1a0f3734cffec64
-DIST rust-1.69.0-powerpc64-unknown-linux-gnu.tar.xz 168097900 BLAKE2B 1e476381ec036a23fae6a469471a31998461df22f4eefa3faefe286a6ffdc40aa29fdcb07702cf162261820e00161b95d3a4c04bcd23d843e70221d233237106 SHA512 5e9787f2c92373d044a99a23419ae8adbdd83beeec32f5403e2011b650e8a5020e16a9aecab21079dc1e4c906dca6ffc5c581e47a75e841df86f478b5c2e7d0a
-DIST rust-1.69.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 89928b51bfbbbdfa22cff5baa78a8b33d54f98c523302e12632d4180aca17f1c37ad5f57907422cad3ea5a5eb54e667478078a8af36511ad6657aa0fd5bd5e34 SHA512 bf08e394b3797baf388c4f9753e0a57e51f110e65128817b1e48ac066a4db3c60b9ea988b6af5c6ee7651656ff98a1785cb349ea4557a14cd40ef5071770fde8
-DIST rust-1.69.0-powerpc64le-unknown-linux-gnu.tar.xz 177527584 BLAKE2B 1c9efdc5098384b9f2b8ba44e3704bb380fee70a6653ef5dace2773c7083de60ec9814f43253db5febe43746e0ed054cecc30763f8a92ca70a4b4ce0d83ada64 SHA512 132c95339994171cc3ee71b844cd29c1ca4c2b9cb2e55d8d2b6dab0b43efabb6674b19b0298ee18fab2f6b137c2b4baa3574e3d5985a46f622f489222647499e
-DIST rust-1.69.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 209bf72584da1c9bd224ffd070562b72f4240ba802dbb9b3079f330767df90490c4dc808a87d04a31834123b6583ebb62faaecc082edfe2130643f2e577cc274 SHA512 1345173b8b52afa3584e5351a1f2996c823e202ec60d020e43bd0bc8078ba99251586c63e12e9874fa8cae8153fa50c111fe1f27f5d7f27f3df9e11bd2d794f7
-DIST rust-1.69.0-riscv64gc-unknown-linux-gnu.tar.xz 162502700 BLAKE2B 148788555052d5578837e63d9e3a78bb18e9b6e3928b7ec86664c278147f2429342244cc66422807290a61d3f0ed2291aba297dd74562db0b60db0b9f801959b SHA512 af4a7f8ed69aa9e75c457f5c808e3f465dcfa38c9f224f4962a309a1f6352aecd75a1a434d43f15a16382f54d99e7d162a496ab7ab89dd41ab0481f07e4c0546
-DIST rust-1.69.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e02800b42cdee6d7e78fc5ace9f4b8d7f50b6c02aa1107ef1e025bbd1bf91a2dbc200b7f5198e8fffe3b1f81192acd3b8e8eb8af60c0603f03d449ec17c4d4d9 SHA512 79fb21ef8e1049cbdab2f148b8b5ad5f81f93ed338dd76a69ff457200c32acfaef1ddc76bb462e3317aea55aeefe1593073c637c26ced417767f86ffb311e6e1
-DIST rust-1.69.0-s390x-unknown-linux-gnu.tar.xz 192163756 BLAKE2B 9191b2276af1fd2872ae77f0a366b71a56efb4a7507d6a5c3fe301ed2a8165b417abf8a5c85f08b7e8a171318f9f27abb31a777e347f24e59272df95e1448959 SHA512 36fb7ea2b6bd61d0a05cf5dadbbfc4d623271baa3819ee3f6c91389e39da6c22c4a568eb78c4a3ab5e270bba163afd742d0d585f0d381c758709405c3292c5e9
-DIST rust-1.69.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5191016cf56b106230791dafa2baaaa9ee9c40009b304831eb81ba5f536588eca43840c66e927f80f677780c15ac19278f710b12a5753e063af6257cc2c1fb6b SHA512 10625fa96fcdc2f19abace688a7c5f6aa8078959d52e7f1a635bb5624d32eb71ba055fa14d89f8724813385d52f7e55f307a9b1b76236c999c2b36634acc14cc
-DIST rust-1.69.0-x86_64-unknown-linux-gnu.tar.xz 152594196 BLAKE2B f46e89bb76033bddaf8dd96d6abc5ad45965c4235bd97bef9d827d528bb385348c11a8916e9443d888dea6d6637a7460d2d0b61d3b1d642e5d908d0551ee64c6 SHA512 6031403e7009d758074e76a0aa9d4d90c236799439832e0b6fe1e481afb20a330952d92a3627efa28029958ee36f2b93e123a0f4e1e446bca2f1ede2e4bfc621
-DIST rust-1.69.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b12e73829cef5aed2f1fef7c51122d4f4db11622d53860013e3a396ea7a1bf945ce2142aed3d4720c89f0bda223d5fd8f1665da11be185faff949f45a4d65206 SHA512 79d5315ee87e2a02425671376d1a5ed0d947e85fd5bd5a09c6634ac4bc9baa31f1ae57380e3ed00f597f8594c67a319a86ed4f9bd34aafcca43aba388cd0ec39
-DIST rust-1.69.0-x86_64-unknown-linux-musl.tar.xz 1003928 BLAKE2B d22105d51f5785c3cda6256d77032c1b4d680f11afa7d180334db4c2b1915e410cca81abe760ad6d4ccfc2e6503e43e8387543ada3d427654903aebc9c511090 SHA512 1195938d4ef89b83f159d65bb4d69c35795785325a53eebe491fa25f459f9e3de61b0446fddb8e62790ca47bf716dffbc1ba5416a6fcf1da4ae06343c0b3d281
-DIST rust-1.69.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B cd06fb7b95c997cb6ba84a662733a629397a93ba226daf3cb8e0ec3b76ca7a4ec2b264f3b6ea2960ebd4863db259ffaf0cb5ec90a579a910c8c77ea392238b7a SHA512 5f7741db315cf88965a372243a1d0111e5061cc23365980cb80adebc7ed40e5bd12ce981c1e0e9ea802d941f75a8bd917a89d793f49a35a2633c6f807758802e
 DIST rust-1.70.0-aarch64-unknown-linux-gnu.tar.xz 212261108 BLAKE2B 56e15d01ea0e84c51ca3d4fc292c124536472e9c3e6d9ae13ab524e520865117b36621eca5072b961831ee6ad3077abd84afa9e092483095234b7ab2ddcae769 SHA512 d64eb19417a03452f591bb779042b2b3ff16d2ac48a9a74d293bc7265980280801784f92cdd0ae0dbc21743433388149557da7642871c72f3bb4b3061cf7eeba
 DIST rust-1.70.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 435383da02632d404ce95ecfc0b0690f18447f22cd82e67cd08e6e8aab072539b33a49c2712bdc35f34a811f8e66bda6bcf9505b41dcdaf4cc66e358df9d7f02 SHA512 634c35b52d85c524a954d0663b6f1507c5aec826768c1a51394bf72bae585afadd3d3af985a9d165a65d178e04813fd592a78d058ed1400bb0fc43b0a1614a27
 DIST rust-1.70.0-aarch64-unknown-linux-musl.tar.xz 195626092 BLAKE2B df5ca11b64513c86dbcab93bbc5eee37a1f2c6307ca479c07ef62d683ec1b1f56bd596284b11695d80c8483ba5ffaacb0bf060d7618f5e79f3957bfe8bae042b SHA512 5bcc47e2e791603b419c2d1f3503a60cc9a4a7351d3e8a61e6f3823c53195f58795cfcdc56c0c2011ae40a21ec7819d7dad32f5f9981f3d39e5f28ba85083d07
@@ -292,18 +88,6 @@ DIST rust-1.73.0-x86_64-unknown-linux-gnu.tar.xz 161588916 BLAKE2B 10c1c57641e2a
 DIST rust-1.73.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 22e68ec4e6bfa49c15344675abd20ef9449d928943dafc64bfa1cf78dd36ccbce4802af8d4adb84762194dabc512efa74655a93785c127e6942ebeca8f6e3303 SHA512 56e53a1047a23a7f37250a785de2422ee2a3a72fdedb9a02530b3cc1cd978370cbbfc0e67d75f3d537f48c6c78f91d3de949ac2c9392a79404609b169cedaa40
 DIST rust-1.73.0-x86_64-unknown-linux-musl.tar.xz 236190528 BLAKE2B 062b54b31742bc846bdff63fb38be3a3a1f6d2f061da26cee6a0b089feee995fe3dbea536675495ed75d47d657c3d4bf04e36f6752f59f8308f7eb9a397d6e38 SHA512 abd01e0c98a8aa447d01613e24302ca81a8cce7d41179ed60834a39ed1942de0459add3c498a63f94bb1ee8662a2750b375b49894e3108da45f47d3a643cfdba
 DIST rust-1.73.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 9822879d0f14eb5387a623d111ed7a3b1ff038522c071608bd254c4b3479da8a1e9ed78c69c267c1156c45a9cbb2f7db00d123b85f28021a743d392d1cb65c75 SHA512 ff65fd3ca47afeb10f7434d8d4f91b6649739167639c3eadf178aa1339553c5316bd0bb393cd53fcce17c126dcf8db1f1dca6e87044b14762bb20ed8f5a500b7
-DIST rustc-1.65.0-src.tar.xz 139674928 BLAKE2B a218263fb67e306b153f5a6dae95b5ec653acaa5eb4b833862d6f0fd4685a8cec097dadc1b8a934e1bf6055672c7a617f9a0ad4a7dbf2e78084297f10b7ada04 SHA512 3d0369ed3028209c4ecb9b9e7b5f5e3a20be8cc05199675df4f091d62a96c0734bc1dbd7630928fe162792392ec6d0daf9ceed10771531ce022200c7b631e3be
-DIST rustc-1.65.0-src.tar.xz.asc 801 BLAKE2B 43ff92011cd6f7f34ce0495fa341379e5907d032ea90f91e533e5edaec6ad518aad50a9d8b2694074d6909ee96aa779403b16e95792e962e79c1b967542ae26f SHA512 75b9be53363022c81333117876cbcc573bbd4733edf767cbb164218644efb1a9c4bfc2aa73aaa1e39f248a84f1adacb1930a94a6e63f60093ff760fb9ae02efc
-DIST rustc-1.66.1-src.tar.xz 141692940 BLAKE2B 3fae45345998386fda1b11ec896fac4613b8e3f0092bc0df29c9685f4a4012c0bd1b600911c2d19bcfa8f5a84b8a3c39d4c9e062a62cd61925b59129e1cd72b9 SHA512 1944c024c603140d0a9236043a3bd1d0d211dd8d368d6d82a3a620f1ff43b29624755b0943f2b38b40a188c7eee77a840238ea757eaf435e2a3fa6a0e6b82832
-DIST rustc-1.66.1-src.tar.xz.asc 801 BLAKE2B 18e27c88b39eed29147854733c5533b7fffc417ff0b3bd5982174ffa2c5f6d217e2e28ced4da75863a4557800e7ad7a124a4bbb0def4c20da7ed543602185941 SHA512 4511f41ad3d098a339ea3173e3ffa692d1d3cd3ec9dd45af68e4491471f9a72a2e866f6924090eb366bdf6f856650d981eabe1cd851843a17f4a6e4f1dfbc8a9
-DIST rustc-1.67.1-src.tar.xz 142758844 BLAKE2B 55b2a98592b1a2e465b7fb224607cbcb23cb13d5053b51abbd2e45428794f457b6925955c5c562f577830353e5287929b3588ee78a30036bf0ca13a3610316d9 SHA512 42d77ee93b168ae139b026138fb48d925624ff436a836aa97ee235f870e61ea11643b0cf7ad20bcafda774c6cd3855a4bc10a2e2ed1c4d82c6f15158963b304d
-DIST rustc-1.67.1-src.tar.xz.asc 801 BLAKE2B eb507c6f53c592921eb31cccb17c9d6027c67fb1311726f2d25fe7d1f8a1aa051efb99d7207a5e4477df0b75898783437e653fa041ed7daa27e7a7c4263ec230 SHA512 6c962f680d74251b55f77a43d6e383be53bacff8428e0d003bda207de1fea7f716b88f16686d22a88d99518a4834bf299731855fb030477a995d5e1f3d0024f4
-DIST rustc-1.68.2-src.tar.xz 147835648 BLAKE2B 4b6deab818d915afe67a96f4d32a758c15a832041a77d9da5d065a903ea2718e0e7ebbc0cd1baaa436b655bdb93a62e0fb76f9e37aed595c064e0857201bb091 SHA512 8b085d0351e19100e9abc24b10c44a0939a1d35ba23421da4ece345d7373f7dbad1dc6a2ae153c1259404dd96b41e2682e711cf2b0b63fd03a196760cddbcdd3
-DIST rustc-1.68.2-src.tar.xz.asc 801 BLAKE2B 6ac2444950e5f919d09823ea3eef50364ad7b295126b090178872970f03c43ca9747779e0873138ca3a0b753eff79d2ef36d8b70c6a6050039ba9f9018571016 SHA512 86ccbb8ea89f820ba92ad9cbfb8f4bda3393e2c24d699355fd559a2339ff39bcce2a027ebd1b043f11de24b00cdac8c42d252915b36e711eb1d80f49a8007d47
-DIST rustc-1.69.0-src.tar.xz 127242864 BLAKE2B 03f7f3784cb137bede0593dfc008347bb0bb25c982c058175ac2b0442c2593a5a7e2c4539c848ad4375d994c1b7900019120790f0fe12385b413eecc1647d70a SHA512 724398fc208ec18adbd8ba81a445e23d1001b746990f36b869126be8a45f1cdfa75f5b9cbdd0abbab506f91a56d3736ab247677699ebd69525245558cfc01a60
-DIST rustc-1.69.0-src.tar.xz.asc 801 BLAKE2B 2f9b95440c35403fe663f91531cc73681c1c5d5dcbaa10d53a36d542656c097eb4a4320fc12d8df228d5dfb57dd12eb9441c3bd0ba54b7d180e23ded3d2527bb SHA512 8f4c7e6e246a676f53d77b331fe5153eedbd3d8e9f6d922fecc78c8c6fdbbef4610308c93e5af6d8e0d744e6b3ce4bf01b39e29813475a50a38240f679c25156
-DIST rustc-1.70.0-src.tar.xz 140736896 BLAKE2B f07a800e35dca074df0c76fa91f512ae3ad2aacfd3cf9ba4a6c0fbb057e06b562bb03824c9417f4375965960e2e3cee5c2ba873e0de7aa0f68bd82b9e4dd2fb0 SHA512 21b35185fdcc35a059ee5ef6dca2b68f5f1d199e97f425a571cfc318a852c36a57bccf68e7673b4cb7cd83128f30d0b3eb93009a978f3ba3909b7eee50d40631
-DIST rustc-1.70.0-src.tar.xz.asc 801 BLAKE2B 172744ff679c4554a6992b08a6bdcd65bd133f3db2d7f2eb1fa3659683aeb65228f9c57d101d9d050256217bb4fbbc0ccaf892bfcd8ef69ac742e12e75548c68 SHA512 0b26b176bf957ea5c2465a8da05992907165f11dccfb8f3a8a2c851b20fc9083e8bca80fefee2534d3326e721f41d19ef75b7f49692a342ab7ef5cdb2e8c52a4
 DIST rustc-1.71.0-src.tar.xz 151962928 BLAKE2B da8d83cd6621947816630ae487efe7d087266c1352949cedbbd441ba7c7f7c7beb13b9470e66e2f3359c37a050d0e44d22481c418532d3ebb339a456ab092648 SHA512 2c93bafdd248563765a285add48ca77c1e4bad4d5431675ae6a5cdee4cfe7a41e6bcc880a489ca1069a307fd9a005f2d5f8e230dfc95b4a69152b4f9ca49ac44
 DIST rustc-1.71.0-src.tar.xz.asc 801 BLAKE2B e5ddc4b18a6caeeb63c5aed5b5d15989d086f408787d2e603e50e7b8548dc078683062627280fd2a0393bec01c314eb1cc59f9b0e3146abf07b8365a0b44c640 SHA512 cb1b208c8b2bfccf02c73c4246fb238edb0dd10e292c1ef781920964e54e40add3089d988769982c0ce06b719014685b1c37daa2d08b513d86ad73808f4ce3ac
 DIST rustc-1.71.1-src.tar.xz 151983068 BLAKE2B 3dfdbc246feb84a79ae94c2de978c5585ee06cf6b683d2245869b62e28f7c79f89cc589f5431537713bf088236a0b824acefc1b68e418e9eb72e1eea98054e3f SHA512 fd0e5a16bdbeb539184513583089e55f681cb772810df357b6b1464853f7022ac02edab3dd155b2262ed0047e2a25dea3808dd078dcdfce9d399384465009db4

diff --git a/dev-lang/rust/files/1.64.0-libressl.patch b/dev-lang/rust/files/1.64.0-libressl.patch
deleted file mode 100644
index 88d4789..0000000
--- a/dev-lang/rust/files/1.64.0-libressl.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From: orbea <orbea@riseup.net>
-Date: Sun, 3 Jul 2022 18:38:28 -0700
-Subject: [PATCH] Support LibreSSL 3.x.x
-
---- a/vendor/libssh2-sys/build.rs
-+++ b/vendor/libssh2-sys/build.rs
-@@ -121,6 +121,7 @@ fn main() {
-         cfg.define("HAVE_EVP_AES_128_CTR", None);
-         cfg.define("HAVE_POLL", None);
-         cfg.define("HAVE_GETTIMEOFDAY", None);
-+        cfg.define("HAVE_OPAQUE_STRUCTS", None);
- 
-         cfg.file("libssh2/src/openssl.c");
- 
---- a/vendor/openssl-sys/build/main.rs
-+++ b/vendor/openssl-sys/build/main.rs
-@@ -254,6 +254,7 @@ See rust-openssl README for more information:
-             (3, 3, _) => ('3', '3', 'x'),
-             (3, 4, 0) => ('3', '4', '0'),
-             (3, 4, _) => ('3', '4', 'x'),
-+            (3, _, _) => ('3', 'x', 'x'),
-             _ => version_error(),
-         };
- 

diff --git a/dev-lang/rust/files/1.64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch b/dev-lang/rust/files/1.64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch
deleted file mode 100644
index 5d685ba..0000000
--- a/dev-lang/rust/files/1.64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 3fd653f3978e5ec2249c37eb08934bfe343e9198 Mon Sep 17 00:00:00 2001
-From: Georgy Yakovlev <gyakovlev@gentoo.org>
-Date: Sat, 24 Sep 2022 23:09:38 -0700
-Subject: [PATCH] vendor/rustix: sparc has no SIGSTKFLT
-
-gyakovlev: removed checkum HUNK
-
----
- vendor/rustix/.cargo-checksum.json               | 2 +-
- vendor/rustix/src/imp/libc/process/types.rs      | 4 ++++
- vendor/rustix/src/imp/linux_raw/process/types.rs | 4 ++--
- 3 files changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/vendor/rustix/src/imp/libc/process/types.rs b/vendor/rustix/src/imp/libc/process/types.rs
-index 60d629d..1278cee 100644
---- a/vendor/rustix/src/imp/libc/process/types.rs
-+++ b/vendor/rustix/src/imp/libc/process/types.rs
-@@ -197,6 +197,8 @@ pub enum Signal {
-         target_os = "macos",
-         target_os = "netbsd",
-         target_os = "openbsd",
-+        target_arch = "sparc",
-+        target_arch = "sparc64",
-         all(
-             any(target_os = "android", target_os = "linux"),
-             any(target_arch = "mips", target_arch = "mips64"),
-@@ -274,6 +276,8 @@ impl Signal {
-                 target_os = "macos",
-                 target_os = "netbsd",
-                 target_os = "openbsd",
-+                target_arch = "sparc",
-+                target_arch = "sparc64",
-                 all(
-                     any(target_os = "android", target_os = "linux"),
-                     any(target_arch = "mips", target_arch = "mips64"),
-diff --git a/vendor/rustix/src/imp/linux_raw/process/types.rs b/vendor/rustix/src/imp/linux_raw/process/types.rs
-index 53e2c7d..859a108 100644
---- a/vendor/rustix/src/imp/linux_raw/process/types.rs
-+++ b/vendor/rustix/src/imp/linux_raw/process/types.rs
-@@ -119,7 +119,7 @@ pub enum Signal {
-     /// `SIGTERM`
-     Term = linux_raw_sys::general::SIGTERM,
-     /// `SIGSTKFLT`
--    #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
-+    #[cfg(not(any(target_arch = "mips", target_arch = "mips64", target_arch = "sparc", target_arch = "sparc64")))]
-     Stkflt = linux_raw_sys::general::SIGSTKFLT,
-     /// `SIGCHLD`
-     #[doc(alias = "Chld")]
-@@ -179,7 +179,7 @@ impl Signal {
-             linux_raw_sys::general::SIGPIPE => Some(Self::Pipe),
-             linux_raw_sys::general::SIGALRM => Some(Self::Alarm),
-             linux_raw_sys::general::SIGTERM => Some(Self::Term),
--            #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
-+            #[cfg(not(any(target_arch = "mips", target_arch = "mips64", target_arch = "sparc", target_arch = "sparc64")))]
-             linux_raw_sys::general::SIGSTKFLT => Some(Self::Stkflt),
-             linux_raw_sys::general::SIGCHLD => Some(Self::Child),
-             linux_raw_sys::general::SIGCONT => Some(Self::Cont),
--- 
-2.37.3
-

diff --git a/dev-lang/rust/files/1.65.0-ignore-broken-and-non-applicable-tests.patch b/dev-lang/rust/files/1.65.0-ignore-broken-and-non-applicable-tests.patch
deleted file mode 100644
index fddda12..0000000
--- a/dev-lang/rust/files/1.65.0-ignore-broken-and-non-applicable-tests.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-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/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/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.67.1-rustc_expand.patch b/dev-lang/rust/files/1.67.1-rustc_expand.patch
deleted file mode 100644
index af778d4..0000000
--- a/dev-lang/rust/files/1.67.1-rustc_expand.patch
+++ /dev/null
@@ -1,1427 +0,0 @@
-From 2f9f097cb8b6c27a7e0d7a916e6911fc1f5ecd81 Mon Sep 17 00:00:00 2001
-From: nils <48135649+Nilstrieb@users.noreply.github.com>
-Date: Tue, 15 Nov 2022 14:24:33 +0100
-Subject: [PATCH] Migrate parts of `rustc_expand` to session diagnostics
-
-This migrates everything but the `mbe` and `proc_macro` modules. It also
-contains a few cleanups and drive-by/accidental diagnostic improvements
-which can be seen in the diff for the UI tests.
----
- compiler/rustc_builtin_macros/src/concat.rs   |   2 +-
- .../rustc_builtin_macros/src/concat_bytes.rs  |   2 +-
- compiler/rustc_builtin_macros/src/env.rs      |   2 +-
- .../locales/en-US/expand.ftl                  | 107 ++++++
- compiler/rustc_errors/src/diagnostic_impls.rs |   6 +
- compiler/rustc_expand/src/base.rs             |  90 +++--
- compiler/rustc_expand/src/config.rs           | 106 +++---
- compiler/rustc_expand/src/errors.rs           | 326 +++++++++++++++++-
- compiler/rustc_expand/src/expand.rs           |  86 ++---
- compiler/rustc_expand/src/lib.rs              |   6 +
- compiler/rustc_expand/src/module.rs           |  80 ++---
- compiler/rustc_expand/src/tests.rs            |   1 +
- src/test/rustdoc-ui/doc-cfg.stderr            |   4 +-
- .../cfg-attr-syntax-validation.stderr         |   2 +-
- .../macros/macro-in-expression-context.stderr |   8 +-
- .../ui/proc-macro/attr-invalid-exprs.stderr   |  16 +-
- src/test/ui/proc-macro/attribute.rs           |   8 +-
- src/test/ui/proc-macro/attribute.stderr       |   8 +-
- src/test/ui/proc-macro/expand-expr.stderr     |  16 +-
- 19 files changed, 640 insertions(+), 236 deletions(-)
-
-diff --git a/compiler/rustc_builtin_macros/src/concat.rs b/compiler/rustc_builtin_macros/src/concat.rs
-index e2d71825d556f..9ae65c641fd62 100644
---- a/compiler/rustc_builtin_macros/src/concat.rs
-+++ b/compiler/rustc_builtin_macros/src/concat.rs
-@@ -11,7 +11,7 @@ pub fn expand_concat(
-     sp: rustc_span::Span,
-     tts: TokenStream,
- ) -> Box<dyn base::MacResult + 'static> {
--    let Some(es) = base::get_exprs_from_tts(cx, sp, tts) else {
-+    let Some(es) = base::get_exprs_from_tts(cx, tts) else {
-         return DummyResult::any(sp);
-     };
-     let mut accumulator = String::new();
-diff --git a/compiler/rustc_builtin_macros/src/concat_bytes.rs b/compiler/rustc_builtin_macros/src/concat_bytes.rs
-index d1124145dcbbb..70ce5a6c41929 100644
---- a/compiler/rustc_builtin_macros/src/concat_bytes.rs
-+++ b/compiler/rustc_builtin_macros/src/concat_bytes.rs
-@@ -137,7 +137,7 @@ pub fn expand_concat_bytes(
-     sp: rustc_span::Span,
-     tts: TokenStream,
- ) -> Box<dyn base::MacResult + 'static> {
--    let Some(es) = base::get_exprs_from_tts(cx, sp, tts) else {
-+    let Some(es) = base::get_exprs_from_tts(cx, tts) else {
-         return DummyResult::any(sp);
-     };
-     let mut accumulator = Vec::new();
-diff --git a/compiler/rustc_builtin_macros/src/env.rs b/compiler/rustc_builtin_macros/src/env.rs
-index 0b4e545f7a3d0..a7283ea601b19 100644
---- a/compiler/rustc_builtin_macros/src/env.rs
-+++ b/compiler/rustc_builtin_macros/src/env.rs
-@@ -52,7 +52,7 @@ pub fn expand_env<'cx>(
-     sp: Span,
-     tts: TokenStream,
- ) -> Box<dyn base::MacResult + 'cx> {
--    let mut exprs = match get_exprs_from_tts(cx, sp, tts) {
-+    let mut exprs = match get_exprs_from_tts(cx, tts) {
-         Some(exprs) if exprs.is_empty() => {
-             cx.span_err(sp, "env! takes 1 or 2 arguments");
-             return DummyResult::any(sp);
-diff --git a/compiler/rustc_error_messages/locales/en-US/expand.ftl b/compiler/rustc_error_messages/locales/en-US/expand.ftl
-index 5720591154f99..df0e8ae5dd8f5 100644
---- a/compiler/rustc_error_messages/locales/en-US/expand.ftl
-+++ b/compiler/rustc_error_messages/locales/en-US/expand.ftl
-@@ -20,3 +20,110 @@ expand_var_still_repeating =
-     variable '{$ident}' is still repeating at this depth
- 
- expand_meta_var_dif_seq_matchers = {$msg}
-+
-+expand_macro_const_stability =
-+    macros cannot have const stability attributes
-+    .label = invalid const stability attribute
-+    .label2 = const stability attribute affects this macro
-+
-+expand_macro_body_stability =
-+    macros cannot have body stability attributes
-+    .label = invalid body stability attribute
-+    .label2 = body stability attribute affects this macro
-+
-+expand_resolve_relative_path =
-+    cannot resolve relative path in non-file source `{$path}`
-+
-+expand_attr_no_arguments =
-+    attribute must have either one or two arguments
-+
-+expand_not_a_meta_item =
-+    not a meta item
-+
-+expand_only_one_word =
-+    must only be one word
-+
-+expand_cannot_be_name_of_macro =
-+    `{$trait_ident}` cannot be a name of {$macro_type} macro
-+
-+expand_arg_not_attributes =
-+    second argument must be `attributes`
-+
-+expand_attributes_wrong_form =
-+    attribute must be of form: `attributes(foo, bar)`
-+
-+expand_attribute_meta_item =
-+    attribute must be a meta item, not a literal
-+
-+expand_attribute_single_word =
-+    attribute must only be a single word
-+
-+expand_helper_attribute_name_invalid =
-+    `{$name}` cannot be a name of derive helper attribute
-+
-+expand_expected_comma_in_list =
-+    expected token: `,`
-+
-+expand_only_one_argument =
-+    {$name} takes 1 argument
-+
-+expand_takes_no_arguments =
-+    {$name} takes no arguments
-+
-+expand_feature_included_in_edition =
-+    the feature `{$feature}` is included in the Rust {$edition} edition
-+
-+expand_feature_removed =
-+    feature has been removed
-+    .label = feature has been removed
-+    .reason = {$reason}
-+
-+expand_feature_not_allowed =
-+    the feature `{$name}` is not in the list of allowed features
-+
-+expand_recursion_limit_reached =
-+    recursion limit reached while expanding `{$descr}`
-+    .help = consider increasing the recursion limit by adding a `#![recursion_limit = "{$suggested_limit}"]` attribute to your crate (`{$crate_name}`)
-+
-+expand_malformed_feature_attribute =
-+    malformed `feature` attribute input
-+    .expected = expected just one word
-+
-+expand_remove_expr_not_supported =
-+    removing an expression is not supported in this position
-+
-+expand_invalid_cfg_no_parens = `cfg` is not followed by parentheses
-+expand_invalid_cfg_no_predicate = `cfg` predicate is not specified
-+expand_invalid_cfg_multiple_predicates = multiple `cfg` predicates are specified
-+expand_invalid_cfg_predicate_literal = `cfg` predicate key cannot be a literal
-+expand_invalid_cfg_expected_syntax = expected syntax is
-+
-+expand_wrong_fragment_kind =
-+    non-{$kind} macro in {$kind} position: {$name}
-+
-+expand_unsupported_key_value =
-+    key-value macro attributes are not supported
-+
-+expand_incomplete_parse =
-+    macro expansion ignores token `{$token}` and any following
-+    .label = caused by the macro expansion here
-+    .note = the usage of `{$macro_path}!` is likely invalid in {$kind_name} context
-+    .suggestion_add_semi = you might be missing a semicolon here
-+
-+expand_remove_node_not_supported =
-+    removing {$descr} is not supported in this position
-+
-+expand_module_circular =
-+    circular modules: {$modules}
-+
-+expand_module_in_block =
-+    cannot declare a non-inline module inside a block unless it has a path attribute
-+    .note = maybe `use` the module `{$name}` instead of redeclaring it
-+
-+expand_module_file_not_found =
-+    file not found for module `{$name}`
-+    .help = to create the module `{$name}`, create file "{$default_path}" or "{$secondary_path}"
-+
-+expand_module_multiple_candidates =
-+    file for module `{$name}` found at both "{$default_path}" and "{$secondary_path}"
-+    .help = delete or rename one of them to remove the ambiguity
-diff --git a/compiler/rustc_errors/src/diagnostic_impls.rs b/compiler/rustc_errors/src/diagnostic_impls.rs
-index 7155db32e53b7..cb39e997436e0 100644
---- a/compiler/rustc_errors/src/diagnostic_impls.rs
-+++ b/compiler/rustc_errors/src/diagnostic_impls.rs
-@@ -152,6 +152,12 @@ impl IntoDiagnosticArg for ast::Path {
-     }
- }
- 
-+impl IntoDiagnosticArg for &ast::Path {
-+    fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
-+        DiagnosticArgValue::Str(Cow::Owned(pprust::path_to_string(self)))
-+    }
-+}
-+
- impl IntoDiagnosticArg for ast::token::Token {
-     fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
-         DiagnosticArgValue::Str(pprust::token_to_string(&self))
-diff --git a/compiler/rustc_expand/src/base.rs b/compiler/rustc_expand/src/base.rs
-index 9d6a4f9a1fd7d..6f159663e80cf 100644
---- a/compiler/rustc_expand/src/base.rs
-+++ b/compiler/rustc_expand/src/base.rs
-@@ -1,3 +1,11 @@
-+#![deny(rustc::untranslatable_diagnostic)]
-+
-+use crate::errors::{
-+    ArgumentNotAttributes, AttrNoArguments, AttributeMetaItem, AttributeSingleWord,
-+    AttributesWrongForm, CannotBeNameOfMacro, ExpectedCommaInList, HelperAttributeNameInvalid,
-+    MacroBodyStability, MacroConstStability, NotAMetaItem, OnlyOneArgument, OnlyOneWord,
-+    ResolveRelativePath, TakesNoArguments,
-+};
- use crate::expand::{self, AstFragment, Invocation};
- use crate::module::DirOwnership;
- 
-@@ -789,26 +797,16 @@ impl SyntaxExtension {
-             .unwrap_or_else(|| (None, helper_attrs));
-         let (stability, const_stability, body_stability) = attr::find_stability(&sess, attrs, span);
-         if let Some((_, sp)) = const_stability {
--            sess.parse_sess
--                .span_diagnostic
--                .struct_span_err(sp, "macros cannot have const stability attributes")
--                .span_label(sp, "invalid const stability attribute")
--                .span_label(
--                    sess.source_map().guess_head_span(span),
--                    "const stability attribute affects this macro",
--                )
--                .emit();
-+            sess.emit_err(MacroConstStability {
-+                span: sp,
-+                head_span: sess.source_map().guess_head_span(span),
-+            });
-         }
-         if let Some((_, sp)) = body_stability {
--            sess.parse_sess
--                .span_diagnostic
--                .struct_span_err(sp, "macros cannot have body stability attributes")
--                .span_label(sp, "invalid body stability attribute")
--                .span_label(
--                    sess.source_map().guess_head_span(span),
--                    "body stability attribute affects this macro",
--                )
--                .emit();
-+            sess.emit_err(MacroBodyStability {
-+                span: sp,
-+                head_span: sess.source_map().guess_head_span(span),
-+            });
-         }
- 
-         SyntaxExtension {
-@@ -1200,13 +1198,11 @@ pub fn resolve_path(
-                 .expect("attempting to resolve a file path in an external file"),
-             FileName::DocTest(path, _) => path,
-             other => {
--                return Err(parse_sess.span_diagnostic.struct_span_err(
-+                return Err(ResolveRelativePath {
-                     span,
--                    &format!(
--                        "cannot resolve relative path in non-file source `{}`",
--                        parse_sess.source_map().filename_for_diagnostics(&other)
--                    ),
--                ));
-+                    path: parse_sess.source_map().filename_for_diagnostics(&other).to_string(),
-+                }
-+                .into_diagnostic(&parse_sess.span_diagnostic));
-             }
-         };
-         result.pop();
-@@ -1222,6 +1218,8 @@ pub fn resolve_path(
- /// The returned bool indicates whether an applicable suggestion has already been
- /// added to the diagnostic to avoid emitting multiple suggestions. `Err(None)`
- /// indicates that an ast error was encountered.
-+// FIXME(Nilstrieb) Make this function setup translatable
-+#[allow(rustc::untranslatable_diagnostic)]
- pub fn expr_to_spanned_string<'a>(
-     cx: &'a mut ExtCtxt<'_>,
-     expr: P<ast::Expr>,
-@@ -1280,9 +1278,9 @@ pub fn expr_to_string(
- /// compilation should call
- /// `cx.parse_sess.span_diagnostic.abort_if_errors()` (this should be
- /// done as rarely as possible).
--pub fn check_zero_tts(cx: &ExtCtxt<'_>, sp: Span, tts: TokenStream, name: &str) {
-+pub fn check_zero_tts(cx: &ExtCtxt<'_>, span: Span, tts: TokenStream, name: &str) {
-     if !tts.is_empty() {
--        cx.span_err(sp, &format!("{} takes no arguments", name));
-+        cx.emit_err(TakesNoArguments { span, name });
-     }
- }
- 
-@@ -1304,31 +1302,27 @@ pub fn parse_expr(p: &mut parser::Parser<'_>) -> Option<P<ast::Expr>> {
- /// expect exactly one string literal, or emit an error and return `None`.
- pub fn get_single_str_from_tts(
-     cx: &mut ExtCtxt<'_>,
--    sp: Span,
-+    span: Span,
-     tts: TokenStream,
-     name: &str,
- ) -> Option<Symbol> {
-     let mut p = cx.new_parser_from_tts(tts);
-     if p.token == token::Eof {
--        cx.span_err(sp, &format!("{} takes 1 argument", name));
-+        cx.emit_err(OnlyOneArgument { span, name });
-         return None;
-     }
-     let ret = parse_expr(&mut p)?;
-     let _ = p.eat(&token::Comma);
- 
-     if p.token != token::Eof {
--        cx.span_err(sp, &format!("{} takes 1 argument", name));
-+        cx.emit_err(OnlyOneArgument { span, name });
-     }
-     expr_to_string(cx, ret, "argument must be a string literal").map(|(s, _)| s)
- }
- 
- /// Extracts comma-separated expressions from `tts`.
- /// On error, emit it, and return `None`.
--pub fn get_exprs_from_tts(
--    cx: &mut ExtCtxt<'_>,
--    sp: Span,
--    tts: TokenStream,
--) -> Option<Vec<P<ast::Expr>>> {
-+pub fn get_exprs_from_tts(cx: &mut ExtCtxt<'_>, tts: TokenStream) -> Option<Vec<P<ast::Expr>>> {
-     let mut p = cx.new_parser_from_tts(tts);
-     let mut es = Vec::new();
-     while p.token != token::Eof {
-@@ -1343,7 +1337,7 @@ pub fn get_exprs_from_tts(
-             continue;
-         }
-         if p.token != token::Eof {
--            cx.span_err(sp, "expected token: `,`");
-+            cx.emit_err(ExpectedCommaInList { span: p.token.span });
-             return None;
-         }
-     }
-@@ -1353,64 +1347,58 @@ pub fn get_exprs_from_tts(
- pub fn parse_macro_name_and_helper_attrs(
-     diag: &rustc_errors::Handler,
-     attr: &Attribute,
--    descr: &str,
-+    macro_type: &str,
- ) -> Option<(Symbol, Vec<Symbol>)> {
-     // Once we've located the `#[proc_macro_derive]` attribute, verify
-     // that it's of the form `#[proc_macro_derive(Foo)]` or
-     // `#[proc_macro_derive(Foo, attributes(A, ..))]`
-     let list = attr.meta_item_list()?;
-     if list.len() != 1 && list.len() != 2 {
--        diag.span_err(attr.span, "attribute must have either one or two arguments");
-+        diag.emit_err(AttrNoArguments { span: attr.span });
-         return None;
-     }
-     let Some(trait_attr) = list[0].meta_item() else {
--        diag.span_err(list[0].span(), "not a meta item");
-+        diag.emit_err(NotAMetaItem {span: list[0].span()});
-         return None;
-     };
-     let trait_ident = match trait_attr.ident() {
-         Some(trait_ident) if trait_attr.is_word() => trait_ident,
-         _ => {
--            diag.span_err(trait_attr.span, "must only be one word");
-+            diag.emit_err(OnlyOneWord { span: trait_attr.span });
-             return None;
-         }
-     };
- 
-     if !trait_ident.name.can_be_raw() {
--        diag.span_err(
--            trait_attr.span,
--            &format!("`{}` cannot be a name of {} macro", trait_ident, descr),
--        );
-+        diag.emit_err(CannotBeNameOfMacro { span: trait_attr.span, trait_ident, macro_type });
-     }
- 
-     let attributes_attr = list.get(1);
-     let proc_attrs: Vec<_> = if let Some(attr) = attributes_attr {
-         if !attr.has_name(sym::attributes) {
--            diag.span_err(attr.span(), "second argument must be `attributes`");
-+            diag.emit_err(ArgumentNotAttributes { span: attr.span() });
-         }
-         attr.meta_item_list()
-             .unwrap_or_else(|| {
--                diag.span_err(attr.span(), "attribute must be of form: `attributes(foo, bar)`");
-+                diag.emit_err(AttributesWrongForm { span: attr.span() });
-                 &[]
-             })
-             .iter()
-             .filter_map(|attr| {
-                 let Some(attr) = attr.meta_item() else {
--                    diag.span_err(attr.span(), "not a meta item");
-+                    diag.emit_err(AttributeMetaItem { span: attr.span() });
-                     return None;
-                 };
- 
-                 let ident = match attr.ident() {
-                     Some(ident) if attr.is_word() => ident,
-                     _ => {
--                        diag.span_err(attr.span, "must only be one word");
-+                        diag.emit_err(AttributeSingleWord { span: attr.span });
-                         return None;
-                     }
-                 };
-                 if !ident.name.can_be_raw() {
--                    diag.span_err(
--                        attr.span,
--                        &format!("`{}` cannot be a name of derive helper attribute", ident),
--                    );
-+                    diag.emit_err(HelperAttributeNameInvalid { span: attr.span, name: ident });
-                 }
- 
-                 Some(ident.name)
-diff --git a/compiler/rustc_expand/src/config.rs b/compiler/rustc_expand/src/config.rs
-index 2510795c2e3ed..f4c6f3386ade2 100644
---- a/compiler/rustc_expand/src/config.rs
-+++ b/compiler/rustc_expand/src/config.rs
-@@ -1,5 +1,9 @@
- //! Conditional compilation stripping.
- 
-+use crate::errors::{
-+    FeatureIncludedInEdition, FeatureNotAllowed, FeatureRemoved, FeatureRemovedReason, InvalidCfg,
-+    MalformedFeatureAttribute, MalformedFeatureAttributeHelp, RemoveExprNotSupported,
-+};
- use rustc_ast::ptr::P;
- use rustc_ast::token::{Delimiter, Token, TokenKind};
- use rustc_ast::tokenstream::{AttrTokenStream, AttrTokenTree};
-@@ -10,7 +14,6 @@ use rustc_ast::{self as ast, AttrStyle, Attribute, HasAttrs, HasTokens, MetaItem
- use rustc_attr as attr;
- use rustc_data_structures::fx::FxHashMap;
- use rustc_data_structures::map_in_place::MapInPlace;
--use rustc_errors::{error_code, struct_span_err, Applicability, Handler};
- use rustc_feature::{Feature, Features, State as FeatureState};
- use rustc_feature::{
-     ACCEPTED_FEATURES, ACTIVE_FEATURES, REMOVED_FEATURES, STABLE_REMOVED_FEATURES,
-@@ -33,18 +36,12 @@ pub struct StripUnconfigured<'a> {
-     pub lint_node_id: NodeId,
- }
- 
--fn get_features(
--    sess: &Session,
--    span_handler: &Handler,
--    krate_attrs: &[ast::Attribute],
--) -> Features {
--    fn feature_removed(span_handler: &Handler, span: Span, reason: Option<&str>) {
--        let mut err = struct_span_err!(span_handler, span, E0557, "feature has been removed");
--        err.span_label(span, "feature has been removed");
--        if let Some(reason) = reason {
--            err.note(reason);
--        }
--        err.emit();
-+fn get_features(sess: &Session, krate_attrs: &[ast::Attribute]) -> Features {
-+    fn feature_removed(sess: &Session, span: Span, reason: Option<&str>) {
-+        sess.emit_err(FeatureRemoved {
-+            span,
-+            reason: reason.map(|reason| FeatureRemovedReason { reason }),
-+        });
-     }
- 
-     fn active_features_up_to(edition: Edition) -> impl Iterator<Item = &'static Feature> {
-@@ -117,34 +114,34 @@ fn get_features(
-             continue;
-         };
- 
--        let bad_input = |span| {
--            struct_span_err!(span_handler, span, E0556, "malformed `feature` attribute input")
--        };
--
-         for mi in list {
-             let name = match mi.ident() {
-                 Some(ident) if mi.is_word() => ident.name,
-                 Some(ident) => {
--                    bad_input(mi.span())
--                        .span_suggestion(
--                            mi.span(),
--                            "expected just one word",
--                            ident.name,
--                            Applicability::MaybeIncorrect,
--                        )
--                        .emit();
-+                    sess.emit_err(MalformedFeatureAttribute {
-+                        span: mi.span(),
-+                        help: MalformedFeatureAttributeHelp::Suggestion {
-+                            span: mi.span(),
-+                            suggestion: ident.name,
-+                        },
-+                    });
-                     continue;
-                 }
-                 None => {
--                    bad_input(mi.span()).span_label(mi.span(), "expected just one word").emit();
-+                    sess.emit_err(MalformedFeatureAttribute {
-+                        span: mi.span(),
-+                        help: MalformedFeatureAttributeHelp::Label { span: mi.span() },
-+                    });
-                     continue;
-                 }
-             };
- 
--            if let Some(edition) = edition_enabled_features.get(&name) {
--                let msg =
--                    &format!("the feature `{}` is included in the Rust {} edition", name, edition);
--                span_handler.struct_span_warn_with_code(mi.span(), msg, error_code!(E0705)).emit();
-+            if let Some(&edition) = edition_enabled_features.get(&name) {
-+                sess.emit_warning(FeatureIncludedInEdition {
-+                    span: mi.span(),
-+                    feature: name,
-+                    edition,
-+                });
-                 continue;
-             }
- 
-@@ -159,7 +156,7 @@ fn get_features(
-                 if let FeatureState::Removed { reason } | FeatureState::Stabilized { reason } =
-                     state
-                 {
--                    feature_removed(span_handler, mi.span(), *reason);
-+                    feature_removed(sess, mi.span(), *reason);
-                     continue;
-                 }
-             }
-@@ -173,14 +170,7 @@ fn get_features(
- 
-             if let Some(allowed) = sess.opts.unstable_opts.allow_features.as_ref() {
-                 if allowed.iter().all(|f| name.as_str() != f) {
--                    struct_span_err!(
--                        span_handler,
--                        mi.span(),
--                        E0725,
--                        "the feature `{}` is not in the list of allowed features",
--                        name
--                    )
--                    .emit();
-+                    sess.emit_err(FeatureNotAllowed { span: mi.span(), name });
-                     continue;
-                 }
-             }
-@@ -221,7 +211,7 @@ pub fn features(
-         }
-         Some(attrs) => {
-             krate.attrs = attrs;
--            let features = get_features(sess, diag, &krate.attrs);
-+            let features = get_features(sess, &krate.attrs);
-             if err_count == diag.err_count() {
-                 // Avoid reconfiguring malformed `cfg_attr`s.
-                 strip_unconfigured.features = Some(&features);
-@@ -503,8 +493,7 @@ impl<'a> StripUnconfigured<'a> {
-         // N.B., this is intentionally not part of the visit_expr() function
-         //     in order for filter_map_expr() to be able to avoid this check
-         if let Some(attr) = expr.attrs().iter().find(|a| is_cfg(*a)) {
--            let msg = "removing an expression is not supported in this position";
--            self.sess.parse_sess.span_diagnostic.span_err(attr.span, msg);
-+            self.sess.emit_err(RemoveExprNotSupported { span: attr.span });
-         }
- 
-         self.process_cfg_attrs(expr);
-@@ -513,27 +502,26 @@ impl<'a> StripUnconfigured<'a> {
- }
- 
- pub fn parse_cfg<'a>(meta_item: &'a MetaItem, sess: &Session) -> Option<&'a MetaItem> {
--    let error = |span, msg, suggestion: &str| {
--        let mut err = sess.parse_sess.span_diagnostic.struct_span_err(span, msg);
--        if !suggestion.is_empty() {
--            err.span_suggestion(
--                span,
--                "expected syntax is",
--                suggestion,
--                Applicability::HasPlaceholders,
--            );
--        }
--        err.emit();
--        None
--    };
-     let span = meta_item.span;
-     match meta_item.meta_item_list() {
--        None => error(span, "`cfg` is not followed by parentheses", "cfg(/* predicate */)"),
--        Some([]) => error(span, "`cfg` predicate is not specified", ""),
--        Some([_, .., l]) => error(l.span(), "multiple `cfg` predicates are specified", ""),
-+        None => {
-+            sess.emit_err(InvalidCfg::NotFollowedByParens { span });
-+            None
-+        }
-+        Some([]) => {
-+            sess.emit_err(InvalidCfg::NoPredicate { span });
-+            None
-+        }
-+        Some([_, .., l]) => {
-+            sess.emit_err(InvalidCfg::MultiplePredicates { span: l.span() });
-+            None
-+        }
-         Some([single]) => match single.meta_item() {
-             Some(meta_item) => Some(meta_item),
--            None => error(single.span(), "`cfg` predicate key cannot be a literal", ""),
-+            None => {
-+                sess.emit_err(InvalidCfg::PredicateLiteral { span: single.span() });
-+                None
-+            }
-         },
-     }
- }
-diff --git a/compiler/rustc_expand/src/errors.rs b/compiler/rustc_expand/src/errors.rs
-index d383f4832f699..afe5169d3f5c0 100644
---- a/compiler/rustc_expand/src/errors.rs
-+++ b/compiler/rustc_expand/src/errors.rs
-@@ -1,6 +1,10 @@
-+use rustc_ast::ast;
- use rustc_macros::Diagnostic;
--use rustc_span::symbol::MacroRulesNormalizedIdent;
--use rustc_span::Span;
-+use rustc_session::Limit;
-+use rustc_span::edition::Edition;
-+use rustc_span::symbol::{Ident, MacroRulesNormalizedIdent};
-+use rustc_span::{Span, Symbol};
-+use std::borrow::Cow;
- 
- #[derive(Diagnostic)]
- #[diag(expand_expr_repeat_no_syntax_vars)]
-@@ -46,3 +50,321 @@ pub(crate) struct MetaVarsDifSeqMatchers {
-     pub span: Span,
-     pub msg: String,
- }
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_resolve_relative_path)]
-+pub(crate) struct ResolveRelativePath {
-+    #[primary_span]
-+    pub span: Span,
-+    pub path: String,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_macro_const_stability)]
-+pub(crate) struct MacroConstStability {
-+    #[primary_span]
-+    #[label]
-+    pub span: Span,
-+    #[label(label2)]
-+    pub head_span: Span,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_macro_body_stability)]
-+pub(crate) struct MacroBodyStability {
-+    #[primary_span]
-+    #[label]
-+    pub span: Span,
-+    #[label(label2)]
-+    pub head_span: Span,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_attr_no_arguments)]
-+pub(crate) struct AttrNoArguments {
-+    #[primary_span]
-+    pub span: Span,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_not_a_meta_item)]
-+pub(crate) struct NotAMetaItem {
-+    #[primary_span]
-+    pub span: Span,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_only_one_word)]
-+pub(crate) struct OnlyOneWord {
-+    #[primary_span]
-+    pub span: Span,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_cannot_be_name_of_macro)]
-+pub(crate) struct CannotBeNameOfMacro<'a> {
-+    #[primary_span]
-+    pub span: Span,
-+    pub trait_ident: Ident,
-+    pub macro_type: &'a str,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_arg_not_attributes)]
-+pub(crate) struct ArgumentNotAttributes {
-+    #[primary_span]
-+    pub span: Span,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_attributes_wrong_form)]
-+pub(crate) struct AttributesWrongForm {
-+    #[primary_span]
-+    pub span: Span,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_attribute_meta_item)]
-+pub(crate) struct AttributeMetaItem {
-+    #[primary_span]
-+    pub span: Span,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_attribute_single_word)]
-+pub(crate) struct AttributeSingleWord {
-+    #[primary_span]
-+    pub span: Span,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_helper_attribute_name_invalid)]
-+pub(crate) struct HelperAttributeNameInvalid {
-+    #[primary_span]
-+    pub span: Span,
-+    pub name: Ident,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_expected_comma_in_list)]
-+pub(crate) struct ExpectedCommaInList {
-+    #[primary_span]
-+    pub span: Span,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_only_one_argument)]
-+pub(crate) struct OnlyOneArgument<'a> {
-+    #[primary_span]
-+    pub span: Span,
-+    pub name: &'a str,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_takes_no_arguments)]
-+pub(crate) struct TakesNoArguments<'a> {
-+    #[primary_span]
-+    pub span: Span,
-+    pub name: &'a str,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_feature_included_in_edition, code = "E0705")]
-+pub(crate) struct FeatureIncludedInEdition {
-+    #[primary_span]
-+    pub span: Span,
-+    pub feature: Symbol,
-+    pub edition: Edition,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_feature_removed, code = "E0557")]
-+pub(crate) struct FeatureRemoved<'a> {
-+    #[primary_span]
-+    #[label]
-+    pub span: Span,
-+    #[subdiagnostic]
-+    pub reason: Option<FeatureRemovedReason<'a>>,
-+}
-+
-+#[derive(Subdiagnostic)]
-+#[note(reason)]
-+pub(crate) struct FeatureRemovedReason<'a> {
-+    pub reason: &'a str,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_feature_not_allowed, code = "E0725")]
-+pub(crate) struct FeatureNotAllowed {
-+    #[primary_span]
-+    pub span: Span,
-+    pub name: Symbol,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_recursion_limit_reached)]
-+#[help]
-+pub(crate) struct RecursionLimitReached<'a> {
-+    #[primary_span]
-+    pub span: Span,
-+    pub descr: String,
-+    pub suggested_limit: Limit,
-+    pub crate_name: &'a str,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_malformed_feature_attribute, code = "E0556")]
-+pub(crate) struct MalformedFeatureAttribute {
-+    #[primary_span]
-+    pub span: Span,
-+    #[subdiagnostic]
-+    pub help: MalformedFeatureAttributeHelp,
-+}
-+
-+#[derive(Subdiagnostic)]
-+pub(crate) enum MalformedFeatureAttributeHelp {
-+    #[label(expected)]
-+    Label {
-+        #[primary_span]
-+        span: Span,
-+    },
-+    #[suggestion(expected, code = "{suggestion}", applicability = "maybe-incorrect")]
-+    Suggestion {
-+        #[primary_span]
-+        span: Span,
-+        suggestion: Symbol,
-+    },
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_remove_expr_not_supported)]
-+pub(crate) struct RemoveExprNotSupported {
-+    #[primary_span]
-+    pub span: Span,
-+}
-+
-+#[derive(Diagnostic)]
-+pub(crate) enum InvalidCfg {
-+    #[diag(expand_invalid_cfg_no_parens)]
-+    NotFollowedByParens {
-+        #[primary_span]
-+        #[suggestion(
-+            expand_invalid_cfg_expected_syntax,
-+            code = "cfg(/* predicate */)",
-+            applicability = "has-placeholders"
-+        )]
-+        span: Span,
-+    },
-+    #[diag(expand_invalid_cfg_no_predicate)]
-+    NoPredicate {
-+        #[primary_span]
-+        #[suggestion(
-+            expand_invalid_cfg_expected_syntax,
-+            code = "cfg(/* predicate */)",
-+            applicability = "has-placeholders"
-+        )]
-+        span: Span,
-+    },
-+    #[diag(expand_invalid_cfg_multiple_predicates)]
-+    MultiplePredicates {
-+        #[primary_span]
-+        span: Span,
-+    },
-+    #[diag(expand_invalid_cfg_predicate_literal)]
-+    PredicateLiteral {
-+        #[primary_span]
-+        span: Span,
-+    },
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_wrong_fragment_kind)]
-+pub(crate) struct WrongFragmentKind<'a> {
-+    #[primary_span]
-+    pub span: Span,
-+    pub kind: &'a str,
-+    pub name: &'a ast::Path,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_unsupported_key_value)]
-+pub(crate) struct UnsupportedKeyValue {
-+    #[primary_span]
-+    pub span: Span,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_incomplete_parse)]
-+#[note]
-+pub(crate) struct IncompleteParse<'a> {
-+    #[primary_span]
-+    pub span: Span,
-+    pub token: Cow<'a, str>,
-+    #[label]
-+    pub label_span: Span,
-+    pub macro_path: &'a ast::Path,
-+    pub kind_name: &'a str,
-+
-+    #[suggestion(
-+        suggestion_add_semi,
-+        style = "verbose",
-+        code = ";",
-+        applicability = "maybe-incorrect"
-+    )]
-+    pub add_semicolon: Option<Span>,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_remove_node_not_supported)]
-+pub(crate) struct RemoveNodeNotSupported {
-+    #[primary_span]
-+    pub span: Span,
-+    pub descr: &'static str,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_module_circular)]
-+pub(crate) struct ModuleCircular {
-+    #[primary_span]
-+    pub span: Span,
-+    pub modules: String,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_module_in_block)]
-+pub(crate) struct ModuleInBlock {
-+    #[primary_span]
-+    pub span: Span,
-+    #[subdiagnostic]
-+    pub name: Option<ModuleInBlockName>,
-+}
-+
-+#[derive(Subdiagnostic)]
-+#[note(note)]
-+pub(crate) struct ModuleInBlockName {
-+    #[primary_span]
-+    pub span: Span,
-+    pub name: Ident,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_module_file_not_found, code = "E0583")]
-+#[help]
-+pub(crate) struct ModuleFileNotFound {
-+    #[primary_span]
-+    pub span: Span,
-+    pub name: Ident,
-+    pub default_path: String,
-+    pub secondary_path: String,
-+}
-+
-+#[derive(Diagnostic)]
-+#[diag(expand_module_multiple_candidates, code = "E0761")]
-+#[help]
-+pub(crate) struct ModuleMultipleCandidates {
-+    #[primary_span]
-+    pub span: Span,
-+    pub name: Ident,
-+    pub default_path: String,
-+    pub secondary_path: String,
-+}
-diff --git a/compiler/rustc_expand/src/expand.rs b/compiler/rustc_expand/src/expand.rs
-index 1014ec2209c61..e26c16dcd7ee7 100644
---- a/compiler/rustc_expand/src/expand.rs
-+++ b/compiler/rustc_expand/src/expand.rs
-@@ -1,5 +1,9 @@
- use crate::base::*;
- use crate::config::StripUnconfigured;
-+use crate::errors::{
-+    IncompleteParse, RecursionLimitReached, RemoveExprNotSupported, RemoveNodeNotSupported,
-+    UnsupportedKeyValue, WrongFragmentKind,
-+};
- use crate::hygiene::SyntaxContext;
- use crate::mbe::diagnostics::annotate_err_with_kind;
- use crate::module::{mod_dir_path, parse_external_mod, DirOwnership, ParsedExternalMod};
-@@ -18,7 +22,7 @@ use rustc_ast::{NestedMetaItem, NodeId, PatKind, StmtKind, TyKind};
- use rustc_ast_pretty::pprust;
- use rustc_data_structures::map_in_place::MapInPlace;
- use rustc_data_structures::sync::Lrc;
--use rustc_errors::{Applicability, PResult};
-+use rustc_errors::PResult;
- use rustc_feature::Features;
- use rustc_parse::parser::{
-     AttemptLocalParseRecovery, CommaRecoveryMode, ForceCollect, Parser, RecoverColon, RecoverComma,
-@@ -606,29 +610,22 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
-             Limit(0) => Limit(2),
-             limit => limit * 2,
-         };
--        self.cx
--            .struct_span_err(
--                expn_data.call_site,
--                &format!("recursion limit reached while expanding `{}`", expn_data.kind.descr()),
--            )
--            .help(&format!(
--                "consider increasing the recursion limit by adding a \
--                 `#![recursion_limit = \"{}\"]` attribute to your crate (`{}`)",
--                suggested_limit, self.cx.ecfg.crate_name,
--            ))
--            .emit();
-+
-+        self.cx.emit_err(RecursionLimitReached {
-+            span: expn_data.call_site,
-+            descr: expn_data.kind.descr(),
-+            suggested_limit,
-+            crate_name: &self.cx.ecfg.crate_name,
-+        });
-+
-         self.cx.trace_macros_diag();
-     }
- 
-     /// A macro's expansion does not fit in this fragment kind.
-     /// For example, a non-type macro in a type position.
-     fn error_wrong_fragment_kind(&mut self, kind: AstFragmentKind, mac: &ast::MacCall, span: Span) {
--        let msg = format!(
--            "non-{kind} macro in {kind} position: {path}",
--            kind = kind.name(),
--            path = pprust::path_to_string(&mac.path),
--        );
--        self.cx.span_err(span, &msg);
-+        self.cx.emit_err(WrongFragmentKind { span, kind: kind.name(), name: &mac.path });
-+
-         self.cx.trace_macros_diag();
-     }
- 
-@@ -707,7 +704,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
-                     };
-                     let attr_item = attr.unwrap_normal_item();
-                     if let AttrArgs::Eq(..) = attr_item.args {
--                        self.cx.span_err(span, "key-value macro attributes are not supported");
-+                        self.cx.emit_err(UnsupportedKeyValue { span });
-                     }
-                     let inner_tokens = attr_item.args.inner_tokens();
-                     let Ok(tok_result) = expander.expand(self.cx, span, inner_tokens, tokens) else {
-@@ -729,9 +726,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
-                                 }
-                             };
-                             if fragment_kind == AstFragmentKind::Expr && items.is_empty() {
--                                let msg =
--                                    "removing an expression is not supported in this position";
--                                self.cx.span_err(span, msg);
-+                                self.cx.emit_err(RemoveExprNotSupported { span });
-                                 fragment_kind.dummy(span)
-                             } else {
-                                 fragment_kind.expect_from_annotatables(items)
-@@ -939,38 +934,32 @@ pub fn parse_ast_fragment<'a>(
- }
- 
- pub fn ensure_complete_parse<'a>(
--    this: &mut Parser<'a>,
-+    parser: &mut Parser<'a>,
-     macro_path: &ast::Path,
-     kind_name: &str,
-     span: Span,
- ) {
--    if this.token != token::Eof {
--        let token = pprust::token_to_string(&this.token);
--        let msg = format!("macro expansion ignores token `{}` and any following", token);
-+    if parser.token != token::Eof {
-+        let token = pprust::token_to_string(&parser.token);
-         // Avoid emitting backtrace info twice.
--        let def_site_span = this.token.span.with_ctxt(SyntaxContext::root());
--        let mut err = this.struct_span_err(def_site_span, &msg);
--        err.span_label(span, "caused by the macro expansion here");
--        let msg = format!(
--            "the usage of `{}!` is likely invalid in {} context",
--            pprust::path_to_string(macro_path),
--            kind_name,
--        );
--        err.note(&msg);
-+        let def_site_span = parser.token.span.with_ctxt(SyntaxContext::root());
- 
--        let semi_span = this.sess.source_map().next_point(span);
--        match this.sess.source_map().span_to_snippet(semi_span) {
-+        let semi_span = parser.sess.source_map().next_point(span);
-+        let add_semicolon = match parser.sess.source_map().span_to_snippet(semi_span) {
-             Ok(ref snippet) if &snippet[..] != ";" && kind_name == "expression" => {
--                err.span_suggestion(
--                    span.shrink_to_hi(),
--                    "you might be missing a semicolon here",
--                    ";",
--                    Applicability::MaybeIncorrect,
--                );
-+                Some(span.shrink_to_hi())
-             }
--            _ => {}
--        }
--        err.emit();
-+            _ => None,
-+        };
-+
-+        parser.sess.emit_err(IncompleteParse {
-+            span: def_site_span,
-+            token,
-+            label_span: span,
-+            macro_path,
-+            kind_name,
-+            add_semicolon,
-+        });
-     }
- }
- 
-@@ -1766,9 +1755,8 @@ impl<'a, 'b> InvocationCollector<'a, 'b> {
-                         if self.expand_cfg_true(node, attr, pos) {
-                             continue;
-                         }
--                        let msg =
--                            format!("removing {} is not supported in this position", Node::descr());
--                        self.cx.span_err(span, &msg);
-+
-+                        self.cx.emit_err(RemoveNodeNotSupported { span, descr: Node::descr() });
-                         continue;
-                     }
-                     sym::cfg_attr => {
-diff --git a/compiler/rustc_expand/src/lib.rs b/compiler/rustc_expand/src/lib.rs
-index b34de94fb7db4..897268566358a 100644
---- a/compiler/rustc_expand/src/lib.rs
-+++ b/compiler/rustc_expand/src/lib.rs
-@@ -10,6 +10,7 @@
- #![feature(rustc_attrs)]
- #![feature(try_blocks)]
- #![recursion_limit = "256"]
-+#![deny(rustc::untranslatable_diagnostic)]
- 
- #[macro_use]
- extern crate rustc_macros;
-@@ -31,8 +32,13 @@ pub mod config;
- pub mod errors;
- pub mod expand;
- pub mod module;
-+
-+// FIXME(Nilstrieb) Translate proc_macro diagnostics
-+#[allow(rustc::untranslatable_diagnostic)]
- pub mod proc_macro;
- 
-+// FIXME(Nilstrieb) Translate macro_rules diagnostics
-+#[allow(rustc::untranslatable_diagnostic)]
- pub(crate) mod mbe;
- 
- // HACK(Centril, #64197): These shouldn't really be here.
-diff --git a/compiler/rustc_expand/src/module.rs b/compiler/rustc_expand/src/module.rs
-index 9002a24e42f9d..07f47a9c3a4f2 100644
---- a/compiler/rustc_expand/src/module.rs
-+++ b/compiler/rustc_expand/src/module.rs
-@@ -1,13 +1,17 @@
- use crate::base::ModuleData;
-+use crate::errors::{
-+    ModuleCircular, ModuleFileNotFound, ModuleInBlock, ModuleInBlockName, ModuleMultipleCandidates,
-+};
- use rustc_ast::ptr::P;
- use rustc_ast::{token, AttrVec, Attribute, Inline, Item, ModSpans};
--use rustc_errors::{struct_span_err, DiagnosticBuilder, ErrorGuaranteed};
-+use rustc_errors::{DiagnosticBuilder, ErrorGuaranteed};
- use rustc_parse::new_parser_from_file;
- use rustc_parse::validate_attr;
- use rustc_session::parse::ParseSess;
- use rustc_session::Session;
- use rustc_span::symbol::{sym, Ident};
- use rustc_span::Span;
-+use std::iter::once;
- 
- use std::path::{self, Path, PathBuf};
- 
-@@ -242,57 +246,41 @@ pub fn default_submod_path<'a>(
- 
- impl ModError<'_> {
-     fn report(self, sess: &Session, span: Span) -> ErrorGuaranteed {
--        let diag = &sess.parse_sess.span_diagnostic;
-         match self {
-             ModError::CircularInclusion(file_paths) => {
--                let mut msg = String::from("circular modules: ");
--                for file_path in &file_paths {
--                    msg.push_str(&file_path.display().to_string());
--                    msg.push_str(" -> ");
--                }
--                msg.push_str(&file_paths[0].display().to_string());
--                diag.struct_span_err(span, &msg)
--            }
--            ModError::ModInBlock(ident) => {
--                let msg = "cannot declare a non-inline module inside a block unless it has a path attribute";
--                let mut err = diag.struct_span_err(span, msg);
--                if let Some(ident) = ident {
--                    let note =
--                        format!("maybe `use` the module `{}` instead of redeclaring it", ident);
--                    err.span_note(span, &note);
--                }
--                err
-+                let path_to_string = |path: &PathBuf| path.display().to_string();
-+
-+                let paths = file_paths
-+                    .iter()
-+                    .map(path_to_string)
-+                    .chain(once(path_to_string(&file_paths[0])))
-+                    .collect::<Vec<_>>();
-+
-+                let modules = paths.join(" -> ");
-+
-+                sess.emit_err(ModuleCircular { span, modules })
-             }
--            ModError::FileNotFound(ident, default_path, secondary_path) => {
--                let mut err = struct_span_err!(
--                    diag,
-+            ModError::ModInBlock(ident) => sess.emit_err(ModuleInBlock {
-+                span,
-+                name: ident.map(|name| ModuleInBlockName { span, name }),
-+            }),
-+            ModError::FileNotFound(name, default_path, secondary_path) => {
-+                sess.emit_err(ModuleFileNotFound {
-                     span,
--                    E0583,
--                    "file not found for module `{}`",
--                    ident,
--                );
--                err.help(&format!(
--                    "to create the module `{}`, create file \"{}\" or \"{}\"",
--                    ident,
--                    default_path.display(),
--                    secondary_path.display(),
--                ));
--                err
-+                    name,
-+                    default_path: default_path.display().to_string(),
-+                    secondary_path: secondary_path.display().to_string(),
-+                })
-             }
--            ModError::MultipleCandidates(ident, default_path, secondary_path) => {
--                let mut err = struct_span_err!(
--                    diag,
-+            ModError::MultipleCandidates(name, default_path, secondary_path) => {
-+                sess.emit_err(ModuleMultipleCandidates {
-                     span,
--                    E0761,
--                    "file for module `{}` found at both \"{}\" and \"{}\"",
--                    ident,
--                    default_path.display(),
--                    secondary_path.display(),
--                );
--                err.help("delete or rename one of them to remove the ambiguity");
--                err
-+                    name,
-+                    default_path: default_path.display().to_string(),
-+                    secondary_path: secondary_path.display().to_string(),
-+                })
-             }
--            ModError::ParserError(err) => err,
--        }.emit()
-+            ModError::ParserError(mut err) => err.emit(),
-+        }
-     }
- }
-diff --git a/compiler/rustc_expand/src/tests.rs b/compiler/rustc_expand/src/tests.rs
-index 539b04535a0d0..8f3bea29ffd28 100644
---- a/compiler/rustc_expand/src/tests.rs
-+++ b/compiler/rustc_expand/src/tests.rs
-@@ -154,6 +154,7 @@ fn test_harness(file_text: &str, span_labels: Vec<SpanLabel>, expected_output: &
-             false,
-         );
-         let handler = Handler::with_emitter(true, None, Box::new(emitter));
-+        #[allow(rustc::untranslatable_diagnostic)]
-         handler.span_err(msp, "foo");
- 
-         assert!(
-diff --git a/src/test/rustdoc-ui/doc-cfg.stderr b/src/test/rustdoc-ui/doc-cfg.stderr
-index b379f6febe29f..14b7b17e04d3a 100644
---- a/src/test/rustdoc-ui/doc-cfg.stderr
-+++ b/src/test/rustdoc-ui/doc-cfg.stderr
-@@ -2,7 +2,7 @@ error: `cfg` predicate is not specified
-   --> $DIR/doc-cfg.rs:3:7
-    |
- LL | #[doc(cfg(), cfg(foo, bar))]
--   |       ^^^^^
-+   |       ^^^^^ help: expected syntax is: `cfg(/* predicate */)`
- 
- error: multiple `cfg` predicates are specified
-   --> $DIR/doc-cfg.rs:3:23
-@@ -14,7 +14,7 @@ error: `cfg` predicate is not specified
-   --> $DIR/doc-cfg.rs:7:7
-    |
- LL | #[doc(cfg())]
--   |       ^^^^^
-+   |       ^^^^^ help: expected syntax is: `cfg(/* predicate */)`
- 
- error: multiple `cfg` predicates are specified
-   --> $DIR/doc-cfg.rs:8:16
-diff --git a/src/test/ui/conditional-compilation/cfg-attr-syntax-validation.stderr b/src/test/ui/conditional-compilation/cfg-attr-syntax-validation.stderr
-index d4bd673b84e1b..d5b4349c00f6f 100644
---- a/src/test/ui/conditional-compilation/cfg-attr-syntax-validation.stderr
-+++ b/src/test/ui/conditional-compilation/cfg-attr-syntax-validation.stderr
-@@ -14,7 +14,7 @@ error: `cfg` predicate is not specified
-   --> $DIR/cfg-attr-syntax-validation.rs:7:1
-    |
- LL | #[cfg()]
--   | ^^^^^^^^
-+   | ^^^^^^^^ help: expected syntax is: `cfg(/* predicate */)`
- 
- error: multiple `cfg` predicates are specified
-   --> $DIR/cfg-attr-syntax-validation.rs:10:10
-diff --git a/src/test/ui/macros/macro-in-expression-context.stderr b/src/test/ui/macros/macro-in-expression-context.stderr
-index 1023189eaa30f..36aba8aa08a0b 100644
---- a/src/test/ui/macros/macro-in-expression-context.stderr
-+++ b/src/test/ui/macros/macro-in-expression-context.stderr
-@@ -5,11 +5,13 @@ LL |         assert_eq!("B", "B");
-    |         ^^^^^^^^^
- ...
- LL |     foo!()
--   |     ------- help: you might be missing a semicolon here: `;`
--   |     |
--   |     caused by the macro expansion here
-+   |     ------ caused by the macro expansion here
-    |
-    = note: the usage of `foo!` is likely invalid in expression context
-+help: you might be missing a semicolon here
-+   |
-+LL |     foo!();
-+   |           +
- 
- warning: trailing semicolon in macro used in expression position
-   --> $DIR/macro-in-expression-context.rs:5:29
-diff --git a/src/test/ui/proc-macro/attr-invalid-exprs.stderr b/src/test/ui/proc-macro/attr-invalid-exprs.stderr
-index bcb54df0ecac7..f96939bb6efce 100644
---- a/src/test/ui/proc-macro/attr-invalid-exprs.stderr
-+++ b/src/test/ui/proc-macro/attr-invalid-exprs.stderr
-@@ -8,21 +8,25 @@ error: macro expansion ignores token `,` and any following
-   --> $DIR/attr-invalid-exprs.rs:15:13
-    |
- LL |     let _ = #[duplicate] "Hello, world!";
--   |             ^^^^^^^^^^^^- help: you might be missing a semicolon here: `;`
--   |             |
--   |             caused by the macro expansion here
-+   |             ^^^^^^^^^^^^ caused by the macro expansion here
-    |
-    = note: the usage of `duplicate!` is likely invalid in expression context
-+help: you might be missing a semicolon here
-+   |
-+LL |     let _ = #[duplicate]; "Hello, world!";
-+   |                         +
- 
- error: macro expansion ignores token `,` and any following
-   --> $DIR/attr-invalid-exprs.rs:24:9
-    |
- LL |         #[duplicate]
--   |         ^^^^^^^^^^^^- help: you might be missing a semicolon here: `;`
--   |         |
--   |         caused by the macro expansion here
-+   |         ^^^^^^^^^^^^ caused by the macro expansion here
-    |
-    = note: the usage of `duplicate!` is likely invalid in expression context
-+help: you might be missing a semicolon here
-+   |
-+LL |         #[duplicate];
-+   |                     +
- 
- error: aborting due to 3 previous errors
- 
-diff --git a/src/test/ui/proc-macro/attribute.rs b/src/test/ui/proc-macro/attribute.rs
-index 5531b32362125..9e40e4d9ba63e 100644
---- a/src/test/ui/proc-macro/attribute.rs
-+++ b/src/test/ui/proc-macro/attribute.rs
-@@ -53,19 +53,19 @@ pub fn foo11(input: TokenStream) -> TokenStream { input }
- pub fn foo12(input: TokenStream) -> TokenStream { input }
- 
- #[proc_macro_derive(d13, attributes("a"))]
--//~^ ERROR: not a meta item
-+//~^ ERROR: attribute must be a meta item, not a literal
- pub fn foo13(input: TokenStream) -> TokenStream { input }
- 
- #[proc_macro_derive(d14, attributes(a = ""))]
--//~^ ERROR: must only be one word
-+//~^ ERROR: attribute must only be a single word
- pub fn foo14(input: TokenStream) -> TokenStream { input }
- 
- #[proc_macro_derive(d15, attributes(m::a))]
--//~^ ERROR: must only be one word
-+//~^ ERROR: attribute must only be a single word
- pub fn foo15(input: TokenStream) -> TokenStream { input }
- 
- #[proc_macro_derive(d16, attributes(a(b)))]
--//~^ ERROR: must only be one word
-+//~^ ERROR: attribute must only be a single word
- pub fn foo16(input: TokenStream) -> TokenStream { input }
- 
- #[proc_macro_derive(d17, attributes(self))]
-diff --git a/src/test/ui/proc-macro/attribute.stderr b/src/test/ui/proc-macro/attribute.stderr
-index 021e7cad09b69..3269aaf7f917e 100644
---- a/src/test/ui/proc-macro/attribute.stderr
-+++ b/src/test/ui/proc-macro/attribute.stderr
-@@ -70,25 +70,25 @@ error: attribute must be of form: `attributes(foo, bar)`
- LL | #[proc_macro_derive(d12, attributes)]
-    |                          ^^^^^^^^^^
- 
--error: not a meta item
-+error: attribute must be a meta item, not a literal
-   --> $DIR/attribute.rs:55:37
-    |
- LL | #[proc_macro_derive(d13, attributes("a"))]
-    |                                     ^^^
- 
--error: must only be one word
-+error: attribute must only be a single word
-   --> $DIR/attribute.rs:59:37
-    |
- LL | #[proc_macro_derive(d14, attributes(a = ""))]
-    |                                     ^^^^^^
- 
--error: must only be one word
-+error: attribute must only be a single word
-   --> $DIR/attribute.rs:63:37
-    |
- LL | #[proc_macro_derive(d15, attributes(m::a))]
-    |                                     ^^^^
- 
--error: must only be one word
-+error: attribute must only be a single word
-   --> $DIR/attribute.rs:67:37
-    |
- LL | #[proc_macro_derive(d16, attributes(a(b)))]
-diff --git a/src/test/ui/proc-macro/expand-expr.stderr b/src/test/ui/proc-macro/expand-expr.stderr
-index c6c4695fd9c43..0004f2fe17f01 100644
---- a/src/test/ui/proc-macro/expand-expr.stderr
-+++ b/src/test/ui/proc-macro/expand-expr.stderr
-@@ -26,21 +26,25 @@ error: macro expansion ignores token `hello` and any following
-   --> $DIR/expand-expr.rs:115:47
-    |
- LL | expand_expr_is!("string", echo_tts!("string"; hello));
--   |                           --------------------^^^^^-- help: you might be missing a semicolon here: `;`
--   |                           |
--   |                           caused by the macro expansion here
-+   |                           --------------------^^^^^- caused by the macro expansion here
-    |
-    = note: the usage of `echo_tts!` is likely invalid in expression context
-+help: you might be missing a semicolon here
-+   |
-+LL | expand_expr_is!("string", echo_tts!("string"; hello););
-+   |                                                     +
- 
- error: macro expansion ignores token `;` and any following
-   --> $DIR/expand-expr.rs:116:44
-    |
- LL | expand_expr_is!("string", echo_pm!("string"; hello));
--   |                           -----------------^-------- help: you might be missing a semicolon here: `;`
--   |                           |
--   |                           caused by the macro expansion here
-+   |                           -----------------^------- caused by the macro expansion here
-    |
-    = note: the usage of `echo_pm!` is likely invalid in expression context
-+help: you might be missing a semicolon here
-+   |
-+LL | expand_expr_is!("string", echo_pm!("string"; hello););
-+   |                                                    +
- 
- error: recursion limit reached while expanding `recursive_expand!`
-   --> $DIR/expand-expr.rs:124:16

diff --git a/dev-lang/rust/files/1.70.0-libressl-openssl-sys.patch b/dev-lang/rust/files/1.70.0-libressl-openssl-sys.patch
deleted file mode 100644
index 12d3029..0000000
--- a/dev-lang/rust/files/1.70.0-libressl-openssl-sys.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/build/main.rs.orig
-+++ b/build/main.rs
-@@ -284,6 +284,7 @@
-             (3, 6, _) => ('3', '6', 'x'),
-             (3, 7, 0) => ('3', '7', '0'),
-             (3, 7, 1) => ('3', '7', '1'),
-+            (3, _, _) => ('3', 'x', 'x'),
-             _ => version_error(),
-         };
- 

diff --git a/dev-lang/rust/rust-1.65.0.ebuild b/dev-lang/rust/rust-1.65.0.ebuild
deleted file mode 100644
index 28e6e22..0000000
--- a/dev-lang/rust/rust-1.65.0.ebuild
+++ /dev/null
@@ -1,762 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..11} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="amd64 arm arm64 ~mips ~ppc ppc64 ~riscv sparc x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# 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="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 15 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
-			wasm? ( sys-devel/lld:${_s} )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-"
-
-# to bootstrap we need at least exactly previous version, or same.
-# most of the time previous versions fail to bootstrap with newer
-# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
-# but it fails to bootstrap with 1.48.x
-# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-build/cmake-3.13.4
-		app-alternatives/ninja
-	)
-	test? ( dev-debug/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	system-llvm? (
-		${LLVM_DEPEND}
-		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
-	)
-	!system-llvm? (
-		!llvm-libunwind? (
-			elibc_musl? ( sys-libs/libunwind:= )
-		)
-	)
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-# FIXME: https://bugs.gentoo.org/874885
-# rust-analyzer should work with wasm, but currently does not
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rust-analyzer? ( !wasm rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.64.0-libressl.patch
-	"${FILESDIR}"/1.65.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
-	"${FILESDIR}"/1.64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-# Is LLVM being linked against libc++?
-is_libcxx_linked() {
-	local code='#include <ciso646>
-#if defined(_LIBCPP_VERSION)
-	HAVE_LIBCXX
-#endif
-'
-	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
-	[[ ${out} == *HAVE_LIBCXX* ]]
-}
-
-pkg_pretend() {
-	pre_build_checks
-}
-
-pkg_setup() {
-	pre_build_checks
-	python-any-r1_pkg_setup
-
-	export LIBGIT2_NO_PKG_CONFIG=1 #749381
-
-	use system-bootstrap && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-esetup_unwind_hack() {
-	# https://bugs.gentoo.org/870280
-	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
-	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
-	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
-	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
-	local fakelib="${T}/fakelib"
-	mkdir -p "${fakelib}" || die
-	# we need both symlinks, one for cargo runtime, other for linker.
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
-	export LD_LIBRARY_PATH="${fakelib}"
-	export RUSTFLAGS+=" -L${fakelib}"
-	# this is a literally magic variable that gets through cargo cache, without it some
-	# crates ignore RUSTFLAGS.
-	# this variable can not contain leading space.
-	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
-}
-
-src_prepare() {
-	# this supidity is needed because patch is too large to be in filesdir
-	# and if we move it to devspace - it lacks checksum for sig verification
-	if [[ "${PV}" == 1.65.0 ]]; then
-			sed -i \
-			-e 's/516ba32a547b46a8e80ad20d4a17bf24a00bff0b69b74f56df119f770f3dfff6/fc7eb88c2f5104865379128b76767d36ce5b5fdb9f3483e683d150e514ebc3a3/' \
-			-e 's/fba10dc8ca9eaf4d481cb82bd1540cf5c05620533c44f917c09a22ea55ef408c/9cc4d1b4511a1f0d91231eb0f11c67ae5e8e38e4becd0bf5eb9e26d043796056/' \
-			vendor/rustix/.cargo-checksum.json || die
-	else
-		die "remove sed mr forgetful maintainer"
-	fi
-	if ! use system-bootstrap; then
-		has_version sys-devel/gcc || esetup_unwind_hack
-		local rust_stage0_root="${WORKDIR}"/rust-stage0
-		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
-
-		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
-			--without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	# this libressl version check is terrible
-	sed -e 's/d397af804c0b786978867528635fa9148cd2ad0e6abd591ace21b5bd3719c38d/896afea18b1072d4c715421ff2ed7e428b57aadec44d4680dcb991a6229a1edc/' \
-		-i vendor/openssl-sys/.cargo-checksum.json || die
-	# fix for libressl
-	sed -e 's/7d5ca02f34cffe51db3568c500c9a8a70cef879871a0f466e3344142644acf12/e9eef35f1c18dd9844960d1d315e84ad99a05ab1247f0f54e3c2eab244988256/' \
-		-i vendor/libssh2-sys/.cargo-checksum.json || die
-
-	default
-}
-
-src_configure() {
-	filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
-
-	local rust_target="" rust_targets="" arch_cflags
-
-	# Collect rust target names to compile standard libs for all ABIs.
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
-	done
-	if use wasm; then
-		rust_targets+=",\"wasm32-unknown-unknown\""
-		if use system-llvm; then
-			# un-hardcode rust-lld linker for this target
-			# https://bugs.gentoo.org/715348
-			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
-		fi
-	fi
-	rust_targets="${rust_targets#,}"
-
-	local tools='"cargo"'
-	use clippy && tools+=',"clippy"'
-	use miri && tools+=',"miri"'
-	use profiler && tools+=',"rust-demangler"'
-	use rustfmt && tools+=',"rustfmt"'
-	use rust-analyzer && tools+=',"rust-analyzer","analysis"'
-	use rust-src && tools+=',"src"'
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if is_libcxx_linked; then
-			# https://bugs.gentoo.org/732632
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		[llvm.build-config]
-		CMAKE_VERBOSE_MAKEFILE = "ON"
-		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
-		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
-		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
-		[build]
-		build-stage = 2
-		test-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-	_EOF_
-
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
-		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
-
-		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${rust_target}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
-		# but we patch it and set to false here as well
-		if use elibc_musl; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				crt-static = false
-			_EOF_
-		fi
-	done
-	if use wasm; then
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.wasm32-unknown-unknown]
-			linker = "$(usex system-llvm lld rust-lld)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="\"${RUSTFLAGS}\""
-	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
-	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
-	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	env | grep "CFLAGS_.*"
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-src_compile() {
-	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-}
-
-src_test() {
-	# https://rustc-dev-guide.rust-lang.org/tests/intro.html
-
-	# those are basic and codegen tests.
-	local tests=(
-		codegen
-		codegen-units
-		compile-fail
-		incremental
-		mir-opt
-		pretty
-		run-make
-	)
-
-	# fails if llvm is not built with ALL targets.
-	# and known to fail with system llvm sometimes.
-	use system-llvm || tests+=( assembly )
-
-	# fragile/expensive/less important tests
-	# or tests that require extra builds
-	# TODO: instead of skipping, just make some nonfatal.
-	if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
-		tests+=(
-			rustdoc
-			rustdoc-js
-			rustdoc-js-std
-			rustdoc-ui
-			run-make-fulldeps
-			ui
-			ui-fulldeps
-		)
-	fi
-
-	local i failed=()
-	einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
-	for i in "${tests[@]}"; do
-		local t="src/test/${i}"
-		einfo "rust_src_test: running ${t}"
-		if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
-				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
-		then
-				failed+=( "${t}" )
-				eerror "rust_src_test: ${t} failed"
-		fi
-	done
-
-	if [[ ${#failed[@]} -ne 0 ]]; then
-		eerror "rust_src_test: failure summary: ${failed[@]}"
-		die "aborting due to test failures"
-	fi
-}
-
-src_install() {
-	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use rustfmt && symlinks+=( rustfmt cargo-fmt )
-	use rust-analyzer && symlinks+=( rust-analyzer )
-
-	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
-	local i
-	for i in "${symlinks[@]}"; do
-		# we need realpath on /usr/bin/* symlink return version-appended binary path.
-		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
-		# need to fix eselect-rust to remove this hack.
-		local ver_i="${i}-${PV}"
-		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
-			einfo "Installing ${i} symlink"
-			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
-		else
-			ewarn "${i} symlink requested, but source file not found"
-			ewarn "please report this"
-		fi
-		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
-	done
-
-	# symlinks to switch components to active rust in eselect
-	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
-	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use rustfmt; then
-		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
-	fi
-	if use rust-analyzer; then
-		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
-	fi
-
-	insinto /etc/env.d/rust
-	doins "${T}/provider-${P}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-pkg_postinst() {
-	eselect rust update
-
-	if has_version dev-debug/gdb || has_version dev-debug/lldb; then
-		elog "Rust installs a helper script for calling GDB and LLDB,"
-		elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
-	fi
-
-	if has_version app-editors/emacs; then
-		elog "install app-emacs/rust-mode to get emacs support for rust."
-	fi
-
-	if has_version app-editors/gvim || has_version app-editors/vim; then
-		elog "install app-vim/rust-vim to get vim support for rust."
-	fi
-}
-
-pkg_postrm() {
-	eselect rust cleanup
-}

diff --git a/dev-lang/rust/rust-1.66.1.ebuild b/dev-lang/rust/rust-1.66.1.ebuild
deleted file mode 100644
index ff8ef70..0000000
--- a/dev-lang/rust/rust-1.66.1.ebuild
+++ /dev/null
@@ -1,760 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..11} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="amd64 arm arm64 ~mips ppc ppc64 ~riscv sparc x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# 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 BSD-1 BSD-2 BSD-4 UoI-NCSA"
-
-IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 15 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
-			wasm? ( sys-devel/lld:${_s} )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-"
-
-# to bootstrap we need at least exactly previous version, or same.
-# most of the time previous versions fail to bootstrap with newer
-# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
-# but it fails to bootstrap with 1.48.x
-# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-build/cmake-3.13.4
-		app-alternatives/ninja
-	)
-	test? ( dev-debug/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	system-llvm? (
-		${LLVM_DEPEND}
-		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
-	)
-	!system-llvm? (
-		!llvm-libunwind? (
-			elibc_musl? ( sys-libs/libunwind:= )
-		)
-	)
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rust-analyzer? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.64.0-libressl.patch
-	"${FILESDIR}"/1.65.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
-	"${FILESDIR}"/1.64.0-vendor-rustix-sparc-has-no-SIGSTKFLT.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-# Is LLVM being linked against libc++?
-is_libcxx_linked() {
-	local code='#include <ciso646>
-#if defined(_LIBCPP_VERSION)
-	HAVE_LIBCXX
-#endif
-'
-	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
-	[[ ${out} == *HAVE_LIBCXX* ]]
-}
-
-pkg_pretend() {
-	pre_build_checks
-}
-
-pkg_setup() {
-	pre_build_checks
-	python-any-r1_pkg_setup
-
-	export LIBGIT2_NO_PKG_CONFIG=1 #749381
-
-	use system-bootstrap && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-esetup_unwind_hack() {
-	# https://bugs.gentoo.org/870280
-	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
-	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
-	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
-	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
-	local fakelib="${T}/fakelib"
-	mkdir -p "${fakelib}" || die
-	# we need both symlinks, one for cargo runtime, other for linker.
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
-	export LD_LIBRARY_PATH="${fakelib}"
-	export RUSTFLAGS+=" -L${fakelib}"
-	# this is a literally magic variable that gets through cargo cache, without it some
-	# crates ignore RUSTFLAGS.
-	# this variable can not contain leading space.
-	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
-}
-
-src_prepare() {
-	# this supidity is needed because patch is too large to be in filesdir
-	# and if we move it to devspace - it lacks checksum for sig verification
-	if [[ "${PV}" == 1.66.1 ]]; then
-			sed -i \
-			-e 's/516ba32a547b46a8e80ad20d4a17bf24a00bff0b69b74f56df119f770f3dfff6/fc7eb88c2f5104865379128b76767d36ce5b5fdb9f3483e683d150e514ebc3a3/' \
-			-e 's/fba10dc8ca9eaf4d481cb82bd1540cf5c05620533c44f917c09a22ea55ef408c/9cc4d1b4511a1f0d91231eb0f11c67ae5e8e38e4becd0bf5eb9e26d043796056/' \
-			vendor/rustix/.cargo-checksum.json || die
-	else
-		die "remove sed mr forgetful maintainer"
-	fi
-	if ! use system-bootstrap; then
-		has_version sys-devel/gcc || esetup_unwind_hack
-		local rust_stage0_root="${WORKDIR}"/rust-stage0
-		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
-
-		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
-			--without=rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	# this libressl version check is terrible
-	sed -e 's/d397af804c0b786978867528635fa9148cd2ad0e6abd591ace21b5bd3719c38d/896afea18b1072d4c715421ff2ed7e428b57aadec44d4680dcb991a6229a1edc/' \
-		-i vendor/openssl-sys/.cargo-checksum.json || die
-	# fix for libressl
-	sed -e 's/7d5ca02f34cffe51db3568c500c9a8a70cef879871a0f466e3344142644acf12/e9eef35f1c18dd9844960d1d315e84ad99a05ab1247f0f54e3c2eab244988256/' \
-		-i vendor/libssh2-sys/.cargo-checksum.json || die
-
-	default
-}
-
-src_configure() {
-	filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
-
-	local rust_target="" rust_targets="" arch_cflags
-
-	# Collect rust target names to compile standard libs for all ABIs.
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
-	done
-	if use wasm; then
-		rust_targets+=",\"wasm32-unknown-unknown\""
-		if use system-llvm; then
-			# un-hardcode rust-lld linker for this target
-			# https://bugs.gentoo.org/715348
-			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
-		fi
-	fi
-	rust_targets="${rust_targets#,}"
-
-	local tools='"cargo"'
-	use clippy && tools+=',"clippy"'
-	use miri && tools+=',"miri"'
-	use profiler && tools+=',"rust-demangler"'
-	use rustfmt && tools+=',"rustfmt"'
-	use rust-analyzer && tools+=',"rust-analyzer","analysis"'
-	use rust-src && tools+=',"src"'
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if is_libcxx_linked; then
-			# https://bugs.gentoo.org/732632
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		[llvm.build-config]
-		CMAKE_VERBOSE_MAKEFILE = "ON"
-		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
-		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
-		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
-		[build]
-		build-stage = 2
-		test-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-	_EOF_
-
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
-		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
-
-		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${rust_target}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
-		# but we patch it and set to false here as well
-		if use elibc_musl; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				crt-static = false
-			_EOF_
-		fi
-	done
-	if use wasm; then
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.wasm32-unknown-unknown]
-			linker = "$(usex system-llvm lld rust-lld)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="\"${RUSTFLAGS}\""
-	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
-	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
-	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	env | grep "CFLAGS_.*"
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-src_compile() {
-	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-}
-
-src_test() {
-	# https://rustc-dev-guide.rust-lang.org/tests/intro.html
-
-	# those are basic and codegen tests.
-	local tests=(
-		codegen
-		codegen-units
-		compile-fail
-		incremental
-		mir-opt
-		pretty
-		run-make
-	)
-
-	# fails if llvm is not built with ALL targets.
-	# and known to fail with system llvm sometimes.
-	use system-llvm || tests+=( assembly )
-
-	# fragile/expensive/less important tests
-	# or tests that require extra builds
-	# TODO: instead of skipping, just make some nonfatal.
-	if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
-		tests+=(
-			rustdoc
-			rustdoc-js
-			rustdoc-js-std
-			rustdoc-ui
-			run-make-fulldeps
-			ui
-			ui-fulldeps
-		)
-	fi
-
-	local i failed=()
-	einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
-	for i in "${tests[@]}"; do
-		local t="src/test/${i}"
-		einfo "rust_src_test: running ${t}"
-		if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
-				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
-		then
-				failed+=( "${t}" )
-				eerror "rust_src_test: ${t} failed"
-		fi
-	done
-
-	if [[ ${#failed[@]} -ne 0 ]]; then
-		eerror "rust_src_test: failure summary: ${failed[@]}"
-		die "aborting due to test failures"
-	fi
-}
-
-src_install() {
-	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use rustfmt && symlinks+=( rustfmt cargo-fmt )
-	use rust-analyzer && symlinks+=( rust-analyzer )
-
-	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
-	local i
-	for i in "${symlinks[@]}"; do
-		# we need realpath on /usr/bin/* symlink return version-appended binary path.
-		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
-		# need to fix eselect-rust to remove this hack.
-		local ver_i="${i}-${PV}"
-		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
-			einfo "Installing ${i} symlink"
-			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
-		else
-			ewarn "${i} symlink requested, but source file not found"
-			ewarn "please report this"
-		fi
-		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
-	done
-
-	# symlinks to switch components to active rust in eselect
-	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
-	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use rustfmt; then
-		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
-	fi
-	if use rust-analyzer; then
-		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
-	fi
-
-	insinto /etc/env.d/rust
-	doins "${T}/provider-${P}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-pkg_postinst() {
-	eselect rust update
-
-	if has_version dev-debug/gdb || has_version dev-debug/lldb; then
-		elog "Rust installs a helper script for calling GDB and LLDB,"
-		elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
-	fi
-
-	if has_version app-editors/emacs; then
-		elog "install app-emacs/rust-mode to get emacs support for rust."
-	fi
-
-	if has_version app-editors/gvim || has_version app-editors/vim; then
-		elog "install app-vim/rust-vim to get vim support for rust."
-	fi
-}
-
-pkg_postrm() {
-	eselect rust cleanup
-}

diff --git a/dev-lang/rust/rust-1.67.1-r1.ebuild b/dev-lang/rust/rust-1.67.1-r1.ebuild
deleted file mode 100644
index fab0e06..0000000
--- a/dev-lang/rust/rust-1.67.1-r1.ebuild
+++ /dev/null
@@ -1,751 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..11} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).1"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# 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 BSD-1 BSD-2 BSD-4 UoI-NCSA"
-
-IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 15 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
-			wasm? ( sys-devel/lld:${_s} )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-"
-
-# to bootstrap we need at least exactly previous version, or same.
-# most of the time previous versions fail to bootstrap with newer
-# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
-# but it fails to bootstrap with 1.48.x
-# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-build/cmake-3.13.4
-		app-alternatives/ninja
-	)
-	test? ( dev-debug/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	system-llvm? (
-		${LLVM_DEPEND}
-		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
-	)
-	!system-llvm? (
-		!llvm-libunwind? (
-			elibc_musl? ( sys-libs/libunwind:= )
-		)
-	)
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rust-analyzer? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.64.0-libressl.patch
-	"${FILESDIR}"/1.65.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
-	"${FILESDIR}"/1.67.0-doc-wasm.patch
-	"${FILESDIR}"/1.67.1-rustc_expand.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-# Is LLVM being linked against libc++?
-is_libcxx_linked() {
-	local code='#include <ciso646>
-#if defined(_LIBCPP_VERSION)
-	HAVE_LIBCXX
-#endif
-'
-	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
-	[[ ${out} == *HAVE_LIBCXX* ]]
-}
-
-pkg_pretend() {
-	pre_build_checks
-}
-
-pkg_setup() {
-	pre_build_checks
-	python-any-r1_pkg_setup
-
-	export LIBGIT2_NO_PKG_CONFIG=1 #749381
-
-	use system-bootstrap && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-esetup_unwind_hack() {
-	# https://bugs.gentoo.org/870280
-	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
-	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
-	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
-	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
-	local fakelib="${T}/fakelib"
-	mkdir -p "${fakelib}" || die
-	# we need both symlinks, one for cargo runtime, other for linker.
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
-	export LD_LIBRARY_PATH="${fakelib}"
-	export RUSTFLAGS+=" -L${fakelib}"
-	# this is a literally magic variable that gets through cargo cache, without it some
-	# crates ignore RUSTFLAGS.
-	# this variable can not contain leading space.
-	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
-}
-
-src_prepare() {
-	if ! use system-bootstrap; then
-		has_version sys-devel/gcc || esetup_unwind_hack
-		local rust_stage0_root="${WORKDIR}"/rust-stage0
-		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
-
-		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
-			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	# this libressl version check is terrible
-	sed -e 's/d397af804c0b786978867528635fa9148cd2ad0e6abd591ace21b5bd3719c38d/896afea18b1072d4c715421ff2ed7e428b57aadec44d4680dcb991a6229a1edc/' \
-		-i vendor/openssl-sys/.cargo-checksum.json || die
-	# fix for libressl
-	sed -e 's/7d5ca02f34cffe51db3568c500c9a8a70cef879871a0f466e3344142644acf12/e9eef35f1c18dd9844960d1d315e84ad99a05ab1247f0f54e3c2eab244988256/' \
-		-i vendor/libssh2-sys/.cargo-checksum.json || die
-
-	default
-}
-
-src_configure() {
-	filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
-
-	local rust_target="" rust_targets="" arch_cflags
-
-	# Collect rust target names to compile standard libs for all ABIs.
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
-	done
-	if use wasm; then
-		rust_targets+=",\"wasm32-unknown-unknown\""
-		if use system-llvm; then
-			# un-hardcode rust-lld linker for this target
-			# https://bugs.gentoo.org/715348
-			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
-		fi
-	fi
-	rust_targets="${rust_targets#,}"
-
-	local tools='"cargo"'
-	use clippy && tools+=',"clippy"'
-	use miri && tools+=',"miri"'
-	use profiler && tools+=',"rust-demangler"'
-	use rustfmt && tools+=',"rustfmt"'
-	use rust-analyzer && tools+=',"rust-analyzer","analysis"'
-	use rust-src && tools+=',"src"'
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if is_libcxx_linked; then
-			# https://bugs.gentoo.org/732632
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		[llvm.build-config]
-		CMAKE_VERBOSE_MAKEFILE = "ON"
-		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
-		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
-		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
-		[build]
-		build-stage = 2
-		test-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-	_EOF_
-
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
-		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
-
-		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${rust_target}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
-		# but we patch it and set to false here as well
-		if use elibc_musl; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				crt-static = false
-			_EOF_
-		fi
-	done
-	if use wasm; then
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.wasm32-unknown-unknown]
-			linker = "$(usex system-llvm lld rust-lld)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="\"${RUSTFLAGS}\""
-	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
-	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
-	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	env | grep "CFLAGS_.*"
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-src_compile() {
-	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-}
-
-src_test() {
-	# https://rustc-dev-guide.rust-lang.org/tests/intro.html
-
-	# those are basic and codegen tests.
-	local tests=(
-		codegen
-		codegen-units
-		compile-fail
-		incremental
-		mir-opt
-		pretty
-		run-make
-	)
-
-	# fails if llvm is not built with ALL targets.
-	# and known to fail with system llvm sometimes.
-	use system-llvm || tests+=( assembly )
-
-	# fragile/expensive/less important tests
-	# or tests that require extra builds
-	# TODO: instead of skipping, just make some nonfatal.
-	if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
-		tests+=(
-			rustdoc
-			rustdoc-js
-			rustdoc-js-std
-			rustdoc-ui
-			run-make-fulldeps
-			ui
-			ui-fulldeps
-		)
-	fi
-
-	local i failed=()
-	einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
-	for i in "${tests[@]}"; do
-		local t="src/test/${i}"
-		einfo "rust_src_test: running ${t}"
-		if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
-				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
-		then
-				failed+=( "${t}" )
-				eerror "rust_src_test: ${t} failed"
-		fi
-	done
-
-	if [[ ${#failed[@]} -ne 0 ]]; then
-		eerror "rust_src_test: failure summary: ${failed[@]}"
-		die "aborting due to test failures"
-	fi
-}
-
-src_install() {
-	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use rustfmt && symlinks+=( rustfmt cargo-fmt )
-	use rust-analyzer && symlinks+=( rust-analyzer )
-
-	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
-	local i
-	for i in "${symlinks[@]}"; do
-		# we need realpath on /usr/bin/* symlink return version-appended binary path.
-		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
-		# need to fix eselect-rust to remove this hack.
-		local ver_i="${i}-${PV}"
-		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
-			einfo "Installing ${i} symlink"
-			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
-		else
-			ewarn "${i} symlink requested, but source file not found"
-			ewarn "please report this"
-		fi
-		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
-	done
-
-	# symlinks to switch components to active rust in eselect
-	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
-	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use rustfmt; then
-		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
-	fi
-	if use rust-analyzer; then
-		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
-	fi
-
-	insinto /etc/env.d/rust
-	doins "${T}/provider-${P}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-pkg_postinst() {
-	eselect rust update
-
-	if has_version dev-debug/gdb || has_version dev-debug/lldb; then
-		elog "Rust installs a helper script for calling GDB and LLDB,"
-		elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
-	fi
-
-	if has_version app-editors/emacs; then
-		elog "install app-emacs/rust-mode to get emacs support for rust."
-	fi
-
-	if has_version app-editors/gvim || has_version app-editors/vim; then
-		elog "install app-vim/rust-vim to get vim support for rust."
-	fi
-}
-
-pkg_postrm() {
-	eselect rust cleanup
-}

diff --git a/dev-lang/rust/rust-1.68.2.ebuild b/dev-lang/rust/rust-1.68.2.ebuild
deleted file mode 100644
index 3b4d652..0000000
--- a/dev-lang/rust/rust-1.68.2.ebuild
+++ /dev/null
@@ -1,750 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..11} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).1"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# 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 BSD-1 BSD-2 BSD-4 UoI-NCSA"
-
-IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 15 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
-			wasm? ( sys-devel/lld:${_s} )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-"
-
-# to bootstrap we need at least exactly previous version, or same.
-# most of the time previous versions fail to bootstrap with newer
-# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
-# but it fails to bootstrap with 1.48.x
-# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-build/cmake-3.13.4
-		app-alternatives/ninja
-	)
-	test? ( dev-debug/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	system-llvm? (
-		${LLVM_DEPEND}
-		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
-	)
-	!system-llvm? (
-		!llvm-libunwind? (
-			elibc_musl? ( sys-libs/libunwind:= )
-		)
-	)
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rust-analyzer? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.64.0-libressl.patch
-	"${FILESDIR}"/1.68.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
-	"${FILESDIR}"/1.67.0-doc-wasm.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-# Is LLVM being linked against libc++?
-is_libcxx_linked() {
-	local code='#include <ciso646>
-#if defined(_LIBCPP_VERSION)
-	HAVE_LIBCXX
-#endif
-'
-	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
-	[[ ${out} == *HAVE_LIBCXX* ]]
-}
-
-pkg_pretend() {
-	pre_build_checks
-}
-
-pkg_setup() {
-	pre_build_checks
-	python-any-r1_pkg_setup
-
-	export LIBGIT2_NO_PKG_CONFIG=1 #749381
-
-	use system-bootstrap && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-esetup_unwind_hack() {
-	# https://bugs.gentoo.org/870280
-	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
-	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
-	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
-	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
-	local fakelib="${T}/fakelib"
-	mkdir -p "${fakelib}" || die
-	# we need both symlinks, one for cargo runtime, other for linker.
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
-	export LD_LIBRARY_PATH="${fakelib}"
-	export RUSTFLAGS+=" -L${fakelib}"
-	# this is a literally magic variable that gets through cargo cache, without it some
-	# crates ignore RUSTFLAGS.
-	# this variable can not contain leading space.
-	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
-}
-
-src_prepare() {
-	if ! use system-bootstrap; then
-		has_version sys-devel/gcc || esetup_unwind_hack
-		local rust_stage0_root="${WORKDIR}"/rust-stage0
-		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
-
-		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
-			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	# this libressl version check is terrible
-	sed -e 's/d397af804c0b786978867528635fa9148cd2ad0e6abd591ace21b5bd3719c38d/896afea18b1072d4c715421ff2ed7e428b57aadec44d4680dcb991a6229a1edc/' \
-		-i vendor/openssl-sys/.cargo-checksum.json || die
-	# fix for libressl
-	sed -e 's/7d5ca02f34cffe51db3568c500c9a8a70cef879871a0f466e3344142644acf12/e9eef35f1c18dd9844960d1d315e84ad99a05ab1247f0f54e3c2eab244988256/' \
-		-i vendor/libssh2-sys/.cargo-checksum.json || die
-
-	default
-}
-
-src_configure() {
-	filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
-
-	local rust_target="" rust_targets="" arch_cflags
-
-	# Collect rust target names to compile standard libs for all ABIs.
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
-	done
-	if use wasm; then
-		rust_targets+=",\"wasm32-unknown-unknown\""
-		if use system-llvm; then
-			# un-hardcode rust-lld linker for this target
-			# https://bugs.gentoo.org/715348
-			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
-		fi
-	fi
-	rust_targets="${rust_targets#,}"
-
-	local tools='"cargo"'
-	use clippy && tools+=',"clippy"'
-	use miri && tools+=',"miri"'
-	use profiler && tools+=',"rust-demangler"'
-	use rustfmt && tools+=',"rustfmt"'
-	use rust-analyzer && tools+=',"rust-analyzer","analysis"'
-	use rust-src && tools+=',"src"'
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if is_libcxx_linked; then
-			# https://bugs.gentoo.org/732632
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		[llvm.build-config]
-		CMAKE_VERBOSE_MAKEFILE = "ON"
-		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
-		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
-		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
-		[build]
-		build-stage = 2
-		test-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-	_EOF_
-
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
-		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
-
-		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${rust_target}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
-		# but we patch it and set to false here as well
-		if use elibc_musl; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				crt-static = false
-			_EOF_
-		fi
-	done
-	if use wasm; then
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.wasm32-unknown-unknown]
-			linker = "$(usex system-llvm lld rust-lld)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="\"${RUSTFLAGS}\""
-	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
-	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
-	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	env | grep "CFLAGS_.*"
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-src_compile() {
-	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-}
-
-src_test() {
-	# https://rustc-dev-guide.rust-lang.org/tests/intro.html
-
-	# those are basic and codegen tests.
-	local tests=(
-		codegen
-		codegen-units
-		compile-fail
-		incremental
-		mir-opt
-		pretty
-		run-make
-	)
-
-	# fails if llvm is not built with ALL targets.
-	# and known to fail with system llvm sometimes.
-	use system-llvm || tests+=( assembly )
-
-	# fragile/expensive/less important tests
-	# or tests that require extra builds
-	# TODO: instead of skipping, just make some nonfatal.
-	if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
-		tests+=(
-			rustdoc
-			rustdoc-js
-			rustdoc-js-std
-			rustdoc-ui
-			run-make-fulldeps
-			ui
-			ui-fulldeps
-		)
-	fi
-
-	local i failed=()
-	einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
-	for i in "${tests[@]}"; do
-		local t="src/test/${i}"
-		einfo "rust_src_test: running ${t}"
-		if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
-				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
-		then
-				failed+=( "${t}" )
-				eerror "rust_src_test: ${t} failed"
-		fi
-	done
-
-	if [[ ${#failed[@]} -ne 0 ]]; then
-		eerror "rust_src_test: failure summary: ${failed[@]}"
-		die "aborting due to test failures"
-	fi
-}
-
-src_install() {
-	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use rustfmt && symlinks+=( rustfmt cargo-fmt )
-	use rust-analyzer && symlinks+=( rust-analyzer )
-
-	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
-	local i
-	for i in "${symlinks[@]}"; do
-		# we need realpath on /usr/bin/* symlink return version-appended binary path.
-		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
-		# need to fix eselect-rust to remove this hack.
-		local ver_i="${i}-${PV}"
-		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
-			einfo "Installing ${i} symlink"
-			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
-		else
-			ewarn "${i} symlink requested, but source file not found"
-			ewarn "please report this"
-		fi
-		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
-	done
-
-	# symlinks to switch components to active rust in eselect
-	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
-	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use rustfmt; then
-		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
-	fi
-	if use rust-analyzer; then
-		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
-	fi
-
-	insinto /etc/env.d/rust
-	doins "${T}/provider-${P}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-pkg_postinst() {
-	eselect rust update
-
-	if has_version dev-debug/gdb || has_version dev-debug/lldb; then
-		elog "Rust installs a helper script for calling GDB and LLDB,"
-		elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
-	fi
-
-	if has_version app-editors/emacs; then
-		elog "install app-emacs/rust-mode to get emacs support for rust."
-	fi
-
-	if has_version app-editors/gvim || has_version app-editors/vim; then
-		elog "install app-vim/rust-vim to get vim support for rust."
-	fi
-}
-
-pkg_postrm() {
-	eselect rust cleanup
-}

diff --git a/dev-lang/rust/rust-1.69.0-r1.ebuild b/dev-lang/rust/rust-1.69.0-r1.ebuild
deleted file mode 100644
index 4ba27d4..0000000
--- a/dev-lang/rust/rust-1.69.0-r1.ebuild
+++ /dev/null
@@ -1,751 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..11} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="amd64 arm arm64 ~mips ~ppc ppc64 ~riscv sparc x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).2"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# 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 BSD-1 BSD-2 BSD-4 UoI-NCSA"
-
-IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 15 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
-			wasm? ( sys-devel/lld:${_s} )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-"
-
-# to bootstrap we need at least exactly previous version, or same.
-# most of the time previous versions fail to bootstrap with newer
-# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
-# but it fails to bootstrap with 1.48.x
-# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-build/cmake-3.13.4
-		app-alternatives/ninja
-	)
-	test? ( dev-debug/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	system-llvm? (
-		${LLVM_DEPEND}
-		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
-	)
-	!system-llvm? (
-		!llvm-libunwind? (
-			elibc_musl? ( sys-libs/libunwind:= )
-		)
-	)
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rust-analyzer? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.64.0-libressl.patch
-	"${FILESDIR}"/1.68.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
-	"${FILESDIR}"/1.67.0-doc-wasm.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-# Is LLVM being linked against libc++?
-is_libcxx_linked() {
-	local code='#include <ciso646>
-#if defined(_LIBCPP_VERSION)
-	HAVE_LIBCXX
-#endif
-'
-	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
-	[[ ${out} == *HAVE_LIBCXX* ]]
-}
-
-pkg_pretend() {
-	pre_build_checks
-}
-
-pkg_setup() {
-	pre_build_checks
-	python-any-r1_pkg_setup
-
-	export LIBGIT2_NO_PKG_CONFIG=1 #749381
-
-	use system-bootstrap && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-esetup_unwind_hack() {
-	# https://bugs.gentoo.org/870280
-	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
-	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
-	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
-	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
-	local fakelib="${T}/fakelib"
-	mkdir -p "${fakelib}" || die
-	# we need both symlinks, one for cargo runtime, other for linker.
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
-	export LD_LIBRARY_PATH="${fakelib}"
-	export RUSTFLAGS+=" -L${fakelib}"
-	# this is a literally magic variable that gets through cargo cache, without it some
-	# crates ignore RUSTFLAGS.
-	# this variable can not contain leading space.
-	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
-}
-
-src_prepare() {
-	if ! use system-bootstrap; then
-		has_version sys-devel/gcc || esetup_unwind_hack
-		local rust_stage0_root="${WORKDIR}"/rust-stage0
-		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
-
-		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
-			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	# this libressl version check is terrible
-	sed -e 's/d397af804c0b786978867528635fa9148cd2ad0e6abd591ace21b5bd3719c38d/896afea18b1072d4c715421ff2ed7e428b57aadec44d4680dcb991a6229a1edc/' \
-		-i vendor/openssl-sys/.cargo-checksum.json || die
-	# fix for libressl
-	sed -e 's/7d5ca02f34cffe51db3568c500c9a8a70cef879871a0f466e3344142644acf12/e9eef35f1c18dd9844960d1d315e84ad99a05ab1247f0f54e3c2eab244988256/' \
-		-i vendor/libssh2-sys/.cargo-checksum.json || die
-
-	default
-}
-
-src_configure() {
-	filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
-
-	local rust_target="" rust_targets="" arch_cflags
-
-	# Collect rust target names to compile standard libs for all ABIs.
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
-	done
-	if use wasm; then
-		rust_targets+=",\"wasm32-unknown-unknown\""
-		if use system-llvm; then
-			# un-hardcode rust-lld linker for this target
-			# https://bugs.gentoo.org/715348
-			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
-		fi
-	fi
-	rust_targets="${rust_targets#,}"
-
-	# cargo and rustdoc are mandatory and should always be included
-	local tools='"cargo","rustdoc"'
-	use clippy && tools+=',"clippy"'
-	use miri && tools+=',"miri"'
-	use profiler && tools+=',"rust-demangler"'
-	use rustfmt && tools+=',"rustfmt"'
-	use rust-analyzer && tools+=',"rust-analyzer"'
-	use rust-src && tools+=',"src"'
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if is_libcxx_linked; then
-			# https://bugs.gentoo.org/732632
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		[llvm.build-config]
-		CMAKE_VERBOSE_MAKEFILE = "ON"
-		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
-		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
-		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
-		[build]
-		build-stage = 2
-		test-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-	_EOF_
-
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
-		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
-
-		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${rust_target}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
-		# but we patch it and set to false here as well
-		if use elibc_musl; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				crt-static = false
-			_EOF_
-		fi
-	done
-	if use wasm; then
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.wasm32-unknown-unknown]
-			linker = "$(usex system-llvm lld rust-lld)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="\"${RUSTFLAGS}\""
-	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
-	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
-	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	env | grep "CFLAGS_.*"
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-src_compile() {
-	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-}
-
-src_test() {
-	# https://rustc-dev-guide.rust-lang.org/tests/intro.html
-
-	# those are basic and codegen tests.
-	local tests=(
-		codegen
-		codegen-units
-		compile-fail
-		incremental
-		mir-opt
-		pretty
-		run-make
-	)
-
-	# fails if llvm is not built with ALL targets.
-	# and known to fail with system llvm sometimes.
-	use system-llvm || tests+=( assembly )
-
-	# fragile/expensive/less important tests
-	# or tests that require extra builds
-	# TODO: instead of skipping, just make some nonfatal.
-	if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
-		tests+=(
-			rustdoc
-			rustdoc-js
-			rustdoc-js-std
-			rustdoc-ui
-			run-make-fulldeps
-			ui
-			ui-fulldeps
-		)
-	fi
-
-	local i failed=()
-	einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
-	for i in "${tests[@]}"; do
-		local t="src/test/${i}"
-		einfo "rust_src_test: running ${t}"
-		if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
-				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
-		then
-				failed+=( "${t}" )
-				eerror "rust_src_test: ${t} failed"
-		fi
-	done
-
-	if [[ ${#failed[@]} -ne 0 ]]; then
-		eerror "rust_src_test: failure summary: ${failed[@]}"
-		die "aborting due to test failures"
-	fi
-}
-
-src_install() {
-	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use rustfmt && symlinks+=( rustfmt cargo-fmt )
-	use rust-analyzer && symlinks+=( rust-analyzer )
-
-	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
-	local i
-	for i in "${symlinks[@]}"; do
-		# we need realpath on /usr/bin/* symlink return version-appended binary path.
-		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
-		# need to fix eselect-rust to remove this hack.
-		local ver_i="${i}-${PV}"
-		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
-			einfo "Installing ${i} symlink"
-			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
-		else
-			ewarn "${i} symlink requested, but source file not found"
-			ewarn "please report this"
-		fi
-		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
-	done
-
-	# symlinks to switch components to active rust in eselect
-	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
-	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use rustfmt; then
-		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
-	fi
-	if use rust-analyzer; then
-		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
-	fi
-
-	insinto /etc/env.d/rust
-	doins "${T}/provider-${P}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-pkg_postinst() {
-	eselect rust update
-
-	if has_version dev-debug/gdb || has_version dev-debug/lldb; then
-		elog "Rust installs a helper script for calling GDB and LLDB,"
-		elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
-	fi
-
-	if has_version app-editors/emacs; then
-		elog "install app-emacs/rust-mode to get emacs support for rust."
-	fi
-
-	if has_version app-editors/gvim || has_version app-editors/vim; then
-		elog "install app-vim/rust-vim to get vim support for rust."
-	fi
-}
-
-pkg_postrm() {
-	eselect rust cleanup
-}

diff --git a/dev-lang/rust/rust-1.70.0.ebuild b/dev-lang/rust/rust-1.70.0.ebuild
deleted file mode 100644
index 9d37467..0000000
--- a/dev-lang/rust/rust-1.70.0.ebuild
+++ /dev/null
@@ -1,752 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..12} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# keep in sync with llvm ebuild of the same version as bundled one.
-ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai LoongArch Mips MSP430
-	NVPTX PowerPC RISCV Sparc SystemZ VE WebAssembly X86 XCore )
-ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
-LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
-
-LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4 UoI-NCSA"
-
-IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 16 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
-			wasm? ( sys-devel/lld:${_s} )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-"
-
-# to bootstrap we need at least exactly previous version, or same.
-# most of the time previous versions fail to bootstrap with newer
-# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
-# but it fails to bootstrap with 1.48.x
-# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-build/cmake-3.13.4
-		app-alternatives/ninja
-	)
-	test? ( dev-debug/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	system-llvm? (
-		${LLVM_DEPEND}
-		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
-	)
-	!system-llvm? (
-		!llvm-libunwind? (
-			elibc_musl? ( sys-libs/libunwind:= )
-		)
-	)
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rust-analyzer? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
-	"${FILESDIR}"/1.67.0-doc-wasm.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-# Is LLVM being linked against libc++?
-is_libcxx_linked() {
-	local code='#include <ciso646>
-#if defined(_LIBCPP_VERSION)
-	HAVE_LIBCXX
-#endif
-'
-	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
-	[[ ${out} == *HAVE_LIBCXX* ]]
-}
-
-pkg_pretend() {
-	pre_build_checks
-}
-
-pkg_setup() {
-	pre_build_checks
-	python-any-r1_pkg_setup
-
-	export LIBGIT2_NO_PKG_CONFIG=1 #749381
-
-	use system-bootstrap && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-esetup_unwind_hack() {
-	# https://bugs.gentoo.org/870280
-	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
-	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
-	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
-	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
-	local fakelib="${T}/fakelib"
-	mkdir -p "${fakelib}" || die
-	# we need both symlinks, one for cargo runtime, other for linker.
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
-	export LD_LIBRARY_PATH="${fakelib}"
-	export RUSTFLAGS+=" -L${fakelib}"
-	# this is a literally magic variable that gets through cargo cache, without it some
-	# crates ignore RUSTFLAGS.
-	# this variable can not contain leading space.
-	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
-}
-
-src_prepare() {
-	local libressl_patch="${FILESDIR}/1.70.0-libressl-openssl-sys.patch"
-	pushd vendor/openssl-sys > /dev/null || die
-	eapply "${libressl_patch}"
-	"${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${libressl_patch}" || die
-	popd > /dev/null || die
-
-	if ! use system-bootstrap; then
-		has_version sys-devel/gcc || esetup_unwind_hack
-		local rust_stage0_root="${WORKDIR}"/rust-stage0
-		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
-
-		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
-			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	default
-}
-
-src_configure() {
-	filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
-
-	local rust_target="" rust_targets="" arch_cflags
-
-	# Collect rust target names to compile standard libs for all ABIs.
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
-	done
-	if use wasm; then
-		rust_targets+=",\"wasm32-unknown-unknown\""
-		if use system-llvm; then
-			# un-hardcode rust-lld linker for this target
-			# https://bugs.gentoo.org/715348
-			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
-		fi
-	fi
-	rust_targets="${rust_targets#,}"
-
-	# cargo and rustdoc are mandatory and should always be included
-	local tools='"cargo","rustdoc"'
-	use clippy && tools+=',"clippy"'
-	use miri && tools+=',"miri"'
-	use profiler && tools+=',"rust-demangler"'
-	use rustfmt && tools+=',"rustfmt"'
-	use rust-analyzer && tools+=',"rust-analyzer"'
-	use rust-src && tools+=',"src"'
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if is_libcxx_linked; then
-			# https://bugs.gentoo.org/732632
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		enable-warnings = false
-		[llvm.build-config]
-		CMAKE_VERBOSE_MAKEFILE = "ON"
-		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
-		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
-		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
-		[build]
-		build-stage = 2
-		test-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		lto = "$(usex lto fat off)"
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-		compression-profile = "balanced"
-	_EOF_
-
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
-		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
-
-		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${rust_target}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
-		# but we patch it and set to false here as well
-		if use elibc_musl; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				crt-static = false
-			_EOF_
-		fi
-	done
-	if use wasm; then
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.wasm32-unknown-unknown]
-			linker = "$(usex system-llvm lld rust-lld)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="\"${RUSTFLAGS}\""
-	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
-	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
-	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	env | grep "CFLAGS_.*"
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-src_compile() {
-	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-}
-
-src_test() {
-	# https://rustc-dev-guide.rust-lang.org/tests/intro.html
-
-	# those are basic and codegen tests.
-	local tests=(
-		codegen
-		codegen-units
-		compile-fail
-		incremental
-		mir-opt
-		pretty
-		run-make
-	)
-
-	# fails if llvm is not built with ALL targets.
-	# and known to fail with system llvm sometimes.
-	use system-llvm || tests+=( assembly )
-
-	# fragile/expensive/less important tests
-	# or tests that require extra builds
-	# TODO: instead of skipping, just make some nonfatal.
-	if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
-		tests+=(
-			rustdoc
-			rustdoc-js
-			rustdoc-js-std
-			rustdoc-ui
-			run-make-fulldeps
-			ui
-			ui-fulldeps
-		)
-	fi
-
-	local i failed=()
-	einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
-	for i in "${tests[@]}"; do
-		local t="src/test/${i}"
-		einfo "rust_src_test: running ${t}"
-		if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
-				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
-		then
-				failed+=( "${t}" )
-				eerror "rust_src_test: ${t} failed"
-		fi
-	done
-
-	if [[ ${#failed[@]} -ne 0 ]]; then
-		eerror "rust_src_test: failure summary: ${failed[@]}"
-		die "aborting due to test failures"
-	fi
-}
-
-src_install() {
-	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use rustfmt && symlinks+=( rustfmt cargo-fmt )
-	use rust-analyzer && symlinks+=( rust-analyzer )
-
-	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
-	local i
-	for i in "${symlinks[@]}"; do
-		# we need realpath on /usr/bin/* symlink return version-appended binary path.
-		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
-		# need to fix eselect-rust to remove this hack.
-		local ver_i="${i}-${PV}"
-		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
-			einfo "Installing ${i} symlink"
-			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
-		else
-			ewarn "${i} symlink requested, but source file not found"
-			ewarn "please report this"
-		fi
-		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
-	done
-
-	# symlinks to switch components to active rust in eselect
-	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
-	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use rustfmt; then
-		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
-	fi
-	if use rust-analyzer; then
-		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
-	fi
-
-	insinto /etc/env.d/rust
-	doins "${T}/provider-${P}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-pkg_postinst() {
-	eselect rust update
-
-	if has_version dev-debug/gdb || has_version dev-debug/lldb; then
-		elog "Rust installs a helper script for calling GDB and LLDB,"
-		elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
-	fi
-
-	if has_version app-editors/emacs; then
-		elog "install app-emacs/rust-mode to get emacs support for rust."
-	fi
-
-	if has_version app-editors/gvim || has_version app-editors/vim; then
-		elog "install app-vim/rust-vim to get vim support for rust."
-	fi
-}
-
-pkg_postrm() {
-	eselect rust cleanup
-}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2024-04-04 16:10 orbea
  0 siblings, 0 replies; 27+ messages in thread
From: orbea @ 2024-04-04 16:10 UTC (permalink / raw
  To: gentoo-commits

commit:     335badc11c74708e71afeaef106ec856c73d9d95
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Thu Apr  4 16:08:54 2024 +0000
Commit:     orbea <orbea <AT> riseup <DOT> net>
CommitDate: Thu Apr  4 16:08:54 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=335badc1

dev-lang/rust: add 1.77.1

Signed-off-by: orbea <orbea <AT> riseup.net>

 dev-lang/rust/Manifest                             |  30 +
 .../rust/files/1.77.1-libressl-openssl-sys.patch   |  10 +
 dev-lang/rust/rust-1.77.1.ebuild                   | 797 +++++++++++++++++++++
 3 files changed, 837 insertions(+)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 1c90ff1..1d9c9d3 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -144,6 +144,34 @@ DIST rust-1.75.0-x86_64-unknown-linux-gnu.tar.xz 156249584 BLAKE2B e6ac90854f589
 DIST rust-1.75.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6614cb3ef782c917e8f7fdc990c5b82e8fcffa71e075f10f9726f405ff566fd963bec64cde4dd7252d9d78e09a184b8ba22d15cc87662ad987cdd37c881d8288 SHA512 bfaeef4cd7643879991955fd33f4cdc4c34afb1202cb77c0736434fb735bd215d18d1a11c25f04a7f2514640858a36832e5805a5f85e92d8b7076aa18607ffc3
 DIST rust-1.75.0-x86_64-unknown-linux-musl.tar.xz 234151836 BLAKE2B 9461afbdf26dea19e118b35ea7ef1ee60c22f601501ae6a08950658598a74a6b3179cbdfd9dc4748a0c2485af721b371e5fb523f27e7d7d702f94b532a70437f SHA512 7d650a29c5d14023a3d7d606b7bac4be6ef7988a82525f02d7af9cf3895bb88284442b8042d27be69689f4bddaa5c5370ef7609d18849986860eafcdf89d2d69
 DIST rust-1.75.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B c222d0989518602c0ecde9d21dbca97e9e60d81083804d1d8b2c6bffc8114af78570fd384eb58e5dba1bf249b99300e7f3f4067c1a66c0cd9fac60443f56f751 SHA512 6f78913e34402cedb37f4a54491c65a8bfe79e535e4e40516f2381bc27783cc7655e9252e7701813578c8ffcaf6b301e61ad32917a475d4388fa472733b21b12
+DIST rust-1.76.0-aarch64-unknown-linux-gnu.tar.xz 217392212 BLAKE2B aa587d69b5acc389a8d1431875f10f6261bbedb259a9009092e663a345fb0ac0cf3ad3459ca549a496853b8d760c7fc56b797ee269bcd15d54bc735cd1100fbf SHA512 ad95566ca7597ef64a03f614cc20b9c8d9b2fe67f33141b817973fa160c2be978511509fee79bdbfc74c50076a607e8543ad5bb4b56723704df27b5573b8d606
+DIST rust-1.76.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 86834b999cb0ad9de02a32a79f801d28268c986c830ad3f16274cd4c404a4305267c90b677f7a8637f2de08c766ad3555945f77da181906358e3d51b35e258b1 SHA512 79c1b258267d6feaecba18648a7eb620a570c99fb75e422d0a5b946a66f3a5bf6d2b41dca89b4ae79feed704d498674f36de368e4b228b1e38e3499ac8cd4f21
+DIST rust-1.76.0-aarch64-unknown-linux-musl.tar.xz 197852572 BLAKE2B 93985909e049957f80d4a14842c85dd14e5eec6d74e4e439479f353b44b123947c782856de86555262829d755a344ad01a94c41e8852818e727fba74620e1d68 SHA512 1f36245932d3b9bab0b99604085d886d9fd2e575e896e1c28b1771ae916466c060f4d70486e47200d58947147eb5571b922e175b1a450a36388c3c95e6537655
+DIST rust-1.76.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 50326fb881308300aa01f3783ec6856b7ab9ef80e986cc4e64fc5d6d0bcd246add9330ee5459a3ab5c0bd417d75c2b9486bdbdc19edf5a899dfd9e1ecf31028e SHA512 0e775d73bee5cfc70035db1d0fc4506d022d593cf847e01c3f09ddc48a02c4eb24eabd42391c3241cc05ca49b15e38eea0f56786a4f800df724753ee7c557ab4
+DIST rust-1.76.0-arm-unknown-linux-gnueabi.tar.xz 181085440 BLAKE2B 024b82d285208635dda1c6dd66f634d1b921657d3921c402b7adeb7ac9b495628c31b248ed480d4e52e55293815a686f9ee52a84c2407763de5b961962ca9cc4 SHA512 c6840b3368bed511976c32dd3b22a8d1341c002843958a8cc8666c4f19547eb71d8a90946c1c075cf8af50187c1f14fcad2df488d186941d00cfd6b638b27dde
+DIST rust-1.76.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 71f2d3a9de1343eb96a75a7eec3d8d4ca9a02e7ed01a1cd2f4f352855dc6d58cae5ffbd70944d7d1e0c7559c74f8d8a25f3c1c3a14c2f00e5797d0f142b25a12 SHA512 b3dcd4b3e2fb5e5039b7fe654421f7a2f72ec5ebfa841589be715bf0a8ff4ff0a3c46a25d0978b4206678a2f2410c5ca69146f6e3eaa4b02a6231589bb099ed7
+DIST rust-1.76.0-arm-unknown-linux-gnueabihf.tar.xz 181168340 BLAKE2B 8d48ed7c79f87aeb91676c3f90877fbd396341130276e27adf42a0a0e5d3f7ded34a271cca34f1c0fa7f37d5666ba3f2f16eeccd91aa37859adc34077dd2a000 SHA512 6beba28be79a563eab4567ca33dbcaa7cba5f4389fa480ef4e16e528fcdc1ed6a2c7ccce1ee527afbaaa43545bfd80fa47ccd3ca2ea4c38ca2b397bdbee47a3a
+DIST rust-1.76.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 534e5f05848e5f6c05f2de69e0c974f5e4860c9ab4501491a651f5d2200aff69c9ece29010aa732d0eac3173b1f148afc3096b5f05146f7be7df14e5d9ecc44f SHA512 fba15a41ffc9202ae27a6c2884bac7367219fc5b1892287a599a1c8d2251bbe763df07da4b9719d73bb6d93fbac3dd1b8c4d8af75acb942200c9d7b1050be009
+DIST rust-1.76.0-armv7-unknown-linux-gnueabihf.tar.xz 184387332 BLAKE2B 7b9b03332f19859d43629d4e65815619fab1845c129a254643f164c025c5d574e71f6001899deec470e93c97fa6ac8c9d71cde5320b6f4cd822c2ab113e4b827 SHA512 3fbb7300e4dbe855207671ad309b71cdbad9cdc41b1c8144734f9de85c904918b137a2fe7284e9046f00526c7fce8b68dcbb40ab8d6543ef31ca0bbbfb396431
+DIST rust-1.76.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 050c4eead78d8161d46acd4ae47b69612706d8053bdfb5e4cfc0fe20ccbf4544643c1850f14cf93f7d17602849770857551b64c7f8f8db45594b7dbe267ecb41 SHA512 32e72430c4c9a5970994bcc6034d3be1a2a915adc6aa45a0c1cba403f6c44206af3e024afc42fe39a8501322fe46deea9921c9760f8e1f65422960baa88abafb
+DIST rust-1.76.0-i686-unknown-linux-gnu.tar.xz 211679020 BLAKE2B 06c9e52a1b6c802be3c4b0cb424dcf243f08fd5345e4b3977cca82093839cec885f6f491179e9e1f8e64c971bd7bfdbb6c551e463874b44c8b89ea649e8c9f40 SHA512 64605e0c981df2c805ba8cb31a89fabd00332faeea6d04ac57cb4898b7cedc66e4043ca3eeca799a204ffb93ecfa770150f09b99da3a7dc913d4e97331554e8f
+DIST rust-1.76.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 72d87215c5ddf03ed0cab99adb97b6f15fa8048fca68b44bdb77cd0df09cb1784cecb80f6618ad43d1b6f41a5848ddc84126ad576ff1ff08a3928cec9811a4d2 SHA512 a6d52e452a7afabb329b75155db9da91d51f809e913b19cde1c51c4d0f79831e962e698cf8e86079649e31a662d13743da23b13d16df6530427eec3e4269be7a
+DIST rust-1.76.0-loongarch64-unknown-linux-gnu.tar.xz 162940496 BLAKE2B 4c3b66199339262ea93de6785980795e493ce4e7de9d7ddf3e7c9fe38ad404f980abf408e979780905c149bb3de65d26cdc654f8b3ad0823a3d5067809fc4944 SHA512 64fac030d7edf9677757b883d1664b7e06ab9d5007d87a78d449acac359d7d6ba694bf4a6635c8bca51f274f842dad0612377aef655bb430f6290459343aa6e2
+DIST rust-1.76.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f52e951657308df5a944d35e2f9c19278f6f250474c070593f3b2072f372b8f6c32d379d144c8ae5a3ee31f7de21c00ec1da097f2c8c9a54759d9440ec5eb822 SHA512 d5ed37fd844715daa5d9901b388cbf39854fce3408c1d572f18e83d6207a20345e5e2c2b49b9c1523097245c73e1a448df8ecef2ae5b344e57bbe646b1266af6
+DIST rust-1.76.0-powerpc-unknown-linux-gnu.tar.xz 176795548 BLAKE2B 77e102e4d3821557895f3e24059b65847dc46ce3b81ce73f15063e9a6d383ba12f4c905fcbc85b79c39f00e9cb011fd2831737bb3ee9bb53103b4a7361aa312b SHA512 05ccb4294d788e948b69c9e38abf28454604f6b5bdd04704d6dd5231445e2f791cb18ea5149b4324a152ce9ae356b55036d2f74a5d9dc3aaaa05f5c7e4e69e1f
+DIST rust-1.76.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6d2fe65e5840cd7ddbf1b18ef89cd337b16e3424b6e20d21e199b274fbbc4d9fd88406c2a119d5b0bd48fc9e47145dade3f37bbf99faff68905e57bd41937c1a SHA512 a1e45e41f901513e97956d336910927d7357cb8c2362be69989528fa5ae7087da409853adfd86354b4b7faec3e8542e400838df1d195843c030d9c6fffed7557
+DIST rust-1.76.0-powerpc64-unknown-linux-gnu.tar.xz 177409476 BLAKE2B 7c9829c8e8ecf2a162663a2c382bff49739ca2bb02b785ffdbcf632edf55a3ea37ea3be09298b0a0a984512aef290123d3b0ca9ae0d088a2a816f38778aec79b SHA512 1f29f66d8e64d4c191bc90b05d791f08317aeec042ced815fd353beef6a7a4f6d5f91755481114e707728bd9a02ed9094b2a75d91d61ddb12748d9d40b211e17
+DIST rust-1.76.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 3087eda9eec862455906510d38f43b81644243ff7afbd5ddf221cfb2c12408b8ac9a0bd2a269a9499776e04b56b3d52c890e056af544aa56cc06b399614f83b5 SHA512 8a90d5acea677a02b2c5eec93157ee2c47bab895e16408123a0e2c3d44b0f9a9d95fe56dfa903fa1cd2fd298f17050110793e94d60510283c8e3cc120770ce9d
+DIST rust-1.76.0-powerpc64le-unknown-linux-gnu.tar.xz 187967776 BLAKE2B 0ffbbb4e4ca44285d8387fa66c58df72971bba6410faa96f6cfd80c223f4996285fac27672104f25ae2a20cb81a0ec6be0bea1d6893d95eab0d017fbae896509 SHA512 eb8be647651b02f1e9287d075d76c288e34e66514305a68ac118ef41dc14a16e5e1a3f2c5cb8512c4565a2eef3e5063dc4eb11272fa91c01d8313a323c20755c
+DIST rust-1.76.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5f41ec8841f4004df7b65b50a451027489e303bb2863ece09a14900a229d3180ba23bbf5c770c2939399eb157e97b4a08ccc0632a66eca5ca5cf4c29a1523186 SHA512 929e415a66d8777e2509c25a780b4963b8991adb905a9841dca19a5412a5f86326fd73c43f79c304a48a2898f863b76024b0144109343933a0c5f3f1fb8ed287
+DIST rust-1.76.0-riscv64gc-unknown-linux-gnu.tar.xz 183161264 BLAKE2B 9a0b579bc076b8cc55414c95456caa2146fd0597091d2332c1033d03ac7495684b7b7989ec6a8a108953c681ed88d4b62a9a7fbb39c0300128189a91b035d2df SHA512 29fe21df7b99b9a9483af6f2370e2b5a403c12aee94a1285bfb2d2efa631f9d284c70caf863247843ab1418bc78a26c6f6d5de4e8606456a9ebd265ea3bb504f
+DIST rust-1.76.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7a380f9d2f2f7083afe7abcd81a15d34df703f076c2c842fee2433c6c40d629bc5b0818fc186b462d653aafeb1fe767de3c01b7a014ec3220d77725bf1074fed SHA512 53e4942d74f42f4a7c35ef4a33833d23a955af157d80588c277f32f30cae63e8543fd4ffb569693ad00a6a20ebdb2d8422ca078ebc85bbf98814815e32791894
+DIST rust-1.76.0-s390x-unknown-linux-gnu.tar.xz 202133724 BLAKE2B d6d68392b9b9b69914cb6986cc1501246e0461a6eb5d18eb0ffe71e0a2a7be20d27e90b117c520723254b4709d08c4fb33d145e5ab559802ba6592dfabf81317 SHA512 fa74e1605eea945445f8ea621a667d50907d8b3ceed700e6b05dbcbf58dc7fec62c1e50247ad9688a5b9c5b78c4a140d93557d494260f8a21b1eb25baa315bec
+DIST rust-1.76.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 574df1144e6e79710a73962511fc73215b3a4d1c3b6623190180c7ec13aa8295e13329c4bc66710013f874054dd756e02bfb2c5f6ce1fc8a07ae0717f958b244 SHA512 17938b3f4671127c9c46a5c51703d430938b73b2e30cd497cbc159ed372889af42e651479d1ca69c000974e21d4d34cfb9e3cf28b79ec8e35540ac319e1b8b9d
+DIST rust-1.76.0-x86_64-unknown-linux-gnu.tar.xz 159385660 BLAKE2B 0846999358aba95a2bebd2ff35ccc9e1954ff4fca66227d1c8c1985c08e91159f2acaa1357544b81e92065a2f9ddf6aee41a2d9199d71d8de1655f9b16ba2ed3 SHA512 1cf0ffb44aee4da9768e27daf5ab3b20e67fc9e8eba5a1718b700c85ecdb61cdef129cb571633294f9c826b6e7bd2958086eec371922ca31af332266d3632609
+DIST rust-1.76.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 88e6b124812b409372ee05e2872cb4dfacbc638f8e3b4fb0d5fa4ea63f4594333a9788732502f8bd41e34b5cbc404d7ac08e7690d095a6c37c80b0043dd2be88 SHA512 f7ddca81da468d5617f48240b6d3e8d7d09336ac58f515acd3a20f2d315468ba1d53508dd3264a088ffc0141cb3fbcd8d3c17379f9628270d39c7d44f7727291
+DIST rust-1.76.0-x86_64-unknown-linux-musl.tar.xz 237333892 BLAKE2B e95b92c68e3c2df49fa0d5d84e35f6575fb80571db290b5969441cc09b6c07dee6b2b887f41a2b1ff1e3c099cda2ce2a4a8c05afbcf9f4dc8acbaed5245b69e4 SHA512 04bbbb9a6891c3bb7a20845010029e6ca979548ff70324c08d3162ebc1fa3a84e8c7e2d453495edd34aba19b7a685f048d5047993103bbf221c88ea36350370c
+DIST rust-1.76.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B cd4334fecc17cf03b7333659393004fed4bb895f9b75f93520d1c3e3ee0ce4fcd17d75d748c4a35d31984215c7aec8904ebe3a4ad8bafcd625aef30688a473f7 SHA512 a458372b41c2833bdbd3d6678c35fc23397817b406c409d1ba5e19b4c6246072afff3f938f111382de56f7ff57e660c3eaf3fea0e54871d9af50b52a54f39e41
 DIST rustc-1.71.0-src.tar.xz 151962928 BLAKE2B da8d83cd6621947816630ae487efe7d087266c1352949cedbbd441ba7c7f7c7beb13b9470e66e2f3359c37a050d0e44d22481c418532d3ebb339a456ab092648 SHA512 2c93bafdd248563765a285add48ca77c1e4bad4d5431675ae6a5cdee4cfe7a41e6bcc880a489ca1069a307fd9a005f2d5f8e230dfc95b4a69152b4f9ca49ac44
 DIST rustc-1.71.0-src.tar.xz.asc 801 BLAKE2B e5ddc4b18a6caeeb63c5aed5b5d15989d086f408787d2e603e50e7b8548dc078683062627280fd2a0393bec01c314eb1cc59f9b0e3146abf07b8365a0b44c640 SHA512 cb1b208c8b2bfccf02c73c4246fb238edb0dd10e292c1ef781920964e54e40add3089d988769982c0ce06b719014685b1c37daa2d08b513d86ad73808f4ce3ac
 DIST rustc-1.71.1-src.tar.xz 151983068 BLAKE2B 3dfdbc246feb84a79ae94c2de978c5585ee06cf6b683d2245869b62e28f7c79f89cc589f5431537713bf088236a0b824acefc1b68e418e9eb72e1eea98054e3f SHA512 fd0e5a16bdbeb539184513583089e55f681cb772810df357b6b1464853f7022ac02edab3dd155b2262ed0047e2a25dea3808dd078dcdfce9d399384465009db4
@@ -156,3 +184,5 @@ DIST rustc-1.75.0-src.tar.xz 159624388 BLAKE2B 8937b80585eddaa3e1f1ef948899d14a1
 DIST rustc-1.75.0-src.tar.xz.asc 801 BLAKE2B 434da96b1dc93a5aeed07f4961b087fdd15870e407283ecc00df08dbc1e9f6c65fe459b3a25d39ee55900d53ee583207098ecf3d63f5d6ea114ef0b8398b6a63 SHA512 a0e948553af77ca6e2daa82c69d79079ef7d4ec61957bdff99efd73748200d6c7caa9282daeb3fe3ef849d81a48e66a25336df4c7b6f62f975266aa8b9b93d3a
 DIST rustc-1.76.0-src.tar.xz 162267908 BLAKE2B 0cf726841a837d9906d82a6216e65edad1e3e4a798ccd1ca3824c2098d0c45473854b8bf183c6e9ca70ba095752e77c4f5ef575d98c07243d609857214175f5e SHA512 92e16cfdeb91bde341fe6c2774d92868275b07aa1d46d870ddc9291eadfe4ea9af93e06586fa7d6b8d60534903945cbbe706d354c90272712989c58d2bf174bf
 DIST rustc-1.76.0-src.tar.xz.asc 801 BLAKE2B eadb2f54fceb9c1ac60af72407a2957e37e1ba134a696675a1e9dcf23a2958b41d7f5aa1f75156e4843cefc387cdc9c909e364c3bfcabecc6bfbe262d9c6e8af SHA512 d35c010a5a129580746bcec5c0dad1b0bc1b7864a69505c7c0ccfad436fdfbdf33f87518965a09de187d6a70fb8867dc6a20037c648861031a17501577855120
+DIST rustc-1.77.1-src.tar.xz 162796048 BLAKE2B 18a9fd095808ba78bf50ec94f7fd4087a1033ec79750aa593bacf64219c77ef90c030d41a7d8bc43f7ec8eb30b316c225024be4aeb517100ff6723487f8bb282 SHA512 e057ae638e4c3e54fdb367d48f4b85458121cee0d0ee1ed72f346940b8acad2f16cd9cc8abc16fcf4a17bf244b3300bb56a7e7be3bd0c23b034692c983b84fe8
+DIST rustc-1.77.1-src.tar.xz.asc 801 BLAKE2B 175a551abdb970295d37a0797cf262ac43055a3cb75b23845dbb8696d04b7705b7a2908b82fcbce7cd7dec2e05c382d06622013b9d4aa19fab7f651f7e00bb73 SHA512 eb24976ae97d2980d4c547bcf27d815f4b98b8aa45441a7201a849ee37e0ef15671732c9916d33964b8e802a87ede758daaadf84901bd569527c8b6c48efff23

diff --git a/dev-lang/rust/files/1.77.1-libressl-openssl-sys.patch b/dev-lang/rust/files/1.77.1-libressl-openssl-sys.patch
new file mode 100644
index 0000000..c3ba287
--- /dev/null
+++ b/dev-lang/rust/files/1.77.1-libressl-openssl-sys.patch
@@ -0,0 +1,10 @@
+--- a/build/main.rs.orig
++++ b/build/main.rs
+@@ -293,6 +293,7 @@
+             (3, 8, 0) => ('3', '8', '0'),
+             (3, 8, 1) => ('3', '8', '1'),
+             (3, 8, _) => ('3', '8', 'x'),
++            (_, _, _) => ('x', 'x', 'x'),
+             _ => version_error(),
+         };
+ 

diff --git a/dev-lang/rust/rust-1.77.1.ebuild b/dev-lang/rust/rust-1.77.1.ebuild
new file mode 100644
index 0000000..c441f51
--- /dev/null
+++ b/dev-lang/rust/rust-1.77.1.ebuild
@@ -0,0 +1,797 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+
+inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
+	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.xz"
+	KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+SRC_URI="
+	https://static.rust-lang.org/dist/${SRC}
+	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
+	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
+"
+
+# keep in sync with llvm ebuild of the same version as bundled one.
+ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
+	LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE
+	WebAssembly X86 XCore Xtensa )
+ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
+LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
+
+LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
+
+IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+
+# Please keep the LLVM dependency block separate. Since LLVM is slotted,
+# we need to *really* make sure we're not pulling more than one slot
+# simultaneously.
+
+# How to use it:
+# List all the working slots in LLVM_VALID_SLOTS, newest first.
+LLVM_VALID_SLOTS=( 17 )
+LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
+
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+# (-) usedep needed because we may build with older llvm without that target
+LLVM_DEPEND="|| ( "
+for _s in ${LLVM_VALID_SLOTS[@]}; do
+	LLVM_DEPEND+=" ( "
+	for _x in ${ALL_LLVM_TARGETS[@]}; do
+		LLVM_DEPEND+="
+			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
+			wasm? ( sys-devel/lld:${_s} )"
+	done
+	LLVM_DEPEND+=" )"
+done
+unset _s _x
+LLVM_DEPEND+=" )
+	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
+"
+
+# to bootstrap we need at least exactly previous version, or same.
+# most of the time previous versions fail to bootstrap with newer
+# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
+# but it fails to bootstrap with 1.48.x
+# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
+RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
+RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
+BOOTSTRAP_DEPEND="||
+	(
+		=dev-lang/rust-"${RUST_DEP_PREV}"
+		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
+		=dev-lang/rust-"${RUST_DEP_CURR}"
+		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
+	)
+"
+
+BDEPEND="${PYTHON_DEPS}
+	app-eselect/eselect-rust
+	|| (
+		>=sys-devel/gcc-4.7
+		>=sys-devel/clang-3.5
+	)
+	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
+	!system-llvm? (
+		>=dev-build/cmake-3.13.4
+		app-alternatives/ninja
+	)
+	test? ( dev-debug/gdb )
+	verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+	>=app-arch/xz-utils-5.2
+	net-misc/curl:=[http2,ssl]
+	sys-libs/zlib:=
+	dev-libs/openssl:0=
+	system-llvm? (
+		${LLVM_DEPEND}
+		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
+	)
+	!system-llvm? (
+		!llvm-libunwind? (
+			elibc_musl? ( sys-libs/libunwind:= )
+		)
+	)
+"
+
+RDEPEND="${DEPEND}
+	app-eselect/eselect-rust
+	sys-apps/lsb-release
+"
+
+REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
+	miri? ( nightly )
+	parallel-compiler? ( nightly )
+	rust-analyzer? ( rust-src )
+	test? ( ${ALL_LLVM_TARGETS[*]} )
+	wasm? ( llvm_targets_WebAssembly )
+	x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+	usr/lib/${PN}/${PV}/bin/.*
+	usr/lib/${PN}/${PV}/libexec/.*
+	usr/lib/${PN}/${PV}/lib/lib.*.so
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+	usr/lib/${PN}/${PV}/lib/lib.*.so.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+	"${FILESDIR}"/1.75.0-musl-dynamic-linking.patch
+	"${FILESDIR}"/1.74.1-cross-compile-libz.patch
+	#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch  # pending refresh
+	"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
+	"${FILESDIR}"/1.67.0-doc-wasm.patch
+	"${FILESDIR}"/1.76.0-loong-code-model.patch  # remove for >=1.78.0
+)
+
+S="${WORKDIR}/${MY_P}-src"
+
+clear_vendor_checksums() {
+	sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
+}
+
+eapply_crate() {
+	pushd "${1:?}" > /dev/null || die
+	local patch="${2:?}"
+	eapply "${patch}"
+	"${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die
+	popd > /dev/null || die
+}
+
+toml_usex() {
+	usex "${1}" true false
+}
+
+bootstrap_rust_version_check() {
+	# never call from pkg_pretend. eselect-rust may be not installed yet.
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
+	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
+	local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
+		eerror "Rust >=${rustc_wanted} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too old"
+	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
+		eerror "Rust <${rustc_toonew} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too new"
+	else
+		einfo "Using rust ${rustc_version} to build"
+	fi
+}
+
+pre_build_checks() {
+	local M=8192
+	# multiply requirements by 1.3 if we are doing x86-multilib
+	if use amd64; then
+		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
+	fi
+	M=$(( $(usex clippy 128 0) + ${M} ))
+	M=$(( $(usex miri 128 0) + ${M} ))
+	M=$(( $(usex rustfmt 256 0) + ${M} ))
+	# add 2G if we compile llvm and 256M per llvm_target
+	if ! use system-llvm; then
+		M=$(( 2048 + ${M} ))
+		local ltarget
+		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+		done
+	fi
+	M=$(( $(usex wasm 256 0) + ${M} ))
+	M=$(( $(usex debug 2 1) * ${M} ))
+	eshopts_push -s extglob
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		M=$(( 15 * ${M} / 10 ))
+	fi
+	eshopts_pop
+	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
+	M=$(( $(usex doc 256 0) + ${M} ))
+	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+# Is LLVM being linked against libc++?
+is_libcxx_linked() {
+	local code='#include <ciso646>
+#if defined(_LIBCPP_VERSION)
+	HAVE_LIBCXX
+#endif
+'
+	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
+	[[ ${out} == *HAVE_LIBCXX* ]]
+}
+
+pkg_pretend() {
+	pre_build_checks
+}
+
+pkg_setup() {
+	pre_build_checks
+	python-any-r1_pkg_setup
+
+	export LIBGIT2_NO_PKG_CONFIG=1 #749381
+	if tc-is-cross-compiler; then
+		export PKG_CONFIG_ALLOW_CROSS=1
+		export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
+		export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
+		export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
+
+		use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
+		use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
+		local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
+		use "llvm_targets_${cross_llvm_target}" || \
+			die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
+	fi
+
+	use system-bootstrap && bootstrap_rust_version_check
+
+	if use system-llvm; then
+		llvm_pkg_setup
+
+		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+		export LLVM_LINK_SHARED=1
+		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+	fi
+}
+
+esetup_unwind_hack() {
+	# https://bugs.gentoo.org/870280
+	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
+	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
+	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
+	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
+	local fakelib="${T}/fakelib"
+	mkdir -p "${fakelib}" || die
+	# we need both symlinks, one for cargo runtime, other for linker.
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
+	export LD_LIBRARY_PATH="${fakelib}"
+	export RUSTFLAGS+=" -L${fakelib}"
+	# this is a literally magic variable that gets through cargo cache, without it some
+	# crates ignore RUSTFLAGS.
+	# this variable can not contain leading space.
+	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
+}
+
+src_prepare() {
+	eapply_crate vendor/openssl-sys-0.9.92 "${FILESDIR}"/1.72.0-libressl-openssl-sys.patch
+	eapply_crate vendor/openssl-sys "${FILESDIR}"/1.77.1-libressl-openssl-sys.patch
+
+	# Clear vendor checksums for crates that we patched to bump libc.
+	# NOTE: refresh this on each bump.
+	#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
+	#	terminal_size tracing-tree; do
+	#	clear_vendor_checksums "${i}"
+	#done
+
+	if ! use system-bootstrap; then
+		has_version sys-devel/gcc || esetup_unwind_hack
+		local rust_stage0_root="${WORKDIR}"/rust-stage0
+		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
+
+		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
+			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
+	fi
+
+	default
+}
+
+src_configure() {
+	filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
+
+	local rust_target="" rust_targets="" arch_cflags
+
+	# Collect rust target names to compile standard libs for all ABIs.
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
+	done
+	if use wasm; then
+		rust_targets+=",\"wasm32-unknown-unknown\""
+		if use system-llvm; then
+			# un-hardcode rust-lld linker for this target
+			# https://bugs.gentoo.org/715348
+			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die
+		fi
+	fi
+	rust_targets="${rust_targets#,}"
+
+	# cargo and rustdoc are mandatory and should always be included
+	local tools='"cargo","rustdoc"'
+	use clippy && tools+=',"clippy"'
+	use miri && tools+=',"miri"'
+	use profiler && tools+=',"rust-demangler"'
+	use rustfmt && tools+=',"rustfmt"'
+	use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"'
+	use rust-src && tools+=',"src"'
+
+	local rust_stage0_root
+	if use system-bootstrap; then
+		local printsysroot
+		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
+		rust_stage0_root="${printsysroot}"
+	else
+		rust_stage0_root="${WORKDIR}"/rust-stage0
+	fi
+	# in case of prefix it will be already prefixed, as --print sysroot returns full path
+	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+	rust_target="$(rust_abi)"
+	rust_build="$(rust_abi "${CBUILD}")"
+	rust_host="$(rust_abi "${CHOST}")"
+
+	local cm_btype="$(usex debug DEBUG RELEASE)"
+	cat <<- _EOF_ > "${S}"/config.toml
+		changelog-seen = 2
+		[llvm]
+		download-ci-llvm = false
+		optimize = $(toml_usex !debug)
+		release-debuginfo = $(toml_usex debug)
+		assertions = $(toml_usex debug)
+		ninja = true
+		targets = "${LLVM_TARGETS// /;}"
+		experimental-targets = ""
+		link-shared = $(toml_usex system-llvm)
+		$(if is_libcxx_linked; then
+			# https://bugs.gentoo.org/732632
+			echo "use-libcxx = true"
+			echo "static-libstdcpp = false"
+		fi)
+		$(case "${rust_target}" in
+			i586-*-linux-*)
+				# https://github.com/rust-lang/rust/issues/93059
+				echo 'cflags = "-fcf-protection=none"'
+				echo 'cxxflags = "-fcf-protection=none"'
+				echo 'ldflags = "-fcf-protection=none"'
+				;;
+			*)
+				;;
+		esac)
+		enable-warnings = false
+		[llvm.build-config]
+		CMAKE_VERBOSE_MAKEFILE = "ON"
+		$(if ! tc-is-cross-compiler; then
+			# When cross-compiling, LLVM is compiled twice, once for host and
+			# once for target.  Unfortunately, this build configuration applies
+			# to both, which means any flags applicable to one target but not
+			# the other will break.  Conditionally disable respecting user
+			# flags when cross-compiling.
+			echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\""
+			echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\""
+			echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\""
+		fi)
+		[build]
+		build-stage = 2
+		test-stage = 2
+		build = "${rust_build}"
+		host = ["${rust_host}"]
+		target = [${rust_targets}]
+		cargo = "${rust_stage0_root}/bin/cargo"
+		rustc = "${rust_stage0_root}/bin/rustc"
+		rustfmt = "${rust_stage0_root}/bin/rustfmt"
+		docs = $(toml_usex doc)
+		compiler-docs = false
+		submodules = false
+		python = "${EPYTHON}"
+		locked-deps = true
+		vendor = true
+		extended = true
+		tools = [${tools}]
+		verbose = 2
+		sanitizers = false
+		profiler = $(toml_usex profiler)
+		cargo-native-static = false
+		[install]
+		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
+		sysconfdir = "etc"
+		docdir = "share/doc/rust"
+		bindir = "bin"
+		libdir = "lib"
+		mandir = "share/man"
+		[rust]
+		# https://github.com/rust-lang/rust/issues/54872
+		codegen-units-std = 1
+		optimize = true
+		debug = $(toml_usex debug)
+		debug-assertions = $(toml_usex debug)
+		debug-assertions-std = $(toml_usex debug)
+		debuginfo-level = $(usex debug 2 0)
+		debuginfo-level-rustc = $(usex debug 2 0)
+		debuginfo-level-std = $(usex debug 2 0)
+		debuginfo-level-tools = $(usex debug 2 0)
+		debuginfo-level-tests = 0
+		backtrace = true
+		incremental = false
+		$(if ! tc-is-cross-compiler; then
+			echo "default-linker = \"$(tc-getCC)\""
+		fi)
+		parallel-compiler = $(toml_usex parallel-compiler)
+		channel = "$(usex nightly nightly stable)"
+		description = "gentoo"
+		rpath = false
+		verbose-tests = true
+		optimize-tests = $(toml_usex !debug)
+		codegen-tests = true
+		dist-src = false
+		remap-debuginfo = true
+		lld = $(usex system-llvm false $(toml_usex wasm))
+		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+		# https://github.com/rust-lang/rust/issues/74976
+		# https://github.com/rust-lang/rust/issues/76526
+		deny-warnings = $(usex wasm $(usex doc false true) true)
+		backtrace-on-ice = true
+		jemalloc = false
+		# See https://github.com/rust-lang/rust/issues/121124
+		lto = "$(usex lto thin off)"
+		[dist]
+		src-tarball = false
+		compression-formats = ["xz"]
+		compression-profile = "balanced"
+	_EOF_
+
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${rust_target}]
+			ar = "$(tc-getAR)"
+			cc = "$(tc-getCC)"
+			cxx = "$(tc-getCXX)"
+			linker = "$(tc-getCC)"
+			ranlib = "$(tc-getRANLIB)"
+			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
+		# but we patch it and set to false here as well
+		if use elibc_musl; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				crt-static = false
+			_EOF_
+		fi
+	done
+	if use wasm; then
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.wasm32-unknown-unknown]
+			linker = "$(usex system-llvm lld rust-lld)"
+			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
+			profiler = false
+		_EOF_
+	fi
+
+	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
+	# experimental cross support
+	# discussion: https://bugs.gentoo.org/679878
+	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
+	# it would be much better if we could split out stdlib
+	# complilation to separate ebuild and abuse CATEGORY to
+	# just install to /usr/lib/rustlib/<target>
+
+	# extra targets defined as a bash array
+	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
+	# best place would be /etc/portage/env/dev-lang/rust
+	# Example:
+	# RUST_CROSS_TARGETS=(
+	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
+	# )
+	# no extra hand holding is done, no target transformations, all
+	# values are passed as-is with just basic checks, so it's up to user to supply correct values
+	# valid rust targets can be obtained with
+	# 	rustc --print target-list
+	# matching cross toolchain has to be installed
+	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
+	# only gcc toolchains installed with crossdev are checked for now.
+
+	# BUG: we can't pass host flags to cross compiler, so just filter for now
+	# BUG: this should be more fine-grained.
+	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
+
+	local cross_target_spec
+	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
+		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
+		local cross_llvm_target="${cross_target_spec%%:*}"
+		# extracts toolchain triples, <rust-target>:<CTARGET>
+		local cross_triples="${cross_target_spec#*:}"
+		# extracts first element after before : separator
+		local cross_rust_target="${cross_triples%%:*}"
+		# extracts last element after : separator
+		local cross_toolchain="${cross_triples##*:}"
+		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
+		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${cross_rust_target}]
+			ar = "${cross_toolchain}-ar"
+			cc = "${cross_toolchain}-gcc"
+			cxx = "${cross_toolchain}-g++"
+			linker = "${cross_toolchain}-gcc"
+			ranlib = "${cross_toolchain}-ranlib"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		if [[ "${cross_toolchain}" == *-musl* ]]; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+			_EOF_
+		fi
+
+		# append cross target to "normal" target list
+		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
+		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+		rust_targets="${rust_targets},\"${cross_rust_target}\""
+		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+		ewarn
+		ewarn "Enabled ${cross_rust_target} rust target"
+		ewarn "Using ${cross_toolchain} cross toolchain"
+		ewarn
+		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+			ewarn "'sys-devel/binutils[multitarget]' is not installed"
+			ewarn "'strip' will be unable to strip cross libraries"
+			ewarn "cross targets will be installed with full debug information"
+			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+			ewarn
+			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+			ewarn
+		fi
+	done
+	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+	einfo "Rust configured with the following flags:"
+	echo
+	echo RUSTFLAGS="\"${RUSTFLAGS}\""
+	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
+	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
+	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
+	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+	env | grep "CFLAGS_.*"
+	echo
+	einfo "config.toml contents:"
+	cat "${S}"/config.toml || die
+	echo
+}
+
+src_compile() {
+	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+}
+
+src_test() {
+	# https://rustc-dev-guide.rust-lang.org/tests/intro.html
+
+	# those are basic and codegen tests.
+	local tests=(
+		codegen
+		codegen-units
+		compile-fail
+		incremental
+		mir-opt
+		pretty
+		run-make
+	)
+
+	# fails if llvm is not built with ALL targets.
+	# and known to fail with system llvm sometimes.
+	use system-llvm || tests+=( assembly )
+
+	# fragile/expensive/less important tests
+	# or tests that require extra builds
+	# TODO: instead of skipping, just make some nonfatal.
+	if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
+		tests+=(
+			rustdoc
+			rustdoc-js
+			rustdoc-js-std
+			rustdoc-ui
+			run-make-fulldeps
+			ui
+			ui-fulldeps
+		)
+	fi
+
+	local i failed=()
+	einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
+	for i in "${tests[@]}"; do
+		local t="src/test/${i}"
+		einfo "rust_src_test: running ${t}"
+		if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
+				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
+		then
+				failed+=( "${t}" )
+				eerror "rust_src_test: ${t} failed"
+		fi
+	done
+
+	if [[ ${#failed[@]} -ne 0 ]]; then
+		eerror "rust_src_test: failure summary: ${failed[@]}"
+		die "aborting due to test failures"
+	fi
+}
+
+src_install() {
+	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+
+	# bug #689562, #689160
+	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
+	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+
+	local symlinks=(
+		cargo
+		rustc
+		rustdoc
+		rust-gdb
+		rust-gdbgui
+		rust-lldb
+	)
+
+	use clippy && symlinks+=( clippy-driver cargo-clippy )
+	use miri && symlinks+=( miri cargo-miri )
+	use profiler && symlinks+=( rust-demangler )
+	use rustfmt && symlinks+=( rustfmt cargo-fmt )
+	use rust-analyzer && symlinks+=( rust-analyzer )
+
+	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
+	local i
+	for i in "${symlinks[@]}"; do
+		# we need realpath on /usr/bin/* symlink return version-appended binary path.
+		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
+		# need to fix eselect-rust to remove this hack.
+		local ver_i="${i}-${PV}"
+		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
+			einfo "Installing ${i} symlink"
+			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
+		else
+			ewarn "${i} symlink requested, but source file not found"
+			ewarn "please report this"
+		fi
+		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
+	done
+
+	# symlinks to switch components to active rust in eselect
+	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
+	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
+	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
+	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
+	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+
+	newenvd - "50${P}" <<-_EOF_
+		LDPATH="${EPREFIX}/usr/lib/rust/lib"
+		MANPATH="${EPREFIX}/usr/lib/rust/man"
+	_EOF_
+
+	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+
+	# note: eselect-rust adds EROOT to all paths below
+	cat <<-_EOF_ > "${T}/provider-${P}"
+		/usr/bin/cargo
+		/usr/bin/rustdoc
+		/usr/bin/rust-gdb
+		/usr/bin/rust-gdbgui
+		/usr/bin/rust-lldb
+		/usr/lib/rustlib
+		/usr/lib/rust/lib
+		/usr/lib/rust/libexec
+		/usr/lib/rust/man
+		/usr/share/doc/rust
+	_EOF_
+
+	if use clippy; then
+		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+	fi
+	if use miri; then
+		echo /usr/bin/miri >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+	fi
+	if use profiler; then
+		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
+	fi
+	if use rustfmt; then
+		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
+	fi
+	if use rust-analyzer; then
+		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
+	fi
+
+	insinto /etc/env.d/rust
+	doins "${T}/provider-${P}"
+
+	if use dist; then
+		insinto "/usr/lib/${PN}/${PV}/dist"
+		doins -r "${S}/build/dist/."
+	fi
+}
+
+pkg_postinst() {
+	eselect rust update
+
+	if has_version dev-debug/gdb || has_version dev-debug/lldb; then
+		elog "Rust installs a helper script for calling GDB and LLDB,"
+		elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
+	fi
+
+	if has_version app-editors/emacs; then
+		elog "install app-emacs/rust-mode to get emacs support for rust."
+	fi
+
+	if has_version app-editors/gvim || has_version app-editors/vim; then
+		elog "install app-vim/rust-vim to get vim support for rust."
+	fi
+}
+
+pkg_postrm() {
+	eselect rust cleanup
+}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2024-06-02 21:17 orbea
  0 siblings, 0 replies; 27+ messages in thread
From: orbea @ 2024-06-02 21:17 UTC (permalink / raw
  To: gentoo-commits

commit:     fcba8bf1faeb36eddc86eb285d61cdbdecec9b18
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Sun Jun  2 21:16:08 2024 +0000
Commit:     orbea <orbea <AT> riseup <DOT> net>
CommitDate: Sun Jun  2 21:16:08 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=fcba8bf1

dev-lang/rust: add 1.78.0

Signed-off-by: orbea <orbea <AT> riseup.net>

 dev-lang/rust/Manifest                             |  30 +
 ....0-ignore-broken-and-non-applicable-tests.patch |  30 +
 .../rust/files/1.78.0-musl-dynamic-linking.patch   |  19 +
 dev-lang/rust/rust-1.78.0.ebuild                   | 799 +++++++++++++++++++++
 4 files changed, 878 insertions(+)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 1d9c9d3..914386d 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -172,6 +172,34 @@ DIST rust-1.76.0-x86_64-unknown-linux-gnu.tar.xz 159385660 BLAKE2B 0846999358aba
 DIST rust-1.76.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 88e6b124812b409372ee05e2872cb4dfacbc638f8e3b4fb0d5fa4ea63f4594333a9788732502f8bd41e34b5cbc404d7ac08e7690d095a6c37c80b0043dd2be88 SHA512 f7ddca81da468d5617f48240b6d3e8d7d09336ac58f515acd3a20f2d315468ba1d53508dd3264a088ffc0141cb3fbcd8d3c17379f9628270d39c7d44f7727291
 DIST rust-1.76.0-x86_64-unknown-linux-musl.tar.xz 237333892 BLAKE2B e95b92c68e3c2df49fa0d5d84e35f6575fb80571db290b5969441cc09b6c07dee6b2b887f41a2b1ff1e3c099cda2ce2a4a8c05afbcf9f4dc8acbaed5245b69e4 SHA512 04bbbb9a6891c3bb7a20845010029e6ca979548ff70324c08d3162ebc1fa3a84e8c7e2d453495edd34aba19b7a685f048d5047993103bbf221c88ea36350370c
 DIST rust-1.76.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B cd4334fecc17cf03b7333659393004fed4bb895f9b75f93520d1c3e3ee0ce4fcd17d75d748c4a35d31984215c7aec8904ebe3a4ad8bafcd625aef30688a473f7 SHA512 a458372b41c2833bdbd3d6678c35fc23397817b406c409d1ba5e19b4c6246072afff3f938f111382de56f7ff57e660c3eaf3fea0e54871d9af50b52a54f39e41
+DIST rust-1.77.0-aarch64-unknown-linux-gnu.tar.xz 214505028 BLAKE2B 125cad238e23c31373bfa7f02bd09eb35c3fb9425f517d1c74eb34b667fa1cf8a0e36b879ee1ab90c5ab95a8ea499f0a46ece894dc45cdcecc52831c9720b860 SHA512 aa01ef526b8ddc84fc5fd1ef747d94c0a80250606fc9c871a52a6556989b86231ea0706139480b7579f4f817dd17171ad18edd6a6a73c5640aa5a20daec8c9ee
+DIST rust-1.77.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f6af9150b43c206e626b9bbb6d31a18b8d04b99f24ff131668045cfcd80a616302954e74f41397dd5772c761a7f8ce1a14c15f1da509d13d64ffde2684f9c3dd SHA512 cfa3d76d441ced70c9991aadfe144c12d56e6bc908882b84965ce1f13373c73199569b87609fd362a09484a95936151e036088def72061b78ea3c13ab36178fb
+DIST rust-1.77.0-aarch64-unknown-linux-musl.tar.xz 194482084 BLAKE2B b079e5c09c1c528b35451918ed03ec3788d0a8f5de099c3fe3aeaa815dd0a26e3106a2dc0c55462f752949e8ee50913e1cd1bf97235459ae5175847babd27d30 SHA512 6e3fe34512279138b15547e09fac8ccab49fc9a6e5c8faa010067c601aad284522dda67dcd5901bb153fbfa4b06e819be36e9a06b1061c702418b39f8f351fd2
+DIST rust-1.77.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B c4a523203247096500797238f7473b36c39017aaf1c231713cd2d87379f973a7a464e864952b8dc1575ad91ffc210ff2291f88b77db24ca3e5f18ecebdfc23da SHA512 6fc6655a4da63ebe56af5e34569ae74f3c7daec550249269d4499a7f6d116f01e722f29ac95cbd8c0df60c0135db03ae50436650e8c04ef2ea685344e1ad61e2
+DIST rust-1.77.0-arm-unknown-linux-gnueabi.tar.xz 179351340 BLAKE2B 51571532f1a5a70139acc91d17f6aa06537e32c60aedf5448ae73efbc5b028c54b098ba1c1820bd21ebc4b7fc8bfd35b786610074b7e8e86f2b4a561613c16fc SHA512 cd8de4f9f42d5c210334f7c1e110a9abd571ff6cee39d08582cffb89828fdb4d05cd83cb597f89b5fe2ef56571cae7c087cf5751f0a9ea4836b157e076537b5d
+DIST rust-1.77.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B dec3c7d773b61eca698a8efa9138bbd58341b48e391b5898ead2f6739a3e9088820ce8749b0a7016fc2092a7aad3db7bfbd778ee5b56847b6f98a9bf7251af9d SHA512 0a2b1a6eeac880dc3ded3ac28c31413b857bbd0bc68f87d7bb26936b00827d45a72d96d35ed69c6c981f4b9c2ea2d31aef9c82bedb0ab557176246f327f162a5
+DIST rust-1.77.0-arm-unknown-linux-gnueabihf.tar.xz 179479060 BLAKE2B e3a6b29b916a39233e8ae4f6b190479adc19184776f3961373e54d14cd2732ce3561cb08061520c6161c62222b7d2be2027fd826722aef4b128e26c00165ab20 SHA512 695553505af721af3d6d6341230906a707301c41d491118ff3e1c64a9f7e648c6480f8b9c0e786ce3266f2ece266e0805681bc2c23c7bb12ed2a7347b384cba2
+DIST rust-1.77.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 6f456f02b2af2b972dda67a5be9af53576878fe6e434d3385cabb6f6a62728682ed6fa5493dbb8629a861b25b8f722efaaeaeaad5ee20dee55a2567ac6003406 SHA512 a9f97671077b24043aa21b242112e86036ac8acedc719d0e87860a909d734d109db138e5bb7dd8ed2735662bf63ef2310bb8277b280bfa918dbf6c0bf69ee3a1
+DIST rust-1.77.0-armv7-unknown-linux-gnueabihf.tar.xz 181508844 BLAKE2B 78305dd8cb11538c3c5de3883dbae2a7fc08470f940f786fb4e8b5125f57ea119d19cfb11fa55b6ff67fe3c5a03757c10cee6baeae229bbbbcd85f265ebcac85 SHA512 42ac807befa5a56244e892eced3e6771f9bf2cb4cf5df28dc00581916bf655840bf4685c1499fb0a9fbeb40160836f8ec2959526d32b872845f72ce48de93a5f
+DIST rust-1.77.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 39a3ff2c0b7088ccb7c16c87f3abed37cb9d4ca8f48c77f6c2964b28d7a1eec4df09ae5f19fa6a2abd636436f3886b7097edf90d2f7cbf0ba0fa93a2dcf37a28 SHA512 83bde08a5b5f34afec0e4b0ad6c58e7d485a0729743a67e0ca09cf475cae194b549c05e1af0667dcaeb8a6e3807e2b20ffe8e7bf7272187ab9da0093278d61be
+DIST rust-1.77.0-i686-unknown-linux-gnu.tar.xz 209041428 BLAKE2B 83c5329fdb91f14d0083115209359aa1fba0425e9746cd07f76bf820d7b13c339279f39f0c05d1d2e2049c9acad9a48b4d93c97fb26593bf66d95e9434d1a6fa SHA512 8b546847afcc0860e3617df5006633d7c12adfc7f985ad5c0c2b5a83b9f47e9ad3b0c1917a66d313a4bf370d37e959129a807e957f4cda95efe2ce03d5acefbc
+DIST rust-1.77.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f7955963b450f3db22d62bf9cebec16ee2eb2ea32f13b377b240b7d7bdd54da590bbd5d69ae1df02b3dc4f35a35724d41004cc2b23e5f0001b609f086e8028a3 SHA512 927de4072f4d5c461131b1b4f5a1573d96d4da1a2b23060bf375bd5da00fb962e9eab6094f3677f9f8bb7270b54c30a0c5404fc18b2641407b34740583a7402e
+DIST rust-1.77.0-loongarch64-unknown-linux-gnu.tar.xz 161969048 BLAKE2B 0eef0100389715b68def1a491918d0796cc4bb18a481bc8084a96ffb930f7018cea8fdd77e762fd1af18acd81f5fd666f48965e9b72f191588a0c4ed78c975d6 SHA512 8be1eba5615b29d9167e1ad49be301e277f2fc78c6779915dd25b3da395d3933f4ea2c0b4e17d848f580c813c26335285d20ca0c2f966d2248593f04bd8ef1ee
+DIST rust-1.77.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e1463e570c719881b2394b5f92856cbeec33a5fd0dd326c97f6064b52ed1decc0b7d33ac3b3606754264faa67b6aeb718c1d3f8f7982ab6024acceecb9d0985e SHA512 03cc2bfdeec9c80128f7e7a5d5f0874df7eb9a22b5da19f9ca1a685a9c52830de5093b7b72c614839da14b7eb76ad3dbed92c233d6d9cf0dbccb458e1fed174a
+DIST rust-1.77.0-powerpc-unknown-linux-gnu.tar.xz 176187556 BLAKE2B acdb1d1f95591dfb167bd87a2b7390554f96d148f6df01c7a1254d590f79302a233e1561446bb8a7f344e6801506c183221bad431fe40b6e8e1854b920641b41 SHA512 baf226c192c5a6ee44d5c7e32f0d63d48b89fa43db1c9966d04d94bfb7a4bba3dc069719109a9c3cf601f6ef7b3d2c320e75cfded5916f6169f4c19a16665301
+DIST rust-1.77.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e8053f9b897dbdba5b175c56ad9cb9c278e968c65cde4f8ccc4d15f1df9f26a2be3418040cc5a6cfd6984ce9b0b3703b98976944eb6523ba45a0fd45e6fc31c8 SHA512 d0a8b2e18e59e55819d64f5622a7fc7a15ebfe05d0946f23ee42dd6c75307e9c2f20541c5b344a3bd97e9e9d93b54d6a85ffd7c783492b9c46f819f91c68af61
+DIST rust-1.77.0-powerpc64-unknown-linux-gnu.tar.xz 176156772 BLAKE2B b5910f75e945f5ecebb988ef02485e3535e3f8d10f6c7acf3190c6dfe22e0125a637c8c4dcae3b6655ba0ec19f1ffa2f8ccca67d9fa3b2a8a8dc584e52d2eaac SHA512 403f1898930367a59a54c1a254cb991aa23e3bfccf9ed3da9c992877bab3b33806e374dd97cbf9650109dcecdb6b72e5f4c7fa664bf44d5880f8c75d3698f27d
+DIST rust-1.77.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 3d96ad842e8e4189c2cceebe885ccdf3aaf986a3e7835cc02165a76d12fa2da1b3cba9bbf1213cd7cc68a95cc612b735e409d8cf23dd1f252c1d0ab72a09d756 SHA512 26b73b5ac0216b994ee887021dcd6c5562aadeddce8b227a064ae40a19bb80de7d1278c9192833e2d2ff227884524f742c49b52ad5b64e576d3f87d86f7be536
+DIST rust-1.77.0-powerpc64le-unknown-linux-gnu.tar.xz 187190912 BLAKE2B b203cf8e70a952e137f17d4dfd77bfa201970fa6a9d936b62cadaf4db1fcaa3e51f6a320351ca0bccd96bf6bd5e38f5f859080e7154f23bb277dde21969f562e SHA512 5a68cba4de547e7060d7be6260f450a328c0505be35f175f65435c83c13520b10b6d5e6aed3c52ae8b61215a4ba47cdc1bf9ceb2f454f3415d5115efbdc05bbc
+DIST rust-1.77.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7ddd306273a444bb238ef3f7eb9dc88c0f2895bce506e7708c56d31c252c91a20258d6d7fd609c76054872f1e983454d35b985b5dac6775a8e423d9fc5c3d3d4 SHA512 3c4df1c5bf1dbcbf127bb3615e307faabf252c40655bde6ec3afe3179e44629155fb3b549bf983ffc942c464462a601c08f66d6bfc93b033c61d3b69005005b4
+DIST rust-1.77.0-riscv64gc-unknown-linux-gnu.tar.xz 182245920 BLAKE2B 7365f2de5a6e5927536f8b03b2f9b1cd9605e515e4323b279f35ff9c940d23d4f7539abd1f9da25086b85e695e111440d0d1990ce933080385c750d61307bd7b SHA512 39a9d98cbbb1c0247e80a6ed3635833f0ae95e24f7e62286b7c76b2f8f4a06715e324872a67693c97eba7715f868db8af3652e809112c9621c30a1885dd1a029
+DIST rust-1.77.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 08128f5df77ea42af1d48a40884e1c7f8f50b8cc16354b9b099694a017d243068c9cfb9a0e096b5147b58eb5e2f9283d0e2be4c607c75f8b110e2cf84eda74d6 SHA512 430fb9105a4bc16edc0b9c4a59d124e2891935f7970efa823461d86945bf163ecb043f72fa11453415642672162978ed4446beb71dad041c9ca48a9ae0440aa1
+DIST rust-1.77.0-s390x-unknown-linux-gnu.tar.xz 198606604 BLAKE2B c102856588697aa08f9c0e3095ef9d0e17df0931a3416ca7b0a0ef4a6182d1ce6367040f8ac19b19f1d0cee6c70b64cf6f653c44684fa137acf5d606db82f23b SHA512 0ba59b16309393945a73615ecf5d10d31d082ea3e21357267fce08c9ddcb64c0ba0da7595747577d400d6549df51d95798ecac43931ebc75f9d57d3107fca11b
+DIST rust-1.77.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 2574c4757e0b63c5cfe35a58ab2aa175f024de79abcf36e623ee7b925a528decb7f22df89d16ba20cbc1218a056c1c37b154b33d2dad223604cbd3222017919c SHA512 baabe009b58993fe5f62940c51c0811e9309d5a7f9d33819906241ec38ece45a3420a2ab80d972cb2cb184e965154e50feee85ff4719c3d10851fbc040f6f9a8
+DIST rust-1.77.0-x86_64-unknown-linux-gnu.tar.xz 158351120 BLAKE2B 454e8667ea8899cb915680c0c39e5f7831450604a11a3bc9b7d8a897ef6e723edd382c171f292b5e89a406c823735d86ce96d94d08fda53336f806f83b3fad79 SHA512 462df108a811aa628ebf20cd3ad88dcfedbbe4529929abf86e65cbf02d4157ec56c8b9c424b9b9f6930852ccc972fd9970ceea522eeceb79c6acf5cfb7cf08f5
+DIST rust-1.77.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 627ab5e55ae8095b2dfd1559c798376a5e6efe751f3c7e74540c9dc1ad8d889fe6c4c2190914506829e50f2fd7de022584b9d3bc3c2aab4e8bf3126dc4306c31 SHA512 24ee5edfb675f7598366edd9390d7a6044830c31ba7c9bc729e987a5c9bbc8cc7a6beddaef7cc9b1718d0ef4dc5f6568e0ca1504a23d82328536dd478dc391e6
+DIST rust-1.77.0-x86_64-unknown-linux-musl.tar.xz 235071684 BLAKE2B 556a5c8aff20b1314dfc6c767adc9b4ac1a70a5976b49e4550247082eadb76622dfdab253ec853d38807990d7c9f46503060675187a589da91ae2f093d5be4c5 SHA512 073c8b4c92f3d6444ea4fd599281c262fdac7fd4589aee0a0f0ec8bae2e6a315578b2fb3ac768579946cf4bfd77b0e440bceb0d3523598cbda7fdb2ac59c98e1
+DIST rust-1.77.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B e049d7c7d25af1074420117b8a984ff585c85808e17b60285b4ae288216dc2ff3f6b08707157b5e9a7778abc312525e755b70fe38f1b0a23fbaeaa9a52305be4 SHA512 c9b54e5ee181dd217b36e258cc0e72c9acd17ccd4f99430ac4a473e898cb3a3cc16f79609e7233649bd8126119da1e2a99f6b7cbf8864dbae5b02746468ace06
 DIST rustc-1.71.0-src.tar.xz 151962928 BLAKE2B da8d83cd6621947816630ae487efe7d087266c1352949cedbbd441ba7c7f7c7beb13b9470e66e2f3359c37a050d0e44d22481c418532d3ebb339a456ab092648 SHA512 2c93bafdd248563765a285add48ca77c1e4bad4d5431675ae6a5cdee4cfe7a41e6bcc880a489ca1069a307fd9a005f2d5f8e230dfc95b4a69152b4f9ca49ac44
 DIST rustc-1.71.0-src.tar.xz.asc 801 BLAKE2B e5ddc4b18a6caeeb63c5aed5b5d15989d086f408787d2e603e50e7b8548dc078683062627280fd2a0393bec01c314eb1cc59f9b0e3146abf07b8365a0b44c640 SHA512 cb1b208c8b2bfccf02c73c4246fb238edb0dd10e292c1ef781920964e54e40add3089d988769982c0ce06b719014685b1c37daa2d08b513d86ad73808f4ce3ac
 DIST rustc-1.71.1-src.tar.xz 151983068 BLAKE2B 3dfdbc246feb84a79ae94c2de978c5585ee06cf6b683d2245869b62e28f7c79f89cc589f5431537713bf088236a0b824acefc1b68e418e9eb72e1eea98054e3f SHA512 fd0e5a16bdbeb539184513583089e55f681cb772810df357b6b1464853f7022ac02edab3dd155b2262ed0047e2a25dea3808dd078dcdfce9d399384465009db4
@@ -186,3 +214,5 @@ DIST rustc-1.76.0-src.tar.xz 162267908 BLAKE2B 0cf726841a837d9906d82a6216e65edad
 DIST rustc-1.76.0-src.tar.xz.asc 801 BLAKE2B eadb2f54fceb9c1ac60af72407a2957e37e1ba134a696675a1e9dcf23a2958b41d7f5aa1f75156e4843cefc387cdc9c909e364c3bfcabecc6bfbe262d9c6e8af SHA512 d35c010a5a129580746bcec5c0dad1b0bc1b7864a69505c7c0ccfad436fdfbdf33f87518965a09de187d6a70fb8867dc6a20037c648861031a17501577855120
 DIST rustc-1.77.1-src.tar.xz 162796048 BLAKE2B 18a9fd095808ba78bf50ec94f7fd4087a1033ec79750aa593bacf64219c77ef90c030d41a7d8bc43f7ec8eb30b316c225024be4aeb517100ff6723487f8bb282 SHA512 e057ae638e4c3e54fdb367d48f4b85458121cee0d0ee1ed72f346940b8acad2f16cd9cc8abc16fcf4a17bf244b3300bb56a7e7be3bd0c23b034692c983b84fe8
 DIST rustc-1.77.1-src.tar.xz.asc 801 BLAKE2B 175a551abdb970295d37a0797cf262ac43055a3cb75b23845dbb8696d04b7705b7a2908b82fcbce7cd7dec2e05c382d06622013b9d4aa19fab7f651f7e00bb73 SHA512 eb24976ae97d2980d4c547bcf27d815f4b98b8aa45441a7201a849ee37e0ef15671732c9916d33964b8e802a87ede758daaadf84901bd569527c8b6c48efff23
+DIST rustc-1.78.0-src.tar.xz 159181212 BLAKE2B dedae58e413689de258f852c988a9a91d4cf14c9525f2619ca6155006ddc9b2262c8141ff995e4fc6ecceec383470e50d2fa0952d933db9b3957ce5c5b96f62e SHA512 d2fb9881e28849d871fda71b1b51652be3839b3283f0d32163f258c5c707a9fb7b589da8dc03bca2fefee1abdd2b44a5f17e85d8c6df7bea119d1e8d22371941
+DIST rustc-1.78.0-src.tar.xz.asc 801 BLAKE2B a40b0eab4e9263694e79f21d92652402579f4a0587fa48b4043211bc645d4303f9af7629e9c8361938748163e99fa7cd04108156780f23f9c8600361785e834b SHA512 ef16c9eed79f36576517e9dd77b56aa767ae9dc745f5df1839e24b76084ac791b27926f3d608b41695ae6022aa10cbdd3650cad163f35037c60d3bd0427b3cbd

diff --git a/dev-lang/rust/files/1.78.0-ignore-broken-and-non-applicable-tests.patch b/dev-lang/rust/files/1.78.0-ignore-broken-and-non-applicable-tests.patch
new file mode 100644
index 0000000..610e5d0
--- /dev/null
+++ b/dev-lang/rust/files/1.78.0-ignore-broken-and-non-applicable-tests.patch
@@ -0,0 +1,30 @@
+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
+---
+ test/ui/env-funky-keys.rs                                   | 1 +
+ 6 files changed, 10 insertions(+)
+
+diff --git a/tests/ui/env-funky-keys.rs b/tests/ui/env-funky-keys.rs
+index c5c824ac58d..f3fe047a79c 100644
+--- a/tests/ui/env-funky-keys.rs
++++ b/tests/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.78.0-musl-dynamic-linking.patch b/dev-lang/rust/files/1.78.0-musl-dynamic-linking.patch
new file mode 100644
index 0000000..25a281c
--- /dev/null
+++ b/dev-lang/rust/files/1.78.0-musl-dynamic-linking.patch
@@ -0,0 +1,19 @@
+From e42709c46647dab342b826d30324f3e6e5590e00 Mon Sep 17 00:00:00 2001
+From: Jory Pratt <anarchy@gentoo.org>
+Date: Tue, 2 Aug 2022 18:32:53 -0500
+Subject: [PATCH] Enable dynamic linking by default for musl
+
+Signed-off-by: Jory Pratt <anarchy@gentoo.org>
+--- a/compiler/rustc_target/src/spec/base/linux_musl.rs
++++ b/compiler/rustc_target/src/spec/base/linux_musl.rs
+@@ -10,7 +10,7 @@ pub fn opts() -> TargetOptions {
+     base.link_self_contained = LinkSelfContainedDefault::InferredForMusl;
+ 
+     // These targets statically link libc by default
+-    base.crt_static_default = true;
++    base.crt_static_default = false;
+ 
+     base
+ }
+-- 
+2.35.1

diff --git a/dev-lang/rust/rust-1.78.0.ebuild b/dev-lang/rust/rust-1.78.0.ebuild
new file mode 100644
index 0000000..eb2c9c6
--- /dev/null
+++ b/dev-lang/rust/rust-1.78.0.ebuild
@@ -0,0 +1,799 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
+	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.xz"
+	KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+SRC_URI="
+	https://static.rust-lang.org/dist/${SRC}
+	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
+	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
+"
+
+# keep in sync with llvm ebuild of the same version as bundled one.
+ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
+	LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE
+	WebAssembly X86 XCore Xtensa )
+ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
+LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
+
+LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
+
+IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+
+# Please keep the LLVM dependency block separate. Since LLVM is slotted,
+# we need to *really* make sure we're not pulling more than one slot
+# simultaneously.
+
+# How to use it:
+# List all the working slots in LLVM_VALID_SLOTS, newest first.
+LLVM_VALID_SLOTS=( 18 )
+LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
+
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+# (-) usedep needed because we may build with older llvm without that target
+LLVM_DEPEND="|| ( "
+for _s in ${LLVM_VALID_SLOTS[@]}; do
+	LLVM_DEPEND+=" ( "
+	for _x in ${ALL_LLVM_TARGETS[@]}; do
+		LLVM_DEPEND+="
+			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
+			wasm? ( sys-devel/lld:${_s} )"
+	done
+	LLVM_DEPEND+=" )"
+done
+unset _s _x
+LLVM_DEPEND+=" )
+	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
+"
+
+# to bootstrap we need at least exactly previous version, or same.
+# most of the time previous versions fail to bootstrap with newer
+# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
+# but it fails to bootstrap with 1.48.x
+# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
+RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
+RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
+BOOTSTRAP_DEPEND="||
+	(
+		=dev-lang/rust-"${RUST_DEP_PREV}"
+		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
+		=dev-lang/rust-"${RUST_DEP_CURR}"
+		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
+	)
+"
+
+BDEPEND="${PYTHON_DEPS}
+	app-eselect/eselect-rust
+	|| (
+		>=sys-devel/gcc-4.7
+		>=sys-devel/clang-3.5
+	)
+	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
+	!system-llvm? (
+		>=dev-build/cmake-3.13.4
+		app-alternatives/ninja
+	)
+	test? ( dev-debug/gdb )
+	verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+	>=app-arch/xz-utils-5.2
+	net-misc/curl:=[http2,ssl]
+	sys-libs/zlib:=
+	dev-libs/openssl:0=
+	system-llvm? (
+		${LLVM_DEPEND}
+		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
+	)
+	!system-llvm? (
+		!llvm-libunwind? (
+			elibc_musl? ( sys-libs/libunwind:= )
+		)
+	)
+"
+
+RDEPEND="${DEPEND}
+	app-eselect/eselect-rust
+	sys-apps/lsb-release
+"
+
+REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
+	miri? ( nightly )
+	parallel-compiler? ( nightly )
+	rust-analyzer? ( rust-src )
+	test? ( ${ALL_LLVM_TARGETS[*]} )
+	wasm? ( llvm_targets_WebAssembly )
+	x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+	usr/lib/${PN}/${PV}/bin/.*
+	usr/lib/${PN}/${PV}/libexec/.*
+	usr/lib/${PN}/${PV}/lib/lib.*.so
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+	usr/lib/${PN}/${PV}/lib/lib.*.so.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+S="${WORKDIR}/${MY_P}-src"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+	"${FILESDIR}"/1.78.0-musl-dynamic-linking.patch
+	"${FILESDIR}"/1.74.1-cross-compile-libz.patch
+	#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch  # pending refresh
+	"${FILESDIR}"/1.78.0-ignore-broken-and-non-applicable-tests.patch
+	"${FILESDIR}"/1.67.0-doc-wasm.patch
+)
+
+clear_vendor_checksums() {
+	sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
+}
+
+eapply_crate() {
+	pushd "${1:?}" > /dev/null || die
+	local patch="${2:?}"
+	eapply "${patch}"
+	"${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die
+	popd > /dev/null || die
+}
+
+toml_usex() {
+	usex "${1}" true false
+}
+
+bootstrap_rust_version_check() {
+	# never call from pkg_pretend. eselect-rust may be not installed yet.
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
+	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
+	local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
+		eerror "Rust >=${rustc_wanted} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too old"
+	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
+		eerror "Rust <${rustc_toonew} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too new"
+	else
+		einfo "Using rust ${rustc_version} to build"
+	fi
+}
+
+pre_build_checks() {
+	local M=8192
+	# multiply requirements by 1.3 if we are doing x86-multilib
+	if use amd64; then
+		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
+	fi
+	M=$(( $(usex clippy 128 0) + ${M} ))
+	M=$(( $(usex miri 128 0) + ${M} ))
+	M=$(( $(usex rustfmt 256 0) + ${M} ))
+	# add 2G if we compile llvm and 256M per llvm_target
+	if ! use system-llvm; then
+		M=$(( 2048 + ${M} ))
+		local ltarget
+		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+		done
+	fi
+	M=$(( $(usex wasm 256 0) + ${M} ))
+	M=$(( $(usex debug 2 1) * ${M} ))
+	eshopts_push -s extglob
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		M=$(( 15 * ${M} / 10 ))
+	fi
+	eshopts_pop
+	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
+	M=$(( $(usex doc 256 0) + ${M} ))
+	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+# Is LLVM being linked against libc++?
+is_libcxx_linked() {
+	local code='#include <ciso646>
+#if defined(_LIBCPP_VERSION)
+	HAVE_LIBCXX
+#endif
+'
+	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
+	[[ ${out} == *HAVE_LIBCXX* ]]
+}
+
+pkg_pretend() {
+	pre_build_checks
+}
+
+pkg_setup() {
+	pre_build_checks
+	python-any-r1_pkg_setup
+
+	export LIBGIT2_NO_PKG_CONFIG=1 #749381
+	if tc-is-cross-compiler; then
+		export PKG_CONFIG_ALLOW_CROSS=1
+		export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
+		export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
+		export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
+
+		use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
+		use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
+		local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
+		use "llvm_targets_${cross_llvm_target}" || \
+			die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
+	fi
+
+	use system-bootstrap && bootstrap_rust_version_check
+
+	if use system-llvm; then
+		llvm_pkg_setup
+
+		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+		export LLVM_LINK_SHARED=1
+		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+	fi
+}
+
+esetup_unwind_hack() {
+	# https://bugs.gentoo.org/870280
+	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
+	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
+	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
+	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
+	local fakelib="${T}/fakelib"
+	mkdir -p "${fakelib}" || die
+	# we need both symlinks, one for cargo runtime, other for linker.
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
+	export LD_LIBRARY_PATH="${fakelib}"
+	export RUSTFLAGS+=" -L${fakelib}"
+	# this is a literally magic variable that gets through cargo cache, without it some
+	# crates ignore RUSTFLAGS.
+	# this variable can not contain leading space.
+	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
+}
+
+src_prepare() {
+	eapply_crate vendor/openssl-sys-0.9.92 "${FILESDIR}"/1.72.0-libressl-openssl-sys.patch
+	eapply_crate vendor/openssl-sys "${FILESDIR}"/1.77.1-libressl-openssl-sys.patch
+
+	# Clear vendor checksums for crates that we patched to bump libc.
+	# NOTE: refresh this on each bump.
+	#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
+	#	terminal_size tracing-tree; do
+	#	clear_vendor_checksums "${i}"
+	#done
+
+	if ! use system-bootstrap; then
+		has_version sys-devel/gcc || esetup_unwind_hack
+		local rust_stage0_root="${WORKDIR}"/rust-stage0
+		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
+
+		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
+			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
+	fi
+
+	default
+}
+
+src_configure() {
+	filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
+
+	local rust_target="" rust_targets="" arch_cflags
+
+	# Collect rust target names to compile standard libs for all ABIs.
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
+	done
+	if use wasm; then
+		rust_targets+=",\"wasm32-unknown-unknown\""
+		if use system-llvm; then
+			# un-hardcode rust-lld linker for this target
+			# https://bugs.gentoo.org/715348
+			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die
+		fi
+	fi
+	rust_targets="${rust_targets#,}"
+
+	# cargo and rustdoc are mandatory and should always be included
+	local tools='"cargo","rustdoc"'
+	use clippy && tools+=',"clippy"'
+	use miri && tools+=',"miri"'
+	use profiler && tools+=',"rust-demangler"'
+	use rustfmt && tools+=',"rustfmt"'
+	use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"'
+	use rust-src && tools+=',"src"'
+
+	local rust_stage0_root
+	if use system-bootstrap; then
+		local printsysroot
+		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
+		rust_stage0_root="${printsysroot}"
+	else
+		rust_stage0_root="${WORKDIR}"/rust-stage0
+	fi
+	# in case of prefix it will be already prefixed, as --print sysroot returns full path
+	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+	rust_target="$(rust_abi)"
+	rust_build="$(rust_abi "${CBUILD}")"
+	rust_host="$(rust_abi "${CHOST}")"
+
+	local cm_btype="$(usex debug DEBUG RELEASE)"
+	cat <<- _EOF_ > "${S}"/config.toml
+		changelog-seen = 2
+		[llvm]
+		download-ci-llvm = false
+		optimize = $(toml_usex !debug)
+		release-debuginfo = $(toml_usex debug)
+		assertions = $(toml_usex debug)
+		ninja = true
+		targets = "${LLVM_TARGETS// /;}"
+		experimental-targets = ""
+		link-shared = $(toml_usex system-llvm)
+		$(if is_libcxx_linked; then
+			# https://bugs.gentoo.org/732632
+			echo "use-libcxx = true"
+			echo "static-libstdcpp = false"
+		fi)
+		$(case "${rust_target}" in
+			i586-*-linux-*)
+				# https://github.com/rust-lang/rust/issues/93059
+				echo 'cflags = "-fcf-protection=none"'
+				echo 'cxxflags = "-fcf-protection=none"'
+				echo 'ldflags = "-fcf-protection=none"'
+				;;
+			*)
+				;;
+		esac)
+		enable-warnings = false
+		[llvm.build-config]
+		CMAKE_VERBOSE_MAKEFILE = "ON"
+		$(if ! tc-is-cross-compiler; then
+			# When cross-compiling, LLVM is compiled twice, once for host and
+			# once for target.  Unfortunately, this build configuration applies
+			# to both, which means any flags applicable to one target but not
+			# the other will break.  Conditionally disable respecting user
+			# flags when cross-compiling.
+			echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\""
+			echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\""
+			echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\""
+		fi)
+		[build]
+		build-stage = 2
+		test-stage = 2
+		build = "${rust_build}"
+		host = ["${rust_host}"]
+		target = [${rust_targets}]
+		cargo = "${rust_stage0_root}/bin/cargo"
+		rustc = "${rust_stage0_root}/bin/rustc"
+		rustfmt = "${rust_stage0_root}/bin/rustfmt"
+		docs = $(toml_usex doc)
+		compiler-docs = false
+		submodules = false
+		python = "${EPYTHON}"
+		locked-deps = true
+		vendor = true
+		extended = true
+		tools = [${tools}]
+		verbose = 2
+		sanitizers = false
+		profiler = $(toml_usex profiler)
+		cargo-native-static = false
+		[install]
+		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
+		sysconfdir = "etc"
+		docdir = "share/doc/rust"
+		bindir = "bin"
+		libdir = "lib"
+		mandir = "share/man"
+		[rust]
+		# https://github.com/rust-lang/rust/issues/54872
+		codegen-units-std = 1
+		optimize = true
+		debug = $(toml_usex debug)
+		debug-assertions = $(toml_usex debug)
+		debug-assertions-std = $(toml_usex debug)
+		debuginfo-level = $(usex debug 2 0)
+		debuginfo-level-rustc = $(usex debug 2 0)
+		debuginfo-level-std = $(usex debug 2 0)
+		debuginfo-level-tools = $(usex debug 2 0)
+		debuginfo-level-tests = 0
+		backtrace = true
+		incremental = false
+		$(if ! tc-is-cross-compiler; then
+			echo "default-linker = \"$(tc-getCC)\""
+		fi)
+		parallel-compiler = $(toml_usex parallel-compiler)
+		channel = "$(usex nightly nightly stable)"
+		description = "gentoo"
+		rpath = false
+		verbose-tests = true
+		optimize-tests = $(toml_usex !debug)
+		codegen-tests = true
+		dist-src = false
+		remap-debuginfo = true
+		lld = $(usex system-llvm false $(toml_usex wasm))
+		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+		# https://github.com/rust-lang/rust/issues/74976
+		# https://github.com/rust-lang/rust/issues/76526
+		deny-warnings = $(usex wasm $(usex doc false true) true)
+		backtrace-on-ice = true
+		jemalloc = false
+		# See https://github.com/rust-lang/rust/issues/121124
+		lto = "$(usex lto thin off)"
+		[dist]
+		src-tarball = false
+		compression-formats = ["xz"]
+		compression-profile = "balanced"
+	_EOF_
+
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${rust_target}]
+			ar = "$(tc-getAR)"
+			cc = "$(tc-getCC)"
+			cxx = "$(tc-getCXX)"
+			linker = "$(tc-getCC)"
+			ranlib = "$(tc-getRANLIB)"
+			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
+		# but we patch it and set to false here as well
+		if use elibc_musl; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				crt-static = false
+			_EOF_
+		fi
+	done
+	if use wasm; then
+		wasm_target="wasm32-unknown-unknown"
+		export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")"
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.wasm32-unknown-unknown]
+			linker = "$(usex system-llvm lld rust-lld)"
+			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
+			profiler = false
+		_EOF_
+	fi
+
+	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
+	# experimental cross support
+	# discussion: https://bugs.gentoo.org/679878
+	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
+	# it would be much better if we could split out stdlib
+	# complilation to separate ebuild and abuse CATEGORY to
+	# just install to /usr/lib/rustlib/<target>
+
+	# extra targets defined as a bash array
+	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
+	# best place would be /etc/portage/env/dev-lang/rust
+	# Example:
+	# RUST_CROSS_TARGETS=(
+	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
+	# )
+	# no extra hand holding is done, no target transformations, all
+	# values are passed as-is with just basic checks, so it's up to user to supply correct values
+	# valid rust targets can be obtained with
+	# 	rustc --print target-list
+	# matching cross toolchain has to be installed
+	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
+	# only gcc toolchains installed with crossdev are checked for now.
+
+	# BUG: we can't pass host flags to cross compiler, so just filter for now
+	# BUG: this should be more fine-grained.
+	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
+
+	local cross_target_spec
+	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
+		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
+		local cross_llvm_target="${cross_target_spec%%:*}"
+		# extracts toolchain triples, <rust-target>:<CTARGET>
+		local cross_triples="${cross_target_spec#*:}"
+		# extracts first element after before : separator
+		local cross_rust_target="${cross_triples%%:*}"
+		# extracts last element after : separator
+		local cross_toolchain="${cross_triples##*:}"
+		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
+		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${cross_rust_target}]
+			ar = "${cross_toolchain}-ar"
+			cc = "${cross_toolchain}-gcc"
+			cxx = "${cross_toolchain}-g++"
+			linker = "${cross_toolchain}-gcc"
+			ranlib = "${cross_toolchain}-ranlib"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		if [[ "${cross_toolchain}" == *-musl* ]]; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+			_EOF_
+		fi
+
+		# append cross target to "normal" target list
+		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
+		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+		rust_targets="${rust_targets},\"${cross_rust_target}\""
+		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+		ewarn
+		ewarn "Enabled ${cross_rust_target} rust target"
+		ewarn "Using ${cross_toolchain} cross toolchain"
+		ewarn
+		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+			ewarn "'sys-devel/binutils[multitarget]' is not installed"
+			ewarn "'strip' will be unable to strip cross libraries"
+			ewarn "cross targets will be installed with full debug information"
+			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+			ewarn
+			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+			ewarn
+		fi
+	done
+	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+	einfo "Rust configured with the following flags:"
+	echo
+	echo RUSTFLAGS="\"${RUSTFLAGS}\""
+	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
+	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
+	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
+	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+	env | grep "CFLAGS_.*"
+	echo
+	einfo "config.toml contents:"
+	cat "${S}"/config.toml || die
+	echo
+}
+
+src_compile() {
+	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+}
+
+src_test() {
+	# https://rustc-dev-guide.rust-lang.org/tests/intro.html
+
+	# those are basic and codegen tests.
+	local tests=(
+		codegen
+		codegen-units
+		compile-fail
+		incremental
+		mir-opt
+		pretty
+		run-make
+	)
+
+	# fails if llvm is not built with ALL targets.
+	# and known to fail with system llvm sometimes.
+	use system-llvm || tests+=( assembly )
+
+	# fragile/expensive/less important tests
+	# or tests that require extra builds
+	# TODO: instead of skipping, just make some nonfatal.
+	if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
+		tests+=(
+			rustdoc
+			rustdoc-js
+			rustdoc-js-std
+			rustdoc-ui
+			run-make-fulldeps
+			ui
+			ui-fulldeps
+		)
+	fi
+
+	local i failed=()
+	einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
+	for i in "${tests[@]}"; do
+		local t="src/test/${i}"
+		einfo "rust_src_test: running ${t}"
+		if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
+				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
+		then
+				failed+=( "${t}" )
+				eerror "rust_src_test: ${t} failed"
+		fi
+	done
+
+	if [[ ${#failed[@]} -ne 0 ]]; then
+		eerror "rust_src_test: failure summary: ${failed[@]}"
+		die "aborting due to test failures"
+	fi
+}
+
+src_install() {
+	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+
+	# bug #689562, #689160
+	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
+	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+
+	local symlinks=(
+		cargo
+		rustc
+		rustdoc
+		rust-gdb
+		rust-gdbgui
+		rust-lldb
+	)
+
+	use clippy && symlinks+=( clippy-driver cargo-clippy )
+	use miri && symlinks+=( miri cargo-miri )
+	use profiler && symlinks+=( rust-demangler )
+	use rustfmt && symlinks+=( rustfmt cargo-fmt )
+	use rust-analyzer && symlinks+=( rust-analyzer )
+
+	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
+	local i
+	for i in "${symlinks[@]}"; do
+		# we need realpath on /usr/bin/* symlink return version-appended binary path.
+		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
+		# need to fix eselect-rust to remove this hack.
+		local ver_i="${i}-${PV}"
+		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
+			einfo "Installing ${i} symlink"
+			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
+		else
+			ewarn "${i} symlink requested, but source file not found"
+			ewarn "please report this"
+		fi
+		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
+	done
+
+	# symlinks to switch components to active rust in eselect
+	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
+	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
+	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
+	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
+	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+
+	newenvd - "50${P}" <<-_EOF_
+		LDPATH="${EPREFIX}/usr/lib/rust/lib"
+		MANPATH="${EPREFIX}/usr/lib/rust/man"
+	_EOF_
+
+	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+
+	# note: eselect-rust adds EROOT to all paths below
+	cat <<-_EOF_ > "${T}/provider-${P}"
+		/usr/bin/cargo
+		/usr/bin/rustdoc
+		/usr/bin/rust-gdb
+		/usr/bin/rust-gdbgui
+		/usr/bin/rust-lldb
+		/usr/lib/rustlib
+		/usr/lib/rust/lib
+		/usr/lib/rust/libexec
+		/usr/lib/rust/man
+		/usr/share/doc/rust
+	_EOF_
+
+	if use clippy; then
+		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+	fi
+	if use miri; then
+		echo /usr/bin/miri >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+	fi
+	if use profiler; then
+		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
+	fi
+	if use rustfmt; then
+		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
+	fi
+	if use rust-analyzer; then
+		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
+	fi
+
+	insinto /etc/env.d/rust
+	doins "${T}/provider-${P}"
+
+	if use dist; then
+		"${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+		insinto "/usr/lib/${PN}/${PV}/dist"
+		doins -r "${S}/build/dist/."
+	fi
+}
+
+pkg_postinst() {
+	eselect rust update
+
+	if has_version dev-debug/gdb || has_version dev-debug/lldb; then
+		elog "Rust installs a helper script for calling GDB and LLDB,"
+		elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
+	fi
+
+	if has_version app-editors/emacs; then
+		elog "install app-emacs/rust-mode to get emacs support for rust."
+	fi
+
+	if has_version app-editors/gvim || has_version app-editors/vim; then
+		elog "install app-vim/rust-vim to get vim support for rust."
+	fi
+}
+
+pkg_postrm() {
+	eselect rust cleanup
+}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2024-06-29  4:26 orbea
  0 siblings, 0 replies; 27+ messages in thread
From: orbea @ 2024-06-29  4:26 UTC (permalink / raw
  To: gentoo-commits

commit:     8f81dbdc4bab9eddf28df65eb80afecbbc55f603
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Sat Jun 29 04:25:24 2024 +0000
Commit:     orbea <orbea <AT> riseup <DOT> net>
CommitDate: Sat Jun 29 04:25:24 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=8f81dbdc

dev-lang/rust: add 1.79.0

Signed-off-by: orbea <orbea <AT> riseup.net>

 dev-lang/rust/Manifest                             |  30 +
 .../rust/files/1.79.0-libressl-openssl-sys.patch   |  10 +
 dev-lang/rust/rust-1.79.0.ebuild                   | 798 +++++++++++++++++++++
 3 files changed, 838 insertions(+)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 914386d..9a6d48b 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -200,6 +200,34 @@ DIST rust-1.77.0-x86_64-unknown-linux-gnu.tar.xz 158351120 BLAKE2B 454e8667ea889
 DIST rust-1.77.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 627ab5e55ae8095b2dfd1559c798376a5e6efe751f3c7e74540c9dc1ad8d889fe6c4c2190914506829e50f2fd7de022584b9d3bc3c2aab4e8bf3126dc4306c31 SHA512 24ee5edfb675f7598366edd9390d7a6044830c31ba7c9bc729e987a5c9bbc8cc7a6beddaef7cc9b1718d0ef4dc5f6568e0ca1504a23d82328536dd478dc391e6
 DIST rust-1.77.0-x86_64-unknown-linux-musl.tar.xz 235071684 BLAKE2B 556a5c8aff20b1314dfc6c767adc9b4ac1a70a5976b49e4550247082eadb76622dfdab253ec853d38807990d7c9f46503060675187a589da91ae2f093d5be4c5 SHA512 073c8b4c92f3d6444ea4fd599281c262fdac7fd4589aee0a0f0ec8bae2e6a315578b2fb3ac768579946cf4bfd77b0e440bceb0d3523598cbda7fdb2ac59c98e1
 DIST rust-1.77.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B e049d7c7d25af1074420117b8a984ff585c85808e17b60285b4ae288216dc2ff3f6b08707157b5e9a7778abc312525e755b70fe38f1b0a23fbaeaa9a52305be4 SHA512 c9b54e5ee181dd217b36e258cc0e72c9acd17ccd4f99430ac4a473e898cb3a3cc16f79609e7233649bd8126119da1e2a99f6b7cbf8864dbae5b02746468ace06
+DIST rust-1.78.0-aarch64-unknown-linux-gnu.tar.xz 223523772 BLAKE2B 734416f447462f2778b74f12ffdda13374c95cc399e8728afbeb61b06c0db2e522e760a257d2ce26ce8190cb9c8292880bf02da52df04c3cf205841b95825767 SHA512 80adc842a56ac95d472dcd94aab199dbcfb3d3a5e7a8cb32b8334b038c58a66b8d4f3848ab62a3e799d7c35e6a32abb1f2738a784da8cfa3272ea299c528d5cd
+DIST rust-1.78.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b6cf17229559a845cf63a22043b1ecb9d7e142b536d0fdb0b44f36f05fe1238096c48dd61becac58275d60401a4f0ce623fed9593290d1f659d31976bb0c42ab SHA512 d03a380d0481b4ec19cfd8026d262ed19b7f6f4f40287b0e23127460029b30c47336232a488dc8d19d22df98f356cbd62d7d44f4a3e1cabb6f575531be8916f7
+DIST rust-1.78.0-aarch64-unknown-linux-musl.tar.xz 204806408 BLAKE2B 08abcef8a38d2d1e463971613481806e897ad4aa48a6e3306c23cf7b906807c944809ec60647c5a80e80978cf8aa8bb1b8e990d69769f94f44022b0f764cead4 SHA512 4ec03b17e2f016fc5449431c4d81d113c12227e6e11553f9fb4fb61e4ba3ca4216aad776e7e3c1e88ac42b797c07f5daa23cac90c3eaebc6d360602f026f9dac
+DIST rust-1.78.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 1b51cb7337d71930d4d455d7d018a32de858b6627f0ca3cd636420bfdf0d608f550d41985a93b09575e5ac853361c3362a5c0b85366ff19712a4488b79b706c8 SHA512 a9e28326f91009ca248297ba1b099b718f577c030ae3c75daaeb4798cec4e4de585f1652f18ac170228c32e3784d38e328c3821d6735ea1c083bc4d5b80c426f
+DIST rust-1.78.0-arm-unknown-linux-gnueabi.tar.xz 188301776 BLAKE2B e227ecff233f42b9b8dd7b5807de8fbc972107e7099612986b275ba0391c8fc074344db0764d96d00c34a099380354ddc5e7beaad1d5444fc3300481f7504a2e SHA512 624eef628d9ac6e1eaa376677296cda0cecf4ff7efd4763e40735ec69788fcd34b4a4e05c34046e2b57b916285acdfa04f5b122142ed661032e9c0d713e8fd37
+DIST rust-1.78.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 43df87950eb9a8a0d2410c861e08ccb90a28c815d50cffbc310fef063e5b6b8b3246f5dc96ad34343a7107b025e863a87021e6d59e0826386e4864b68e3d693a SHA512 85f8822c493a1499e6404400b4c9ac293266533c49c5b0b4fab470d2acaf93078aff4d0c3cc59b9117ae9dcd4c47291a1197de44b56214146fd06e708479a191
+DIST rust-1.78.0-arm-unknown-linux-gnueabihf.tar.xz 188746984 BLAKE2B 567ba5298d6b5a4734d126e0b9e5df24460f6204b32ecf3892b45a26689bafe7ccf15f4a6a098a6a6ec7c3f15cf80d314e682f2d8c784a60d9847056be1885e1 SHA512 f9b5b48042868e91d73e3466f7529e2bb2b72d2489b2d0ff1fc83ec1b1cb035c88e57d48b0ed7298d5f50db0cf9da2681e9a4862c185a2bd241356632516c93a
+DIST rust-1.78.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 4d4e6f113e18870a654bc175eba1ea8ae0129803503deba03d144be4f434b1b5651288e8e1cfaa51bf603f5bf51a959b584e2932c025c3474575dc282ec14d84 SHA512 6c682f710fc26e94f233ae27dab6be27fc132825c3604789671170c040b689bc1871d9a74436832fd07a0da50654d06f0c2b31dd8dd9787f1563e2085a51c14e
+DIST rust-1.78.0-armv7-unknown-linux-gnueabihf.tar.xz 194117584 BLAKE2B 5a62e628f06ba370b5ca2b11d8c657fe9c0885e4d36b14f49ab0b7759af0317f1c79ae92dbd5685c57de58c4f6c31fbe3f1c8b4e1721c91d67ed45232dbed5a8 SHA512 877c13fc97c5ed0785dd005c34e5d37763cee9b7c0b5c2217246d173d952301b1b6b590c3ca441269ec8d341a0cf5f2eb83db63517385bbecb0cf08167a3948e
+DIST rust-1.78.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B a3ba9914c74373835ea6900f97100f631d0d5133adf6f1f938734be0d58484c72372b933e9c42fa37856efc6ade7650d969b412d66edd854ffff4918e8aecfed SHA512 6df8b791841f7bac8539e2ba9fd8d22d516a5906152861baef8ac3256136ef72f8fdb7cc9f843127311a8eeeb7911d058fb377db52ef4fe9a3cdc21396495ea6
+DIST rust-1.78.0-i686-unknown-linux-gnu.tar.xz 219666344 BLAKE2B 9302eae6c99af5598f9952255ca8bb3f0288a03b385f77b79323e725bbe398e722baf5ed2de7fd74caa452248800948aad33954a82cbdab97d1935785e6d4437 SHA512 15b6ab20665af6ac7df6e9c9078b9565b3f2e0d493c0b58cb06c682d9368917b2dbc509dfd23fac09dfddc9c60c5f89bdd8321dbada77958ca5a6261ec54d203
+DIST rust-1.78.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 8c23ee14f8db7c4a776f4b5b986384c9e2c79e6449e019c67b526ec219e92e35be5c46a4a2d8187aee0ab958c7ba5f2e10ae40f4c7cd083cbef59bbfc96b0c13 SHA512 ea13084528d4b8d558309a0d5c392c734140a854d9543beb0c9b3c5bd2fb530ba154c608920ad125683e1e9888228422352c3b1c1fdfa9d70df1bd4728193944
+DIST rust-1.78.0-loongarch64-unknown-linux-gnu.tar.xz 170256096 BLAKE2B 07507d4517a9e421bcaa763cc93956d5c57d458f7b20f97f186f902702675b305e79c89142f5c9774b11e0842a82c8cb63247b71dacf1c362c0588b52dd86d3d SHA512 fc21d32b4ec72a3a5a353cbabb902df2676e3341a1f38ee45654eaf960bc677b0316af0474e5ce9d346d285a6f7f03ebeda7302b49650cd1ff8371c27166fd25
+DIST rust-1.78.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f99580babc5356c579b81fc0a4168dc1a57432d898e8e2422f00f9027477d704421cb217b5d56fa15a6fe9c01cbf8d4a727c6b01eedddbbcfe9d78e3cdfd24b5 SHA512 ab1ac741f6d71517a510a48fff1b903f325a35b83e35b7b73f4751c1f22e6944044d7a46f21e018659d7cf4ab5b430f6a4ff79971712af46a0d7705faf60e506
+DIST rust-1.78.0-powerpc-unknown-linux-gnu.tar.xz 183422544 BLAKE2B a37b4b4c3ba381e0456f46ac7d311ff6b11701026d568653f86d08e5170f9f21177e87efe329ea8fe259a6ab7991f096bb716af2bf3000569c9797db61a41c72 SHA512 eacce0850bbd9dd9a8a94177234d867dcf8d94c7c2e9f4260207b25364abffc8523e2b85e868b9dd9d4bd02ea4be06fb0c5fbcf5621ace2c0e93041a96cf7ad3
+DIST rust-1.78.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B ad0201eb1760590381c0e7ee30f612a44157e10a634eb585f253788702653b3658c636c3f8c971a0c96de8944cb4c6960fd555f35dc1ee45fad18c7410ab4b7d SHA512 de5026257f1bd95146cb8057569d643a79ba440aab21efb4ea7df985a527654234c499f16cf75a29eb29cf9d7771893f0d4cfabc3483435ab73ce781aa573ebd
+DIST rust-1.78.0-powerpc64-unknown-linux-gnu.tar.xz 181366112 BLAKE2B c6edeeddc3934e6b93e65776a01c7f19c5e560716490eac2f52b56ba0ff58b974ee2be8e858265c4242d017106880a368244f5565e6f0438258b0cb0bfaa9a0e SHA512 7e0182680d216757d62627b07041d1e36eaae47ed341a548e29d6fe192f5e99a7f933461da025f4341d4c9b816ed3d8d3224bee12e29a0e7fc8bcd9a93c5069c
+DIST rust-1.78.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B eb94775f878935e94b7a678d4588dd586de8ddd47120670326b6b9ed891edb009d637a2c99b0548e8d74d07960a02558f8421e0754d487e93b57bc2bfc19f052 SHA512 490b0ff842eafdf23adf754051c0f4abec2bfda438bc2e3f57cfe5232f1358318c31bcf6a9ea89284f26389f2f1212dc3ad467b14da465d655bbc6974981cd58
+DIST rust-1.78.0-powerpc64le-unknown-linux-gnu.tar.xz 192130524 BLAKE2B ca961dcd50d9071f0bf7b8f354aa0e78b4e3d4c9bd0b6c72f7a712bbe906833aa8982eb87d9065644c65e57e395ab09ed85bd24cf43477071e0c5cd8ed8590e7 SHA512 c890386b3a82ea36aca2f8753b0fc81a956ce3157b89ccd573403ec99b257299f84c976dc7972278371cca1b3945b21a50d276e10b4cd42647a9d26e0ebdd947
+DIST rust-1.78.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 2bf8596c462d1231ad884a417c5b676447b8474023b5769343ec5a7788cb42c89b937987226db9bd526b3f4ff0a39648e4ee1136c3733d316e35b8ff7295b6ea SHA512 6bc9965d32420bd86422e4d5fefd82a46a169d5d80d298ccca08fb421858d5bc077f785a52f3404f29f394f2dc471a747fec208931d19358aebadab6d9952e0f
+DIST rust-1.78.0-riscv64gc-unknown-linux-gnu.tar.xz 194762504 BLAKE2B b3a802e4b6efcd6c0c3155258b57483c24731e0564d0077f65706ac46898828c4e4d612996c16b63f9dbd5770ac6ab05cad27a27f1083f431e13aeb68e1e77be SHA512 530e5409755dcef86a9d074a3d387dedb5966689d7f47706e43daa5a9a8c65249f4d2b42916363b14924c11e1a5f5d934e9a1d9b47b1ed7206e85496fee27604
+DIST rust-1.78.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6b8f4a535ae61cf04523254267c2f816e51e459a670b5c2aaa1a28d44092745d7c64baa399583a18cf84e03df2a910409cf99140e3337654a1a051e84d3865a1 SHA512 b226ead3b0dd067eea71d3b5088925f0cfa381aaab6f809e58dff83d00c17da4d99a9d241d49eb66e5db381cd9c63a21c2f5be3ab85658b0bf00b91e970c271a
+DIST rust-1.78.0-s390x-unknown-linux-gnu.tar.xz 207632244 BLAKE2B dd548d618a050991121afe1d8ec7d9fa5eab19d9fead94440f34627562bda9b5f544cbb03a06cd6e85eec4c8d5279b4237cd14c9754f95795e7a26f0b20036e6 SHA512 f17a472ba144efd41f791854931e1e2eb566f126037a1f234b0b54191941a77d8c340687c4c47e0bd4fbe306079cddb36637e998439845ec82206e4c567979af
+DIST rust-1.78.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5ea16c70fbdcce4cc17c37e9c3b642fc6deae9e2033821d21d3598652b8ed2dbab58cf09dec4e5b2f913cb9fb25820ccf3511af5eb84441e9bee6ba702005def SHA512 8384b20c9f9b6654fd69e90a91aa8572d22b4abbf83ca3b349b7672a5d8db131053ad1b6f8a48881be0060d3db2eaef52075d3a9b15a3c9ef9bb366d592fbcf0
+DIST rust-1.78.0-x86_64-unknown-linux-gnu.tar.xz 163959816 BLAKE2B 1987a6a0ea169d67214bf403cb1e6ada022eed163be6ac72e6e46d1596eba6f282cf87e0581e9ac1b264dee4c59edececc9085b0d16cacabc79f9375da652a24 SHA512 6bb0481804a1de8ee9fde7d4793d45e80f071534f2c3756867d95e99bfc4766de2618b5fd6b1d5e8f4794e54c7056124538fd301c5ec20351f8dada54ef4c20b
+DIST rust-1.78.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 1b6b8e54c0eebbde2a803d14db3d75363c306c621845cad89c927a51a5df0ccb5d1406c8806a82d5d611d0a12c6d6c5ed0f113fe802e4b6a8e504e64562e168c SHA512 10072d0684b40a71176f36ad85b7161e1392b3f52c035bfd0c6bbf5889599234a7201d85a13f04de0269ef9d8e0c51d15a4e9a9151b3fa27cf9a6e8663203786
+DIST rust-1.78.0-x86_64-unknown-linux-musl.tar.xz 245914600 BLAKE2B 66cc40b70ca70eebee5c173eefb07758a8a7421cbf421329b3b405bdab1651334a5ff1202b450139c89039a4c3fd6ecf8b78ed218c62e81c983e6bb7353a335c SHA512 21190a0034aab2757cdcbc2e456fdacc972634f25f5c75daa089030a82b407037d3c7d3528c8d126d48d2a6840edf97526007bef41689a86ef1eec8f8c569f08
+DIST rust-1.78.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 2ebc83f961f3bb1681bfd2e3f08b2c394bd8701c68b873eb524a9f9a79f3d3858ae75f76c0e0bc452cbdde9466b1d1b2723d04a8d41f68902355150c86d41042 SHA512 a32e7706ab9483a464e3001aebda8975ced4ef66a64f534d67c0a0e2b508f8db0523cfef4a66bb2b264bad486566c7f684d01ba96055133eccf0e9da4abfa46e
 DIST rustc-1.71.0-src.tar.xz 151962928 BLAKE2B da8d83cd6621947816630ae487efe7d087266c1352949cedbbd441ba7c7f7c7beb13b9470e66e2f3359c37a050d0e44d22481c418532d3ebb339a456ab092648 SHA512 2c93bafdd248563765a285add48ca77c1e4bad4d5431675ae6a5cdee4cfe7a41e6bcc880a489ca1069a307fd9a005f2d5f8e230dfc95b4a69152b4f9ca49ac44
 DIST rustc-1.71.0-src.tar.xz.asc 801 BLAKE2B e5ddc4b18a6caeeb63c5aed5b5d15989d086f408787d2e603e50e7b8548dc078683062627280fd2a0393bec01c314eb1cc59f9b0e3146abf07b8365a0b44c640 SHA512 cb1b208c8b2bfccf02c73c4246fb238edb0dd10e292c1ef781920964e54e40add3089d988769982c0ce06b719014685b1c37daa2d08b513d86ad73808f4ce3ac
 DIST rustc-1.71.1-src.tar.xz 151983068 BLAKE2B 3dfdbc246feb84a79ae94c2de978c5585ee06cf6b683d2245869b62e28f7c79f89cc589f5431537713bf088236a0b824acefc1b68e418e9eb72e1eea98054e3f SHA512 fd0e5a16bdbeb539184513583089e55f681cb772810df357b6b1464853f7022ac02edab3dd155b2262ed0047e2a25dea3808dd078dcdfce9d399384465009db4
@@ -216,3 +244,5 @@ DIST rustc-1.77.1-src.tar.xz 162796048 BLAKE2B 18a9fd095808ba78bf50ec94f7fd4087a
 DIST rustc-1.77.1-src.tar.xz.asc 801 BLAKE2B 175a551abdb970295d37a0797cf262ac43055a3cb75b23845dbb8696d04b7705b7a2908b82fcbce7cd7dec2e05c382d06622013b9d4aa19fab7f651f7e00bb73 SHA512 eb24976ae97d2980d4c547bcf27d815f4b98b8aa45441a7201a849ee37e0ef15671732c9916d33964b8e802a87ede758daaadf84901bd569527c8b6c48efff23
 DIST rustc-1.78.0-src.tar.xz 159181212 BLAKE2B dedae58e413689de258f852c988a9a91d4cf14c9525f2619ca6155006ddc9b2262c8141ff995e4fc6ecceec383470e50d2fa0952d933db9b3957ce5c5b96f62e SHA512 d2fb9881e28849d871fda71b1b51652be3839b3283f0d32163f258c5c707a9fb7b589da8dc03bca2fefee1abdd2b44a5f17e85d8c6df7bea119d1e8d22371941
 DIST rustc-1.78.0-src.tar.xz.asc 801 BLAKE2B a40b0eab4e9263694e79f21d92652402579f4a0587fa48b4043211bc645d4303f9af7629e9c8361938748163e99fa7cd04108156780f23f9c8600361785e834b SHA512 ef16c9eed79f36576517e9dd77b56aa767ae9dc745f5df1839e24b76084ac791b27926f3d608b41695ae6022aa10cbdd3650cad163f35037c60d3bd0427b3cbd
+DIST rustc-1.79.0-src.tar.xz 162359512 BLAKE2B 753c0e9c537644d1a12b4d38024c22952a19513791c3da6f955690c544e58964bacbdb579f94cd05910697fc31f77ed6553e5ad3b111bbdfebeea8d2a4fa19f5 SHA512 99d7f276292e5c270648473ff73e9888413a3325ef3a4d7a45f8ce77a42ac87996905f1d875888ce084b621f642017bc9e31a00da1439108dbe19b85d0eab085
+DIST rustc-1.79.0-src.tar.xz.asc 801 BLAKE2B 860283021f513f5d4c81ea1f8d9567f0a052cc53a1d51d7fd9a804a39b855e24e06ea4c73db53176c1cf846910147de6bbc26da35755f3d0d4b296503e691e64 SHA512 51eec85d71817fe21073502c1d18e44ce694dc11b1c181e82462b529a24a610c8e215e6f2640e8b6d80f028207a360e43354cafa863f49a12c547b4c5f52d7e7

diff --git a/dev-lang/rust/files/1.79.0-libressl-openssl-sys.patch b/dev-lang/rust/files/1.79.0-libressl-openssl-sys.patch
new file mode 100644
index 0000000..e211eb5
--- /dev/null
+++ b/dev-lang/rust/files/1.79.0-libressl-openssl-sys.patch
@@ -0,0 +1,10 @@
+--- a/build/main.rs.orig
++++ b/build/main.rs
+@@ -304,6 +304,7 @@
+             (3, 8, _) => ('3', '8', 'x'),
+             (3, 9, 0) => ('3', '9', '0'),
+             (3, 9, _) => ('3', '9', 'x'),
++            (_, _, _) => ('x', 'x', 'x'),
+             _ => version_error(),
+         };
+ 

diff --git a/dev-lang/rust/rust-1.79.0.ebuild b/dev-lang/rust/rust-1.79.0.ebuild
new file mode 100644
index 0000000..fd51f24
--- /dev/null
+++ b/dev-lang/rust/rust-1.79.0.ebuild
@@ -0,0 +1,798 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
+	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.xz"
+	KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="https://www.rust-lang.org/"
+
+SRC_URI="
+	https://static.rust-lang.org/dist/${SRC}
+	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
+	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
+"
+
+# keep in sync with llvm ebuild of the same version as bundled one.
+ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
+	LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE
+	WebAssembly X86 XCore Xtensa )
+ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
+LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
+
+LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
+
+IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
+
+# Please keep the LLVM dependency block separate. Since LLVM is slotted,
+# we need to *really* make sure we're not pulling more than one slot
+# simultaneously.
+
+# How to use it:
+# List all the working slots in LLVM_VALID_SLOTS, newest first.
+LLVM_VALID_SLOTS=( 18 )
+LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
+
+# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
+# (-) usedep needed because we may build with older llvm without that target
+LLVM_DEPEND="|| ( "
+for _s in ${LLVM_VALID_SLOTS[@]}; do
+	LLVM_DEPEND+=" ( "
+	for _x in ${ALL_LLVM_TARGETS[@]}; do
+		LLVM_DEPEND+="
+			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
+			wasm? ( sys-devel/lld:${_s} )"
+	done
+	LLVM_DEPEND+=" )"
+done
+unset _s _x
+LLVM_DEPEND+=" )
+	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
+"
+
+# to bootstrap we need at least exactly previous version, or same.
+# most of the time previous versions fail to bootstrap with newer
+# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
+# but it fails to bootstrap with 1.48.x
+# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
+RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
+RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
+BOOTSTRAP_DEPEND="||
+	(
+		=dev-lang/rust-"${RUST_DEP_PREV}"
+		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
+		=dev-lang/rust-"${RUST_DEP_CURR}"
+		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
+	)
+"
+
+BDEPEND="${PYTHON_DEPS}
+	app-eselect/eselect-rust
+	|| (
+		>=sys-devel/gcc-4.7
+		>=sys-devel/clang-3.5
+	)
+	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
+	!system-llvm? (
+		>=dev-build/cmake-3.13.4
+		app-alternatives/ninja
+	)
+	test? ( dev-debug/gdb )
+	verify-sig? ( sec-keys/openpgp-keys-rust )
+"
+
+DEPEND="
+	>=app-arch/xz-utils-5.2
+	net-misc/curl:=[http2,ssl]
+	sys-libs/zlib:=
+	dev-libs/openssl:0=
+	system-llvm? (
+		${LLVM_DEPEND}
+		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
+	)
+	!system-llvm? (
+		!llvm-libunwind? (
+			elibc_musl? ( sys-libs/libunwind:= )
+		)
+	)
+"
+
+RDEPEND="${DEPEND}
+	app-eselect/eselect-rust
+	sys-apps/lsb-release
+"
+
+REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
+	miri? ( nightly )
+	parallel-compiler? ( nightly )
+	rust-analyzer? ( rust-src )
+	test? ( ${ALL_LLVM_TARGETS[*]} )
+	wasm? ( llvm_targets_WebAssembly )
+	x86? ( cpu_flags_x86_sse2 )
+"
+
+# we don't use cmake.eclass, but can get a warning
+CMAKE_WARN_UNUSED_CLI=no
+
+QA_FLAGS_IGNORED="
+	usr/lib/${PN}/${PV}/bin/.*
+	usr/lib/${PN}/${PV}/libexec/.*
+	usr/lib/${PN}/${PV}/lib/lib.*.so
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_SONAME="
+	usr/lib/${PN}/${PV}/lib/lib.*.so.*
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
+"
+
+QA_PRESTRIPPED="
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
+	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
+"
+
+# An rmeta file is custom binary format that contains the metadata for the crate.
+# rmeta files do not support linking, since they do not contain compiled object files.
+# so we can safely silence the warning for this QA check.
+QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
+
+S="${WORKDIR}/${MY_P}-src"
+
+# causes double bootstrap
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
+
+PATCHES=(
+	"${FILESDIR}"/1.78.0-musl-dynamic-linking.patch
+	"${FILESDIR}"/1.74.1-cross-compile-libz.patch
+	#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch  # pending refresh
+	"${FILESDIR}"/1.78.0-ignore-broken-and-non-applicable-tests.patch
+	"${FILESDIR}"/1.67.0-doc-wasm.patch
+)
+
+clear_vendor_checksums() {
+	sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
+}
+
+eapply_crate() {
+	pushd "${1:?}" > /dev/null || die
+	local patch="${2:?}"
+	eapply "${patch}"
+	"${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die
+	popd > /dev/null || die
+}
+
+toml_usex() {
+	usex "${1}" true false
+}
+
+bootstrap_rust_version_check() {
+	# never call from pkg_pretend. eselect-rust may be not installed yet.
+	[[ ${MERGE_TYPE} == binary ]] && return
+	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
+	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
+	local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
+	rustc_version=${rustc_version[0]#rust-bin-}
+	rustc_version=${rustc_version#rust-}
+
+	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
+
+	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
+		eerror "Rust >=${rustc_wanted} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too old"
+	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
+		eerror "Rust <${rustc_toonew} is required"
+		eerror "please run 'eselect rust' and set correct rust version"
+		die "selected rust version is too new"
+	else
+		einfo "Using rust ${rustc_version} to build"
+	fi
+}
+
+pre_build_checks() {
+	local M=8192
+	# multiply requirements by 1.3 if we are doing x86-multilib
+	if use amd64; then
+		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
+	fi
+	M=$(( $(usex clippy 128 0) + ${M} ))
+	M=$(( $(usex miri 128 0) + ${M} ))
+	M=$(( $(usex rustfmt 256 0) + ${M} ))
+	# add 2G if we compile llvm and 256M per llvm_target
+	if ! use system-llvm; then
+		M=$(( 2048 + ${M} ))
+		local ltarget
+		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
+			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
+		done
+	fi
+	M=$(( $(usex wasm 256 0) + ${M} ))
+	M=$(( $(usex debug 2 1) * ${M} ))
+	eshopts_push -s extglob
+	if is-flagq '-g?(gdb)?([1-9])'; then
+		M=$(( 15 * ${M} / 10 ))
+	fi
+	eshopts_pop
+	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
+	M=$(( $(usex doc 256 0) + ${M} ))
+	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
+}
+
+llvm_check_deps() {
+	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
+}
+
+# Is LLVM being linked against libc++?
+is_libcxx_linked() {
+	local code='#include <ciso646>
+#if defined(_LIBCPP_VERSION)
+	HAVE_LIBCXX
+#endif
+'
+	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
+	[[ ${out} == *HAVE_LIBCXX* ]]
+}
+
+pkg_pretend() {
+	pre_build_checks
+}
+
+pkg_setup() {
+	pre_build_checks
+	python-any-r1_pkg_setup
+
+	export LIBGIT2_NO_PKG_CONFIG=1 #749381
+	if tc-is-cross-compiler; then
+		export PKG_CONFIG_ALLOW_CROSS=1
+		export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
+		export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
+		export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
+
+		use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
+		use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
+		local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
+		use "llvm_targets_${cross_llvm_target}" || \
+			die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
+	fi
+
+	use system-bootstrap && bootstrap_rust_version_check
+
+	if use system-llvm; then
+		llvm_pkg_setup
+
+		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+		export LLVM_LINK_SHARED=1
+		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
+	fi
+}
+
+esetup_unwind_hack() {
+	# https://bugs.gentoo.org/870280
+	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
+	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
+	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
+	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
+	local fakelib="${T}/fakelib"
+	mkdir -p "${fakelib}" || die
+	# we need both symlinks, one for cargo runtime, other for linker.
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
+	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
+	export LD_LIBRARY_PATH="${fakelib}"
+	export RUSTFLAGS+=" -L${fakelib}"
+	# this is a literally magic variable that gets through cargo cache, without it some
+	# crates ignore RUSTFLAGS.
+	# this variable can not contain leading space.
+	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
+}
+
+src_prepare() {
+	eapply_crate vendor/openssl-sys-0.9.92 "${FILESDIR}"/1.72.0-libressl-openssl-sys.patch
+	eapply_crate vendor/openssl-sys-0.9.102 "${FILESDIR}"/1.79.0-libressl-openssl-sys.patch
+	# Clear vendor checksums for crates that we patched to bump libc.
+	# NOTE: refresh this on each bump.
+	#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
+	#	terminal_size tracing-tree; do
+	#	clear_vendor_checksums "${i}"
+	#done
+
+	if ! use system-bootstrap; then
+		has_version sys-devel/gcc || esetup_unwind_hack
+		local rust_stage0_root="${WORKDIR}"/rust-stage0
+		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
+
+		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
+			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
+	fi
+
+	default
+}
+
+src_configure() {
+	filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
+
+	local rust_target="" rust_targets="" arch_cflags
+
+	# Collect rust target names to compile standard libs for all ABIs.
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
+	done
+	if use wasm; then
+		rust_targets+=",\"wasm32-unknown-unknown\""
+		if use system-llvm; then
+			# un-hardcode rust-lld linker for this target
+			# https://bugs.gentoo.org/715348
+			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die
+		fi
+	fi
+	rust_targets="${rust_targets#,}"
+
+	# cargo and rustdoc are mandatory and should always be included
+	local tools='"cargo","rustdoc"'
+	use clippy && tools+=',"clippy"'
+	use miri && tools+=',"miri"'
+	use profiler && tools+=',"rust-demangler"'
+	use rustfmt && tools+=',"rustfmt"'
+	use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"'
+	use rust-src && tools+=',"src"'
+
+	local rust_stage0_root
+	if use system-bootstrap; then
+		local printsysroot
+		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
+		rust_stage0_root="${printsysroot}"
+	else
+		rust_stage0_root="${WORKDIR}"/rust-stage0
+	fi
+	# in case of prefix it will be already prefixed, as --print sysroot returns full path
+	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
+
+	rust_target="$(rust_abi)"
+	rust_build="$(rust_abi "${CBUILD}")"
+	rust_host="$(rust_abi "${CHOST}")"
+
+	local cm_btype="$(usex debug DEBUG RELEASE)"
+	cat <<- _EOF_ > "${S}"/config.toml
+		[llvm]
+		download-ci-llvm = false
+		optimize = $(toml_usex !debug)
+		release-debuginfo = $(toml_usex debug)
+		assertions = $(toml_usex debug)
+		ninja = true
+		targets = "${LLVM_TARGETS// /;}"
+		experimental-targets = ""
+		link-shared = $(toml_usex system-llvm)
+		$(if is_libcxx_linked; then
+			# https://bugs.gentoo.org/732632
+			echo "use-libcxx = true"
+			echo "static-libstdcpp = false"
+		fi)
+		$(case "${rust_target}" in
+			i586-*-linux-*)
+				# https://github.com/rust-lang/rust/issues/93059
+				echo 'cflags = "-fcf-protection=none"'
+				echo 'cxxflags = "-fcf-protection=none"'
+				echo 'ldflags = "-fcf-protection=none"'
+				;;
+			*)
+				;;
+		esac)
+		enable-warnings = false
+		[llvm.build-config]
+		CMAKE_VERBOSE_MAKEFILE = "ON"
+		$(if ! tc-is-cross-compiler; then
+			# When cross-compiling, LLVM is compiled twice, once for host and
+			# once for target.  Unfortunately, this build configuration applies
+			# to both, which means any flags applicable to one target but not
+			# the other will break.  Conditionally disable respecting user
+			# flags when cross-compiling.
+			echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\""
+			echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\""
+			echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
+			echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\""
+		fi)
+		[build]
+		build-stage = 2
+		test-stage = 2
+		build = "${rust_build}"
+		host = ["${rust_host}"]
+		target = [${rust_targets}]
+		cargo = "${rust_stage0_root}/bin/cargo"
+		rustc = "${rust_stage0_root}/bin/rustc"
+		rustfmt = "${rust_stage0_root}/bin/rustfmt"
+		docs = $(toml_usex doc)
+		compiler-docs = false
+		submodules = false
+		python = "${EPYTHON}"
+		locked-deps = true
+		vendor = true
+		extended = true
+		tools = [${tools}]
+		verbose = 2
+		sanitizers = false
+		profiler = $(toml_usex profiler)
+		cargo-native-static = false
+		[install]
+		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
+		sysconfdir = "etc"
+		docdir = "share/doc/rust"
+		bindir = "bin"
+		libdir = "lib"
+		mandir = "share/man"
+		[rust]
+		# https://github.com/rust-lang/rust/issues/54872
+		codegen-units-std = 1
+		optimize = true
+		debug = $(toml_usex debug)
+		debug-assertions = $(toml_usex debug)
+		debug-assertions-std = $(toml_usex debug)
+		debuginfo-level = $(usex debug 2 0)
+		debuginfo-level-rustc = $(usex debug 2 0)
+		debuginfo-level-std = $(usex debug 2 0)
+		debuginfo-level-tools = $(usex debug 2 0)
+		debuginfo-level-tests = 0
+		backtrace = true
+		incremental = false
+		$(if ! tc-is-cross-compiler; then
+			echo "default-linker = \"$(tc-getCC)\""
+		fi)
+		parallel-compiler = $(toml_usex parallel-compiler)
+		channel = "$(usex nightly nightly stable)"
+		description = "gentoo"
+		rpath = false
+		verbose-tests = true
+		optimize-tests = $(toml_usex !debug)
+		codegen-tests = true
+		dist-src = false
+		remap-debuginfo = true
+		lld = $(usex system-llvm false $(toml_usex wasm))
+		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
+		# https://github.com/rust-lang/rust/issues/74976
+		# https://github.com/rust-lang/rust/issues/76526
+		deny-warnings = $(usex wasm $(usex doc false true) true)
+		backtrace-on-ice = true
+		jemalloc = false
+		# See https://github.com/rust-lang/rust/issues/121124
+		lto = "$(usex lto thin off)"
+		[dist]
+		src-tarball = false
+		compression-formats = ["xz"]
+		compression-profile = "balanced"
+	_EOF_
+
+	for v in $(multilib_get_enabled_abi_pairs); do
+		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
+		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
+
+		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${rust_target}]
+			ar = "$(tc-getAR)"
+			cc = "$(tc-getCC)"
+			cxx = "$(tc-getCXX)"
+			linker = "$(tc-getCC)"
+			ranlib = "$(tc-getRANLIB)"
+			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
+		# but we patch it and set to false here as well
+		if use elibc_musl; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				crt-static = false
+				musl-root = "$($(tc-getCC) -print-sysroot)/usr"
+			_EOF_
+		fi
+	done
+	if use wasm; then
+		wasm_target="wasm32-unknown-unknown"
+		export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")"
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.wasm32-unknown-unknown]
+			linker = "$(usex system-llvm lld rust-lld)"
+			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
+			profiler = false
+		_EOF_
+	fi
+
+	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
+	# experimental cross support
+	# discussion: https://bugs.gentoo.org/679878
+	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
+	# it would be much better if we could split out stdlib
+	# complilation to separate ebuild and abuse CATEGORY to
+	# just install to /usr/lib/rustlib/<target>
+
+	# extra targets defined as a bash array
+	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
+	# best place would be /etc/portage/env/dev-lang/rust
+	# Example:
+	# RUST_CROSS_TARGETS=(
+	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
+	# )
+	# no extra hand holding is done, no target transformations, all
+	# values are passed as-is with just basic checks, so it's up to user to supply correct values
+	# valid rust targets can be obtained with
+	# 	rustc --print target-list
+	# matching cross toolchain has to be installed
+	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
+	# only gcc toolchains installed with crossdev are checked for now.
+
+	# BUG: we can't pass host flags to cross compiler, so just filter for now
+	# BUG: this should be more fine-grained.
+	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
+
+	local cross_target_spec
+	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
+		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
+		local cross_llvm_target="${cross_target_spec%%:*}"
+		# extracts toolchain triples, <rust-target>:<CTARGET>
+		local cross_triples="${cross_target_spec#*:}"
+		# extracts first element after before : separator
+		local cross_rust_target="${cross_triples%%:*}"
+		# extracts last element after : separator
+		local cross_toolchain="${cross_triples##*:}"
+		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
+		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
+
+		cat <<- _EOF_ >> "${S}"/config.toml
+			[target.${cross_rust_target}]
+			ar = "${cross_toolchain}-ar"
+			cc = "${cross_toolchain}-gcc"
+			cxx = "${cross_toolchain}-g++"
+			linker = "${cross_toolchain}-gcc"
+			ranlib = "${cross_toolchain}-ranlib"
+		_EOF_
+		if use system-llvm; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
+			_EOF_
+		fi
+		if [[ "${cross_toolchain}" == *-musl* ]]; then
+			cat <<- _EOF_ >> "${S}"/config.toml
+				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
+			_EOF_
+		fi
+
+		# append cross target to "normal" target list
+		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
+		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
+
+		rust_targets="${rust_targets},\"${cross_rust_target}\""
+		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
+
+		ewarn
+		ewarn "Enabled ${cross_rust_target} rust target"
+		ewarn "Using ${cross_toolchain} cross toolchain"
+		ewarn
+		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
+			ewarn "'sys-devel/binutils[multitarget]' is not installed"
+			ewarn "'strip' will be unable to strip cross libraries"
+			ewarn "cross targets will be installed with full debug information"
+			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
+			ewarn
+			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
+			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
+			ewarn
+		fi
+	done
+	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
+
+	einfo "Rust configured with the following flags:"
+	echo
+	echo RUSTFLAGS="\"${RUSTFLAGS}\""
+	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
+	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
+	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
+	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
+	env | grep "CFLAGS_.*"
+	echo
+	einfo "config.toml contents:"
+	cat "${S}"/config.toml || die
+	echo
+}
+
+src_compile() {
+	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+}
+
+src_test() {
+	# https://rustc-dev-guide.rust-lang.org/tests/intro.html
+
+	# those are basic and codegen tests.
+	local tests=(
+		codegen
+		codegen-units
+		compile-fail
+		incremental
+		mir-opt
+		pretty
+		run-make
+	)
+
+	# fails if llvm is not built with ALL targets.
+	# and known to fail with system llvm sometimes.
+	use system-llvm || tests+=( assembly )
+
+	# fragile/expensive/less important tests
+	# or tests that require extra builds
+	# TODO: instead of skipping, just make some nonfatal.
+	if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
+		tests+=(
+			rustdoc
+			rustdoc-js
+			rustdoc-js-std
+			rustdoc-ui
+			run-make-fulldeps
+			ui
+			ui-fulldeps
+		)
+	fi
+
+	local i failed=()
+	einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
+	for i in "${tests[@]}"; do
+		local t="src/test/${i}"
+		einfo "rust_src_test: running ${t}"
+		if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
+				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
+		then
+				failed+=( "${t}" )
+				eerror "rust_src_test: ${t} failed"
+		fi
+	done
+
+	if [[ ${#failed[@]} -ne 0 ]]; then
+		eerror "rust_src_test: failure summary: ${failed[@]}"
+		die "aborting due to test failures"
+	fi
+}
+
+src_install() {
+	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+
+	# bug #689562, #689160
+	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
+	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
+	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
+
+	local symlinks=(
+		cargo
+		rustc
+		rustdoc
+		rust-gdb
+		rust-gdbgui
+		rust-lldb
+	)
+
+	use clippy && symlinks+=( clippy-driver cargo-clippy )
+	use miri && symlinks+=( miri cargo-miri )
+	use profiler && symlinks+=( rust-demangler )
+	use rustfmt && symlinks+=( rustfmt cargo-fmt )
+	use rust-analyzer && symlinks+=( rust-analyzer )
+
+	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
+	local i
+	for i in "${symlinks[@]}"; do
+		# we need realpath on /usr/bin/* symlink return version-appended binary path.
+		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
+		# need to fix eselect-rust to remove this hack.
+		local ver_i="${i}-${PV}"
+		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
+			einfo "Installing ${i} symlink"
+			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
+		else
+			ewarn "${i} symlink requested, but source file not found"
+			ewarn "please report this"
+		fi
+		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
+	done
+
+	# symlinks to switch components to active rust in eselect
+	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
+	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
+	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
+	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
+	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
+
+	newenvd - "50${P}" <<-_EOF_
+		LDPATH="${EPREFIX}/usr/lib/rust/lib"
+		MANPATH="${EPREFIX}/usr/lib/rust/man"
+	_EOF_
+
+	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die
+	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
+
+	# note: eselect-rust adds EROOT to all paths below
+	cat <<-_EOF_ > "${T}/provider-${P}"
+		/usr/bin/cargo
+		/usr/bin/rustdoc
+		/usr/bin/rust-gdb
+		/usr/bin/rust-gdbgui
+		/usr/bin/rust-lldb
+		/usr/lib/rustlib
+		/usr/lib/rust/lib
+		/usr/lib/rust/libexec
+		/usr/lib/rust/man
+		/usr/share/doc/rust
+	_EOF_
+
+	if use clippy; then
+		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
+	fi
+	if use miri; then
+		echo /usr/bin/miri >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
+	fi
+	if use profiler; then
+		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
+	fi
+	if use rustfmt; then
+		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
+		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
+	fi
+	if use rust-analyzer; then
+		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
+	fi
+
+	insinto /etc/env.d/rust
+	doins "${T}/provider-${P}"
+
+	if use dist; then
+		"${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
+		insinto "/usr/lib/${PN}/${PV}/dist"
+		doins -r "${S}/build/dist/."
+	fi
+}
+
+pkg_postinst() {
+	eselect rust update
+
+	if has_version dev-debug/gdb || has_version dev-debug/lldb; then
+		elog "Rust installs a helper script for calling GDB and LLDB,"
+		elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
+	fi
+
+	if has_version app-editors/emacs; then
+		elog "install app-emacs/rust-mode to get emacs support for rust."
+	fi
+
+	if has_version app-editors/gvim || has_version app-editors/vim; then
+		elog "install app-vim/rust-vim to get vim support for rust."
+	fi
+}
+
+pkg_postrm() {
+	eselect rust cleanup
+}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2024-07-05  2:04 orbea
  0 siblings, 0 replies; 27+ messages in thread
From: orbea @ 2024-07-05  2:04 UTC (permalink / raw
  To: gentoo-commits

commit:     8cfa01fdc5e754854ffd028d1d71d75b4cfdef3a
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Thu Jul  4 16:23:29 2024 +0000
Commit:     orbea <orbea <AT> riseup <DOT> net>
CommitDate: Thu Jul  4 16:23:29 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=8cfa01fd

dev-lang/rust: sync ::gentoo

Signed-off-by: orbea <orbea <AT> riseup.net>

 dev-lang/rust/files/1.79.0-revert-8c40426.patch | 18 ++++++++++++++++++
 dev-lang/rust/rust-1.79.0.ebuild                |  1 +
 2 files changed, 19 insertions(+)

diff --git a/dev-lang/rust/files/1.79.0-revert-8c40426.patch b/dev-lang/rust/files/1.79.0-revert-8c40426.patch
new file mode 100644
index 0000000..583f400
--- /dev/null
+++ b/dev-lang/rust/files/1.79.0-revert-8c40426.patch
@@ -0,0 +1,18 @@
+This reverts commit 8c40426051a667673cdac9975f84cb6acd4e245f.
+
+https://bugs.gentoo.org/933382
+
+diff --git a/src/bootstrap/src/core/build_steps/llvm.rs b/src/bootstrap/src/core/build_steps/llvm.rs
+index d4473e24039..58f351d17fa 100644
+--- a/src/bootstrap/src/core/build_steps/llvm.rs
++++ b/src/bootstrap/src/core/build_steps/llvm.rs
+@@ -724,8 +724,7 @@ fn configure_cmake(
+             }
+         }
+         cfg.define("CMAKE_C_COMPILER", sanitize_cc(&cc))
+-            .define("CMAKE_CXX_COMPILER", sanitize_cc(&cxx))
+-            .define("CMAKE_ASM_COMPILER", sanitize_cc(&cc));
++            .define("CMAKE_CXX_COMPILER", sanitize_cc(&cxx));
+     }
+ 
+     cfg.build_arg("-j").build_arg(builder.jobs().to_string());

diff --git a/dev-lang/rust/rust-1.79.0.ebuild b/dev-lang/rust/rust-1.79.0.ebuild
index fd51f24..0e26ed2 100644
--- a/dev-lang/rust/rust-1.79.0.ebuild
+++ b/dev-lang/rust/rust-1.79.0.ebuild
@@ -170,6 +170,7 @@ PATCHES=(
 	#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch  # pending refresh
 	"${FILESDIR}"/1.78.0-ignore-broken-and-non-applicable-tests.patch
 	"${FILESDIR}"/1.67.0-doc-wasm.patch
+	"${FILESDIR}"/1.79.0-revert-8c40426.patch
 )
 
 clear_vendor_checksums() {


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/
@ 2024-09-18 16:28 orbea
  0 siblings, 0 replies; 27+ messages in thread
From: orbea @ 2024-09-18 16:28 UTC (permalink / raw
  To: gentoo-commits

commit:     6cf4c6e7281b3145afeb97c9ae1b61fd984867df
Author:     orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Wed Sep 18 16:27:28 2024 +0000
Commit:     orbea <orbea <AT> riseup <DOT> net>
CommitDate: Wed Sep 18 16:27:28 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=6cf4c6e7

dev-lang/rust: drop 1.71.0, 1.73.0, 1.76.0-r1, 1.78.0

Signed-off-by: orbea <orbea <AT> riseup.net>

 dev-lang/rust/Manifest                             |  92 ---
 .../files/1.71.0-fix-bashcomp-installation.patch   |  23 -
 dev-lang/rust/files/1.71.0-lint-docs-libpath.patch |  39 -
 dev-lang/rust/rust-1.71.0.ebuild                   | 759 -------------------
 dev-lang/rust/rust-1.73.0.ebuild                   | 769 --------------------
 dev-lang/rust/rust-1.76.0-r1.ebuild                | 797 --------------------
 dev-lang/rust/rust-1.78.0.ebuild                   | 799 ---------------------
 7 files changed, 3278 deletions(-)

diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index 0fa5d30..73973e0 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -32,34 +32,6 @@ DIST rust-1.70.0-x86_64-unknown-linux-gnu.tar.xz 163456784 BLAKE2B 49a8397a7129a
 DIST rust-1.70.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e5fae8b3c87f54b39d922fe0c7694e0ba115ae34a668cc873390fc9e4638baaff5b6d1b4c67228c6bfc57b4da9bf77d6a452ca12bf6653d5610895b8ba19d64d SHA512 352749df741287107b966fd603113c51e82a426a7151e224e3a8d1cc7bd4658ef86147f6fce62caccd7b5779d9961be72cbb618db79a2850e8a8c4b0bc229ad3
 DIST rust-1.70.0-x86_64-unknown-linux-musl.tar.xz 233692884 BLAKE2B 295e815bbee6dc135ad17dd78801999afa7880a7a8f5ad4932a7580f1b03d50b850bcc3eb68e9d679e0a2d68392d446423ea752e47bb22d64823bf3222e0b377 SHA512 5e42224e109d525a321c107005660059ddcb0414392abc660b80fb09a55c936c79215989646be0aff6b0427b2f5d82a2a19ec3bd3235883a2037575808aeb69b
 DIST rust-1.70.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 7c5be81109607f191f339cfef87c736e2d35d4a045511036ee6e9bd68f22fbaae825ad5c463b0a5bf29606a8b9cf488172d1338aa4d034767b0f59243613c250 SHA512 241863164ee1a0d702080c9967e2ec5bb7af9222236316c8857b89b517fcbdc362b26ff3e362c4be7fd2989d3fd2aad0a0476feacecd2604855dfa53f5f1af27
-DIST rust-1.72.0-aarch64-unknown-linux-gnu.tar.xz 212153292 BLAKE2B 2896fb7c195bfb0b1b8313c390458c86e18986e2c1fcd973380e26ed78ea955c20c37475c9788fe9b23435020393fd8408566091c2974ba439b86f3b34676100 SHA512 7843b39ac259267c276834c66bb139f0548e5ee2dd1bf9e3830b07cf687e15f4b27f343dc13ff155bd86c8f0580f7f16576bb6731b782447fd0f0511f8c75e95
-DIST rust-1.72.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B aa8b2eac07010a0e564d6681831f99e3379ab5a2520c3fc29cc67803afdcb8952b596b653d8bd8e15305f1ce5b9c97ec611a3d3e8f4f3ab2dd2dd066c0401218 SHA512 308f82d5acdd18469b751d97d89617502ba554e6dfe72cc38cbcda0abb5705dc667f0c18a69aa1260143cfb4a93ce7c77726a917ab2060f7cd7d4a071387fc28
-DIST rust-1.72.0-aarch64-unknown-linux-musl.tar.xz 195414824 BLAKE2B 0bcd33b23ab927c36d2fe4eeca98edf421824d1ac9d88593bfd29476c8faec6fd7deddf0e6efad38faa0000986b234c7f5aed8d15eab9ca37569a434ddfddbf3 SHA512 7ab0adfabe9e5e3226add9fcc34445fecf9bea270cacf5e87c13edfa240c2b26f34cf035386ccd9b8c1edcbd74285d903d3dd7a96f6f1a928f4f60c6e619324d
-DIST rust-1.72.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 243c5108f2f56f742d589a3d510758c7377e5ff2625e1414f6cf5340c111780ad6397305fb01d28af50a9484662777c70328f9b2f490f3e2e3f934a4ff133604 SHA512 49289ccbc79f022d23eaa9d4d9e551365be6cd348e23f01ac099e103cc6cd2508b30494057e181a8246d7c9fe1d7fefb6ff473608e3d8835d098ad6c00dc02a5
-DIST rust-1.72.0-arm-unknown-linux-gnueabi.tar.xz 175875544 BLAKE2B 20dc09b8e2cc48a7a52f184baac30c523cd180524b178a91a72c6b7bc91e8ce0fe3e4d2605b1f9b5aa1535daf29a8e92328bd919a9f5913002086726f5e6d8b7 SHA512 2b8da66ec7575fe4e77d34247cbd91b376f5f00039c02855964883fe0e3610c47f087ff3486b36181ab7724dcecec78762636c9c9fd17a2e9410bee5f7efc84f
-DIST rust-1.72.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 8a5cbed0df91a723f3c96b612c2eeb2580073fc895467a051b714b8d29956caee3199422686ebdeec6f38c8b0b05e5ef7a79f4a5ba92d77ed500ffcc4e3532f9 SHA512 a3259d475ad2722319a15ebcdc5c5c7a74b38813d7ee2de5d1d69e7ddcb9cd2bd3144655df73e1f5736262de5166d444a4aa9ec638ab4e2228de0e5b91fc46e0
-DIST rust-1.72.0-arm-unknown-linux-gnueabihf.tar.xz 176030324 BLAKE2B 8285f86700cd5dfb7ad2bdd70fc58a5222e64d7bb70aa51984001ce379b4fc7117e90faba1c3465357a27691231aab1c601f9b603418fb2004a4b2a8ed74a083 SHA512 9f810fd926b7d425c14ae40f8e47f59609fb18618ff4b16f26cc42904f9797a9633852a6747c2a7ecc130adada08ded4c99565a53d563b17ad04350d15145666
-DIST rust-1.72.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 6465556de7829ac1c02fc8cf6f9f394d87d8af9326710c100f24de5cdca62c3a6dcb831177d98d9b060a6e4338985513072f3430418e4378c1988509d8f10528 SHA512 3a85a1a7111fc86a5974700de196f716c6cef0436a7bbf791be7ec5eed3252ae654d48f60c5056e5d5000196b34d7cd32d821670677363aa9a94200ff269d6d7
-DIST rust-1.72.0-armv7-unknown-linux-gnueabihf.tar.xz 180272644 BLAKE2B e3c1d8cfdb4a3ed8e445ea1814d62f1d072de67f0c217908c7cdbffb30614cabcf8582e393a62ac43624e0d131bde1c51426ca04d9dfbbec265887b674863b83 SHA512 36f7d44e52668e4e67700834d0614d7f37f3b7219eecd1008ff9660f79226a011bac75402ecd43ae12ef5479d2e2187b10691057c188fc5046cb79138bf6e521
-DIST rust-1.72.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 09ed6107a45ffc61a80dd2ef21a286d184f0a2c8c57a8c0e41fa1eca786941cef06b66b5035eefade29781912118ff1da11a7f7fbb3ab3b4873d8cd2249e3f03 SHA512 7735c460247df0a6536561967090eeb5784a44d1a1cabbefd6d57a0afd74bbaeec96f65e206388f7958b32568997ecadaf83c9e75451986e70fb05167584bae4
-DIST rust-1.72.0-i686-unknown-linux-gnu.tar.xz 203434692 BLAKE2B 2affd5b42c664939ea0c15837baf51c9f315aa456c41e916300b45a3eb06c26995394d292380470442f0fd4b187fb58a1730ecbe9a4928837a7ccc0d59d8ed2b SHA512 fc8ed251d6c9888894b168506e5980cb9802b43485de5c9145d128257b1b60d363612115149f39cc13a9e18929422deb8285dd999abdcdb089d2318dec8ec606
-DIST rust-1.72.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 16048265dcb012b67fe9de44c11353a2506b314c45482721648358ee84dd500d13c30ab55e14f0cbc6837761924904355f02a0001a042819201c096965c8bc74 SHA512 5f16000c95372d9799787c3bb0f4d948cca18ab806e368ccee17d4bddb20352492906d54cd56fa3d50545374a70e42a893c37463baaccd1e612358a7c809a9e6
-DIST rust-1.72.0-loongarch64-unknown-linux-gnu.tar.xz 160819080 BLAKE2B 66b5f34f9dbbc633fc240a240d5b0555ac55c5cfddbadeb22168ab90be83410a75a9fbb154fd1aeec2ba8447ff76ed2984966c7352b46afb52fdb2eae82b02a1 SHA512 fdebcca89a65d5cfa6c9d65f89a34989af0b8c5c1396dc182ff6d4ce320111ae6b23c2e06786ebefd8dc40dc391342d38fed38a193daf0b42b6dac64cd79d36e
-DIST rust-1.72.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d7e483773ee6c105829d7b711904dd14194c9e69d6ad1271c45ff826d78cd23da3e8f5dfea688adb157a9c2697d3c36b1e88e7ee2789d571bc90e41701e46540 SHA512 0644e4d76dda08cd95bc45c5797252b26318841844f4d0baa49212c1121c773b64d2a4ea993c83d412e33433e604b1cbdb86ff60f8328cad2f5c741ebfc24a42
-DIST rust-1.72.0-powerpc-unknown-linux-gnu.tar.xz 175099316 BLAKE2B 7eaa2dc7816f63a9a4288d852b2ba7b3e13c5155f5f9a8a6ebb4a2d20f03e900b52054689958a07e7f52918835536ce92a117f8ffa014196040c3bf340d33b78 SHA512 f2e87a12a2d5146011fd9df5532df06b7a936c2ee4866b95d0d484099240df9aa13597877d8f1ef56537928b196dfb89d2b2084784ff9b2f86eb37407661bc4a
-DIST rust-1.72.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 681fae9a730a7f8006e30d05378ca518abd8514edbf69d82e6485f11a8a98f14c819f63618412fbb4c525a4b60367498d79c0b935f6be5c7b8a59f4e60775bfd SHA512 c4f5020297ff35043c1985e04ef5322b18283d1ee24a84cc29fef3f3e48e87612bece6ea5e86a5573b86133fb1cda7402aae98c897062b18d3ab71da48e3b68b
-DIST rust-1.72.0-powerpc64-unknown-linux-gnu.tar.xz 174927468 BLAKE2B 2b7c0d3b22a6b6b80f2f9771a6a6ef678575d94c2dd0dffcde0ab572507a09b663a5a4106f72865b57da37c9e710f75d38882fa0345a73f6f1498566a77e52de SHA512 c7b7f9c2b525c8ea1ec9f9c0090a8a4c098f5680b22b04b30ac86da29586b04d2a901498035ffdb94793b2732ee985c71137c63c1f7b938496568ce8b82d678f
-DIST rust-1.72.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 5b9a6805c0ca7af4931d47c9950358b896689b452b898f0ae5d21a4c4027c20c321ce6cb2b150ac3b2508ccf0a3a430124a44974cb011572a126594374e9c182 SHA512 239bb2ae442d2b7d970bcbab4bfca77e09ae17d2caf4a2cdcc231d1c9f1aceb4b98a050eb3f3fae3184c2b6f451d32cafdd0d1e11c2714e180f3e3769b9a1b42
-DIST rust-1.72.0-powerpc64le-unknown-linux-gnu.tar.xz 185829712 BLAKE2B 305af3179f7a66e6fd7b8886e9f86e4fd4d2d71654658f0804182bf7ba1a5da6c71903fd89e899eebb74ccae366ada580a7b4a33436b3b82af928ff5d081fce9 SHA512 2401d3490c1e3ec32d185f7f5886c355384ba2cf28c5d14ace0d2b8d14eb5c5cdf4c507c67c104849decc23bdeb7223a151214e11b67c2276dc8f795878c76cb
-DIST rust-1.72.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 10bd90f3e07d892adcc04d9ca43454a78a5e260dc0e90978ebd50d48aaab488466584180324970f790eb181165f2d3961c515225c95efa55ee3d53d4a8f831a8 SHA512 e72d4482171090bd1e801a94b7ddf7002555e37aea9e9543e3d7f263df938ff223c0980dbae4b56665ea42e2c352e94f0f18c418fad02cd68d3b6d7f087f4e7a
-DIST rust-1.72.0-riscv64gc-unknown-linux-gnu.tar.xz 167275368 BLAKE2B 0e77dadf640c0fae29f720458caffb3dfe1d9a6514526676e1da333098341eba20d2df9b191005e5d66e6396b9e12c25520692f862ad84c1fc91eb1a6a71c470 SHA512 157da3684962c3145206910627bebc9fc5f01fc8d7e56477bae2796bc8fafdcc504dcb77cbdcc96cb2288b0cb019452116df7740fae3a87b5274d103da7f3a41
-DIST rust-1.72.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e660968bd401882034d63884e60ddf0e50a42c1e17a517aaf153731a0d319d9de5c074381fd1e56b535e1a870afe2b17b7dbfbbef33463a6bf4ac0a78226abdd SHA512 87bb2b30710a4159d1b2b87dffd45be772dfaf58218459109c8279da21440ce423cf5ee28fee0281c3b2b9eb433880c0f63177b0b775027b15095c9b6ea99bd0
-DIST rust-1.72.0-s390x-unknown-linux-gnu.tar.xz 197718192 BLAKE2B 465815892d2c4c76978fb3f14fae021f95007f17e3b6937ac64f22432aed808e77eda6081f0918d7fd48e00364099ea147e21dd80ffe93600088d7d1b39ae9fb SHA512 5ba7b7fe39fdf9a542040807283ded3271e37a8576e387c7d5333936623f688192902686027e491a6c5405906102afc0dfd465fd4093956b88942d54e5974e45
-DIST rust-1.72.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B cdf0ee76397801ac561e39cddd1eb1ee94454ff52df8e117a35aec010d4534b1ec024e1e1981579924bd976a1a48bc1217c990adb307a2c4fdf618c85801cd0e SHA512 a333a1ecd37aedb9f32365396dcf69e235a3c084bdb34b656929ce38ad78b5a26092ece2b81380efb32544ba578a657615132c02c7f4491855c9ca90d77fb863
-DIST rust-1.72.0-x86_64-unknown-linux-gnu.tar.xz 163402880 BLAKE2B 0f498510f8bbaba4b36e9e1cdc8e1e0482b4f26bc7f42a600b3e3f2294490f230a87d955c4f79c53ce277163660752a39889456d743c74adb2659cde536e09bc SHA512 f02fc82181fe2665aa66ca4948b66abf031c9ca273bb11ba69d1e99bf5bd1707010c4baaa04d8c83e9e97e7bb60440e3562380077903a459f689ef5dbac3ff40
-DIST rust-1.72.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 51083330fef8b0e9f4fafe71e3a08891bec9be8e1c2e64ef37cba463e99c13f44639981c8aae6c86d50c6a23c4846a4f056535dbcbf39a2d9096615862feff87 SHA512 284b74f87e192451ba95cc423089d64334f43da8c221f45acb683a088e7dfd783c488c7ed3fe68619aff4c245271cdcf4b1b8c5f0bef1f8c3d3af0ca13d394c4
-DIST rust-1.72.0-x86_64-unknown-linux-musl.tar.xz 234831716 BLAKE2B 3ee1a5727ad120bcf173dcee3770e342f107777984b06782f5ae588a58e5da94ad4550b00c168ddbe84350605100558bc01e139763b5734cdea32545ee6ee41e SHA512 62d5967669164ce7e8b6815298d79380ca96cce5a6c8a67db84cd3d5fdb6825ba9d2a91d59c2185a93b1c26030ef017c63942dc7a363e742d0abf356bca6f1f5
-DIST rust-1.72.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B e04731dd5edfe93d17cb032d772917d49bd46f195738cefe2e685f42b9ba5148d120e8d71c627cae46a665235f14ac0b35aff58498ff92da7edfdc5d6e562773 SHA512 2ed245aa779c594f8d9cbcbf63e7c68165d600408a25288163ceebf78946210a36958a3df80c50b2006e11930e09ecec0eee233ff659a9d2ffc78c1b55d3b0fc
 DIST rust-1.73.0-aarch64-unknown-linux-gnu.tar.xz 216033148 BLAKE2B 78bac094c78d68102cd5ca6a7bc9ac8a51ecd3e14cc5c66fefca0a0597b5ba439c22d69a323a6e7cafdfec60cadf0672c91ca5f85065ac8d7913c83437ec0256 SHA512 58198ebecaa4652e0477eed6ad2c29524e7a3e991ed437775281ce526c8485b2a1a49c75ac6fd5bdcc6cb997cee4d1b4d82fba49c03ad38bcafa764f5a9bdfb1
 DIST rust-1.73.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B d4b85efab3aef10fd6940630ed3cbf6cca12961228482ce42cdbd4c0c185c55b9ccecb1ca386e7a5c02fa33b77685dc8e2d619ecdec0cb5afc7a01402be5a22e SHA512 b7392e301c00e2ee1be692e6b5a44fdadc4b442979bf8f09fe71f80d82b6f395d0505621ba8eb54fe6145812f7f9c0d2b278e474d6edde51a2318cf27f5080bc
 DIST rust-1.73.0-aarch64-unknown-linux-musl.tar.xz 197525740 BLAKE2B ed84c438426bb0fc9a5a320731ae448f242b70a764d67e46e53a37f0e76262a183886e83fb27166e030740a27e6a79ef1c8f50bfc4a2c9c5d915ee5fa74a251f SHA512 b1a3007217dbb771e459b92a2ce0efca3babb34e9901cd44006d7c8ca92f48f67bdb877d3ec4710c58ad1645da4830a52cc2062b6b5a9827b8d57d508f4029a6
@@ -116,34 +88,6 @@ DIST rust-1.74.0-x86_64-unknown-linux-gnu.tar.xz 155920616 BLAKE2B 6213da724e505
 DIST rust-1.74.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9d81f9c2861963a34b0bf9bb15a584db502d388b15f73ce98f78cae6bea0357403d9bd0e6f8ea427a9f4db5946ba7dbb4242e7fb4400b561b7431235f0dbe2d5 SHA512 e1e5e3850715379d30c557791a4eeba2bea090ac85e09a982579a703b2582eddfbc060e21420f418cb492e8d4abe87d5bd81b5acf6ee8bd17b80bb6e0f65b721
 DIST rust-1.74.0-x86_64-unknown-linux-musl.tar.xz 235589268 BLAKE2B d695695ebbb3bf0dea28b9d337f82d5828e6ee70cf7220c849a6008b32f2b590ff57ee35efd58d9a38cd17e0f77ac1187765e8fd6470e0ee2c6cf75f3e3f1489 SHA512 3a8d4cb87d1295b07f0ed48f6e01e69801be3c93744948ef0145217b0cb17581c11c618a07b72edb0945c2ffbe85c59ec1cfd99ef6a60c2e96486f9d5d04d38a
 DIST rust-1.74.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B 0ba1390f67b88fc694df26df22c99ae40f56ccdffb479d9228a17a153de965f8c31dfb4d2c65dad4819d42a0b66b96ff9d3e2c404848dd91141220fdce40710f SHA512 efc779bd0e6fb41297a67efdf731abe3857dace889be284d8ac1e6c239a35749185ad5ac3b82c3b2e55edab3f0e51754c8e53e07d207cf8b4b68ede20cdb8591
-DIST rust-1.75.0-aarch64-unknown-linux-gnu.tar.xz 215543948 BLAKE2B 6d5de2260e4720275bc8c0ce23865840886e27a3cc539ff90c7b8c3a9c04368f2c2a2955dd7c3fe2fe5471492a7ecdf4c2e5a749789a059ad8178a0d70dc32f1 SHA512 7ccd4d605c97cc5a7dfc443ecaee23b4d7c58b0e9673ebd0f9174a4a123639213eb85ed25f19479ea6a818859190e673e0479ee80235a7e35a2d971a636872be
-DIST rust-1.75.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B ee4d716d905f654932ef70d65c3e83c573d9076c447b4e5831d1dd657be407621890d7a9858fee1ca8ab869420edd267f71d73948abc5861315ed4dc0880d18c SHA512 007e9b45b3b3957a8da7d01c45c5cc7d2d49942dac39067038e74b414ff32e810fd902b8dc7f7563b18c565c782b4e701f23f6d1cea397959241d3cdfd6421fd
-DIST rust-1.75.0-aarch64-unknown-linux-musl.tar.xz 195703332 BLAKE2B a662f9402ede618e78c9899c9b01c2138b927286c0269e847ff4fd389a07029eaa4dd5242576457c8ed67b6b46eef26396d079d1dc2749884cb05334676435b9 SHA512 eceececb90e3c2fb19866e58619237b416777399c6212362bc09f784138df83edd9160dd29906ed928a50e0359b2d9471868b594d765d35c1c7d8d22760c4f1e
-DIST rust-1.75.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B c37dd733fdd13617f6c4be580631dc78e40684c4f47d1e90f575e8aa1c122b36c1fd7182773944cf8cd873c84299a484c9f50a48ff70c7cf54e4b5becb6355cf SHA512 5c35f04cc4a58cd29c1d6e9a5616937492f584fca29db099ed1d59442e76700b83583b1d41e7ce4815187c7092af2eb6f307a959e8b7a647818c9ebe84cf4c8a
-DIST rust-1.75.0-arm-unknown-linux-gnueabi.tar.xz 179835780 BLAKE2B c532fc00e99c6428947e5335efe73fb979e66fd8d52f60e9cac7040d253ef15543171f74c4841ad740d2d334c0b2305f59925e42420ea0658307ad434186a715 SHA512 9d2b398cf97ccf8b70a82c1d03322c1e432f9bd4885d8a42ec26d0d6d6095b783630d83b8a9287c77d8d57b7bc648410273460ed6339e9d254d1bcb81191a578
-DIST rust-1.75.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B 5ab700ba8898ab1211b20bf1d1a89bf3e4223eccad6b0e816b113254f7d44f23a03cb7fa9fe68386b0b18ca57d71f39b28b4328f072037058c301526d760b063 SHA512 12d5791f0c1d092b52862786ba6b80031607ed819568734d904e553bc24677b583c64e93cc0cd05fad2eddc7357b21c5d15ef68d720b0ab037c7787f2a47eea0
-DIST rust-1.75.0-arm-unknown-linux-gnueabihf.tar.xz 179907476 BLAKE2B 6ed49db0214fd8b35e4d184337b38dc8393f8baf2958bb62308125e6f8e2126f0aa19c8d44fed3475b7818b001447d69267504ab3c96136e257c37db5d2c2285 SHA512 61d555d9c33c8e1647338fdfe24fdfbb42e194ce4995939a58bda6c46f4b857a058e344e714b88435a7bdcc5ee4a086bbaa9c670bc01de45249ca8376ec47c80
-DIST rust-1.75.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 9d5ae3c83985aafdfd1dda6c1db4bf849b4ebaf91ca71ac7249cc8c89de2b3135e752c21850b20c45c5570bb188db1f8513e1df072ebbdd700c37b3ef5f22051 SHA512 6481cfbf21e108d440c8836963d752496eebdf6018b7439459ea079ca82fa05bfc0bd423594e3537c7b522dce05546e59c125eb0cb24ef4db13ed36413c2c1e3
-DIST rust-1.75.0-armv7-unknown-linux-gnueabihf.tar.xz 184210428 BLAKE2B ef329f05d143590d91cba77e7b9a90a977c316e9ae2d8593e7f0247a5db00ca0115c6d468da5394b36e6ce64b2716a51827f39fdc4a34dc16c9220bf5690f042 SHA512 77bfae1f170cd4b2e85a6cc0e02c6f9d621f386a4c0709a2e99c4383479f8979e067d0e92ee7d267150bbf36bc7134bc053afdff7dc0ad66f289aa182755b1d6
-DIST rust-1.75.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B d0a3ebb883641272211478bec1a8089929be0107b05b0f499d71f96515941f7d1e18870c8685f77ef2375251e6f1484f675bd04d5fc0d544854f15ba6402f0e6 SHA512 79e631dd0c44905732ee312486a7c8233440120abeaf40172172e9d5ef0c9687469bac2693ccc2aeb63030590167d88e0fb7d912663dbef655e54ee4cbe9a323
-DIST rust-1.75.0-i686-unknown-linux-gnu.tar.xz 209938900 BLAKE2B 0c9afda24a93f3f35dd779c08d65d6c2366c916a8a3ce6633cd5502bcdbbba537743d95b76daa29d0b4ed3a822915cd5516e864b911bf354e7436745d5a17021 SHA512 242775555d7d38d9aed83018f0d0f8f5f03347c07ee92751de445826c08bc66c24f8601d83eb79729d001d63e81a5b1e27dbb5fac724d80d49e6430685052ba5
-DIST rust-1.75.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9b7d778b75c2d0a6f43f48345cb4735a9d00d457a1b4d868f777eb16db040daf246459620ec478b0632ee0428e6215e5c39d819608ca800dd065b6e95b13a77d SHA512 f307db41c5e380dd023cfa3e91eda98dd1af8004d062fcaa759c4913464ee01abcf168f19a9fdbdda6dec7f718083f4765eb4296614de4c1fb6fa06144116297
-DIST rust-1.75.0-loongarch64-unknown-linux-gnu.tar.xz 160649540 BLAKE2B c96a90d28e6b71e2e5a5bea8f591e6b472f63bbcc59f181800e87d4400e647c8a18110ec50c7d6d10c8f460589386e1fbde6273ccbccea9373813c80f6612a2b SHA512 04b601e96e1fa6a7bc00c7d8463e7ad1fc4fb1bb46383e797189ecb972e23535ff864e5379c56fac400dcaf4c42923b8a5c4fd9aa08adb52bc1db8341f5254f1
-DIST rust-1.75.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 9da9a6da9b631e72484a3360d692860e98dc77b74e55cf24d6a6a271e9eaa4787ea2f30c38dba483b18890500704319c1dd34b185adf2cf6aee6730bda8d239f SHA512 d6e20fca261aa2c81c019fffe46c7708b58146f9488041419b84a381761a2cd27606d78fd0f6b5e5e79945e1dd76776d54c335ddb453172deab8bac2c3fdf904
-DIST rust-1.75.0-powerpc-unknown-linux-gnu.tar.xz 174918688 BLAKE2B ff7c03e23f8d21dd8f4e0ebaa958fb97ac7779459ad318304070da0c1d98d832200d20d9331f758a33d6131da387af830392e8b34c33c4d220ae49bc93d7c060 SHA512 7a836a7d2ba883388025693044e59af34b2c41a4ffe93def5ed161bf012fbcba7da81cb521217da142852da05503b18df9a965537ba6ba33ef92f52cada8b7d6
-DIST rust-1.75.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B aa30bfeea014f600b1e3c387476a28af619bd8d63f5b6f10801cc15ee42deca5ab34d3470ec4f07fdfe2b8548f580ff6a63a89c74e1c53c7ef8cd73ddfb69272 SHA512 7efb2c4540a4be9f712698e7a9a905462b2fec70ddd65b9a6ffd28119eb595514366451932c888abe1ffbf93aa8b05c33bb0560c47b478f5122bc87be1c3bd96
-DIST rust-1.75.0-powerpc64-unknown-linux-gnu.tar.xz 174640484 BLAKE2B 768ae78a073b1a7614594ec1f6c381d7a4a9b4be14e548cd5031ea011600755c1934c442795e05f95a720a38c155cd18be188cf7e4b6417d924edc9c2a9076aa SHA512 f83ee23aa8eb7a511984b096876cce60415943d729c77ef4b4cdf0b0f9f8088082058d10881d5866d81a0e94c8515b3966de5a41dc8916d75392650715a844c0
-DIST rust-1.75.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 2bcdf4419fbf491fedcb32a7b54bf2ceb2aaffe0319d9e15f7eb07997646e11283535c5b2024f2785398bbdcaf586aee0ada7128a47b9b8fbd8ffa9e7d0607b5 SHA512 89a0eb5762d49351cfbadcbe098243095a62d41381ea48ebe8a3bf322998c6a46a59ea30da29c03291738fb3d04cafb3c1f57ad1e9ffedd68b4bc1516fdef66f
-DIST rust-1.75.0-powerpc64le-unknown-linux-gnu.tar.xz 186507032 BLAKE2B 49bfbc50e087874b844a7292fefabc0df5217751e2391c44827baf3e83bc0e6a6ce9b392cca58c5b8df6f7f8503110609667fcd9b34e84122016fd0d8df29058 SHA512 536210c00f9cf4bcdcd5bac308954afa4a1e7145844914a5b614745a9023c04273a58ba4ef83214663d69a0a6fc941cd4011349d54e55d84bc090628a7624874
-DIST rust-1.75.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b7a48197f9159a6c5d46306808d4ebd17b492669745a941b5db380d76d5ca78095f4bf396804caf7b55bdf47d79b5e88fa2f74aad999306f586e62851d7de029 SHA512 27d86a35df7985a626b64ae7ec05b803a7ef5feefad476c3eddc2d89fad44fe4e520ab29bb27cac8be0a0f3aff7da85e45ae8fef15f2afceeed4962933869e0d
-DIST rust-1.75.0-riscv64gc-unknown-linux-gnu.tar.xz 179877936 BLAKE2B 210b84fe6b0729f52c2dde492b4408f33a7661ea9a40daeb1b2b312788f2c4dc80ce54ca72f08098e8575215e7fa7500694142c0448460bf8a82b2761c236290 SHA512 7cc11f07552cc50e78a2e90c0d0da1a62fb0547f56aa6facac4791ef81e7d62a2d66f3cd079cda91e0db1564c2931074ae40c8c142dc9cede1f9c374379fe49c
-DIST rust-1.75.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 8230c219c9cc22c93fc25f023729e87bf5e725f0613cc0a1a205a671c24beecc48997f824e128b56e4242369328666e355fb5e630cefa6339b39ddab61ca273f SHA512 75820f06aea67b3731777d5b7a0cb907a829b65dcabb4ce2fd55bff52837f6929239be6f8c6b303b86a352ecab16d38afde3ef9683cf7d5c4b4046231c9988c0
-DIST rust-1.75.0-s390x-unknown-linux-gnu.tar.xz 199359500 BLAKE2B fffc6c690c4ad8a9985ce8d2b3e6518787b474e47cf1d5a634f38b5d9d4017ac8f5f69206a9229298dd504d2ed2648dacd2d09a8512c008678033608231c2d7c SHA512 bae263c19a59347705959bf2d285420d2074836adcb92a74d2ec922be2ce2f8aff6f758509701a2136473301654bf528b7c1c2522fd7388f5669d1ed94324c50
-DIST rust-1.75.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 74cca56622367225f8326b60540c3738adb2ab12a5e320bc85b448e1cd2111983a0816188dd8767d2f20db0f9120d5d1bcc5393548f1a18c828a55f99e4c50e6 SHA512 00e0181fbf6ea1ba2035b368f3ea143f270f8a3c5e41e441593cf3cf072c31b3874146de8c2c51e3eef5c8f0ce8594132a39516d3f614d8d5f0863b546dfb746
-DIST rust-1.75.0-x86_64-unknown-linux-gnu.tar.xz 156249584 BLAKE2B e6ac90854f589c2fb15144bb4db07a9b05b72196febd07c9de223c74c05c2637c832505f1135faceed14fe8c8bcad0a5205005540faa2bdf0f42949d934107c5 SHA512 86d1a5686f826c8f43f876c4cef42e9483785a37b1aaead73dc64a1ff64e7a025a6771d2e642771c6c847d717c25c6bd2560a2b8b59516a55dece589580b2534
-DIST rust-1.75.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 6614cb3ef782c917e8f7fdc990c5b82e8fcffa71e075f10f9726f405ff566fd963bec64cde4dd7252d9d78e09a184b8ba22d15cc87662ad987cdd37c881d8288 SHA512 bfaeef4cd7643879991955fd33f4cdc4c34afb1202cb77c0736434fb735bd215d18d1a11c25f04a7f2514640858a36832e5805a5f85e92d8b7076aa18607ffc3
-DIST rust-1.75.0-x86_64-unknown-linux-musl.tar.xz 234151836 BLAKE2B 9461afbdf26dea19e118b35ea7ef1ee60c22f601501ae6a08950658598a74a6b3179cbdfd9dc4748a0c2485af721b371e5fb523f27e7d7d702f94b532a70437f SHA512 7d650a29c5d14023a3d7d606b7bac4be6ef7988a82525f02d7af9cf3895bb88284442b8042d27be69689f4bddaa5c5370ef7609d18849986860eafcdf89d2d69
-DIST rust-1.75.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B c222d0989518602c0ecde9d21dbca97e9e60d81083804d1d8b2c6bffc8114af78570fd384eb58e5dba1bf249b99300e7f3f4067c1a66c0cd9fac60443f56f751 SHA512 6f78913e34402cedb37f4a54491c65a8bfe79e535e4e40516f2381bc27783cc7655e9252e7701813578c8ffcaf6b301e61ad32917a475d4388fa472733b21b12
 DIST rust-1.76.0-aarch64-unknown-linux-gnu.tar.xz 217392212 BLAKE2B aa587d69b5acc389a8d1431875f10f6261bbedb259a9009092e663a345fb0ac0cf3ad3459ca549a496853b8d760c7fc56b797ee269bcd15d54bc735cd1100fbf SHA512 ad95566ca7597ef64a03f614cc20b9c8d9b2fe67f33141b817973fa160c2be978511509fee79bdbfc74c50076a607e8543ad5bb4b56723704df27b5573b8d606
 DIST rust-1.76.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 86834b999cb0ad9de02a32a79f801d28268c986c830ad3f16274cd4c404a4305267c90b677f7a8637f2de08c766ad3555945f77da181906358e3d51b35e258b1 SHA512 79c1b258267d6feaecba18648a7eb620a570c99fb75e422d0a5b946a66f3a5bf6d2b41dca89b4ae79feed704d498674f36de368e4b228b1e38e3499ac8cd4f21
 DIST rust-1.76.0-aarch64-unknown-linux-musl.tar.xz 197852572 BLAKE2B 93985909e049957f80d4a14842c85dd14e5eec6d74e4e439479f353b44b123947c782856de86555262829d755a344ad01a94c41e8852818e727fba74620e1d68 SHA512 1f36245932d3b9bab0b99604085d886d9fd2e575e896e1c28b1771ae916466c060f4d70486e47200d58947147eb5571b922e175b1a450a36388c3c95e6537655
@@ -172,34 +116,6 @@ DIST rust-1.76.0-x86_64-unknown-linux-gnu.tar.xz 159385660 BLAKE2B 0846999358aba
 DIST rust-1.76.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 88e6b124812b409372ee05e2872cb4dfacbc638f8e3b4fb0d5fa4ea63f4594333a9788732502f8bd41e34b5cbc404d7ac08e7690d095a6c37c80b0043dd2be88 SHA512 f7ddca81da468d5617f48240b6d3e8d7d09336ac58f515acd3a20f2d315468ba1d53508dd3264a088ffc0141cb3fbcd8d3c17379f9628270d39c7d44f7727291
 DIST rust-1.76.0-x86_64-unknown-linux-musl.tar.xz 237333892 BLAKE2B e95b92c68e3c2df49fa0d5d84e35f6575fb80571db290b5969441cc09b6c07dee6b2b887f41a2b1ff1e3c099cda2ce2a4a8c05afbcf9f4dc8acbaed5245b69e4 SHA512 04bbbb9a6891c3bb7a20845010029e6ca979548ff70324c08d3162ebc1fa3a84e8c7e2d453495edd34aba19b7a685f048d5047993103bbf221c88ea36350370c
 DIST rust-1.76.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B cd4334fecc17cf03b7333659393004fed4bb895f9b75f93520d1c3e3ee0ce4fcd17d75d748c4a35d31984215c7aec8904ebe3a4ad8bafcd625aef30688a473f7 SHA512 a458372b41c2833bdbd3d6678c35fc23397817b406c409d1ba5e19b4c6246072afff3f938f111382de56f7ff57e660c3eaf3fea0e54871d9af50b52a54f39e41
-DIST rust-1.77.0-aarch64-unknown-linux-gnu.tar.xz 214505028 BLAKE2B 125cad238e23c31373bfa7f02bd09eb35c3fb9425f517d1c74eb34b667fa1cf8a0e36b879ee1ab90c5ab95a8ea499f0a46ece894dc45cdcecc52831c9720b860 SHA512 aa01ef526b8ddc84fc5fd1ef747d94c0a80250606fc9c871a52a6556989b86231ea0706139480b7579f4f817dd17171ad18edd6a6a73c5640aa5a20daec8c9ee
-DIST rust-1.77.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f6af9150b43c206e626b9bbb6d31a18b8d04b99f24ff131668045cfcd80a616302954e74f41397dd5772c761a7f8ce1a14c15f1da509d13d64ffde2684f9c3dd SHA512 cfa3d76d441ced70c9991aadfe144c12d56e6bc908882b84965ce1f13373c73199569b87609fd362a09484a95936151e036088def72061b78ea3c13ab36178fb
-DIST rust-1.77.0-aarch64-unknown-linux-musl.tar.xz 194482084 BLAKE2B b079e5c09c1c528b35451918ed03ec3788d0a8f5de099c3fe3aeaa815dd0a26e3106a2dc0c55462f752949e8ee50913e1cd1bf97235459ae5175847babd27d30 SHA512 6e3fe34512279138b15547e09fac8ccab49fc9a6e5c8faa010067c601aad284522dda67dcd5901bb153fbfa4b06e819be36e9a06b1061c702418b39f8f351fd2
-DIST rust-1.77.0-aarch64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B c4a523203247096500797238f7473b36c39017aaf1c231713cd2d87379f973a7a464e864952b8dc1575ad91ffc210ff2291f88b77db24ca3e5f18ecebdfc23da SHA512 6fc6655a4da63ebe56af5e34569ae74f3c7daec550249269d4499a7f6d116f01e722f29ac95cbd8c0df60c0135db03ae50436650e8c04ef2ea685344e1ad61e2
-DIST rust-1.77.0-arm-unknown-linux-gnueabi.tar.xz 179351340 BLAKE2B 51571532f1a5a70139acc91d17f6aa06537e32c60aedf5448ae73efbc5b028c54b098ba1c1820bd21ebc4b7fc8bfd35b786610074b7e8e86f2b4a561613c16fc SHA512 cd8de4f9f42d5c210334f7c1e110a9abd571ff6cee39d08582cffb89828fdb4d05cd83cb597f89b5fe2ef56571cae7c087cf5751f0a9ea4836b157e076537b5d
-DIST rust-1.77.0-arm-unknown-linux-gnueabi.tar.xz.asc 801 BLAKE2B dec3c7d773b61eca698a8efa9138bbd58341b48e391b5898ead2f6739a3e9088820ce8749b0a7016fc2092a7aad3db7bfbd778ee5b56847b6f98a9bf7251af9d SHA512 0a2b1a6eeac880dc3ded3ac28c31413b857bbd0bc68f87d7bb26936b00827d45a72d96d35ed69c6c981f4b9c2ea2d31aef9c82bedb0ab557176246f327f162a5
-DIST rust-1.77.0-arm-unknown-linux-gnueabihf.tar.xz 179479060 BLAKE2B e3a6b29b916a39233e8ae4f6b190479adc19184776f3961373e54d14cd2732ce3561cb08061520c6161c62222b7d2be2027fd826722aef4b128e26c00165ab20 SHA512 695553505af721af3d6d6341230906a707301c41d491118ff3e1c64a9f7e648c6480f8b9c0e786ce3266f2ece266e0805681bc2c23c7bb12ed2a7347b384cba2
-DIST rust-1.77.0-arm-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 6f456f02b2af2b972dda67a5be9af53576878fe6e434d3385cabb6f6a62728682ed6fa5493dbb8629a861b25b8f722efaaeaeaad5ee20dee55a2567ac6003406 SHA512 a9f97671077b24043aa21b242112e86036ac8acedc719d0e87860a909d734d109db138e5bb7dd8ed2735662bf63ef2310bb8277b280bfa918dbf6c0bf69ee3a1
-DIST rust-1.77.0-armv7-unknown-linux-gnueabihf.tar.xz 181508844 BLAKE2B 78305dd8cb11538c3c5de3883dbae2a7fc08470f940f786fb4e8b5125f57ea119d19cfb11fa55b6ff67fe3c5a03757c10cee6baeae229bbbbcd85f265ebcac85 SHA512 42ac807befa5a56244e892eced3e6771f9bf2cb4cf5df28dc00581916bf655840bf4685c1499fb0a9fbeb40160836f8ec2959526d32b872845f72ce48de93a5f
-DIST rust-1.77.0-armv7-unknown-linux-gnueabihf.tar.xz.asc 801 BLAKE2B 39a3ff2c0b7088ccb7c16c87f3abed37cb9d4ca8f48c77f6c2964b28d7a1eec4df09ae5f19fa6a2abd636436f3886b7097edf90d2f7cbf0ba0fa93a2dcf37a28 SHA512 83bde08a5b5f34afec0e4b0ad6c58e7d485a0729743a67e0ca09cf475cae194b549c05e1af0667dcaeb8a6e3807e2b20ffe8e7bf7272187ab9da0093278d61be
-DIST rust-1.77.0-i686-unknown-linux-gnu.tar.xz 209041428 BLAKE2B 83c5329fdb91f14d0083115209359aa1fba0425e9746cd07f76bf820d7b13c339279f39f0c05d1d2e2049c9acad9a48b4d93c97fb26593bf66d95e9434d1a6fa SHA512 8b546847afcc0860e3617df5006633d7c12adfc7f985ad5c0c2b5a83b9f47e9ad3b0c1917a66d313a4bf370d37e959129a807e957f4cda95efe2ce03d5acefbc
-DIST rust-1.77.0-i686-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B f7955963b450f3db22d62bf9cebec16ee2eb2ea32f13b377b240b7d7bdd54da590bbd5d69ae1df02b3dc4f35a35724d41004cc2b23e5f0001b609f086e8028a3 SHA512 927de4072f4d5c461131b1b4f5a1573d96d4da1a2b23060bf375bd5da00fb962e9eab6094f3677f9f8bb7270b54c30a0c5404fc18b2641407b34740583a7402e
-DIST rust-1.77.0-loongarch64-unknown-linux-gnu.tar.xz 161969048 BLAKE2B 0eef0100389715b68def1a491918d0796cc4bb18a481bc8084a96ffb930f7018cea8fdd77e762fd1af18acd81f5fd666f48965e9b72f191588a0c4ed78c975d6 SHA512 8be1eba5615b29d9167e1ad49be301e277f2fc78c6779915dd25b3da395d3933f4ea2c0b4e17d848f580c813c26335285d20ca0c2f966d2248593f04bd8ef1ee
-DIST rust-1.77.0-loongarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e1463e570c719881b2394b5f92856cbeec33a5fd0dd326c97f6064b52ed1decc0b7d33ac3b3606754264faa67b6aeb718c1d3f8f7982ab6024acceecb9d0985e SHA512 03cc2bfdeec9c80128f7e7a5d5f0874df7eb9a22b5da19f9ca1a685a9c52830de5093b7b72c614839da14b7eb76ad3dbed92c233d6d9cf0dbccb458e1fed174a
-DIST rust-1.77.0-powerpc-unknown-linux-gnu.tar.xz 176187556 BLAKE2B acdb1d1f95591dfb167bd87a2b7390554f96d148f6df01c7a1254d590f79302a233e1561446bb8a7f344e6801506c183221bad431fe40b6e8e1854b920641b41 SHA512 baf226c192c5a6ee44d5c7e32f0d63d48b89fa43db1c9966d04d94bfb7a4bba3dc069719109a9c3cf601f6ef7b3d2c320e75cfded5916f6169f4c19a16665301
-DIST rust-1.77.0-powerpc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B e8053f9b897dbdba5b175c56ad9cb9c278e968c65cde4f8ccc4d15f1df9f26a2be3418040cc5a6cfd6984ce9b0b3703b98976944eb6523ba45a0fd45e6fc31c8 SHA512 d0a8b2e18e59e55819d64f5622a7fc7a15ebfe05d0946f23ee42dd6c75307e9c2f20541c5b344a3bd97e9e9d93b54d6a85ffd7c783492b9c46f819f91c68af61
-DIST rust-1.77.0-powerpc64-unknown-linux-gnu.tar.xz 176156772 BLAKE2B b5910f75e945f5ecebb988ef02485e3535e3f8d10f6c7acf3190c6dfe22e0125a637c8c4dcae3b6655ba0ec19f1ffa2f8ccca67d9fa3b2a8a8dc584e52d2eaac SHA512 403f1898930367a59a54c1a254cb991aa23e3bfccf9ed3da9c992877bab3b33806e374dd97cbf9650109dcecdb6b72e5f4c7fa664bf44d5880f8c75d3698f27d
-DIST rust-1.77.0-powerpc64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 3d96ad842e8e4189c2cceebe885ccdf3aaf986a3e7835cc02165a76d12fa2da1b3cba9bbf1213cd7cc68a95cc612b735e409d8cf23dd1f252c1d0ab72a09d756 SHA512 26b73b5ac0216b994ee887021dcd6c5562aadeddce8b227a064ae40a19bb80de7d1278c9192833e2d2ff227884524f742c49b52ad5b64e576d3f87d86f7be536
-DIST rust-1.77.0-powerpc64le-unknown-linux-gnu.tar.xz 187190912 BLAKE2B b203cf8e70a952e137f17d4dfd77bfa201970fa6a9d936b62cadaf4db1fcaa3e51f6a320351ca0bccd96bf6bd5e38f5f859080e7154f23bb277dde21969f562e SHA512 5a68cba4de547e7060d7be6260f450a328c0505be35f175f65435c83c13520b10b6d5e6aed3c52ae8b61215a4ba47cdc1bf9ceb2f454f3415d5115efbdc05bbc
-DIST rust-1.77.0-powerpc64le-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 7ddd306273a444bb238ef3f7eb9dc88c0f2895bce506e7708c56d31c252c91a20258d6d7fd609c76054872f1e983454d35b985b5dac6775a8e423d9fc5c3d3d4 SHA512 3c4df1c5bf1dbcbf127bb3615e307faabf252c40655bde6ec3afe3179e44629155fb3b549bf983ffc942c464462a601c08f66d6bfc93b033c61d3b69005005b4
-DIST rust-1.77.0-riscv64gc-unknown-linux-gnu.tar.xz 182245920 BLAKE2B 7365f2de5a6e5927536f8b03b2f9b1cd9605e515e4323b279f35ff9c940d23d4f7539abd1f9da25086b85e695e111440d0d1990ce933080385c750d61307bd7b SHA512 39a9d98cbbb1c0247e80a6ed3635833f0ae95e24f7e62286b7c76b2f8f4a06715e324872a67693c97eba7715f868db8af3652e809112c9621c30a1885dd1a029
-DIST rust-1.77.0-riscv64gc-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 08128f5df77ea42af1d48a40884e1c7f8f50b8cc16354b9b099694a017d243068c9cfb9a0e096b5147b58eb5e2f9283d0e2be4c607c75f8b110e2cf84eda74d6 SHA512 430fb9105a4bc16edc0b9c4a59d124e2891935f7970efa823461d86945bf163ecb043f72fa11453415642672162978ed4446beb71dad041c9ca48a9ae0440aa1
-DIST rust-1.77.0-s390x-unknown-linux-gnu.tar.xz 198606604 BLAKE2B c102856588697aa08f9c0e3095ef9d0e17df0931a3416ca7b0a0ef4a6182d1ce6367040f8ac19b19f1d0cee6c70b64cf6f653c44684fa137acf5d606db82f23b SHA512 0ba59b16309393945a73615ecf5d10d31d082ea3e21357267fce08c9ddcb64c0ba0da7595747577d400d6549df51d95798ecac43931ebc75f9d57d3107fca11b
-DIST rust-1.77.0-s390x-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 2574c4757e0b63c5cfe35a58ab2aa175f024de79abcf36e623ee7b925a528decb7f22df89d16ba20cbc1218a056c1c37b154b33d2dad223604cbd3222017919c SHA512 baabe009b58993fe5f62940c51c0811e9309d5a7f9d33819906241ec38ece45a3420a2ab80d972cb2cb184e965154e50feee85ff4719c3d10851fbc040f6f9a8
-DIST rust-1.77.0-x86_64-unknown-linux-gnu.tar.xz 158351120 BLAKE2B 454e8667ea8899cb915680c0c39e5f7831450604a11a3bc9b7d8a897ef6e723edd382c171f292b5e89a406c823735d86ce96d94d08fda53336f806f83b3fad79 SHA512 462df108a811aa628ebf20cd3ad88dcfedbbe4529929abf86e65cbf02d4157ec56c8b9c424b9b9f6930852ccc972fd9970ceea522eeceb79c6acf5cfb7cf08f5
-DIST rust-1.77.0-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B 627ab5e55ae8095b2dfd1559c798376a5e6efe751f3c7e74540c9dc1ad8d889fe6c4c2190914506829e50f2fd7de022584b9d3bc3c2aab4e8bf3126dc4306c31 SHA512 24ee5edfb675f7598366edd9390d7a6044830c31ba7c9bc729e987a5c9bbc8cc7a6beddaef7cc9b1718d0ef4dc5f6568e0ca1504a23d82328536dd478dc391e6
-DIST rust-1.77.0-x86_64-unknown-linux-musl.tar.xz 235071684 BLAKE2B 556a5c8aff20b1314dfc6c767adc9b4ac1a70a5976b49e4550247082eadb76622dfdab253ec853d38807990d7c9f46503060675187a589da91ae2f093d5be4c5 SHA512 073c8b4c92f3d6444ea4fd599281c262fdac7fd4589aee0a0f0ec8bae2e6a315578b2fb3ac768579946cf4bfd77b0e440bceb0d3523598cbda7fdb2ac59c98e1
-DIST rust-1.77.0-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B e049d7c7d25af1074420117b8a984ff585c85808e17b60285b4ae288216dc2ff3f6b08707157b5e9a7778abc312525e755b70fe38f1b0a23fbaeaa9a52305be4 SHA512 c9b54e5ee181dd217b36e258cc0e72c9acd17ccd4f99430ac4a473e898cb3a3cc16f79609e7233649bd8126119da1e2a99f6b7cbf8864dbae5b02746468ace06
 DIST rust-1.78.0-aarch64-unknown-linux-gnu.tar.xz 223523772 BLAKE2B 734416f447462f2778b74f12ffdda13374c95cc399e8728afbeb61b06c0db2e522e760a257d2ce26ce8190cb9c8292880bf02da52df04c3cf205841b95825767 SHA512 80adc842a56ac95d472dcd94aab199dbcfb3d3a5e7a8cb32b8334b038c58a66b8d4f3848ab62a3e799d7c35e6a32abb1f2738a784da8cfa3272ea299c528d5cd
 DIST rust-1.78.0-aarch64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B b6cf17229559a845cf63a22043b1ecb9d7e142b536d0fdb0b44f36f05fe1238096c48dd61becac58275d60401a4f0ce623fed9593290d1f659d31976bb0c42ab SHA512 d03a380d0481b4ec19cfd8026d262ed19b7f6f4f40287b0e23127460029b30c47336232a488dc8d19d22df98f356cbd62d7d44f4a3e1cabb6f575531be8916f7
 DIST rust-1.78.0-aarch64-unknown-linux-musl.tar.xz 204806408 BLAKE2B 08abcef8a38d2d1e463971613481806e897ad4aa48a6e3306c23cf7b906807c944809ec60647c5a80e80978cf8aa8bb1b8e990d69769f94f44022b0f764cead4 SHA512 4ec03b17e2f016fc5449431c4d81d113c12227e6e11553f9fb4fb61e4ba3ca4216aad776e7e3c1e88ac42b797c07f5daa23cac90c3eaebc6d360602f026f9dac
@@ -284,22 +200,14 @@ DIST rust-1.80.1-x86_64-unknown-linux-gnu.tar.xz 167553060 BLAKE2B abc6430cfbbea
 DIST rust-1.80.1-x86_64-unknown-linux-gnu.tar.xz.asc 801 BLAKE2B bb52100a14bfa2775ca7cab5cd0f9dbc489ec3b26a8687876c97b666435c44ce58d86fd9f11d4f4832e79c05fa3ddefd7157edc91a3da25ffeba07da61fbddf9 SHA512 08aad912e47341bff29ee1d1b52cd02df8e609747f7061e61ed6a401d798140a8587378aa992b0d52af955a44d2284eefa00f27a6e94b4ed561c06eed60ad6fe
 DIST rust-1.80.1-x86_64-unknown-linux-musl.tar.xz 248220632 BLAKE2B 7f0954379658df0a5cb0bb4bd49fdd1d216bfa5a200789124667d13ad97f0a5278f57e5b6278a969558c834de43a5d7e3f5ad3e331cc5a4c428dc097453a9394 SHA512 079cd3384c0b7f85d5fb2f02f27febe423ff533d71463097fbaa90449a955699fc25d8e4ae16489f7d7920c34c318c0f2e8185eeb9c6fd64c0851e4366c5eca2
 DIST rust-1.80.1-x86_64-unknown-linux-musl.tar.xz.asc 801 BLAKE2B bad9fdebe33c251b8802ecb0150a074e86becac00874137f793b1805bf36373903fbcfd4744b1086851fd1357c6c81262a7eb321685640d856dc2ee3a37917a7 SHA512 405de0a8676755a63a4fc1e61dd358960efc90e4fd2417cfb4311bfaab5a744397e1f751afbe6a9515c1d92626a79fc782272261eed2f72b37b88fd77a84d7c0
-DIST rustc-1.71.0-src.tar.xz 151962928 BLAKE2B da8d83cd6621947816630ae487efe7d087266c1352949cedbbd441ba7c7f7c7beb13b9470e66e2f3359c37a050d0e44d22481c418532d3ebb339a456ab092648 SHA512 2c93bafdd248563765a285add48ca77c1e4bad4d5431675ae6a5cdee4cfe7a41e6bcc880a489ca1069a307fd9a005f2d5f8e230dfc95b4a69152b4f9ca49ac44
-DIST rustc-1.71.0-src.tar.xz.asc 801 BLAKE2B e5ddc4b18a6caeeb63c5aed5b5d15989d086f408787d2e603e50e7b8548dc078683062627280fd2a0393bec01c314eb1cc59f9b0e3146abf07b8365a0b44c640 SHA512 cb1b208c8b2bfccf02c73c4246fb238edb0dd10e292c1ef781920964e54e40add3089d988769982c0ce06b719014685b1c37daa2d08b513d86ad73808f4ce3ac
 DIST rustc-1.71.1-src.tar.xz 151983068 BLAKE2B 3dfdbc246feb84a79ae94c2de978c5585ee06cf6b683d2245869b62e28f7c79f89cc589f5431537713bf088236a0b824acefc1b68e418e9eb72e1eea98054e3f SHA512 fd0e5a16bdbeb539184513583089e55f681cb772810df357b6b1464853f7022ac02edab3dd155b2262ed0047e2a25dea3808dd078dcdfce9d399384465009db4
 DIST rustc-1.71.1-src.tar.xz.asc 801 BLAKE2B a88c073a70552d73e2d7695eceabdaa478f34501b7271fabf7f4a09f3efa545181f34353e45776b05918e6aeba88adb02f9731454f7085a7abf1602fc6589983 SHA512 9dd0406cf22f1daa7fcfd015fc1c6f8d36586aa99bf14c1491ee464c1f892ab759feb83e8b55b64713170fb777fdbe038fb5fd01a59c911b6599223baaba0677
-DIST rustc-1.73.0-src.tar.xz 154319536 BLAKE2B 077bdedb36fdbc30db3c6331ac6014615eb79393ad42e38488d037ba38eaa6542467d39b2a14228d0bf6717110f915bf6fdcf0074c6293f413720cc748316eff SHA512 75c59680a82cb9d076b9434744a1c65908524ef769293952f5d9c5779d9a9c6fa4d9aa0c7e7d6b7566a21a50a27cd6ae452b5283a4d4606b2fa1acc24dfd8e0c
-DIST rustc-1.73.0-src.tar.xz.asc 801 BLAKE2B fac2f8652e9a103e8a678b30222e1a505671253827d1d092c4964230a535a85e21cedf00b70f108ac5cb2db961b50e482223e8eaa5b0d585777dd43d80c5931e SHA512 e80ef6280c50522a575f040610184fcf5f45444db2534c6a334e66a69f3338b43d8b34cf035685f28d0e8f006427bbe413611c49fe028c9f72810d74ccfab15e
 DIST rustc-1.74.1-src.tar.xz 155968724 BLAKE2B e05f2379ac94b286f85791a138e1928e5b5b5a7749f0981d82c40c2a12860f55bf96bb2f0e924e35a0f8b2447b13052d38adea909aaa3199105787bb5a4861b3 SHA512 14c7e7ed2f38ab60299d8c7d41d78f042b6b57ef822d577b5138e60bdde31cf141eccd4332a25bc5da3d58eb5313d63c1448b5dfe9e11b8055bb8ea133a9038d
 DIST rustc-1.74.1-src.tar.xz.asc 801 BLAKE2B ddf73175b164233babf31ca3a381b03e20c0f36d017c1d5f85d6ab11f0986d861ab23b11c061e6b2444ced70c3d6a494cc3de4ec86f0deb221a805491bd75420 SHA512 9a96ff9ba9a4e2af4e267b2ec126fc0675c78d0eb767703daa2f28491c3d85c2ab00fbd8584390bf658812ec6c4ab6c57e43b386db59fd505bd3134a8873a09e
 DIST rustc-1.75.0-src.tar.xz 159624388 BLAKE2B 8937b80585eddaa3e1f1ef948899d14a170308518c6fef9fe569560cdd870053776956743f796055f2119399b9ca6c0df12fedd789ae46324d071e5126c4e495 SHA512 7b0f25d91b1b5c317980fc88e059200bd43b56a70b445fbc72fb9b96e09775bfd3a98e9bd9d662af80f0ce3aef527c777ee82777e96ca876f47a972d63da8606
 DIST rustc-1.75.0-src.tar.xz.asc 801 BLAKE2B 434da96b1dc93a5aeed07f4961b087fdd15870e407283ecc00df08dbc1e9f6c65fe459b3a25d39ee55900d53ee583207098ecf3d63f5d6ea114ef0b8398b6a63 SHA512 a0e948553af77ca6e2daa82c69d79079ef7d4ec61957bdff99efd73748200d6c7caa9282daeb3fe3ef849d81a48e66a25336df4c7b6f62f975266aa8b9b93d3a
-DIST rustc-1.76.0-src.tar.xz 162267908 BLAKE2B 0cf726841a837d9906d82a6216e65edad1e3e4a798ccd1ca3824c2098d0c45473854b8bf183c6e9ca70ba095752e77c4f5ef575d98c07243d609857214175f5e SHA512 92e16cfdeb91bde341fe6c2774d92868275b07aa1d46d870ddc9291eadfe4ea9af93e06586fa7d6b8d60534903945cbbe706d354c90272712989c58d2bf174bf
-DIST rustc-1.76.0-src.tar.xz.asc 801 BLAKE2B eadb2f54fceb9c1ac60af72407a2957e37e1ba134a696675a1e9dcf23a2958b41d7f5aa1f75156e4843cefc387cdc9c909e364c3bfcabecc6bfbe262d9c6e8af SHA512 d35c010a5a129580746bcec5c0dad1b0bc1b7864a69505c7c0ccfad436fdfbdf33f87518965a09de187d6a70fb8867dc6a20037c648861031a17501577855120
 DIST rustc-1.77.1-src.tar.xz 162796048 BLAKE2B 18a9fd095808ba78bf50ec94f7fd4087a1033ec79750aa593bacf64219c77ef90c030d41a7d8bc43f7ec8eb30b316c225024be4aeb517100ff6723487f8bb282 SHA512 e057ae638e4c3e54fdb367d48f4b85458121cee0d0ee1ed72f346940b8acad2f16cd9cc8abc16fcf4a17bf244b3300bb56a7e7be3bd0c23b034692c983b84fe8
 DIST rustc-1.77.1-src.tar.xz.asc 801 BLAKE2B 175a551abdb970295d37a0797cf262ac43055a3cb75b23845dbb8696d04b7705b7a2908b82fcbce7cd7dec2e05c382d06622013b9d4aa19fab7f651f7e00bb73 SHA512 eb24976ae97d2980d4c547bcf27d815f4b98b8aa45441a7201a849ee37e0ef15671732c9916d33964b8e802a87ede758daaadf84901bd569527c8b6c48efff23
-DIST rustc-1.78.0-src.tar.xz 159181212 BLAKE2B dedae58e413689de258f852c988a9a91d4cf14c9525f2619ca6155006ddc9b2262c8141ff995e4fc6ecceec383470e50d2fa0952d933db9b3957ce5c5b96f62e SHA512 d2fb9881e28849d871fda71b1b51652be3839b3283f0d32163f258c5c707a9fb7b589da8dc03bca2fefee1abdd2b44a5f17e85d8c6df7bea119d1e8d22371941
-DIST rustc-1.78.0-src.tar.xz.asc 801 BLAKE2B a40b0eab4e9263694e79f21d92652402579f4a0587fa48b4043211bc645d4303f9af7629e9c8361938748163e99fa7cd04108156780f23f9c8600361785e834b SHA512 ef16c9eed79f36576517e9dd77b56aa767ae9dc745f5df1839e24b76084ac791b27926f3d608b41695ae6022aa10cbdd3650cad163f35037c60d3bd0427b3cbd
 DIST rustc-1.79.0-src.tar.xz 162359512 BLAKE2B 753c0e9c537644d1a12b4d38024c22952a19513791c3da6f955690c544e58964bacbdb579f94cd05910697fc31f77ed6553e5ad3b111bbdfebeea8d2a4fa19f5 SHA512 99d7f276292e5c270648473ff73e9888413a3325ef3a4d7a45f8ce77a42ac87996905f1d875888ce084b621f642017bc9e31a00da1439108dbe19b85d0eab085
 DIST rustc-1.79.0-src.tar.xz.asc 801 BLAKE2B 860283021f513f5d4c81ea1f8d9567f0a052cc53a1d51d7fd9a804a39b855e24e06ea4c73db53176c1cf846910147de6bbc26da35755f3d0d4b296503e691e64 SHA512 51eec85d71817fe21073502c1d18e44ce694dc11b1c181e82462b529a24a610c8e215e6f2640e8b6d80f028207a360e43354cafa863f49a12c547b4c5f52d7e7
 DIST rustc-1.80.1-src.tar.xz 199234944 BLAKE2B 39891362f2a4bc249f5d943e3ded48d2add9cd9c0ee3c085d7fbefbfbc784f1e029308d9486cd35a6c03b77243077dc1196c75980faeea0d4319cee057509b6a SHA512 3c746108a86eeb734c1a8c8f63ba1a45e2cb03a8cb553395a167d07dc3ce5d8d9ea365ddd95533b6952d915069b86cad7ad218d27861e0889f8e878136bd32ab

diff --git a/dev-lang/rust/files/1.71.0-fix-bashcomp-installation.patch b/dev-lang/rust/files/1.71.0-fix-bashcomp-installation.patch
deleted file mode 100644
index 14efbfc..0000000
--- a/dev-lang/rust/files/1.71.0-fix-bashcomp-installation.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-https://github.com/rust-lang/rust/pull/113579 which reverts the broken
-https://github.com/rust-lang/rust/pull/110906.
-From: ekusiadadus <ekusiadadus@gmail.com>
-Date: Wed, 12 Jul 2023 00:54:27 +0900
-Subject: [PATCH] Revert "fix: :bug: etc/bash_complettion -> src/etc/... to
- avoid copy error"
-
-This reverts commit 08ce68b6a6bad360e9c3611ad60cf6598401f878.
---- a/src/bootstrap/dist.rs
-+++ b/src/bootstrap/dist.rs
-@@ -1074,11 +1074,7 @@ impl Step for Cargo {
- 
-         tarball.add_file(&cargo, "bin", 0o755);
-         tarball.add_file(etc.join("_cargo"), "share/zsh/site-functions", 0o644);
--        tarball.add_renamed_file(
--            etc.join("cargo.bashcomp.sh"),
--            "src/etc/bash_completion.d",
--            "cargo",
--        );
-+        tarball.add_renamed_file(etc.join("cargo.bashcomp.sh"), "etc/bash_completion.d", "cargo");
-         tarball.add_dir(etc.join("man"), "share/man/man1");
-         tarball.add_legal_and_readme_to("share/doc/cargo");
- 

diff --git a/dev-lang/rust/files/1.71.0-lint-docs-libpath.patch b/dev-lang/rust/files/1.71.0-lint-docs-libpath.patch
deleted file mode 100644
index 27c6738..0000000
--- a/dev-lang/rust/files/1.71.0-lint-docs-libpath.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-https://bugs.gentoo.org/910595
-https://github.com/rust-lang/rust/issues/113678
-
-https://github.com/rust-lang/rust/commit/67b5990472e3cac643d8cf90f45fe42201ddec3c
-From: jyn <github@jyn.dev>
-Date: Mon, 10 Jul 2023 15:59:30 -0500
-Subject: [PATCH] Revert "Fix `x test lint-docs` when download-rustc is
- enabled"
-
-This was not the correct fix. The problem was two-fold:
-- `download-rustc` didn't respect `llvm.assertions`
-- `rust-dev` was missing a bump to `download-ci-llvm-stamp`
-
-The first is fixed in this PR and the latter was fixed a while ago. Revert this change to avoid breaking `rpath = false`.
---- a/src/tools/lint-docs/src/groups.rs
-+++ b/src/tools/lint-docs/src/groups.rs
-@@ -39,7 +39,6 @@ impl<'a> LintExtractor<'a> {
-     fn collect_groups(&self) -> Result<LintGroups, Box<dyn Error>> {
-         let mut result = BTreeMap::new();
-         let mut cmd = Command::new(self.rustc_path);
--        cmd.env_remove("LD_LIBRARY_PATH");
-         cmd.arg("-Whelp");
-         let output = cmd.output().map_err(|e| format!("failed to run command {:?}\n{}", cmd, e))?;
-         if !output.status.success() {
---- a/src/tools/lint-docs/src/lib.rs
-+++ b/src/tools/lint-docs/src/lib.rs
-@@ -403,12 +403,6 @@ impl<'a> LintExtractor<'a> {
-         fs::write(&tempfile, source)
-             .map_err(|e| format!("failed to write {}: {}", tempfile.display(), e))?;
-         let mut cmd = Command::new(self.rustc_path);
--        // NOTE: bootstrap sets `LD_LIBRARY_PATH` for building lint-docs itself.
--        // Unfortunately, lint-docs is a bootstrap tool while rustc is built from source,
--        // and sometimes the paths conflict. In particular, when using `download-rustc`,
--        // the LLVM versions can differ between `ci-llvm` and `ci-rustc-sysroot`.
--        // Unset LD_LIBRARY_PATH here so it doesn't interfere with running the compiler.
--        cmd.env_remove("LD_LIBRARY_PATH");
-         if options.contains(&"edition2015") {
-             cmd.arg("--edition=2015");
-         } else {

diff --git a/dev-lang/rust/rust-1.71.0.ebuild b/dev-lang/rust/rust-1.71.0.ebuild
deleted file mode 100644
index 5eed9ea..0000000
--- a/dev-lang/rust/rust-1.71.0.ebuild
+++ /dev/null
@@ -1,759 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..12} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Language empowering everyone to build reliable and efficient software"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# keep in sync with llvm ebuild of the same version as bundled one.
-ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai LoongArch Mips MSP430
-	NVPTX PowerPC RISCV Sparc SystemZ VE WebAssembly X86 XCore )
-ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
-LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
-
-LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4 UoI-NCSA"
-
-IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 16 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
-			wasm? ( sys-devel/lld:${_s} )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-"
-
-# to bootstrap we need at least exactly previous version, or same.
-# most of the time previous versions fail to bootstrap with newer
-# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
-# but it fails to bootstrap with 1.48.x
-# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-build/cmake-3.13.4
-		app-alternatives/ninja
-	)
-	test? ( dev-debug/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	system-llvm? (
-		${LLVM_DEPEND}
-		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
-	)
-	!system-llvm? (
-		!llvm-libunwind? (
-			elibc_musl? ( sys-libs/libunwind:= )
-		)
-	)
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rust-analyzer? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.71.0-fix-bashcomp-installation.patch
-	"${FILESDIR}"/1.71.0-lint-docs-libpath.patch
-	"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
-	"${FILESDIR}"/1.67.0-doc-wasm.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-eapply_crate() {
-	pushd "${1:?}" > /dev/null || die
-	local patch="${2:?}"
-	eapply "${patch}"
-	"${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die
-	popd > /dev/null || die
-}
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-# Is LLVM being linked against libc++?
-is_libcxx_linked() {
-	local code='#include <ciso646>
-#if defined(_LIBCPP_VERSION)
-	HAVE_LIBCXX
-#endif
-'
-	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
-	[[ ${out} == *HAVE_LIBCXX* ]]
-}
-
-pkg_pretend() {
-	pre_build_checks
-}
-
-pkg_setup() {
-	pre_build_checks
-	python-any-r1_pkg_setup
-
-	export LIBGIT2_NO_PKG_CONFIG=1 #749381
-
-	use system-bootstrap && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-esetup_unwind_hack() {
-	# https://bugs.gentoo.org/870280
-	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
-	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
-	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
-	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
-	local fakelib="${T}/fakelib"
-	mkdir -p "${fakelib}" || die
-	# we need both symlinks, one for cargo runtime, other for linker.
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
-	export LD_LIBRARY_PATH="${fakelib}"
-	export RUSTFLAGS+=" -L${fakelib}"
-	# this is a literally magic variable that gets through cargo cache, without it some
-	# crates ignore RUSTFLAGS.
-	# this variable can not contain leading space.
-	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
-}
-
-src_prepare() {
-	eapply_crate vendor/openssl-sys-0.9.85 "${FILESDIR}"/1.71.0-libressl-openssl-sys.patch
-	eapply_crate vendor/openssl-sys "${FILESDIR}"/1.71.0-libressl-openssl-sys.patch
-
-	if ! use system-bootstrap; then
-		has_version sys-devel/gcc || esetup_unwind_hack
-		local rust_stage0_root="${WORKDIR}"/rust-stage0
-		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
-
-		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
-			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	default
-}
-
-src_configure() {
-	filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
-
-	local rust_target="" rust_targets="" arch_cflags
-
-	# Collect rust target names to compile standard libs for all ABIs.
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
-	done
-	if use wasm; then
-		rust_targets+=",\"wasm32-unknown-unknown\""
-		if use system-llvm; then
-			# un-hardcode rust-lld linker for this target
-			# https://bugs.gentoo.org/715348
-			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
-		fi
-	fi
-	rust_targets="${rust_targets#,}"
-
-	# cargo and rustdoc are mandatory and should always be included
-	local tools='"cargo","rustdoc"'
-	use clippy && tools+=',"clippy"'
-	use miri && tools+=',"miri"'
-	use profiler && tools+=',"rust-demangler"'
-	use rustfmt && tools+=',"rustfmt"'
-	use rust-analyzer && tools+=',"rust-analyzer"'
-	use rust-src && tools+=',"src"'
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if is_libcxx_linked; then
-			# https://bugs.gentoo.org/732632
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		enable-warnings = false
-		[llvm.build-config]
-		CMAKE_VERBOSE_MAKEFILE = "ON"
-		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
-		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
-		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
-		[build]
-		build-stage = 2
-		test-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		lto = "$(usex lto fat off)"
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-		compression-profile = "balanced"
-	_EOF_
-
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
-		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
-
-		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${rust_target}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
-		# but we patch it and set to false here as well
-		if use elibc_musl; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				crt-static = false
-			_EOF_
-		fi
-	done
-	if use wasm; then
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.wasm32-unknown-unknown]
-			linker = "$(usex system-llvm lld rust-lld)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="\"${RUSTFLAGS}\""
-	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
-	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
-	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	env | grep "CFLAGS_.*"
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-src_compile() {
-	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-}
-
-src_test() {
-	# https://rustc-dev-guide.rust-lang.org/tests/intro.html
-
-	# those are basic and codegen tests.
-	local tests=(
-		codegen
-		codegen-units
-		compile-fail
-		incremental
-		mir-opt
-		pretty
-		run-make
-	)
-
-	# fails if llvm is not built with ALL targets.
-	# and known to fail with system llvm sometimes.
-	use system-llvm || tests+=( assembly )
-
-	# fragile/expensive/less important tests
-	# or tests that require extra builds
-	# TODO: instead of skipping, just make some nonfatal.
-	if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
-		tests+=(
-			rustdoc
-			rustdoc-js
-			rustdoc-js-std
-			rustdoc-ui
-			run-make-fulldeps
-			ui
-			ui-fulldeps
-		)
-	fi
-
-	local i failed=()
-	einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
-	for i in "${tests[@]}"; do
-		local t="src/test/${i}"
-		einfo "rust_src_test: running ${t}"
-		if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
-				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
-		then
-				failed+=( "${t}" )
-				eerror "rust_src_test: ${t} failed"
-		fi
-	done
-
-	if [[ ${#failed[@]} -ne 0 ]]; then
-		eerror "rust_src_test: failure summary: ${failed[@]}"
-		die "aborting due to test failures"
-	fi
-}
-
-src_install() {
-	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use rustfmt && symlinks+=( rustfmt cargo-fmt )
-	use rust-analyzer && symlinks+=( rust-analyzer )
-
-	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
-	local i
-	for i in "${symlinks[@]}"; do
-		# we need realpath on /usr/bin/* symlink return version-appended binary path.
-		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
-		# need to fix eselect-rust to remove this hack.
-		local ver_i="${i}-${PV}"
-		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
-			einfo "Installing ${i} symlink"
-			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
-		else
-			ewarn "${i} symlink requested, but source file not found"
-			ewarn "please report this"
-		fi
-		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
-	done
-
-	# symlinks to switch components to active rust in eselect
-	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
-	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use rustfmt; then
-		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
-	fi
-	if use rust-analyzer; then
-		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
-	fi
-
-	insinto /etc/env.d/rust
-	doins "${T}/provider-${P}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-pkg_postinst() {
-	eselect rust update
-
-	if has_version dev-debug/gdb || has_version dev-debug/lldb; then
-		elog "Rust installs a helper script for calling GDB and LLDB,"
-		elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
-	fi
-
-	if has_version app-editors/emacs; then
-		elog "install app-emacs/rust-mode to get emacs support for rust."
-	fi
-
-	if has_version app-editors/gvim || has_version app-editors/vim; then
-		elog "install app-vim/rust-vim to get vim support for rust."
-	fi
-}
-
-pkg_postrm() {
-	eselect rust cleanup
-}

diff --git a/dev-lang/rust/rust-1.73.0.ebuild b/dev-lang/rust/rust-1.73.0.ebuild
deleted file mode 100644
index 09877e3..0000000
--- a/dev-lang/rust/rust-1.73.0.ebuild
+++ /dev/null
@@ -1,769 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..12} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Language empowering everyone to build reliable and efficient software"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# keep in sync with llvm ebuild of the same version as bundled one.
-ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
-	LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE
-	WebAssembly X86 XCore Xtensa )
-ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
-LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
-
-LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
-
-IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 17 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
-			wasm? ( sys-devel/lld:${_s} )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-"
-
-# to bootstrap we need at least exactly previous version, or same.
-# most of the time previous versions fail to bootstrap with newer
-# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
-# but it fails to bootstrap with 1.48.x
-# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-build/cmake-3.13.4
-		app-alternatives/ninja
-	)
-	test? ( dev-debug/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	system-llvm? (
-		${LLVM_DEPEND}
-		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
-	)
-	!system-llvm? (
-		!llvm-libunwind? (
-			elibc_musl? ( sys-libs/libunwind:= )
-		)
-	)
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rust-analyzer? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch
-	"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.62.1-musl-dynamic-linking.patch
-	"${FILESDIR}"/1.67.0-doc-wasm.patch
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-clear_vendor_checksums() {
-	sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
-}
-
-eapply_crate() {
-	pushd "${1:?}" > /dev/null || die
-	local patch="${2:?}"
-	eapply "${patch}"
-	"${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die
-	popd > /dev/null || die
-}
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-# Is LLVM being linked against libc++?
-is_libcxx_linked() {
-	local code='#include <ciso646>
-#if defined(_LIBCPP_VERSION)
-	HAVE_LIBCXX
-#endif
-'
-	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
-	[[ ${out} == *HAVE_LIBCXX* ]]
-}
-
-pkg_pretend() {
-	pre_build_checks
-}
-
-pkg_setup() {
-	pre_build_checks
-	python-any-r1_pkg_setup
-
-	export LIBGIT2_NO_PKG_CONFIG=1 #749381
-
-	use system-bootstrap && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-esetup_unwind_hack() {
-	# https://bugs.gentoo.org/870280
-	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
-	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
-	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
-	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
-	local fakelib="${T}/fakelib"
-	mkdir -p "${fakelib}" || die
-	# we need both symlinks, one for cargo runtime, other for linker.
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
-	export LD_LIBRARY_PATH="${fakelib}"
-	export RUSTFLAGS+=" -L${fakelib}"
-	# this is a literally magic variable that gets through cargo cache, without it some
-	# crates ignore RUSTFLAGS.
-	# this variable can not contain leading space.
-	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
-}
-
-src_prepare() {
-	eapply_crate vendor/openssl-sys "${FILESDIR}"/1.72.0-libressl-openssl-sys.patch
-
-	# Clear vendor checksums for crates that we patched to bump libc.
-	for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
-		terminal_size tracing-tree; do
-		clear_vendor_checksums "${i}"
-	done
-
-	if ! use system-bootstrap; then
-		has_version sys-devel/gcc || esetup_unwind_hack
-		local rust_stage0_root="${WORKDIR}"/rust-stage0
-		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi)"
-
-		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
-			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	default
-}
-
-src_configure() {
-	filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
-
-	local rust_target="" rust_targets="" arch_cflags
-
-	# Collect rust target names to compile standard libs for all ABIs.
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
-	done
-	if use wasm; then
-		rust_targets+=",\"wasm32-unknown-unknown\""
-		if use system-llvm; then
-			# un-hardcode rust-lld linker for this target
-			# https://bugs.gentoo.org/715348
-			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/wasm_base.rs || die
-		fi
-	fi
-	rust_targets="${rust_targets#,}"
-
-	# cargo and rustdoc are mandatory and should always be included
-	local tools='"cargo","rustdoc"'
-	use clippy && tools+=',"clippy"'
-	use miri && tools+=',"miri"'
-	use profiler && tools+=',"rust-demangler"'
-	use rustfmt && tools+=',"rustfmt"'
-	use rust-analyzer && tools+=',"rust-analyzer"'
-	use rust-src && tools+=',"src"'
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if is_libcxx_linked; then
-			# https://bugs.gentoo.org/732632
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		enable-warnings = false
-		[llvm.build-config]
-		CMAKE_VERBOSE_MAKEFILE = "ON"
-		CMAKE_C_FLAGS_${cm_btype} = "${CFLAGS}"
-		CMAKE_CXX_FLAGS_${cm_btype} = "${CXXFLAGS}"
-		CMAKE_EXE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = "${LDFLAGS}"
-		CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = "${ARFLAGS}"
-		[build]
-		build-stage = 2
-		test-stage = 2
-		build = "${rust_target}"
-		host = ["${rust_target}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		default-linker = "$(tc-getCC)"
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		lto = "$(usex lto fat off)"
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-		compression-profile = "balanced"
-	_EOF_
-
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
-		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
-
-		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${rust_target}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
-		# but we patch it and set to false here as well
-		if use elibc_musl; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				crt-static = false
-			_EOF_
-		fi
-	done
-	if use wasm; then
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.wasm32-unknown-unknown]
-			linker = "$(usex system-llvm lld rust-lld)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="\"${RUSTFLAGS}\""
-	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
-	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
-	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	env | grep "CFLAGS_.*"
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-src_compile() {
-	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-}
-
-src_test() {
-	# https://rustc-dev-guide.rust-lang.org/tests/intro.html
-
-	# those are basic and codegen tests.
-	local tests=(
-		codegen
-		codegen-units
-		compile-fail
-		incremental
-		mir-opt
-		pretty
-		run-make
-	)
-
-	# fails if llvm is not built with ALL targets.
-	# and known to fail with system llvm sometimes.
-	use system-llvm || tests+=( assembly )
-
-	# fragile/expensive/less important tests
-	# or tests that require extra builds
-	# TODO: instead of skipping, just make some nonfatal.
-	if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
-		tests+=(
-			rustdoc
-			rustdoc-js
-			rustdoc-js-std
-			rustdoc-ui
-			run-make-fulldeps
-			ui
-			ui-fulldeps
-		)
-	fi
-
-	local i failed=()
-	einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
-	for i in "${tests[@]}"; do
-		local t="src/test/${i}"
-		einfo "rust_src_test: running ${t}"
-		if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
-				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
-		then
-				failed+=( "${t}" )
-				eerror "rust_src_test: ${t} failed"
-		fi
-	done
-
-	if [[ ${#failed[@]} -ne 0 ]]; then
-		eerror "rust_src_test: failure summary: ${failed[@]}"
-		die "aborting due to test failures"
-	fi
-}
-
-src_install() {
-	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use rustfmt && symlinks+=( rustfmt cargo-fmt )
-	use rust-analyzer && symlinks+=( rust-analyzer )
-
-	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
-	local i
-	for i in "${symlinks[@]}"; do
-		# we need realpath on /usr/bin/* symlink return version-appended binary path.
-		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
-		# need to fix eselect-rust to remove this hack.
-		local ver_i="${i}-${PV}"
-		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
-			einfo "Installing ${i} symlink"
-			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
-		else
-			ewarn "${i} symlink requested, but source file not found"
-			ewarn "please report this"
-		fi
-		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
-	done
-
-	# symlinks to switch components to active rust in eselect
-	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
-	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use rustfmt; then
-		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
-	fi
-	if use rust-analyzer; then
-		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
-	fi
-
-	insinto /etc/env.d/rust
-	doins "${T}/provider-${P}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-pkg_postinst() {
-	eselect rust update
-
-	if has_version dev-debug/gdb || has_version dev-debug/lldb; then
-		elog "Rust installs a helper script for calling GDB and LLDB,"
-		elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
-	fi
-
-	if has_version app-editors/emacs; then
-		elog "install app-emacs/rust-mode to get emacs support for rust."
-	fi
-
-	if has_version app-editors/gvim || has_version app-editors/vim; then
-		elog "install app-vim/rust-vim to get vim support for rust."
-	fi
-}
-
-pkg_postrm() {
-	eselect rust cleanup
-}

diff --git a/dev-lang/rust/rust-1.76.0-r1.ebuild b/dev-lang/rust/rust-1.76.0-r1.ebuild
deleted file mode 100644
index c21350f..0000000
--- a/dev-lang/rust/rust-1.76.0-r1.ebuild
+++ /dev/null
@@ -1,797 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..12} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Language empowering everyone to build reliable and efficient software"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# keep in sync with llvm ebuild of the same version as bundled one.
-ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
-	LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE
-	WebAssembly X86 XCore Xtensa )
-ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
-LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
-
-LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
-
-IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 17 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
-			wasm? ( sys-devel/lld:${_s} )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-"
-
-# to bootstrap we need at least exactly previous version, or same.
-# most of the time previous versions fail to bootstrap with newer
-# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
-# but it fails to bootstrap with 1.48.x
-# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-build/cmake-3.13.4
-		app-alternatives/ninja
-	)
-	test? ( dev-debug/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	system-llvm? (
-		${LLVM_DEPEND}
-		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
-	)
-	!system-llvm? (
-		!llvm-libunwind? (
-			elibc_musl? ( sys-libs/libunwind:= )
-		)
-	)
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rust-analyzer? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.75.0-musl-dynamic-linking.patch
-	"${FILESDIR}"/1.74.1-cross-compile-libz.patch
-	#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch  # pending refresh
-	"${FILESDIR}"/1.70.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.67.0-doc-wasm.patch
-	"${FILESDIR}"/1.75.0-handle-vendored-sources.patch  # remove for >=1.77.0
-	"${FILESDIR}"/1.76.0-loong-code-model.patch  # remove for >=1.78.0
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-clear_vendor_checksums() {
-	sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
-}
-
-eapply_crate() {
-	pushd "${1:?}" > /dev/null || die
-	local patch="${2:?}"
-	eapply "${patch}"
-	"${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die
-	popd > /dev/null || die
-}
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-# Is LLVM being linked against libc++?
-is_libcxx_linked() {
-	local code='#include <ciso646>
-#if defined(_LIBCPP_VERSION)
-	HAVE_LIBCXX
-#endif
-'
-	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
-	[[ ${out} == *HAVE_LIBCXX* ]]
-}
-
-pkg_pretend() {
-	pre_build_checks
-}
-
-pkg_setup() {
-	pre_build_checks
-	python-any-r1_pkg_setup
-
-	export LIBGIT2_NO_PKG_CONFIG=1 #749381
-	if tc-is-cross-compiler; then
-		export PKG_CONFIG_ALLOW_CROSS=1
-		export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
-		export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
-		export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
-
-		use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
-		use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
-		local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
-		use "llvm_targets_${cross_llvm_target}" || \
-			die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
-	fi
-
-	use system-bootstrap && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-esetup_unwind_hack() {
-	# https://bugs.gentoo.org/870280
-	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
-	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
-	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
-	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
-	local fakelib="${T}/fakelib"
-	mkdir -p "${fakelib}" || die
-	# we need both symlinks, one for cargo runtime, other for linker.
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
-	export LD_LIBRARY_PATH="${fakelib}"
-	export RUSTFLAGS+=" -L${fakelib}"
-	# this is a literally magic variable that gets through cargo cache, without it some
-	# crates ignore RUSTFLAGS.
-	# this variable can not contain leading space.
-	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
-}
-
-src_prepare() {
-	eapply_crate vendor/openssl-sys "${FILESDIR}"/1.72.0-libressl-openssl-sys.patch
-
-	# Clear vendor checksums for crates that we patched to bump libc.
-	# NOTE: refresh this on each bump.
-	#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
-	#	terminal_size tracing-tree; do
-	#	clear_vendor_checksums "${i}"
-	#done
-
-	if ! use system-bootstrap; then
-		has_version sys-devel/gcc || esetup_unwind_hack
-		local rust_stage0_root="${WORKDIR}"/rust-stage0
-		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
-
-		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
-			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	default
-}
-
-src_configure() {
-	filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
-
-	local rust_target="" rust_targets="" arch_cflags
-
-	# Collect rust target names to compile standard libs for all ABIs.
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
-	done
-	if use wasm; then
-		rust_targets+=",\"wasm32-unknown-unknown\""
-		if use system-llvm; then
-			# un-hardcode rust-lld linker for this target
-			# https://bugs.gentoo.org/715348
-			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die
-		fi
-	fi
-	rust_targets="${rust_targets#,}"
-
-	# cargo and rustdoc are mandatory and should always be included
-	local tools='"cargo","rustdoc"'
-	use clippy && tools+=',"clippy"'
-	use miri && tools+=',"miri"'
-	use profiler && tools+=',"rust-demangler"'
-	use rustfmt && tools+=',"rustfmt"'
-	use rust-analyzer && tools+=',"rust-analyzer"'
-	use rust-src && tools+=',"src"'
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-	rust_build="$(rust_abi "${CBUILD}")"
-	rust_host="$(rust_abi "${CHOST}")"
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if is_libcxx_linked; then
-			# https://bugs.gentoo.org/732632
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		enable-warnings = false
-		[llvm.build-config]
-		CMAKE_VERBOSE_MAKEFILE = "ON"
-		$(if ! tc-is-cross-compiler; then
-			# When cross-compiling, LLVM is compiled twice, once for host and
-			# once for target.  Unfortunately, this build configuration applies
-			# to both, which means any flags applicable to one target but not
-			# the other will break.  Conditionally disable respecting user
-			# flags when cross-compiling.
-			echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\""
-			echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\""
-			echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
-			echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
-			echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
-			echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\""
-		fi)
-		[build]
-		build-stage = 2
-		test-stage = 2
-		build = "${rust_build}"
-		host = ["${rust_host}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		$(if ! tc-is-cross-compiler; then
-			echo "default-linker = \"$(tc-getCC)\""
-		fi)
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		# See https://github.com/rust-lang/rust/issues/121124
-		lto = "$(usex lto thin off)"
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-		compression-profile = "balanced"
-	_EOF_
-
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
-		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
-
-		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${rust_target}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
-		# but we patch it and set to false here as well
-		if use elibc_musl; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				crt-static = false
-			_EOF_
-		fi
-	done
-	if use wasm; then
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.wasm32-unknown-unknown]
-			linker = "$(usex system-llvm lld rust-lld)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="\"${RUSTFLAGS}\""
-	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
-	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
-	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	env | grep "CFLAGS_.*"
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-src_compile() {
-	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-}
-
-src_test() {
-	# https://rustc-dev-guide.rust-lang.org/tests/intro.html
-
-	# those are basic and codegen tests.
-	local tests=(
-		codegen
-		codegen-units
-		compile-fail
-		incremental
-		mir-opt
-		pretty
-		run-make
-	)
-
-	# fails if llvm is not built with ALL targets.
-	# and known to fail with system llvm sometimes.
-	use system-llvm || tests+=( assembly )
-
-	# fragile/expensive/less important tests
-	# or tests that require extra builds
-	# TODO: instead of skipping, just make some nonfatal.
-	if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
-		tests+=(
-			rustdoc
-			rustdoc-js
-			rustdoc-js-std
-			rustdoc-ui
-			run-make-fulldeps
-			ui
-			ui-fulldeps
-		)
-	fi
-
-	local i failed=()
-	einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
-	for i in "${tests[@]}"; do
-		local t="src/test/${i}"
-		einfo "rust_src_test: running ${t}"
-		if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
-				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
-		then
-				failed+=( "${t}" )
-				eerror "rust_src_test: ${t} failed"
-		fi
-	done
-
-	if [[ ${#failed[@]} -ne 0 ]]; then
-		eerror "rust_src_test: failure summary: ${failed[@]}"
-		die "aborting due to test failures"
-	fi
-}
-
-src_install() {
-	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use rustfmt && symlinks+=( rustfmt cargo-fmt )
-	use rust-analyzer && symlinks+=( rust-analyzer )
-
-	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
-	local i
-	for i in "${symlinks[@]}"; do
-		# we need realpath on /usr/bin/* symlink return version-appended binary path.
-		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
-		# need to fix eselect-rust to remove this hack.
-		local ver_i="${i}-${PV}"
-		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
-			einfo "Installing ${i} symlink"
-			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
-		else
-			ewarn "${i} symlink requested, but source file not found"
-			ewarn "please report this"
-		fi
-		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
-	done
-
-	# symlinks to switch components to active rust in eselect
-	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
-	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use rustfmt; then
-		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
-	fi
-	if use rust-analyzer; then
-		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
-	fi
-
-	insinto /etc/env.d/rust
-	doins "${T}/provider-${P}"
-
-	if use dist; then
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-pkg_postinst() {
-	eselect rust update
-
-	if has_version dev-debug/gdb || has_version dev-debug/lldb; then
-		elog "Rust installs a helper script for calling GDB and LLDB,"
-		elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
-	fi
-
-	if has_version app-editors/emacs; then
-		elog "install app-emacs/rust-mode to get emacs support for rust."
-	fi
-
-	if has_version app-editors/gvim || has_version app-editors/vim; then
-		elog "install app-vim/rust-vim to get vim support for rust."
-	fi
-}
-
-pkg_postrm() {
-	eselect rust cleanup
-}

diff --git a/dev-lang/rust/rust-1.78.0.ebuild b/dev-lang/rust/rust-1.78.0.ebuild
deleted file mode 100644
index 5c80f7d..0000000
--- a/dev-lang/rust/rust-1.78.0.ebuild
+++ /dev/null
@@ -1,799 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit bash-completion-r1 check-reqs estack flag-o-matic llvm multiprocessing \
-	multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.xz -> rustc-${PV}-src.tar.xz"
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.xz"
-	KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
-fi
-
-RUST_STAGE0_VERSION="1.$(($(ver_cut 2) - 1)).0"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="https://www.rust-lang.org/"
-
-SRC_URI="
-	https://static.rust-lang.org/dist/${SRC}
-	verify-sig? ( https://static.rust-lang.org/dist/${SRC}.asc )
-	!system-bootstrap? ( $(rust_all_arch_uris rust-${RUST_STAGE0_VERSION}) )
-"
-
-# keep in sync with llvm ebuild of the same version as bundled one.
-ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
-	LoongArch M68k Mips MSP430 NVPTX PowerPC RISCV Sparc SPIRV SystemZ VE
-	WebAssembly X86 XCore Xtensa )
-ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
-LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
-
-LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
-
-IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind lto miri nightly parallel-compiler profiler rustfmt rust-analyzer rust-src system-bootstrap system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
-
-# Please keep the LLVM dependency block separate. Since LLVM is slotted,
-# we need to *really* make sure we're not pulling more than one slot
-# simultaneously.
-
-# How to use it:
-# List all the working slots in LLVM_VALID_SLOTS, newest first.
-LLVM_VALID_SLOTS=( 18 )
-LLVM_MAX_SLOT="${LLVM_VALID_SLOTS[0]}"
-
-# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
-# (-) usedep needed because we may build with older llvm without that target
-LLVM_DEPEND="|| ( "
-for _s in ${LLVM_VALID_SLOTS[@]}; do
-	LLVM_DEPEND+=" ( "
-	for _x in ${ALL_LLVM_TARGETS[@]}; do
-		LLVM_DEPEND+="
-			${_x}? ( sys-devel/llvm:${_s}[${_x}(-)] )
-			wasm? ( sys-devel/lld:${_s} )"
-	done
-	LLVM_DEPEND+=" )"
-done
-unset _s _x
-LLVM_DEPEND+=" )
-	<sys-devel/llvm-$(( LLVM_MAX_SLOT + 1 )):=
-"
-
-# to bootstrap we need at least exactly previous version, or same.
-# most of the time previous versions fail to bootstrap with newer
-# for example 1.47.x, requires at least 1.46.x, 1.47.x is ok,
-# but it fails to bootstrap with 1.48.x
-# https://github.com/rust-lang/rust/blob/${PV}/src/stage0.json
-RUST_DEP_PREV="$(ver_cut 1).$(($(ver_cut 2) - 1))*"
-RUST_DEP_CURR="$(ver_cut 1).$(ver_cut 2)*"
-BOOTSTRAP_DEPEND="||
-	(
-		=dev-lang/rust-"${RUST_DEP_PREV}"
-		=dev-lang/rust-bin-"${RUST_DEP_PREV}"
-		=dev-lang/rust-"${RUST_DEP_CURR}"
-		=dev-lang/rust-bin-"${RUST_DEP_CURR}"
-	)
-"
-
-BDEPEND="${PYTHON_DEPS}
-	app-eselect/eselect-rust
-	|| (
-		>=sys-devel/gcc-4.7
-		>=sys-devel/clang-3.5
-	)
-	system-bootstrap? ( ${BOOTSTRAP_DEPEND} )
-	!system-llvm? (
-		>=dev-build/cmake-3.13.4
-		app-alternatives/ninja
-	)
-	test? ( dev-debug/gdb )
-	verify-sig? ( sec-keys/openpgp-keys-rust )
-"
-
-DEPEND="
-	>=app-arch/xz-utils-5.2
-	net-misc/curl:=[http2,ssl]
-	sys-libs/zlib:=
-	dev-libs/openssl:0=
-	system-llvm? (
-		${LLVM_DEPEND}
-		llvm-libunwind? ( sys-libs/llvm-libunwind:= )
-	)
-	!system-llvm? (
-		!llvm-libunwind? (
-			elibc_musl? ( sys-libs/libunwind:= )
-		)
-	)
-"
-
-RDEPEND="${DEPEND}
-	app-eselect/eselect-rust
-	sys-apps/lsb-release
-"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
-	miri? ( nightly )
-	parallel-compiler? ( nightly )
-	rust-analyzer? ( rust-src )
-	test? ( ${ALL_LLVM_TARGETS[*]} )
-	wasm? ( llvm_targets_WebAssembly )
-	x86? ( cpu_flags_x86_sse2 )
-"
-
-# we don't use cmake.eclass, but can get a warning
-CMAKE_WARN_UNUSED_CLI=no
-
-QA_FLAGS_IGNORED="
-	usr/lib/${PN}/${PV}/bin/.*
-	usr/lib/${PN}/${PV}/libexec/.*
-	usr/lib/${PN}/${PV}/lib/lib.*.so
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_SONAME="
-	usr/lib/${PN}/${PV}/lib/lib.*.so.*
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
-"
-
-QA_PRESTRIPPED="
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/rust-llvm-dwp
-	usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/self-contained/crtn.o
-"
-
-# An rmeta file is custom binary format that contains the metadata for the crate.
-# rmeta files do not support linking, since they do not contain compiled object files.
-# so we can safely silence the warning for this QA check.
-QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
-
-S="${WORKDIR}/${MY_P}-src"
-
-# causes double bootstrap
-RESTRICT="test"
-
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
-
-PATCHES=(
-	"${FILESDIR}"/1.78.0-musl-dynamic-linking.patch
-	"${FILESDIR}"/1.74.1-cross-compile-libz.patch
-	#"${FILESDIR}"/1.72.0-bump-libc-deps-to-0.2.146.patch  # pending refresh
-	"${FILESDIR}"/1.78.0-ignore-broken-and-non-applicable-tests.patch
-	"${FILESDIR}"/1.67.0-doc-wasm.patch
-)
-
-clear_vendor_checksums() {
-	sed -i 's/\("files":{\)[^}]*/\1/' "vendor/${1}/.cargo-checksum.json" || die
-}
-
-eapply_crate() {
-	pushd "${1:?}" > /dev/null || die
-	local patch="${2:?}"
-	eapply "${patch}"
-	"${EPREFIX}"/bin/sh "${FILESDIR}"/rehash-crate.sh "${patch}" || die
-	popd > /dev/null || die
-}
-
-toml_usex() {
-	usex "${1}" true false
-}
-
-bootstrap_rust_version_check() {
-	# never call from pkg_pretend. eselect-rust may be not installed yet.
-	[[ ${MERGE_TYPE} == binary ]] && return
-	local rustc_wanted="$(ver_cut 1).$(($(ver_cut 2) - 1))"
-	local rustc_toonew="$(ver_cut 1).$(($(ver_cut 2) + 1))"
-	local rustc_version=( $(eselect --brief --root="${BROOT}" rust show 2>/dev/null) )
-	rustc_version=${rustc_version[0]#rust-bin-}
-	rustc_version=${rustc_version#rust-}
-
-	[[ -z "${rustc_version}" ]] && die "Failed to determine rust version, check 'eselect rust' output"
-
-	if ver_test "${rustc_version}" -lt "${rustc_wanted}" ; then
-		eerror "Rust >=${rustc_wanted} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too old"
-	elif ver_test "${rustc_version}" -ge "${rustc_toonew}" ; then
-		eerror "Rust <${rustc_toonew} is required"
-		eerror "please run 'eselect rust' and set correct rust version"
-		die "selected rust version is too new"
-	else
-		einfo "Using rust ${rustc_version} to build"
-	fi
-}
-
-pre_build_checks() {
-	local M=8192
-	# multiply requirements by 1.3 if we are doing x86-multilib
-	if use amd64; then
-		M=$(( $(usex abi_x86_32 13 10) * ${M} / 10 ))
-	fi
-	M=$(( $(usex clippy 128 0) + ${M} ))
-	M=$(( $(usex miri 128 0) + ${M} ))
-	M=$(( $(usex rustfmt 256 0) + ${M} ))
-	# add 2G if we compile llvm and 256M per llvm_target
-	if ! use system-llvm; then
-		M=$(( 2048 + ${M} ))
-		local ltarget
-		for ltarget in ${ALL_LLVM_TARGETS[@]}; do
-			M=$(( $(usex ${ltarget} 256 0) + ${M} ))
-		done
-	fi
-	M=$(( $(usex wasm 256 0) + ${M} ))
-	M=$(( $(usex debug 2 1) * ${M} ))
-	eshopts_push -s extglob
-	if is-flagq '-g?(gdb)?([1-9])'; then
-		M=$(( 15 * ${M} / 10 ))
-	fi
-	eshopts_pop
-	M=$(( $(usex system-bootstrap 0 1024) + ${M} ))
-	M=$(( $(usex doc 256 0) + ${M} ))
-	CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
-}
-
-llvm_check_deps() {
-	has_version -r "sys-devel/llvm:${LLVM_SLOT}[${LLVM_TARGET_USEDEPS// /,}]"
-}
-
-# Is LLVM being linked against libc++?
-is_libcxx_linked() {
-	local code='#include <ciso646>
-#if defined(_LIBCPP_VERSION)
-	HAVE_LIBCXX
-#endif
-'
-	local out=$($(tc-getCXX) ${CXXFLAGS} ${CPPFLAGS} -x c++ -E -P - <<<"${code}") || return 1
-	[[ ${out} == *HAVE_LIBCXX* ]]
-}
-
-pkg_pretend() {
-	pre_build_checks
-}
-
-pkg_setup() {
-	pre_build_checks
-	python-any-r1_pkg_setup
-
-	export LIBGIT2_NO_PKG_CONFIG=1 #749381
-	if tc-is-cross-compiler; then
-		export PKG_CONFIG_ALLOW_CROSS=1
-		export PKG_CONFIG_PATH="${ROOT}/usr/$(get_libdir)/pkgconfig"
-		export OPENSSL_INCLUDE_DIR="${ROOT}/usr/include"
-		export OPENSSL_LIB_DIR="${ROOT}/usr/$(get_libdir)"
-
-		use system-bootstrap || die "USE=system-bootstrap is required when cross-compiling"
-		use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
-		local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
-		use "llvm_targets_${cross_llvm_target}" || \
-			die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
-	fi
-
-	use system-bootstrap && bootstrap_rust_version_check
-
-	if use system-llvm; then
-		llvm_pkg_setup
-
-		local llvm_config="$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-		export LLVM_LINK_SHARED=1
-		export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
-	fi
-}
-
-esetup_unwind_hack() {
-	# https://bugs.gentoo.org/870280
-	# this is a hack needed to bootstrap with libgcc_s linked tarball on llvm-libunwind system.
-	# it should trigger for internal bootstrap or system-bootstrap with rust-bin.
-	# the whole idea is for stage0 to bootstrap with fake libgcc_s.
-	# final stage will receive -L${T}/lib but not -lgcc_s args, producing clean compiler.
-	local fakelib="${T}/fakelib"
-	mkdir -p "${fakelib}" || die
-	# we need both symlinks, one for cargo runtime, other for linker.
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so.1" || die
-	ln -s "${ESYSROOT}/usr/lib/libunwind.so" "${fakelib}/libgcc_s.so" || die
-	export LD_LIBRARY_PATH="${fakelib}"
-	export RUSTFLAGS+=" -L${fakelib}"
-	# this is a literally magic variable that gets through cargo cache, without it some
-	# crates ignore RUSTFLAGS.
-	# this variable can not contain leading space.
-	export MAGIC_EXTRA_RUSTFLAGS+="${MAGIC_EXTRA_RUSTFLAGS:+ }-L${fakelib}"
-}
-
-src_prepare() {
-	eapply_crate vendor/openssl-sys-0.9.92 "${FILESDIR}"/1.72.0-libressl-openssl-sys.patch
-	eapply_crate vendor/openssl-sys "${FILESDIR}"/1.77.1-libressl-openssl-sys.patch
-
-	# Clear vendor checksums for crates that we patched to bump libc.
-	# NOTE: refresh this on each bump.
-	#for i in addr2line-0.20.0 bstr cranelift-jit crossbeam-channel elasticlunr-rs handlebars icu_locid libffi \
-	#	terminal_size tracing-tree; do
-	#	clear_vendor_checksums "${i}"
-	#done
-
-	if ! use system-bootstrap; then
-		has_version sys-devel/gcc || esetup_unwind_hack
-		local rust_stage0_root="${WORKDIR}"/rust-stage0
-		local rust_stage0="rust-${RUST_STAGE0_VERSION}-$(rust_abi "${CBUILD}")"
-
-		"${WORKDIR}/${rust_stage0}"/install.sh --disable-ldconfig \
-			--without=rust-docs-json-preview,rust-docs --destdir="${rust_stage0_root}" --prefix=/ || die
-	fi
-
-	default
-}
-
-src_configure() {
-	filter-lto # https://bugs.gentoo.org/862109 https://bugs.gentoo.org/866231
-
-	local rust_target="" rust_targets="" arch_cflags
-
-	# Collect rust target names to compile standard libs for all ABIs.
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_targets+=",\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
-	done
-	if use wasm; then
-		rust_targets+=",\"wasm32-unknown-unknown\""
-		if use system-llvm; then
-			# un-hardcode rust-lld linker for this target
-			# https://bugs.gentoo.org/715348
-			sed -i '/linker:/ s/rust-lld/wasm-ld/' compiler/rustc_target/src/spec/base/wasm.rs || die
-		fi
-	fi
-	rust_targets="${rust_targets#,}"
-
-	# cargo and rustdoc are mandatory and should always be included
-	local tools='"cargo","rustdoc"'
-	use clippy && tools+=',"clippy"'
-	use miri && tools+=',"miri"'
-	use profiler && tools+=',"rust-demangler"'
-	use rustfmt && tools+=',"rustfmt"'
-	use rust-analyzer && tools+=',"rust-analyzer","rust-analyzer-proc-macro-srv"'
-	use rust-src && tools+=',"src"'
-
-	local rust_stage0_root
-	if use system-bootstrap; then
-		local printsysroot
-		printsysroot="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
-		rust_stage0_root="${printsysroot}"
-	else
-		rust_stage0_root="${WORKDIR}"/rust-stage0
-	fi
-	# in case of prefix it will be already prefixed, as --print sysroot returns full path
-	[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
-
-	rust_target="$(rust_abi)"
-	rust_build="$(rust_abi "${CBUILD}")"
-	rust_host="$(rust_abi "${CHOST}")"
-
-	local cm_btype="$(usex debug DEBUG RELEASE)"
-	cat <<- _EOF_ > "${S}"/config.toml
-		changelog-seen = 2
-		[llvm]
-		download-ci-llvm = false
-		optimize = $(toml_usex !debug)
-		release-debuginfo = $(toml_usex debug)
-		assertions = $(toml_usex debug)
-		ninja = true
-		targets = "${LLVM_TARGETS// /;}"
-		experimental-targets = ""
-		link-shared = $(toml_usex system-llvm)
-		$(if is_libcxx_linked; then
-			# https://bugs.gentoo.org/732632
-			echo "use-libcxx = true"
-			echo "static-libstdcpp = false"
-		fi)
-		$(case "${rust_target}" in
-			i586-*-linux-*)
-				# https://github.com/rust-lang/rust/issues/93059
-				echo 'cflags = "-fcf-protection=none"'
-				echo 'cxxflags = "-fcf-protection=none"'
-				echo 'ldflags = "-fcf-protection=none"'
-				;;
-			*)
-				;;
-		esac)
-		enable-warnings = false
-		[llvm.build-config]
-		CMAKE_VERBOSE_MAKEFILE = "ON"
-		$(if ! tc-is-cross-compiler; then
-			# When cross-compiling, LLVM is compiled twice, once for host and
-			# once for target.  Unfortunately, this build configuration applies
-			# to both, which means any flags applicable to one target but not
-			# the other will break.  Conditionally disable respecting user
-			# flags when cross-compiling.
-			echo "CMAKE_C_FLAGS_${cm_btype} = \"${CFLAGS}\""
-			echo "CMAKE_CXX_FLAGS_${cm_btype} = \"${CXXFLAGS}\""
-			echo "CMAKE_EXE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
-			echo "CMAKE_MODULE_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
-			echo "CMAKE_SHARED_LINKER_FLAGS_${cm_btype} = \"${LDFLAGS}\""
-			echo "CMAKE_STATIC_LINKER_FLAGS_${cm_btype} = \"${ARFLAGS}\""
-		fi)
-		[build]
-		build-stage = 2
-		test-stage = 2
-		build = "${rust_build}"
-		host = ["${rust_host}"]
-		target = [${rust_targets}]
-		cargo = "${rust_stage0_root}/bin/cargo"
-		rustc = "${rust_stage0_root}/bin/rustc"
-		rustfmt = "${rust_stage0_root}/bin/rustfmt"
-		docs = $(toml_usex doc)
-		compiler-docs = false
-		submodules = false
-		python = "${EPYTHON}"
-		locked-deps = true
-		vendor = true
-		extended = true
-		tools = [${tools}]
-		verbose = 2
-		sanitizers = false
-		profiler = $(toml_usex profiler)
-		cargo-native-static = false
-		[install]
-		prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
-		sysconfdir = "etc"
-		docdir = "share/doc/rust"
-		bindir = "bin"
-		libdir = "lib"
-		mandir = "share/man"
-		[rust]
-		# https://github.com/rust-lang/rust/issues/54872
-		codegen-units-std = 1
-		optimize = true
-		debug = $(toml_usex debug)
-		debug-assertions = $(toml_usex debug)
-		debug-assertions-std = $(toml_usex debug)
-		debuginfo-level = $(usex debug 2 0)
-		debuginfo-level-rustc = $(usex debug 2 0)
-		debuginfo-level-std = $(usex debug 2 0)
-		debuginfo-level-tools = $(usex debug 2 0)
-		debuginfo-level-tests = 0
-		backtrace = true
-		incremental = false
-		$(if ! tc-is-cross-compiler; then
-			echo "default-linker = \"$(tc-getCC)\""
-		fi)
-		parallel-compiler = $(toml_usex parallel-compiler)
-		channel = "$(usex nightly nightly stable)"
-		description = "gentoo"
-		rpath = false
-		verbose-tests = true
-		optimize-tests = $(toml_usex !debug)
-		codegen-tests = true
-		dist-src = false
-		remap-debuginfo = true
-		lld = $(usex system-llvm false $(toml_usex wasm))
-		# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
-		# https://github.com/rust-lang/rust/issues/74976
-		# https://github.com/rust-lang/rust/issues/76526
-		deny-warnings = $(usex wasm $(usex doc false true) true)
-		backtrace-on-ice = true
-		jemalloc = false
-		# See https://github.com/rust-lang/rust/issues/121124
-		lto = "$(usex lto thin off)"
-		[dist]
-		src-tarball = false
-		compression-formats = ["xz"]
-		compression-profile = "balanced"
-	_EOF_
-
-	for v in $(multilib_get_enabled_abi_pairs); do
-		rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
-		arch_cflags="$(get_abi_CFLAGS ${v##*.})"
-
-		export CFLAGS_${rust_target//-/_}="${arch_cflags}"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${rust_target}]
-			ar = "$(tc-getAR)"
-			cc = "$(tc-getCC)"
-			cxx = "$(tc-getCXX)"
-			linker = "$(tc-getCC)"
-			ranlib = "$(tc-getRANLIB)"
-			llvm-libunwind = "$(usex llvm-libunwind $(usex system-llvm system in-tree) no)"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		# by default librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
-		# but we patch it and set to false here as well
-		if use elibc_musl; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				crt-static = false
-			_EOF_
-		fi
-	done
-	if use wasm; then
-		wasm_target="wasm32-unknown-unknown"
-		export CFLAGS_${wasm_target//-/_}="$(filter-flags '-mcpu*' '-march*' '-mtune*'; echo "$CFLAGS")"
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.wasm32-unknown-unknown]
-			linker = "$(usex system-llvm lld rust-lld)"
-			# wasm target does not have profiler_builtins https://bugs.gentoo.org/848483
-			profiler = false
-		_EOF_
-	fi
-
-	if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
-	# experimental cross support
-	# discussion: https://bugs.gentoo.org/679878
-	# TODO: c*flags, clang, system-llvm, cargo.eclass target support
-	# it would be much better if we could split out stdlib
-	# complilation to separate ebuild and abuse CATEGORY to
-	# just install to /usr/lib/rustlib/<target>
-
-	# extra targets defined as a bash array
-	# spec format:  <LLVM target>:<rust-target>:<CTARGET>
-	# best place would be /etc/portage/env/dev-lang/rust
-	# Example:
-	# RUST_CROSS_TARGETS=(
-	#	"AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
-	# )
-	# no extra hand holding is done, no target transformations, all
-	# values are passed as-is with just basic checks, so it's up to user to supply correct values
-	# valid rust targets can be obtained with
-	# 	rustc --print target-list
-	# matching cross toolchain has to be installed
-	# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
-	# only gcc toolchains installed with crossdev are checked for now.
-
-	# BUG: we can't pass host flags to cross compiler, so just filter for now
-	# BUG: this should be more fine-grained.
-	filter-flags '-mcpu=*' '-march=*' '-mtune=*'
-
-	local cross_target_spec
-	for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
-		# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
-		local cross_llvm_target="${cross_target_spec%%:*}"
-		# extracts toolchain triples, <rust-target>:<CTARGET>
-		local cross_triples="${cross_target_spec#*:}"
-		# extracts first element after before : separator
-		local cross_rust_target="${cross_triples%%:*}"
-		# extracts last element after : separator
-		local cross_toolchain="${cross_triples##*:}"
-		use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
-		command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
-
-		cat <<- _EOF_ >> "${S}"/config.toml
-			[target.${cross_rust_target}]
-			ar = "${cross_toolchain}-ar"
-			cc = "${cross_toolchain}-gcc"
-			cxx = "${cross_toolchain}-g++"
-			linker = "${cross_toolchain}-gcc"
-			ranlib = "${cross_toolchain}-ranlib"
-		_EOF_
-		if use system-llvm; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				llvm-config = "$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin/llvm-config"
-			_EOF_
-		fi
-		if [[ "${cross_toolchain}" == *-musl* ]]; then
-			cat <<- _EOF_ >> "${S}"/config.toml
-				musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
-			_EOF_
-		fi
-
-		# append cross target to "normal" target list
-		# example 'target = ["powerpc64le-unknown-linux-gnu"]'
-		# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
-
-		rust_targets="${rust_targets},\"${cross_rust_target}\""
-		sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
-
-		ewarn
-		ewarn "Enabled ${cross_rust_target} rust target"
-		ewarn "Using ${cross_toolchain} cross toolchain"
-		ewarn
-		if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
-			ewarn "'sys-devel/binutils[multitarget]' is not installed"
-			ewarn "'strip' will be unable to strip cross libraries"
-			ewarn "cross targets will be installed with full debug information"
-			ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
-			ewarn
-			ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
-			ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
-			ewarn
-		fi
-	done
-	fi # I_KNOW_WHAT_I_AM_DOING_CROSS
-
-	einfo "Rust configured with the following flags:"
-	echo
-	echo RUSTFLAGS="\"${RUSTFLAGS}\""
-	echo RUSTFLAGS_BOOTSTRAP="\"${RUSTFLAGS_BOOTSTRAP}\""
-	echo RUSTFLAGS_NOT_BOOTSTRAP="\"${RUSTFLAGS_NOT_BOOTSTRAP}\""
-	echo MAGIC_EXTRA_RUSTFLAGS="\"${MAGIC_EXTRA_RUSTFLAGS}\""
-	env | grep "CARGO_TARGET_.*_RUSTFLAGS="
-	env | grep "CFLAGS_.*"
-	echo
-	einfo "config.toml contents:"
-	cat "${S}"/config.toml || die
-	echo
-}
-
-src_compile() {
-	RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-}
-
-src_test() {
-	# https://rustc-dev-guide.rust-lang.org/tests/intro.html
-
-	# those are basic and codegen tests.
-	local tests=(
-		codegen
-		codegen-units
-		compile-fail
-		incremental
-		mir-opt
-		pretty
-		run-make
-	)
-
-	# fails if llvm is not built with ALL targets.
-	# and known to fail with system llvm sometimes.
-	use system-llvm || tests+=( assembly )
-
-	# fragile/expensive/less important tests
-	# or tests that require extra builds
-	# TODO: instead of skipping, just make some nonfatal.
-	if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
-		tests+=(
-			rustdoc
-			rustdoc-js
-			rustdoc-js-std
-			rustdoc-ui
-			run-make-fulldeps
-			ui
-			ui-fulldeps
-		)
-	fi
-
-	local i failed=()
-	einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
-	for i in "${tests[@]}"; do
-		local t="src/test/${i}"
-		einfo "rust_src_test: running ${t}"
-		if ! RUST_BACKTRACE=1 "${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
-				-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
-		then
-				failed+=( "${t}" )
-				eerror "rust_src_test: ${t} failed"
-		fi
-	done
-
-	if [[ ${#failed[@]} -ne 0 ]]; then
-		eerror "rust_src_test: failure summary: ${failed[@]}"
-		die "aborting due to test failures"
-	fi
-}
-
-src_install() {
-	DESTDIR="${D}" "${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-
-	# bug #689562, #689160
-	rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
-	rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
-	newbashcomp src/tools/cargo/src/etc/cargo.bashcomp.sh cargo
-
-	local symlinks=(
-		cargo
-		rustc
-		rustdoc
-		rust-gdb
-		rust-gdbgui
-		rust-lldb
-	)
-
-	use clippy && symlinks+=( clippy-driver cargo-clippy )
-	use miri && symlinks+=( miri cargo-miri )
-	use profiler && symlinks+=( rust-demangler )
-	use rustfmt && symlinks+=( rustfmt cargo-fmt )
-	use rust-analyzer && symlinks+=( rust-analyzer )
-
-	einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
-	local i
-	for i in "${symlinks[@]}"; do
-		# we need realpath on /usr/bin/* symlink return version-appended binary path.
-		# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
-		# need to fix eselect-rust to remove this hack.
-		local ver_i="${i}-${PV}"
-		if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
-			einfo "Installing ${i} symlink"
-			ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
-		else
-			ewarn "${i} symlink requested, but source file not found"
-			ewarn "please report this"
-		fi
-		dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
-	done
-
-	# symlinks to switch components to active rust in eselect
-	dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
-	dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
-	dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
-	dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
-	dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
-
-	newenvd - "50${P}" <<-_EOF_
-		LDPATH="${EPREFIX}/usr/lib/rust/lib"
-		MANPATH="${EPREFIX}/usr/lib/rust/man"
-	_EOF_
-
-	rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/bin"/*.old || die
-	rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
-
-	# note: eselect-rust adds EROOT to all paths below
-	cat <<-_EOF_ > "${T}/provider-${P}"
-		/usr/bin/cargo
-		/usr/bin/rustdoc
-		/usr/bin/rust-gdb
-		/usr/bin/rust-gdbgui
-		/usr/bin/rust-lldb
-		/usr/lib/rustlib
-		/usr/lib/rust/lib
-		/usr/lib/rust/libexec
-		/usr/lib/rust/man
-		/usr/share/doc/rust
-	_EOF_
-
-	if use clippy; then
-		echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
-	fi
-	if use miri; then
-		echo /usr/bin/miri >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
-	fi
-	if use profiler; then
-		echo /usr/bin/rust-demangler >> "${T}/provider-${P}"
-	fi
-	if use rustfmt; then
-		echo /usr/bin/rustfmt >> "${T}/provider-${P}"
-		echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
-	fi
-	if use rust-analyzer; then
-		echo /usr/bin/rust-analyzer >> "${T}/provider-${P}"
-	fi
-
-	insinto /etc/env.d/rust
-	doins "${T}/provider-${P}"
-
-	if use dist; then
-		"${EPYTHON}" ./x.py dist -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
-		insinto "/usr/lib/${PN}/${PV}/dist"
-		doins -r "${S}/build/dist/."
-	fi
-}
-
-pkg_postinst() {
-	eselect rust update
-
-	if has_version dev-debug/gdb || has_version dev-debug/lldb; then
-		elog "Rust installs a helper script for calling GDB and LLDB,"
-		elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
-	fi
-
-	if has_version app-editors/emacs; then
-		elog "install app-emacs/rust-mode to get emacs support for rust."
-	fi
-
-	if has_version app-editors/gvim || has_version app-editors/vim; then
-		elog "install app-vim/rust-vim to get vim support for rust."
-	fi
-}
-
-pkg_postrm() {
-	eselect rust cleanup
-}


^ permalink raw reply related	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2024-09-18 16:28 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-12 23:16 [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/rust/files/, dev-lang/rust/ orbea
  -- strict thread matches above, loose matches on Subject: below --
2024-09-18 16:28 orbea
2024-07-05  2:04 orbea
2024-06-29  4:26 orbea
2024-06-02 21:17 orbea
2024-04-04 16:10 orbea
2024-02-12 23:16 orbea
2024-02-12 23:16 orbea
2023-10-09 14:00 orbea
2023-07-24 19:34 orbea
2023-06-05  0:15 orbea
2023-03-28 18:51 Quentin Retornaz
2023-02-12  2:59 Quentin Retornaz
2023-01-31 23:14 Quentin Retornaz
2022-11-15 21:18 Quentin Retornaz
2022-11-15 21:18 Quentin Retornaz
2022-10-07 21:11 Quentin Retornaz
2022-09-29 22:58 Quentin Retornaz
2022-09-24 20:10 Quentin Retornaz
2022-06-02  1:44 Quentin Retornaz
2022-06-02  1:44 Quentin Retornaz
2022-03-19 22:15 Quentin Retornaz
2022-01-15 19:13 Quentin Retornaz
2021-12-25 23:59 Quentin Retornaz
2021-08-20 23:56 Quentin Retornaz
2021-06-27  0:33 Quentin Retornaz
2019-02-20 19:12 Stefan Strogin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox