diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index ca82fc6c0..bd43ae386 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -93,12 +93,19 @@ jobs: - name: Checkout source code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + - name: Setup pixi + uses: prefix-dev/setup-pixi@19eac09b398e3d0c747adc7921926a6d802df4da # v0.8.8 + with: + run-install: false + + - name: Install yq + run: pixi global install go-yq + - name: Extract version shell: bash id: metadata run: | # also call this step outside of $(...) to make sure the status code is propagated - ${{ startsWith(matrix.os, 'windows') && 'choco install yq' || '' }} yq '.package.version' Cargo.toml echo "project-version=$(yq '.package.version' Cargo.toml)" >> $GITHUB_OUTPUT diff --git a/Cargo.lock b/Cargo.lock index 443819a1d..aeaba563a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -30,15 +30,15 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.2.16", + "getrandom 0.3.3", "once_cell", "version_check", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -443,9 +443,9 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.84.0" +version = "1.85.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2111975ef21dc06542918479df0df861b273eb8d99e6bb987da469b546dce32c" +checksum = "d5c82dae9304e7ced2ff6cca43dceb2d6de534c95a506ff0f168a7463c9a885d" dependencies = [ "aws-credential-types", "aws-runtime", @@ -478,9 +478,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.66.0" +version = "1.67.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "858007b14d0f1ade2e0124473c2126b24d334dc9486ad12eb7c0ed14757be464" +checksum = "0d4863da26489d1e6da91d7e12b10c17e86c14f94c53f416bd10e0a9c34057ba" dependencies = [ "aws-credential-types", "aws-runtime", @@ -501,9 +501,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.67.0" +version = "1.68.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b83abf3ae8bd10a014933cc2383964a12ca5a3ebbe1948ad26b1b808e7d0d1f2" +checksum = "95caa3998d7237789b57b95a8e031f60537adab21fa84c91e35bef9455c652e4" dependencies = [ "aws-credential-types", "aws-runtime", @@ -524,9 +524,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.67.0" +version = "1.68.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74e8e9ac4a837859c8f1d747054172e1e55933f02ed34728b0b34dea0591ec84" +checksum = "4939f6f449a37308a78c5a910fd91265479bd2bb11d186f0b8fc114d89ec828d" dependencies = [ "aws-credential-types", "aws-runtime", @@ -661,9 +661,9 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aff1159006441d02e57204bf57a1b890ba68bedb6904ffd2873c1c4c11c546b" +checksum = "7e44697a9bded898dcd0b1cb997430d949b87f4f8940d91023ae9062bf218250" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -810,9 +810,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -872,7 +872,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "848df95320021558dd6bb4c26de3fe66724cdcbdbbf3fa720150b52b086ae568" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "libc", "log", "rustix 0.38.44", @@ -887,9 +887,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] name = "bitvec" @@ -1038,9 +1038,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.21" +version = "1.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8691782945451c1c383942c4874dbe63814f61cb57ef773cda2972682b7bb3c0" +checksum = "32db95edf998450acc7881c932f94cd9b05c87b4b2599e8bab064753da4acfd1" dependencies = [ "jobserver", "libc", @@ -1113,9 +1113,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.37" +version = "4.5.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071" +checksum = "ed93b9805f8ba930df42c2590f05453d5ec36cbb85d018868a5b24d31f6ac000" dependencies = [ "clap_builder", "clap_derive", @@ -1134,9 +1134,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.37" +version = "4.5.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2" +checksum = "379026ff283facf611b0ea629334361c4211d1b12ee01024eec1591133b04120" dependencies = [ "anstream", "anstyle", @@ -1146,9 +1146,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.49" +version = "4.5.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07ae023020f3bbb76bfd6c7b9dd3f903b40f60e4dc60696c303457c5c01e6cbe" +checksum = "c91d3baa3bcd889d60e6ef28874126a0b384fd225ab83aa6d8a801c519194ce1" dependencies = [ "clap", ] @@ -1312,9 +1312,9 @@ dependencies = [ [[package]] name = "crc" -version = "3.2.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" dependencies = [ "crc-catalog", ] @@ -1419,7 +1419,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "crossterm_winapi", "futures-core", "mio", @@ -1848,8 +1848,7 @@ dependencies = [ [[package]] name = "file_url" version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46ca1565923e8d9bcf962889abeeb2f15d4b73356689ce26ae7dd1f54b928498" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "itertools 0.14.0", "percent-encoding", @@ -1883,6 +1882,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" dependencies = [ "crc32fast", + "libz-rs-sys", "miniz_oxide", ] @@ -2102,9 +2102,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "js-sys", @@ -2616,21 +2616,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -2639,31 +2640,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -2671,67 +2652,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "2549ca8c7241c82f59c80ba2a6f415d931c5b58d24fb8412caa1a1f02c49139a" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" +checksum = "8197e866e47b68f8f7d95249e172903bec06004b18b2937f1095d40a0c57de04" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "ident_case" version = "1.0.1" @@ -2751,9 +2719,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -2941,7 +2909,7 @@ version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" dependencies = [ - "getrandom 0.3.2", + "getrandom 0.3.3", "libc", ] @@ -3063,19 +3031,19 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +checksum = "6a793df0d7afeac54f95b471d3af7f0d4fb975699f972341a4b76988d49cdf0c" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.53.0", ] [[package]] name = "libm" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a25169bd5913a4b437588a7e3d127cd6e90127b60e0ffbd834a38f1599e016b8" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" @@ -3083,11 +3051,20 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "libc", "redox_syscall 0.5.12", ] +[[package]] +name = "libz-rs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6489ca9bd760fe9642d7644e827b0c9add07df89857b0416ee15c1cc1a3b8c5a" +dependencies = [ + "zlib-rs", +] + [[package]] name = "line-ending" version = "1.5.1" @@ -3108,9 +3085,9 @@ checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" @@ -3137,6 +3114,12 @@ dependencies = [ "hashbrown 0.15.3", ] +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "lzma-sys" version = "0.1.20" @@ -3314,7 +3297,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cfg-if", "cfg_aliases", "libc", @@ -3497,9 +3480,9 @@ dependencies = [ [[package]] name = "opendal" -version = "0.53.1" +version = "0.53.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f407ca2797ca6c010720aa3cedfa0187430e4f70b729c75c33142d44021f59" +checksum = "11ff9e9656d1cb3c58582ea18e6d9e71076a7ab2614207821d1242d7da2daed5" dependencies = [ "anyhow", "async-trait", @@ -3530,7 +3513,7 @@ version = "0.10.72" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cfg-if", "foreign-types", "libc", @@ -3827,7 +3810,7 @@ dependencies = [ [[package]] name = "pixi_config" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#c754587f5d5de7194685792d4385e97d3fc90ce7" +source = "git+https://github.com/pavelzw/pixi?branch=bump-rattler#64b5a64eae1e8691e120a5fd9b15fe678045a20e" dependencies = [ "clap", "console", @@ -3854,7 +3837,7 @@ dependencies = [ [[package]] name = "pixi_consts" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#c754587f5d5de7194685792d4385e97d3fc90ce7" +source = "git+https://github.com/pavelzw/pixi?branch=bump-rattler#64b5a64eae1e8691e120a5fd9b15fe678045a20e" dependencies = [ "console", "rattler_cache", @@ -3946,6 +3929,15 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -3958,7 +3950,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.8.25", + "zerocopy", ] [[package]] @@ -4025,9 +4017,9 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.7" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3bd15a6f2967aef83887dcb9fec0014580467e33720d073560cf015a5683012" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" dependencies = [ "bytes", "cfg_aliases", @@ -4045,12 +4037,13 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.11" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcbafbbdbb0f638fe3f35f3c56739f77a8a1d070cb25603226c83339b391472b" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" dependencies = [ "bytes", - "getrandom 0.3.2", + "getrandom 0.3.3", + "lru-slab", "rand 0.9.1", "ring", "rustc-hash", @@ -4154,7 +4147,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.2", + "getrandom 0.3.3", ] [[package]] @@ -4163,7 +4156,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cassowary", "compact_str", "crossterm", @@ -4180,9 +4173,8 @@ dependencies = [ [[package]] name = "rattler" -version = "0.33.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e7bfacc5f5ff3517d984b5e2f2df3eea46e8309685cb7cdff39d62f7b2bee2" +version = "0.33.6" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "anyhow", "clap", @@ -4262,10 +4254,11 @@ dependencies = [ "miette", "minijinja", "num_cpus", - "opendal 0.53.1", + "opendal 0.53.2", "pathdiff", "petgraph 0.8.1", "pixi_config", + "purl", "ratatui", "rattler", "rattler_cache", @@ -4325,9 +4318,8 @@ dependencies = [ [[package]] name = "rattler_cache" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd2ad44802bc15f7196f0898ff52729aab52338203ddbdff5212146f45aa2a67" +version = "0.3.18" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "anyhow", "dashmap", @@ -4357,9 +4349,8 @@ dependencies = [ [[package]] name = "rattler_conda_types" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21c2ed99f2fc8044499c63c65db265f6ec3e0333cdf15bb442d5063187449d51" +version = "0.33.0" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "chrono", "core-foundation 0.10.0", @@ -4398,8 +4389,7 @@ dependencies = [ [[package]] name = "rattler_digest" version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34751b3e9c9755379281d1b49b9335648a4686c434ce77b5376323980d38e1b8" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "blake2", "digest", @@ -4415,9 +4405,8 @@ dependencies = [ [[package]] name = "rattler_index" -version = "0.22.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3674b10a38a3033d0124978f6c251ad0926d4a621c7330bf03dfd61c40a0078a" +version = "0.22.6" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "anyhow", "bytes", @@ -4444,8 +4433,7 @@ dependencies = [ [[package]] name = "rattler_macros" version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c9b25725cedeef8dee22c41dee138daf76ebd70da50fe210aa5e50288036816" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "quote", "syn", @@ -4453,9 +4441,8 @@ dependencies = [ [[package]] name = "rattler_menuinst" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3eedb82b5366136093acb1bafc4839f3f122c64889a358cbe6e50fc8c573b0" +version = "0.2.8" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "chrono", "configparser", @@ -4483,9 +4470,8 @@ dependencies = [ [[package]] name = "rattler_networking" -version = "0.22.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe0171ee4c22e335ade0cb926e83cdf08a5dda5eaf26fc21fa9948beb65c764" +version = "0.23.0" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "anyhow", "async-trait", @@ -4513,9 +4499,8 @@ dependencies = [ [[package]] name = "rattler_package_streaming" -version = "0.22.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11879ff84195638459a15f0bb4c0d167f58ecd497d2df00df46c6cf81c0f2bb7" +version = "0.22.37" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "bzip2", "chrono", @@ -4544,8 +4529,7 @@ dependencies = [ [[package]] name = "rattler_pty" version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1ba454a7e23bfe50c09abdb3164e26f98b326a04c104389c41e300918b219f" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "libc", "nix", @@ -4555,8 +4539,7 @@ dependencies = [ [[package]] name = "rattler_redaction" version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d46116e48405681feb0c0c9938ecb6751825eb9bde353069e516784ca983e9" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "reqwest", "reqwest-middleware", @@ -4565,9 +4548,8 @@ dependencies = [ [[package]] name = "rattler_repodata_gateway" -version = "0.22.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e25d367f6ff1d83cf925ccacfcf7805f94030f96de6858992db37edb3c5a638" +version = "0.22.6" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "anyhow", "async-compression", @@ -4623,8 +4605,7 @@ dependencies = [ [[package]] name = "rattler_sandbox" version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b14b645c39a3822a3ae3ccc5d02e3ea830576e98178c0c47dcb2d19b227fa96c" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "birdcage", "clap", @@ -4634,9 +4615,8 @@ dependencies = [ [[package]] name = "rattler_shell" -version = "0.22.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdf546ea648c95cfeb27d8eedb6d592c8dec050d2dc9fb9af5be4ffe13759d7f" +version = "0.23.0" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "anyhow", "enum_dispatch", @@ -4655,9 +4635,8 @@ dependencies = [ [[package]] name = "rattler_solve" -version = "1.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b632fe7366b6b17e5ba96b14af992258aca04e2d36cf467a19f7980fa2298d7" +version = "1.4.6" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "chrono", "futures", @@ -4673,9 +4652,8 @@ dependencies = [ [[package]] name = "rattler_virtual_packages" -version = "2.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6f8be154a9e0be3bfab3a68263ac568207eab9fb0e0820316374e805b340033" +version = "2.0.11" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "archspec", "libloading", @@ -4725,7 +4703,7 @@ version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", ] [[package]] @@ -4948,9 +4926,9 @@ dependencies = [ [[package]] name = "resolvo" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "996e40b356864ad72942a9ef6815df7f219b7b42ccc791906d3e0a17df5d66ab" +checksum = "dba027c8e5dd4b5e5a690cfcfb3900d5ffe6985adb048cbd111d5aa596a6c0c8" dependencies = [ "ahash", "bitvec", @@ -5099,7 +5077,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -5112,7 +5090,7 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys 0.9.4", @@ -5140,7 +5118,7 @@ dependencies = [ "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.2", + "rustls-webpki 0.103.3", "subtle", "zeroize", ] @@ -5189,11 +5167,12 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ "web-time", + "zeroize", ] [[package]] @@ -5208,9 +5187,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.2" +version = "0.103.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7149975849f1abb3832b246010ef62ccc80d3a76169517ada7188252b9cfb437" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" dependencies = [ "ring", "rustls-pki-types", @@ -5346,7 +5325,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -5359,7 +5338,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "core-foundation 0.10.0", "core-foundation-sys", "libc", @@ -5421,9 +5400,9 @@ dependencies = [ [[package]] name = "serde_ignored" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566da67d80e92e009728b3731ff0e5360cb181432b8ca73ea30bb1d170700d76" +checksum = "b516445dac1e3535b6d658a7b528d771153dfb272ed4180ca4617a20550365ff" dependencies = [ "serde", ] @@ -5600,9 +5579,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" dependencies = [ "libc", "signal-hook-registry", @@ -5686,8 +5665,7 @@ dependencies = [ [[package]] name = "simple_spawn_blocking" version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55c0b0b683828aa9d4f5c0e59b0c856a12c30a65b5f1ca4292664734d76fa9c2" +source = "git+https://github.com/conda/rattler?branch=main#0160a2f88129935ced52596ab795389f70164557" dependencies = [ "tokio", ] @@ -5888,7 +5866,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "byteorder", "enum-as-inner", "libc", @@ -5916,7 +5894,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -5950,12 +5928,12 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.19.1" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ "fastrand", - "getrandom 0.3.2", + "getrandom 0.3.3", "once_cell", "rustix 1.0.7", "windows-sys 0.59.0", @@ -6083,9 +6061,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -6501,12 +6479,6 @@ version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -6525,7 +6497,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" dependencies = [ - "getrandom 0.3.2", + "getrandom 0.3.3", "js-sys", "rand 0.9.1", "serde", @@ -7294,9 +7266,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9fb597c990f03753e08d3c29efbfcf2019a003b4bf4ba19225c158e1549f0f3" +checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" dependencies = [ "memchr", ] @@ -7322,20 +7294,14 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "wyz" @@ -7394,9 +7360,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -7406,9 +7372,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", @@ -7478,33 +7444,13 @@ dependencies = [ "zvariant", ] -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "zerocopy-derive 0.7.35", -] - [[package]] name = "zerocopy" version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" dependencies = [ - "zerocopy-derive 0.8.25", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "zerocopy-derive", ] [[package]] @@ -7545,11 +7491,22 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" dependencies = [ "yoke", "zerofrom", @@ -7558,9 +7515,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", @@ -7569,13 +7526,12 @@ dependencies = [ [[package]] name = "zip" -version = "2.6.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dcb24d0152526ae49b9b96c1dcf71850ca1e0b882e4e28ed898a93c41334744" +checksum = "12598812502ed0105f607f941c386f43d441e00148fce9dec3ca5ffb0bde9308" dependencies = [ "arbitrary", "crc32fast", - "crossbeam-utils", "flate2", "indexmap 2.9.0", "memchr", @@ -7583,6 +7539,12 @@ dependencies = [ "zopfli", ] +[[package]] +name = "zlib-rs" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "868b928d7949e09af2f6086dfc1e01936064cc7a819253bce650d4e2a2d63ba8" + [[package]] name = "zopfli" version = "0.8.2" diff --git a/Cargo.toml b/Cargo.toml index 1b23567d2..015d50e57 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -111,8 +111,8 @@ clap_complete_nushell = "4.5.5" tokio-util = { version = "0.7.15", features = ["codec", "compat"] } tar = "0.4.44" -zip = { version = "2.6.1", default-features = false, features = [ - "flate2", +zip = { version = "3.0.0", default-features = false, features = [ + "deflate-flate2", "deflate", ] } bzip2 = "0.5.2" @@ -140,20 +140,22 @@ opendal = { version = "0.53.1", default-features = false, features = [ ] } # Rattler crates -pixi_config = { git = "https://github.com/prefix-dev/pixi", branch = "main" } +pixi_config = { git = "https://github.com/pavelzw/pixi", branch = "bump-rattler" } rattler = { version = "0.33.5", default-features = false, features = [ "cli-tools", "indicatif", ] } rattler_cache = { version = "0.3.17", default-features = false } -rattler_conda_types = { version = "0.32.0", default-features = false, features = [ +rattler_conda_types = { version = "0.33.0", default-features = false, features = [ "rayon", ] } rattler_digest = { version = "1.1.1", default-features = false, features = [ "serde", ] } rattler_index = { version = "0.22.5", default-features = false } -rattler_networking = { version = "0.22.12", default-features = false } +rattler_networking = { version = "0.23.0", default-features = false, features = [ + "s3", +] } rattler_redaction = { version = "0.1.10" } rattler_repodata_gateway = { version = "0.22.5", default-features = false, features = [ "gateway", @@ -161,7 +163,7 @@ rattler_repodata_gateway = { version = "0.22.5", default-features = false, featu rattler_sandbox = { version = "0.1.7", default-features = false, features = [ "tokio", ] } -rattler_shell = { version = "0.22.26", default-features = false, features = [ +rattler_shell = { version = "0.23.0", default-features = false, features = [ "sysinfo", ] } rattler_solve = { version = "1.4.5", default-features = false, features = [ @@ -169,12 +171,13 @@ rattler_solve = { version = "1.4.5", default-features = false, features = [ "serde", ] } rattler_virtual_packages = { version = "2.0.10", default-features = false } -rattler_package_streaming = { version = "0.22.36", default-features = false } +rattler_package_streaming = { version = "0.22.37", default-features = false } rattler_menuinst = "0.2.7" lazy_static = "1.5.0" reqwest-retry = "0.7.0" retry-policies = "0.4.0" strum = "0.27.1" +purl = "0.1.6" unicode-normalization = "0.1.24" line-ending = "1.5.1" @@ -201,17 +204,17 @@ name = "parse_file" harness = false [patch.crates-io] -# rattler = { git = "https://github.com/wolfv/rattler", branch = "pub-schema" } -# rattler_sandbox = { git = "https://github.com/wolfv/rattler", branch = "pub-schema" } -# rattler_cache = { git = "https://github.com/wolfv/rattler", branch = "pub-schema" } -# rattler_conda_types = { git = "https://github.com/wolfv/rattler", branch = "pub-schema" } -# rattler_digest = { git = "https://github.com/wolfv/rattler", branch = "pub-schema" } -# rattler_index = { git = "https://github.com/wolfv/rattler", branch = "pub-schema" } -# rattler_networking = { git = "https://github.com/wolfv/rattler", branch = "pub-schema" } -# rattler_repodata_gateway = { git = "https://github.com/wolfv/rattler", branch = "pub-schema" } -# rattler_shell = { git = "https://github.com/wolfv/rattler", branch = "pub-schema" } -# rattler_solve = { git = "https://github.com/wolfv/rattler", branch = "pub-schema" } -# rattler_redaction = { git = "https://github.com/wolfv/rattler", branch = "pub-schema" } -# rattler_virtual_packages = { git = "https://github.com/wolfv/rattler", branch = "pub-schema" } -# rattler_package_streaming = { git = "https://github.com/wolfv/rattler", branch = "pub-schema" } -# rattler_menuinst = { git = "https://github.com/wolfv/rattler", branch = "pub-schema" } +rattler = { git = "https://github.com/conda/rattler", branch = "main" } +rattler_sandbox = { git = "https://github.com/conda/rattler", branch = "main" } +rattler_cache = { git = "https://github.com/conda/rattler", branch = "main" } +rattler_conda_types = { git = "https://github.com/conda/rattler", branch = "main" } +rattler_digest = { git = "https://github.com/conda/rattler", branch = "main" } +rattler_index = { git = "https://github.com/conda/rattler", branch = "main" } +rattler_networking = { git = "https://github.com/conda/rattler", branch = "main" } +rattler_repodata_gateway = { git = "https://github.com/conda/rattler", branch = "main" } +rattler_shell = { git = "https://github.com/conda/rattler", branch = "main" } +rattler_solve = { git = "https://github.com/conda/rattler", branch = "main" } +rattler_redaction = { git = "https://github.com/conda/rattler", branch = "main" } +rattler_virtual_packages = { git = "https://github.com/conda/rattler", branch = "main" } +rattler_package_streaming = { git = "https://github.com/conda/rattler", branch = "main" } +rattler_menuinst = { git = "https://github.com/conda/rattler", branch = "main" } diff --git a/src/lib.rs b/src/lib.rs index 31e28faa9..21c0c87c7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -721,7 +721,7 @@ pub async fn rebuild( rebuild::extract_recipe(&rebuild_data.package_file, temp_folder.path()).into_diagnostic()?; - let temp_dir = temp_folder.into_path(); + let temp_dir = temp_folder.keep(); tracing::info!("Extracted recipe to: {:?}", temp_dir); diff --git a/src/linux/link.rs b/src/linux/link.rs index b56a69f03..ae2ace048 100644 --- a/src/linux/link.rs +++ b/src/linux/link.rs @@ -426,7 +426,7 @@ mod test { // copy binary to a temporary directory let prefix = Path::new(env!("CARGO_MANIFEST_DIR")).join("test-data/binary_files"); - let tmp_dir = tempdir_in(&prefix)?.into_path(); + let tmp_dir = tempdir_in(&prefix)?.keep(); let binary_path = tmp_dir.join("zlink"); fs::copy(prefix.join("zlink"), &binary_path)?; @@ -457,7 +457,7 @@ mod test { ); // manually clean up temporary directory because it was - // persisted to disk by calling `into_path` + // persisted to disk by calling `keep` fs::remove_dir_all(tmp_dir)?; Ok(()) @@ -477,7 +477,7 @@ mod test { // copy binary to a temporary directory let prefix = Path::new(env!("CARGO_MANIFEST_DIR")).join("test-data/binary_files"); - let tmp_dir = tempdir_in(&prefix)?.into_path(); + let tmp_dir = tempdir_in(&prefix)?.keep(); let binary_path = tmp_dir.join("zlink-no-rpath"); fs::copy(prefix.join("zlink-no-rpath"), &binary_path)?; @@ -502,7 +502,7 @@ mod test { ); // manually clean up temporary directory because it was - // persisted to disk by calling `into_path` + // persisted to disk by calling `keep` fs::remove_dir_all(tmp_dir)?; Ok(()) diff --git a/src/packaging/metadata.rs b/src/packaging/metadata.rs index c6e444b59..39cd5ec86 100644 --- a/src/packaging/metadata.rs +++ b/src/packaging/metadata.rs @@ -314,6 +314,7 @@ impl Output { subdir: Some(self.build_configuration.target_platform.to_string()), license: recipe.about().license.as_ref().map(|l| l.to_string()), license_family: recipe.about().license_family.clone(), + purls: recipe.about().purls.clone(), timestamp: Some(self.build_configuration.timestamp), depends: finalized_dependencies .run diff --git a/src/recipe/error.rs b/src/recipe/error.rs index af986304b..c96af58c1 100644 --- a/src/recipe/error.rs +++ b/src/recipe/error.rs @@ -136,6 +136,10 @@ pub enum ErrorKind { #[diagnostic(code(error::url_parsing))] UrlParsing(#[from] url::ParseError), + /// Error when processing purl + #[diagnostic(code(error::purl_parsing))] + PurlParsing(#[from] purl::ParseError), + /// Error when parsing a integer. #[diagnostic(code(error::integer_parsing))] IntegerParsing(#[from] std::num::ParseIntError), @@ -266,6 +270,7 @@ impl fmt::Display for ErrorKind { write!(f, "condition in `if` selector must be a boolean: {}", err) } ErrorKind::UrlParsing(err) => write!(f, "failed to parse URL: {}", err), + ErrorKind::PurlParsing(err) => write!(f, "failed to parse purl: {}", err), ErrorKind::IntegerParsing(err) => write!(f, "failed to parse integer: {}", err), ErrorKind::SpdxParsing(err) => { writeln!(f, "failed to parse SPDX license: {}", err.reason)?; diff --git a/src/recipe/parser/about.rs b/src/recipe/parser/about.rs index baa2dbfad..13c2841f3 100644 --- a/src/recipe/parser/about.rs +++ b/src/recipe/parser/about.rs @@ -1,8 +1,10 @@ use std::{ + collections::BTreeSet, fmt::{Display, Formatter}, str::FromStr, }; +use rattler_conda_types::PackageUrl; use serde::{Deserialize, Serialize}; use serde_with::{DeserializeFromStr, SerializeDisplay}; use spdx::Expression; @@ -12,7 +14,8 @@ use crate::{ _partialerror, recipe::{ custom_yaml::{ - HasSpan, RenderedMappingNode, RenderedNode, RenderedScalarNode, TryConvertNode, + HasSpan, RenderedMappingNode, RenderedNode, RenderedScalarNode, RenderedSequenceNode, + TryConvertNode, }, error::{ErrorKind, PartialParsingError}, }, @@ -45,6 +48,9 @@ pub struct About { /// The license URL of the package. #[serde(skip_serializing_if = "Option::is_none")] pub license_url: Option, + /// The package urls of the package. + #[serde(skip_serializing_if = "Option::is_none")] + pub purls: Option>, /// The summary of the package. #[serde(skip_serializing_if = "Option::is_none")] pub summary: Option, @@ -63,6 +69,42 @@ impl About { } } +impl TryConvertNode> for RenderedSequenceNode { + fn try_convert(&self, name: &str) -> Result, Vec> { + let mut result: BTreeSet = BTreeSet::new(); + let mut errors = Vec::new(); + for item in self.iter() { + let s: String = item.try_convert(name)?; + match PackageUrl::from_str(&s) { + Ok(purl) => { + result.insert(purl); + } + Err(err) => { + errors.push(_partialerror!(*item.span(), ErrorKind::PurlParsing(err),)); + } + } + } + if errors.is_empty() { + Ok(result) + } else { + Err(errors) + } + } +} + +impl TryConvertNode> for RenderedNode { + fn try_convert(&self, name: &str) -> Result, Vec> { + match self { + RenderedNode::Sequence(sequence) => sequence.try_convert(name), + _ => Err(vec![_partialerror!( + *self.span(), + ErrorKind::ExpectedSequence, + label = "expected a list of package urls" + )]), + } + } +} + impl TryConvertNode for RenderedNode { fn try_convert(&self, name: &str) -> Result> { self.as_mapping() @@ -85,6 +127,7 @@ impl TryConvertNode for RenderedMappingNode { license_family, license_file, license_url, + purls, summary, description, prelink_message @@ -185,4 +228,23 @@ mod test { assert_miette_snapshot!(err); } + + #[test] + fn invalid_purls() { + let recipe = r#" + package: + name: test + version: 0.0.1 + + about: + purls: + - purl1 + "#; + + let err: ParseErrors<_> = Recipe::from_yaml(recipe, SelectorConfig::default()) + .unwrap_err() + .into(); + + assert_miette_snapshot!(err); + } } diff --git a/src/recipe/parser/snapshots/rattler_build__recipe__parser__about__test__invalid_purls.snap b/src/recipe/parser/snapshots/rattler_build__recipe__parser__about__test__invalid_purls.snap new file mode 100644 index 000000000..90d599167 --- /dev/null +++ b/src/recipe/parser/snapshots/rattler_build__recipe__parser__about__test__invalid_purls.snap @@ -0,0 +1,15 @@ +--- +source: src/recipe/parser/about.rs +expression: err +--- + × Failed to parse recipe + +Error: + × failed to parse purl: URL scheme must be pkg + ╭─[8:19] + 7 │ purls: + 8 │ - purl1 + · ──┬── + · ╰── here + 9 │ + ╰──── diff --git a/src/recipe/snapshots/rattler_build__recipe__parser__tests__recipe_windows.snap b/src/recipe/snapshots/rattler_build__recipe__parser__tests__recipe_windows.snap index 158a1c27d..6f7f46357 100644 --- a/src/recipe/snapshots/rattler_build__recipe__parser__tests__recipe_windows.snap +++ b/src/recipe/snapshots/rattler_build__recipe__parser__tests__recipe_windows.snap @@ -457,6 +457,7 @@ Recipe { "LICENSE{,/**}", ], license_url: None, + purls: None, summary: Some( "The C++ tensor algebra library", ), diff --git a/src/recipe/snapshots/rattler_build__recipe__parser__tests__unix_recipe.snap b/src/recipe/snapshots/rattler_build__recipe__parser__tests__unix_recipe.snap index 31d0f06bc..b041c7a51 100644 --- a/src/recipe/snapshots/rattler_build__recipe__parser__tests__unix_recipe.snap +++ b/src/recipe/snapshots/rattler_build__recipe__parser__tests__unix_recipe.snap @@ -480,6 +480,7 @@ Recipe { "LICENSE{,/**}", ], license_url: None, + purls: None, summary: Some( "The C++ tensor algebra library", ), diff --git a/src/source/copy_dir.rs b/src/source/copy_dir.rs index 2b82113fe..d10058477 100644 --- a/src/source/copy_dir.rs +++ b/src/source/copy_dir.rs @@ -483,7 +483,7 @@ mod test { #[test] fn test_copy_dir() { let tmp_dir = tempfile::TempDir::new().unwrap(); - let tmp_dir_path = tmp_dir.into_path(); + let tmp_dir_path = tmp_dir.keep(); let dir = tmp_dir_path.as_path().join("test_copy_dir"); fs_err::create_dir_all(&dir).unwrap(); diff --git a/test-data/recipes/purls/recipe.yaml b/test-data/recipes/purls/recipe.yaml new file mode 100644 index 000000000..e15847889 --- /dev/null +++ b/test-data/recipes/purls/recipe.yaml @@ -0,0 +1,18 @@ +context: + version: "1.0.0" + +package: + name: "purls" + version: ${{ version }} + +build: + noarch: generic + +about: + purls: + - pkg:pypi/purls@${{ version }} + - if: linux + then: pkg:conda/purls-linux@${{ version }} + else: pkg:conda/purls-other@${{ version }} + + diff --git a/test/end-to-end/test_simple.py b/test/end-to-end/test_simple.py index 91d0bb96b..0a9d9fe5b 100644 --- a/test/end-to-end/test_simple.py +++ b/test/end-to-end/test_simple.py @@ -2,17 +2,18 @@ import json import os import platform +import subprocess import uuid from dataclasses import dataclass, field from pathlib import Path from subprocess import DEVNULL, STDOUT, CalledProcessError, check_output from typing import Iterator +from zipfile import ZipFile import boto3 import pytest import requests import yaml -import subprocess from helpers import RattlerBuild, check_build_output, get_extracted_package, get_package @@ -1903,3 +1904,18 @@ def test_merge_build_and_host( recipes / "merge_build_and_host/recipe.yaml", tmp_path, ) + + +def test_purls(rattler_build: RattlerBuild, recipes: Path, tmp_path: Path): + rattler_build.build( + recipes / "purls", + tmp_path, + ) + + extracted_dir = get_extracted_package(tmp_path, "purls") + assert extracted_dir.exists() + assert (index_json := (extracted_dir / "info" / "index.json")).exists() + assert set((json.loads(index_json.read_text()))["purls"]) == { + "pkg:pypi/purls@1.0.0", + f'pkg:conda/purls-{"linux" if platform.system() == "Linux" else "other"}@1.0.0', + }