From c0917b6253f4883c60db40a3369b2fc5d2e08605 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Mon, 11 Nov 2024 16:21:58 +0100 Subject: [PATCH 1/4] hardcoded sandbox experiment --- Cargo.lock | 443 +++++++++++++++++++++++----------------------- src/main.rs | 2 + src/script/mod.rs | 28 ++- 3 files changed, 249 insertions(+), 224 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b322ea63..e6cc7064 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -58,9 +58,9 @@ checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" [[package]] name = "allocator-api2" -version = "0.2.21" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "android-tzdata" @@ -87,7 +87,7 @@ dependencies = [ "ratatui", "simdutf8", "smallvec", - "thiserror 1.0.69", + "thiserror 1.0.68", ] [[package]] @@ -147,9 +147,9 @@ checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" [[package]] name = "arbitrary" -version = "1.4.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +checksum = "775a8770d29db3dadcb858482cc240af7b2ffde4ac4de67d1d4955728103f0e2" dependencies = [ "derive_arbitrary", ] @@ -244,7 +244,7 @@ dependencies = [ "cfg-if", "pin-project", "rustix", - "thiserror 1.0.69", + "thiserror 1.0.68", "tokio", "windows-sys 0.52.0", ] @@ -262,9 +262,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.0" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ "async-lock", "cfg-if", @@ -373,8 +373,8 @@ dependencies = [ "itertools 0.13.0", "memmap2 0.9.5", "reqwest", - "reqwest-middleware", - "thiserror 1.0.69", + "reqwest-middleware 0.4.0", + "thiserror 1.0.68", "tokio", "tokio-stream", "tokio-util", @@ -391,7 +391,7 @@ dependencies = [ "crc32fast", "futures-lite", "pin-project", - "thiserror 1.0.69", + "thiserror 1.0.68", "tokio", "tokio-util", ] @@ -522,9 +522,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "serde", @@ -587,9 +587,9 @@ dependencies = [ [[package]] name = "cacache" -version = "13.1.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5063741c7b2e260bbede781cf4679632dd90e2718e99f7715e46824b65670b" +checksum = "a61ff12b19d89c752c213316b87fdb4a587f073d219b893cc56974b8c9f39bf7" dependencies = [ "digest", "either", @@ -606,7 +606,7 @@ dependencies = [ "sha2", "ssri", "tempfile", - "thiserror 1.0.69", + "thiserror 1.0.68", "tokio", "tokio-stream", "walkdir", @@ -644,9 +644,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.5" +version = "1.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" +checksum = "0f57c4b4da2a9d619dd035f27316d7a426305b75be93d09e92f2b9229c34feaf" dependencies = [ "jobserver", "libc", @@ -889,9 +889,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -907,9 +907,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.6" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -926,9 +926,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crossterm" @@ -974,9 +974,9 @@ dependencies = [ [[package]] name = "csv" -version = "1.3.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" dependencies = [ "csv-core", "itoa", @@ -1089,21 +1089,15 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.4.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +checksum = "d475dfebcb4854d596b17b09f477616f80f17a550517f2b3615d8c205d5c802b" dependencies = [ "proc-macro2", "quote", "syn", ] -[[package]] -name = "diff" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" - [[package]] name = "digest" version = "0.10.7" @@ -1276,12 +1270,12 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.10" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -1297,9 +1291,9 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.3" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ "event-listener", "pin-project-lite", @@ -1307,9 +1301,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.3.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "file_url" @@ -1369,9 +1363,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.4" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" [[package]] name = "foreign-types" @@ -1510,9 +1504,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.5.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" +checksum = "3f1fa2f9765705486b33fd2acf1577f8ec449c2ba1f318ae5447697b7c08d210" dependencies = [ "fastrand", "futures-core", @@ -1622,7 +1616,7 @@ dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.9", + "regex-automata 0.4.8", "regex-syntax 0.8.5", ] @@ -1652,7 +1646,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror 1.0.68", "time", "tokio", "tracing", @@ -1666,7 +1660,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04f945a208886a13d07636f38fb978da371d0abc3e34bad338124b9f8c135a8f" dependencies = [ "reqwest", - "thiserror 1.0.69", + "thiserror 1.0.68", "tokio", ] @@ -1681,9 +1675,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.7" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -1736,9 +1730,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" dependencies = [ "allocator-api2", "equivalent", @@ -1807,11 +1801,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.11" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -1872,9 +1866,9 @@ dependencies = [ [[package]] name = "http-content-range" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91314cc9d86f625097a3365cab4e4b6f190eac231650f8f41c1edd8080cea1d0" +checksum = "b4aa8e0a9f1496d70bdd43b1e30ff373857c952609ad64b89f50569cfb8cbfca" [[package]] name = "http-serde" @@ -1909,9 +1903,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "1.5.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ "bytes", "futures-channel", @@ -1929,9 +1923,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.5" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http", @@ -2159,7 +2153,7 @@ dependencies = [ "globset", "log", "memchr", - "regex-automata 0.4.9", + "regex-automata 0.4.8", "same-file", "walkdir", "winapi-util", @@ -2202,7 +2196,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.15.1", "serde", ] @@ -2251,14 +2245,10 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.5" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "898e106451f7335950c9cc64f8ec67b5f65698679ac67ed00619aeef14e1cf75" +checksum = "b23a0c8dfe501baac4adf6ebbfa6eddf8f0c07f56b058cc1288017e32397846c" dependencies = [ - "darling", - "indoc", - "pretty_assertions", - "proc-macro2", "quote", "syn", ] @@ -2313,9 +2303,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" @@ -2328,11 +2318,10 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ - "once_cell", "wasm-bindgen", ] @@ -2345,7 +2334,7 @@ dependencies = [ "jsonptr", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror 1.0.68", ] [[package]] @@ -2384,7 +2373,7 @@ dependencies = [ "log", "secret-service", "security-framework 2.11.1", - "security-framework 3.1.0", + "security-framework 3.0.0", "windows-sys 0.59.0", "zbus", ] @@ -2457,7 +2446,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.6.0", "libc", - "redox_syscall 0.5.8", + "redox_syscall 0.5.7", ] [[package]] @@ -2474,9 +2463,9 @@ checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "litemap" -version = "0.7.4" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" [[package]] name = "lock_api" @@ -2506,7 +2495,7 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.1", ] [[package]] @@ -2591,7 +2580,7 @@ checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e" dependencies = [ "miette-derive 5.10.0", "once_cell", - "thiserror 1.0.69", + "thiserror 1.0.68", "unicode-width 0.1.14", ] @@ -2611,7 +2600,7 @@ dependencies = [ "supports-unicode", "terminal_size", "textwrap", - "thiserror 1.0.69", + "thiserror 1.0.68", "unicode-width 0.1.14", ] @@ -2671,19 +2660,20 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi 0.3.9", "libc", "log", "wasi", @@ -2863,9 +2853,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.36.7" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] @@ -3032,7 +3022,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.8", + "redox_syscall 0.5.7", "smallvec", "windows-targets 0.52.6", ] @@ -3142,7 +3132,7 @@ dependencies = [ "pep440_rs", "regex", "serde", - "thiserror 1.0.69", + "thiserror 1.0.68", "tracing", "unicode-width 0.1.14", "url", @@ -3278,9 +3268,9 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.4" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if", "concurrent-queue", @@ -3293,9 +3283,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.10.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "powerfmt" @@ -3312,16 +3302,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "pretty_assertions" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" -dependencies = [ - "diff", - "yansi", -] - [[package]] name = "proc-macro-crate" version = "3.2.0" @@ -3355,16 +3335,16 @@ dependencies = [ [[package]] name = "purl" -version = "0.1.5" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f112b0e2a9bca03924c39166775b74fec9a831f7d4d8fa539dee0e565f403a0e" +checksum = "c14fe28c8495f7eaf77a6e6106966f95211c0a2404b9da50d248fc32af3a3f14" dependencies = [ "hex", "percent-encoding", "phf", "serde", "smartstring", - "thiserror 1.0.69", + "thiserror 1.0.68", "unicase", ] @@ -3392,9 +3372,9 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.6" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" dependencies = [ "bytes", "pin-project-lite", @@ -3403,36 +3383,33 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 2.0.9", + "thiserror 1.0.68", "tokio", "tracing", ] [[package]] name = "quinn-proto" -version = "0.11.9" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" dependencies = [ "bytes", - "getrandom", "rand", "ring", "rustc-hash", "rustls", - "rustls-pki-types", "slab", - "thiserror 2.0.9", + "thiserror 1.0.68", "tinyvec", "tracing", - "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.9" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" +checksum = "7d5a626c6807713b15cac82a6acaccd6043c9a5408c24baae07611fec3f243da" dependencies = [ "cfg_aliases", "libc", @@ -3539,7 +3516,7 @@ dependencies = [ "reflink-copy", "regex", "reqwest", - "reqwest-middleware", + "reqwest-middleware 0.4.0", "simple_spawn_blocking", "smallvec", "tempfile", @@ -3609,7 +3586,7 @@ dependencies = [ "reflink-copy", "regex", "reqwest", - "reqwest-middleware", + "reqwest-middleware 0.4.0", "reqwest-retry", "rstest", "scroll", @@ -3665,7 +3642,7 @@ dependencies = [ "rattler_package_streaming", "rayon", "reqwest", - "reqwest-middleware", + "reqwest-middleware 0.4.0", "simple_spawn_blocking", "thiserror 2.0.9", "tokio", @@ -3802,7 +3779,7 @@ dependencies = [ "rattler_digest 0.19.5", "regex", "reqwest", - "reqwest-middleware", + "reqwest-middleware 0.4.0", "resolvo 0.4.1", "serde", "serde_json", @@ -3810,7 +3787,7 @@ dependencies = [ "smallvec", "tar", "tempfile", - "thiserror 1.0.69", + "thiserror 1.0.68", "tl", "tokio", "tokio-util", @@ -3849,7 +3826,7 @@ dependencies = [ "keyring", "netrc-rs", "reqwest", - "reqwest-middleware", + "reqwest-middleware 0.4.0", "retry-policies", "serde", "serde_json", @@ -3874,7 +3851,7 @@ dependencies = [ "rattler_networking", "rattler_redaction", "reqwest", - "reqwest-middleware", + "reqwest-middleware 0.4.0", "serde_json", "tar", "tempfile", @@ -3894,7 +3871,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd7c1c0dd452161e62e6d112ebd12618e61f641609d5205c3a68eb9907254dc2" dependencies = [ "reqwest", - "reqwest-middleware", + "reqwest-middleware 0.4.0", "url", ] @@ -3936,7 +3913,7 @@ dependencies = [ "rattler_networking", "rattler_redaction", "reqwest", - "reqwest-middleware", + "reqwest-middleware 0.4.0", "rmp-serde", "serde", "serde_json", @@ -4040,9 +4017,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.8" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] @@ -4055,7 +4032,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror 1.0.69", + "thiserror 1.0.68", ] [[package]] @@ -4097,7 +4074,7 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", + "regex-automata 0.4.8", "regex-syntax 0.8.5", ] @@ -4112,9 +4089,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -4191,6 +4168,21 @@ dependencies = [ "windows-registry", ] +[[package]] +name = "reqwest-middleware" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04" +dependencies = [ + "anyhow", + "async-trait", + "http", + "reqwest", + "serde", + "thiserror 1.0.68", + "tower-service", +] + [[package]] name = "reqwest-middleware" version = "0.4.0" @@ -4202,7 +4194,7 @@ dependencies = [ "http", "reqwest", "serde", - "thiserror 1.0.69", + "thiserror 1.0.68", "tower-service", ] @@ -4220,9 +4212,9 @@ dependencies = [ "hyper", "parking_lot 0.11.2", "reqwest", - "reqwest-middleware", + "reqwest-middleware 0.3.3", "retry-policies", - "thiserror 1.0.69", + "thiserror 1.0.68", "tokio", "tracing", "wasm-timer", @@ -4356,9 +4348,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "2.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" [[package]] name = "rustc_version" @@ -4371,22 +4363,22 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.42" +version = "0.38.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" dependencies = [ "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.23.20" +version = "0.23.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" +checksum = "eee87ff5d9b36712a58574e12e9f0ea80f915a5b0ac518d322b24a465617925e" dependencies = [ "once_cell", "ring", @@ -4398,14 +4390,15 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" dependencies = [ "openssl-probe", + "rustls-pemfile", "rustls-pki-types", "schannel", - "security-framework 3.1.0", + "security-framework 2.11.1", ] [[package]] @@ -4419,12 +4412,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" -dependencies = [ - "web-time", -] +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" [[package]] name = "rustls-webpki" @@ -4460,9 +4450,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ "windows-sys 0.59.0", ] @@ -4527,9 +4517,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.1.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81d3f8c9bfcc3cbb6b0179eb57042d75b1582bdc65c3cb95f3fa999509c03cbc" +checksum = "f9d0283c0a4a22a0f1b0e4edca251aa20b92fc96eaa09b84bec052f9415e9d71" dependencies = [ "bitflags 2.6.0", "core-foundation 0.10.0", @@ -4540,9 +4530,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.13.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -4550,15 +4540,15 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.24" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] @@ -4576,9 +4566,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", @@ -4812,7 +4802,7 @@ checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" dependencies = [ "num-bigint", "num-traits", - "thiserror 1.0.69", + "thiserror 1.0.68", "time", ] @@ -4862,9 +4852,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.8" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -4898,7 +4888,7 @@ dependencies = [ "serde", "sha-1", "sha2", - "thiserror 1.0.69", + "thiserror 1.0.68", "xxhash-rust", ] @@ -4956,18 +4946,18 @@ checksum = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f" [[package]] name = "supports-color" -version = "3.0.2" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6" +checksum = "8775305acf21c96926c900ad056abeef436701108518cf890020387236ac5a77" dependencies = [ "is_ci", ] [[package]] name = "supports-hyperlinks" -version = "3.1.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "804f44ed3c63152de6a9f90acbea1a110441de43006ea51bcce8f436196a288b" +checksum = "2c0a1e5168041f5f3ff68ff7d95dcb9c8749df29f6e7e89ada40dd4c9de404ee" [[package]] name = "supports-unicode" @@ -4977,9 +4967,9 @@ checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" [[package]] name = "syn" -version = "2.0.91" +version = "2.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53cbcb5a243bd33b7858b1d7f4aca2153490815872d86d955d6ea29f743c035" +checksum = "9c786062daee0d6db1132800e623df74274a0a87322d8e183338e01b3d98d058" dependencies = [ "proc-macro2", "quote", @@ -4988,9 +4978,9 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "1.0.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" dependencies = [ "futures-core", ] @@ -5016,15 +5006,15 @@ dependencies = [ "byteorder", "enum-as-inner", "libc", - "thiserror 1.0.69", + "thiserror 1.0.68", "walkdir", ] [[package]] name = "sysinfo" -version = "0.33.0" +version = "0.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "948512566b1895f93b1592c7574baeb2de842f224f2aab158799ecadb8ebbb46" +checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01" dependencies = [ "core-foundation-sys", "libc", @@ -5086,11 +5076,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.69" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ - "thiserror-impl 1.0.69", + "thiserror-impl 1.0.68", ] [[package]] @@ -5104,9 +5094,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "1.0.69" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", @@ -5146,9 +5136,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.37" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", @@ -5167,9 +5157,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.19" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ "num-conv", "time-core", @@ -5187,9 +5177,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -5247,19 +5237,20 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.1" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ "rustls", + "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -5482,9 +5473,9 @@ checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-linebreak" @@ -5675,9 +5666,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.99" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -5686,12 +5677,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.99" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", + "once_cell", "proc-macro2", "quote", "syn", @@ -5700,22 +5692,21 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.49" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", - "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5723,9 +5714,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", @@ -5736,9 +5727,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "wasm-streams" @@ -5770,9 +5761,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.76" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -5790,9 +5781,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.7" +version = "0.26.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" dependencies = [ "rustls-pki-types", ] @@ -6196,9 +6187,9 @@ dependencies = [ [[package]] name = "xxhash-rust" -version = "0.8.13" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08fd76779ae1883bbf1e46c2c46a75a0c4e37c445e68a24b01479d438f26ae6" +checksum = "6a5cbf750400958819fb6178eaa83bee5cd9c29a26a40cc241df8c70fdd46984" [[package]] name = "xz2" @@ -6228,9 +6219,9 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "yoke" -version = "0.7.5" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" dependencies = [ "serde", "stable_deref_trait", @@ -6240,9 +6231,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", @@ -6335,18 +6326,18 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", @@ -6405,7 +6396,8 @@ dependencies = [ [[package]] name = "zip" version = "2.2.2" -source = "git+https://github.com/wolfv/zip2?branch=patched#8fcb25229346479487823cbe0f9326d74c666d13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45" dependencies = [ "arbitrary", "crc32fast", @@ -6516,3 +6508,8 @@ dependencies = [ "quote", "syn", ] + +[[patch.unused]] +name = "zip" +version = "2.2.0" +source = "git+https://github.com/wolfv/zip2?branch=patched#d9ab99aee198b44fe6358febbbf5f8e57da351a8" diff --git a/src/main.rs b/src/main.rs index 99abca67..2e908783 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,6 +18,8 @@ use tempfile::tempdir; #[tokio::main] async fn main() -> miette::Result<()> { + rattler_sandbox::init_sandbox(); + let app = App::parse(); let log_handler = if !app.is_tui() { Some( diff --git a/src/script/mod.rs b/src/script/mod.rs index 97d54e5c..46fdd82b 100644 --- a/src/script/mod.rs +++ b/src/script/mod.rs @@ -401,7 +401,33 @@ async fn run_process_with_replacements( cwd: &Path, replacements: &HashMap, ) -> Result { - let mut command = tokio::process::Command::new(args[0]); + let temp_folder = std::env::var("TMPDIR").ok(); + + let mut sandbox_exceptions = vec![ + rattler_sandbox::Exception::Read("/".to_string()), + rattler_sandbox::Exception::ExecuteAndRead("/bin/".to_string()), + rattler_sandbox::Exception::ExecuteAndRead("/usr/bin/".to_string()), + rattler_sandbox::Exception::ExecuteAndRead("/Users/wolfv/.pixi/".to_string()), + rattler_sandbox::Exception::ExecuteAndRead( + cwd.parent().unwrap().to_string_lossy().to_string(), + ), + rattler_sandbox::Exception::ReadAndWrite( + cwd.parent().unwrap().to_string_lossy().to_string(), + ), + // conda compiler activation writes to this tmp folder + rattler_sandbox::Exception::ReadAndWrite("/tmp".to_string()), + // configure command for curl seems to want to write to this temp folder + rattler_sandbox::Exception::ReadAndWrite("/var/tmp".to_string()), + ]; + + if let Some(temp_folder) = temp_folder { + // the is the temp folder from TMPDIR + sandbox_exceptions.push(rattler_sandbox::Exception::ReadAndWrite( + temp_folder.to_string(), + )) + } + + let mut command = rattler_sandbox::tokio::sandboxed_command(args[0], &sandbox_exceptions); command .current_dir(cwd) .args(&args[1..]) From 5c828cf6bafcf6a520807ac197943a0eb0aa7948 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Mon, 30 Dec 2024 18:09:21 +0100 Subject: [PATCH 2/4] use released version --- Cargo.lock | 70 +++++++++++++++++++++++++++++++++++------------------- Cargo.toml | 1 + 2 files changed, 46 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e6cc7064..1b2c317f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -373,7 +373,7 @@ dependencies = [ "itertools 0.13.0", "memmap2 0.9.5", "reqwest", - "reqwest-middleware 0.4.0", + "reqwest-middleware", "thiserror 1.0.68", "tokio", "tokio-stream", @@ -450,6 +450,19 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +[[package]] +name = "birdcage" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "848df95320021558dd6bb4c26de3fe66724cdcbdbbf3fa720150b52b086ae568" +dependencies = [ + "bitflags 2.6.0", + "libc", + "log", + "rustix", + "seccompiler", +] + [[package]] name = "bisection" version = "0.1.0" @@ -3516,7 +3529,7 @@ dependencies = [ "reflink-copy", "regex", "reqwest", - "reqwest-middleware 0.4.0", + "reqwest-middleware", "simple_spawn_blocking", "smallvec", "tempfile", @@ -3579,6 +3592,7 @@ dependencies = [ "rattler_package_streaming", "rattler_redaction", "rattler_repodata_gateway", + "rattler_sandbox", "rattler_shell", "rattler_solve", "rattler_virtual_packages", @@ -3586,7 +3600,7 @@ dependencies = [ "reflink-copy", "regex", "reqwest", - "reqwest-middleware 0.4.0", + "reqwest-middleware", "reqwest-retry", "rstest", "scroll", @@ -3642,7 +3656,7 @@ dependencies = [ "rattler_package_streaming", "rayon", "reqwest", - "reqwest-middleware 0.4.0", + "reqwest-middleware", "simple_spawn_blocking", "thiserror 2.0.9", "tokio", @@ -3779,7 +3793,7 @@ dependencies = [ "rattler_digest 0.19.5", "regex", "reqwest", - "reqwest-middleware 0.4.0", + "reqwest-middleware", "resolvo 0.4.1", "serde", "serde_json", @@ -3826,7 +3840,7 @@ dependencies = [ "keyring", "netrc-rs", "reqwest", - "reqwest-middleware 0.4.0", + "reqwest-middleware", "retry-policies", "serde", "serde_json", @@ -3851,7 +3865,7 @@ dependencies = [ "rattler_networking", "rattler_redaction", "reqwest", - "reqwest-middleware 0.4.0", + "reqwest-middleware", "serde_json", "tar", "tempfile", @@ -3871,7 +3885,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd7c1c0dd452161e62e6d112ebd12618e61f641609d5205c3a68eb9907254dc2" dependencies = [ "reqwest", - "reqwest-middleware 0.4.0", + "reqwest-middleware", "url", ] @@ -3913,7 +3927,7 @@ dependencies = [ "rattler_networking", "rattler_redaction", "reqwest", - "reqwest-middleware 0.4.0", + "reqwest-middleware", "rmp-serde", "serde", "serde_json", @@ -3930,6 +3944,18 @@ dependencies = [ "zstd 0.13.2", ] +[[package]] +name = "rattler_sandbox" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7db0078c952c515fd59c44a04f802dc620fff06b0cf25a26251de144531e9299" +dependencies = [ + "birdcage", + "clap", + "fs-err 3.0.0", + "tokio", +] + [[package]] name = "rattler_shell" version = "0.22.12" @@ -4168,21 +4194,6 @@ dependencies = [ "windows-registry", ] -[[package]] -name = "reqwest-middleware" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04" -dependencies = [ - "anyhow", - "async-trait", - "http", - "reqwest", - "serde", - "thiserror 1.0.68", - "tower-service", -] - [[package]] name = "reqwest-middleware" version = "0.4.0" @@ -4212,7 +4223,7 @@ dependencies = [ "hyper", "parking_lot 0.11.2", "reqwest", - "reqwest-middleware 0.3.3", + "reqwest-middleware", "retry-policies", "thiserror 1.0.68", "tokio", @@ -4483,6 +4494,15 @@ dependencies = [ "syn", ] +[[package]] +name = "seccompiler" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f6575e3c2b3a0fe2ef3e53855b6a8dead7c29f783da5e123d378c8c6a89017e" +dependencies = [ + "libc", +] + [[package]] name = "secret-service" version = "4.0.0" diff --git a/Cargo.toml b/Cargo.toml index 593feb54..4de1ac92 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -137,6 +137,7 @@ rattler_index = { version = "0.20.4", default-features = false } rattler_networking = { version = "0.21.9", default-features = false } rattler_redaction = { version = "0.1.5" } rattler_repodata_gateway = { version = "0.21.29", default-features = false, features = ["gateway"] } +rattler_sandbox = { version = "0.1.0", default-features = false, features = ["tokio"] } rattler_shell = { version = "0.22.12", default-features = false, features = ["sysinfo"] } rattler_solve = { version = "1.3.1", default-features = false, features = ["resolvo", "serde"] } rattler_virtual_packages = { version = "1.1.15", default-features = false } From d78e70dc48c8a9ac0899b679495e6675e3f19f28 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Fri, 3 Jan 2025 11:34:35 +0100 Subject: [PATCH 3/4] add sandbox and implement CLI parsing --- src/cache.rs | 1 + src/lib.rs | 1 + src/metadata.rs | 10 ++ src/opt.rs | 5 + src/package_test/run_test.rs | 27 ++++- src/script/interpreter/bash.rs | 1 + src/script/interpreter/cmd_exe.rs | 1 + src/script/interpreter/nushell.rs | 1 + src/script/mod.rs | 44 +++---- src/script/sandbox.rs | 186 ++++++++++++++++++++++++++++++ 10 files changed, 246 insertions(+), 31 deletions(-) create mode 100644 src/script/sandbox.rs diff --git a/src/cache.rs b/src/cache.rs index bd9d5e5f..3a73db2e 100644 --- a/src/cache.rs +++ b/src/cache.rs @@ -238,6 +238,7 @@ impl Output { &self.build_configuration.directories.host_prefix, Some(&self.build_configuration.directories.build_prefix), Some(jinja), + None, // sandbox config ) .await .into_diagnostic()?; diff --git a/src/lib.rs b/src/lib.rs index 25f8f1aa..e3df569f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -349,6 +349,7 @@ pub async fn get_build_output( ), store_recipe: !args.no_include_recipe, force_colors: args.color_build_log && console::colors_enabled(), + sandbox_config: args.sandbox_arguments.clone().into(), }, finalized_dependencies: None, finalized_sources: None, diff --git a/src/metadata.rs b/src/metadata.rs index fdb2d3c2..910c27e6 100644 --- a/src/metadata.rs +++ b/src/metadata.rs @@ -37,6 +37,7 @@ use crate::{ parser::{Recipe, Source}, }, render::resolved_dependencies::FinalizedDependencies, + script::SandboxConfiguration, system_tools::SystemTools, tool_configuration, utils::remove_dir_all_force, @@ -346,6 +347,10 @@ pub struct BuildConfiguration { /// build script or not #[serde(skip_serializing, default = "default_true")] pub force_colors: bool, + + /// The configuration for the sandbox + #[serde(skip_serializing, default)] + pub sandbox_config: Option, } impl BuildConfiguration { @@ -354,6 +359,11 @@ impl BuildConfiguration { self.target_platform != self.build_platform.platform } + /// Retrieve the sandbox configuration for this output + pub fn sandbox_config(&self) -> Option<&SandboxConfiguration> { + self.sandbox_config.as_ref() + } + /// Construct a `SelectorConfig` from the given `BuildConfiguration` pub fn selector_config(&self) -> SelectorConfig { SelectorConfig { diff --git a/src/opt.rs b/src/opt.rs index 6b5ce242..b53fb8fb 100644 --- a/src/opt.rs +++ b/src/opt.rs @@ -16,6 +16,7 @@ use url::Url; use crate::recipe_generator::GenerateRecipeOpts; use crate::{ console_utils::{Color, LogStyle}, + script::SandboxArguments, tool_configuration::{SkipExisting, TestStrategy}, }; @@ -413,6 +414,10 @@ pub struct BuildOpts { /// Extra metadata to include in about.json #[arg(long, value_parser = parse_key_val)] pub extra_meta: Option>, + + #[allow(missing_docs)] + #[clap(flatten)] + pub sandbox_arguments: SandboxArguments, } fn is_dir(dir: &str) -> Result { diff --git a/src/package_test/run_test.rs b/src/package_test/run_test.rs index 52a9ff49..0b303064 100644 --- a/src/package_test/run_test.rs +++ b/src/package_test/run_test.rs @@ -135,7 +135,7 @@ impl Tests { })?; script - .run_script(env_vars, tmp_dir.path(), cwd, environment, None, None) + .run_script(env_vars, tmp_dir.path(), cwd, environment, None, None, None) .await .map_err(|e| TestError::TestFailed(e.to_string()))?; } @@ -147,7 +147,7 @@ impl Tests { }; script - .run_script(env_vars, tmp_dir.path(), cwd, environment, None, None) + .run_script(env_vars, tmp_dir.path(), cwd, environment, None, None, None) .await .map_err(|e| TestError::TestFailed(e.to_string()))?; } @@ -568,7 +568,15 @@ impl PythonTest { let tmp_dir = tempfile::tempdir()?; script - .run_script(Default::default(), tmp_dir.path(), path, prefix, None, None) + .run_script( + Default::default(), + tmp_dir.path(), + path, + prefix, + None, + None, + None, + ) .await .map_err(|e| TestError::TestFailed(e.to_string()))?; @@ -583,7 +591,7 @@ impl PythonTest { ..Script::default() }; script - .run_script(Default::default(), path, path, prefix, None, None) + .run_script(Default::default(), path, path, prefix, None, None, None) .await .map_err(|e| TestError::TestFailed(e.to_string()))?; @@ -648,7 +656,15 @@ impl PerlTest { let tmp_dir = tempfile::tempdir()?; script - .run_script(Default::default(), tmp_dir.path(), path, prefix, None, None) + .run_script( + Default::default(), + tmp_dir.path(), + path, + prefix, + None, + None, + None, + ) .await .map_err(|e| TestError::TestFailed(e.to_string()))?; @@ -756,6 +772,7 @@ impl CommandsTest { &run_prefix, build_prefix.as_ref(), None, + None, ) .await .map_err(|e| TestError::TestFailed(e.to_string()))?; diff --git a/src/script/interpreter/bash.rs b/src/script/interpreter/bash.rs index 1d17ffe2..6edcbd48 100644 --- a/src/script/interpreter/bash.rs +++ b/src/script/interpreter/bash.rs @@ -39,6 +39,7 @@ impl Interpreter for BashInterpreter { &cmd_args, &args.work_dir, &args.replacements("$((var))"), + args.sandbox_config.as_ref(), ) .await?; diff --git a/src/script/interpreter/cmd_exe.rs b/src/script/interpreter/cmd_exe.rs index 06c7f115..ec6a1459 100644 --- a/src/script/interpreter/cmd_exe.rs +++ b/src/script/interpreter/cmd_exe.rs @@ -47,6 +47,7 @@ impl Interpreter for CmdExeInterpreter { &cmd_args, &args.work_dir, &args.replacements("%((var))%"), + None, ) .await?; diff --git a/src/script/interpreter/nushell.rs b/src/script/interpreter/nushell.rs index 9a41aa18..523f756f 100644 --- a/src/script/interpreter/nushell.rs +++ b/src/script/interpreter/nushell.rs @@ -119,6 +119,7 @@ impl Interpreter for NuShellInterpreter { &cmd_args, &args.work_dir, &args.replacements("$((var))"), + None, ) .await?; diff --git a/src/script/mod.rs b/src/script/mod.rs index 46fdd82b..c494a0d4 100644 --- a/src/script/mod.rs +++ b/src/script/mod.rs @@ -1,5 +1,7 @@ //! Module for running scripts in different interpreters. mod interpreter; +mod sandbox; +pub use sandbox::{SandboxArguments, SandboxConfiguration}; use crate::script::interpreter::Interpreter; use indexmap::IndexMap; @@ -47,6 +49,9 @@ pub struct ExecutionArgs { /// The working directory (`cwd`) in which the script should execute pub work_dir: PathBuf, + + /// The sandbox configuration to use for the script execution + pub sandbox_config: Option, } impl ExecutionArgs { @@ -226,6 +231,7 @@ impl Script { run_prefix: &Path, build_prefix: Option<&PathBuf>, mut jinja_config: Option>, + sandbox_config: Option<&SandboxConfiguration>, ) -> Result<(), std::io::Error> { // TODO: This is a bit of an out and about way to determine whether or // not nushell is available. It would be best to run the activation @@ -318,6 +324,7 @@ impl Script { run_prefix: run_prefix.to_owned(), execution_platform: Platform::current(), work_dir, + sandbox_config: sandbox_config.cloned(), }; match interpreter { @@ -387,6 +394,7 @@ impl Output { &self.build_configuration.directories.host_prefix, Some(&self.build_configuration.directories.build_prefix), Some(jinja), + self.build_configuration.sandbox_config(), ) .await?; @@ -400,34 +408,18 @@ async fn run_process_with_replacements( args: &[&str], cwd: &Path, replacements: &HashMap, + sandbox_config: Option<&SandboxConfiguration>, ) -> Result { - let temp_folder = std::env::var("TMPDIR").ok(); - - let mut sandbox_exceptions = vec![ - rattler_sandbox::Exception::Read("/".to_string()), - rattler_sandbox::Exception::ExecuteAndRead("/bin/".to_string()), - rattler_sandbox::Exception::ExecuteAndRead("/usr/bin/".to_string()), - rattler_sandbox::Exception::ExecuteAndRead("/Users/wolfv/.pixi/".to_string()), - rattler_sandbox::Exception::ExecuteAndRead( - cwd.parent().unwrap().to_string_lossy().to_string(), - ), - rattler_sandbox::Exception::ReadAndWrite( - cwd.parent().unwrap().to_string_lossy().to_string(), - ), - // conda compiler activation writes to this tmp folder - rattler_sandbox::Exception::ReadAndWrite("/tmp".to_string()), - // configure command for curl seems to want to write to this temp folder - rattler_sandbox::Exception::ReadAndWrite("/var/tmp".to_string()), - ]; - - if let Some(temp_folder) = temp_folder { - // the is the temp folder from TMPDIR - sandbox_exceptions.push(rattler_sandbox::Exception::ReadAndWrite( - temp_folder.to_string(), - )) - } + let mut command = if let Some(sandbox_config) = sandbox_config { + tracing::info!("Sandbox configuration: {}", sandbox_config); + rattler_sandbox::tokio::sandboxed_command( + args[0], + &sandbox_config.with_cwd(cwd).exceptions(), + ) + } else { + tokio::process::Command::new(args[0]) + }; - let mut command = rattler_sandbox::tokio::sandboxed_command(args[0], &sandbox_exceptions); command .current_dir(cwd) .args(&args[1..]) diff --git a/src/script/sandbox.rs b/src/script/sandbox.rs new file mode 100644 index 00000000..e59c5430 --- /dev/null +++ b/src/script/sandbox.rs @@ -0,0 +1,186 @@ +use std::{ + fmt::{Display, Formatter}, + path::{Path, PathBuf}, +}; + +use clap::Parser; +use serde::{Deserialize, Serialize}; + +/// CLI argument parser for the sandbox +#[derive(Debug, Parser, Clone)] +pub struct SandboxArguments { + /// Enable the sandbox + #[clap(long, action, help_heading = "Sandbox arguments")] + pub sandbox: bool, + + /// Allow network access during build (default: false if sandbox is enabled) + #[clap(long, action, help_heading = "Sandbox arguments")] + pub allow_network: bool, + + /// Allow read access to the specified paths + #[clap(long, help_heading = "Sandbox arguments")] + pub allow_read: Vec, + + /// Allow read and execute access to the specified paths + #[clap(long, help_heading = "Sandbox arguments")] + pub allow_read_execute: Vec, + + /// Allow read and write access to the specified paths + #[clap(long, help_heading = "Sandbox arguments")] + pub allow_read_write: Vec, + + /// Overwrite the default sandbox configuration + #[clap(long, action, help_heading = "Sandbox arguments")] + pub overwrite_default_sandbox_config: bool, +} + +/// Configuration for the sandbox +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct SandboxConfiguration { + allow_network: bool, + read: Vec, + read_execute: Vec, + read_write: Vec, +} + +impl Display for SandboxConfiguration { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + writeln!(f, "{} Sandbox Configuration", console::Emoji("🛡️", " "))?; + writeln!( + f, + "Network Access: {}", + if self.allow_network { + console::Emoji("✅", " ") + } else { + console::Emoji("❌", " ") + } + )?; + + writeln!(f, "\n{} Read-only paths:", console::Emoji("📁 ", ""))?; + for path in &self.read { + writeln!(f, " - {}", path.display())?; + } + + writeln!(f, "\n{} Read-execute paths:", console::Emoji("📂 ", ""))?; + for path in &self.read_execute { + writeln!(f, " - {}", path.display())?; + } + + writeln!(f, "\n{} Read-write paths:", console::Emoji("📝 ", ""))?; + for path in &self.read_write { + writeln!(f, " - {}", path.display())?; + } + + Ok(()) + } +} + +impl SandboxConfiguration { + /// Create a default sandbox configuration for macOS + pub fn for_macos() -> Self { + let mut read_execute = Vec::new(); + read_execute.push("/bin/".into()); + read_execute.push("/usr/bin/".into()); + + let mut read_write = Vec::new(); + // Allow writing to temp folders + read_write.push("/tmp".into()); + read_write.push("/var/tmp".into()); + let temp_folder = std::env::var("TMPDIR").ok(); + if let Some(temp_folder) = temp_folder { + read_write.push(temp_folder.into()); + } + + Self { + allow_network: false, + read: vec!["/".into()], + read_execute, + read_write, + } + } + + /// Add the current working directory to the list of allowed paths + /// Adds the parent directory of the current working directory to the list of allowed paths + /// for read_execute and read_write + pub fn with_cwd(&self, cwd: &Path) -> Self { + let mut read_execute = self.read_execute.clone(); + if let Some(parent) = cwd.parent() { + read_execute.push(parent.to_path_buf()); + } + + let mut read_write = self.read_write.clone(); + if let Some(parent) = cwd.parent() { + read_write.push(parent.to_path_buf()); + } + + Self { + allow_network: self.allow_network, + read: self.read.clone(), + read_execute, + read_write, + } + } + + /// Get the list of exceptions for the sandbox + pub fn exceptions(&self) -> Vec { + let mut exceptions = Vec::new(); + if self.allow_network { + exceptions.push(rattler_sandbox::Exception::Networking); + } + + for path in &self.read { + exceptions.push(rattler_sandbox::Exception::Read( + path.to_string_lossy().to_string(), + )); + } + + for path in &self.read_execute { + exceptions.push(rattler_sandbox::Exception::ExecuteAndRead( + path.to_string_lossy().to_string(), + )); + } + + for path in &self.read_write { + exceptions.push(rattler_sandbox::Exception::ReadAndWrite( + path.to_string_lossy().to_string(), + )); + } + + exceptions + } +} + +impl From for Option { + fn from(args: SandboxArguments) -> Self { + if !args.sandbox { + return None; + } + + let mut result = if !args.overwrite_default_sandbox_config { + SandboxConfiguration::for_macos() + } else { + SandboxConfiguration { + allow_network: false, + read: Vec::new(), + read_execute: Vec::new(), + read_write: Vec::new(), + } + }; + + for path in args.allow_read { + result.read.push(path); + } + + for path in args.allow_read_execute { + result.read_execute.push(path); + } + + for path in args.allow_read_write { + result.read_write.push(path); + } + + result.allow_network = args.allow_network; + + Some(result) + } +} From 0a3d8c000b3612986c82d8f1d157cc0790433107 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Fri, 3 Jan 2025 15:34:57 +0100 Subject: [PATCH 4/4] wire up sandbox --- Cargo.lock | 130 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 27 +++++------ 2 files changed, 79 insertions(+), 78 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1b2c317f..84e403a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -352,9 +352,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "1b1244b10dcd56c92219da4e14caa97e312079e185f04ba3eea25061561dc0a0" dependencies = [ "proc-macro2", "quote", @@ -1321,10 +1321,8 @@ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "file_url" version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ad84121770c9766a67e4dd0a96b0467c6a5a2c43e873bf853aeaa6632b687c" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "percent-encoding", "thiserror 2.0.9", "typed-path", @@ -1616,9 +1614,9 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "globset" @@ -2314,6 +2312,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -2393,9 +2400,9 @@ dependencies = [ [[package]] name = "lazy-regex" -version = "3.3.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d8e41c97e6bc7ecb552016274b99fbb5d035e8de288c582d9b933af6677bfda" +checksum = "60c7310b93682b36b98fa7ea4de998d3463ccbebd94d935d6b48ba5b6ffa7126" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -2404,9 +2411,9 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.3.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76e1d8b05d672c53cb9c7b920bbba8783845ae4f0b076e02a3db1d02c81b4163" +checksum = "4ba01db5ef81e17eb10a5e0f2109d1b3a3e29bac3070fdbd7d156bf7dbd206a1" dependencies = [ "proc-macro2", "quote", @@ -3348,9 +3355,9 @@ dependencies = [ [[package]] name = "purl" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c14fe28c8495f7eaf77a6e6106966f95211c0a2404b9da50d248fc32af3a3f14" +checksum = "f112b0e2a9bca03924c39166775b74fec9a831f7d4d8fa539dee0e565f403a0e" dependencies = [ "hex", "percent-encoding", @@ -3434,9 +3441,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -3501,8 +3508,6 @@ dependencies = [ [[package]] name = "rattler" version = "0.28.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c90d5a0dd356a4b2289752dd738d5597348d616a7797ec045209c4cc8b65bb9b" dependencies = [ "anyhow", "clap", @@ -3514,7 +3519,7 @@ dependencies = [ "humantime", "indexmap 2.7.0", "indicatif", - "itertools 0.13.0", + "itertools 0.14.0", "memchr", "memmap2 0.9.5", "once_cell", @@ -3637,8 +3642,6 @@ dependencies = [ [[package]] name = "rattler_cache" version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266a244026ae404be929fa7cdb36761848dadc238868448d0fcb6c900522ee72" dependencies = [ "anyhow", "dashmap", @@ -3648,7 +3651,7 @@ dependencies = [ "fs4 0.12.0", "futures", "fxhash", - "itertools 0.13.0", + "itertools 0.14.0", "parking_lot 0.12.3", "rattler_conda_types", "rattler_digest 1.0.4", @@ -3667,8 +3670,6 @@ dependencies = [ [[package]] name = "rattler_conda_types" version = "0.29.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f01db87a34cb9fc92d7be8a8789c79a567c8738a535f3cb79779a8580c33d6" dependencies = [ "chrono", "dirs", @@ -3678,7 +3679,7 @@ dependencies = [ "glob", "hex", "indexmap 2.7.0", - "itertools 0.13.0", + "itertools 0.14.0", "lazy-regex", "nom", "purl", @@ -3721,8 +3722,6 @@ dependencies = [ [[package]] name = "rattler_digest" version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ffd5141cd51f0de194c8c05d97f138d2ea70274636ce911bbdf7dd371942a47" dependencies = [ "blake2", "digest", @@ -3738,8 +3737,6 @@ dependencies = [ [[package]] name = "rattler_index" version = "0.20.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c1880cb859882d8863dc67d2fe2a89baf4f749df5491a217972c3c1041fc8b" dependencies = [ "fs-err 3.0.0", "rattler_conda_types", @@ -3814,8 +3811,6 @@ dependencies = [ [[package]] name = "rattler_macros" version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae24d4a02bfa3805a358d4adcdcb6426f0045c56189f13dc69234b1e4fe9fbe" dependencies = [ "quote", "syn", @@ -3824,8 +3819,6 @@ dependencies = [ [[package]] name = "rattler_networking" version = "0.21.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d10545baa6dc04e294d50984aca155d57ee6e92600296a8d42b6d6d27ded833a" dependencies = [ "anyhow", "async-trait", @@ -3836,7 +3829,7 @@ dependencies = [ "getrandom", "google-cloud-auth", "http", - "itertools 0.13.0", + "itertools 0.14.0", "keyring", "netrc-rs", "reqwest", @@ -3852,8 +3845,6 @@ dependencies = [ [[package]] name = "rattler_package_streaming" version = "0.22.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24a505f4ed90ca9c4eed477d3184bc38621c5d2c334be28bcdde7f16e7c4ef0c" dependencies = [ "bzip2 0.5.0", "chrono", @@ -3881,8 +3872,6 @@ dependencies = [ [[package]] name = "rattler_redaction" version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd7c1c0dd452161e62e6d112ebd12618e61f641609d5205c3a68eb9907254dc2" dependencies = [ "reqwest", "reqwest-middleware", @@ -3892,8 +3881,6 @@ dependencies = [ [[package]] name = "rattler_repodata_gateway" version = "0.21.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ef851fac32e22323c735e5eda2f966687902f595ab3d6f25cf28e2f89e16ced" dependencies = [ "anyhow", "async-compression", @@ -3913,7 +3900,7 @@ dependencies = [ "http-cache-semantics", "humansize", "humantime", - "itertools 0.13.0", + "itertools 0.14.0", "json-patch", "libc", "md-5", @@ -3947,8 +3934,6 @@ dependencies = [ [[package]] name = "rattler_sandbox" version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7db0078c952c515fd59c44a04f802dc620fff06b0cf25a26251de144531e9299" dependencies = [ "birdcage", "clap", @@ -3959,13 +3944,11 @@ dependencies = [ [[package]] name = "rattler_shell" version = "0.22.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e4f21b5783b0ce087d816669a4539add1ce5c076050856e350435a9a27c61f" dependencies = [ "enum_dispatch", "fs-err 3.0.0", "indexmap 2.7.0", - "itertools 0.13.0", + "itertools 0.14.0", "rattler_conda_types", "serde_json", "shlex", @@ -3978,15 +3961,13 @@ dependencies = [ [[package]] name = "rattler_solve" version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4c73c74bd7747ebe16607055eaa74c2daad359514a0765994642d6fa446193" dependencies = [ "chrono", "futures", - "itertools 0.13.0", + "itertools 0.14.0", "rattler_conda_types", "rattler_digest 1.0.4", - "resolvo 0.8.4", + "resolvo 0.8.5", "serde", "tempfile", "thiserror 2.0.9", @@ -3997,8 +3978,6 @@ dependencies = [ [[package]] name = "rattler_virtual_packages" version = "1.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0e792417bd869e30b9ff9611dd56664de1352c810fb88c53ea4bb543ef6e8fe" dependencies = [ "archspec", "libloading", @@ -4144,9 +4123,9 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "async-compression", "base64 0.22.1", @@ -4184,6 +4163,7 @@ dependencies = [ "tokio-native-tls", "tokio-rustls", "tokio-util", + "tower", "tower-service", "url", "wasm-bindgen", @@ -4249,9 +4229,9 @@ dependencies = [ [[package]] name = "resolvo" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fdd3aa47ae0816ce4ec203eba1330e7c96a6760cbfbee5f1d2ca6e768b50f7" +checksum = "c97bd4f62df459230cffd87a8a70b007aebe97bd2391955fd7ef5a7c282f4833" dependencies = [ "ahash", "bitvec", @@ -4642,9 +4622,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.11.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" dependencies = [ "base64 0.22.1", "chrono", @@ -4660,9 +4640,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.11.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" dependencies = [ "darling", "proc-macro2", @@ -4829,8 +4809,6 @@ dependencies = [ [[package]] name = "simple_spawn_blocking" version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b31ed96d1593e129cc76cb7aca364fb5c173558bfda922c15aac4e2f2f5844e" dependencies = [ "tokio", ] @@ -4987,9 +4965,9 @@ checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" [[package]] name = "syn" -version = "2.0.93" +version = "2.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c786062daee0d6db1132800e623df74274a0a87322d8e183338e01b3d98d058" +checksum = "987bc0be1cdea8b10216bd06e2ca407d40b9543468fafd3ddfb02f36e77f71f3" dependencies = [ "proc-macro2", "quote", @@ -5063,12 +5041,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" dependencies = [ "cfg-if", "fastrand", + "getrandom", "once_cell", "rustix", "windows-sys 0.59.0", @@ -5326,6 +5305,27 @@ dependencies = [ "winnow", ] +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + [[package]] name = "tower-service" version = "0.3.3" diff --git a/Cargo.toml b/Cargo.toml index 4de1ac92..d2a28a45 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -83,7 +83,7 @@ futures = "0.3.31" indicatif = "0.17.9" console = { version = "0.15.10", features = ["windows-console-colors"] } thiserror = "2.0.9" -tempfile = "3.14.0" +tempfile = "3.15.0" chrono = "0.4.39" sha1 = "0.10.6" spdx = "0.10.7" @@ -176,15 +176,16 @@ pre-build = [ # this fork contains fixes for slow zip reading and large file writing zip = { git = "https://github.com/wolfv/zip2", branch = "patched"} -# rattler = { path = "../rattler/crates/rattler" } -# rattler_cache = { path = "../rattler/crates/rattler_cache" } -# rattler_conda_types = { path = "../rattler/crates/rattler_conda_types" } -# rattler_digest = { path = "../rattler/crates/rattler_digest" } -# rattler_index = { path = "../rattler/crates/rattler_index" } -# rattler_networking = { path = "../rattler/crates/rattler_networking" } -# rattler_repodata_gateway = { path = "../rattler/crates/rattler_repodata_gateway" } -# rattler_shell = { path = "../rattler/crates/rattler_shell" } -# rattler_solve = { path = "../rattler/crates/rattler_solve" } -# rattler_redaction = { path = "../rattler/crates/rattler_redaction" } -# rattler_virtual_packages = { path = "../rattler/crates/rattler_virtual_packages" } -# rattler_package_streaming = { path = "../rattler/crates/rattler_package_streaming" } +rattler = { path = "../rattler/crates/rattler" } +rattler_sandbox = { path = "../rattler/crates/rattler_sandbox" } +rattler_cache = { path = "../rattler/crates/rattler_cache" } +rattler_conda_types = { path = "../rattler/crates/rattler_conda_types" } +rattler_digest = { path = "../rattler/crates/rattler_digest" } +rattler_index = { path = "../rattler/crates/rattler_index" } +rattler_networking = { path = "../rattler/crates/rattler_networking" } +rattler_repodata_gateway = { path = "../rattler/crates/rattler_repodata_gateway" } +rattler_shell = { path = "../rattler/crates/rattler_shell" } +rattler_solve = { path = "../rattler/crates/rattler_solve" } +rattler_redaction = { path = "../rattler/crates/rattler_redaction" } +rattler_virtual_packages = { path = "../rattler/crates/rattler_virtual_packages" } +rattler_package_streaming = { path = "../rattler/crates/rattler_package_streaming" }