From 08416c7a22d4a6ce1e637313d549ae16ffcd1563 Mon Sep 17 00:00:00 2001 From: tommady Date: Fri, 18 Apr 2025 00:42:35 +0800 Subject: [PATCH] change crate from sevenz-rust to sevenz-rust2 (#796) --- CHANGELOG.md | 1 + Cargo.lock | 189 ++++++++++++++++++++++++++++-------------- Cargo.toml | 2 +- src/archive/sevenz.rs | 18 ++-- src/error.rs | 4 +- 5 files changed, 138 insertions(+), 76 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba482f4..d553bec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ Categories Used: - CI refactor [\#578](https://github.com/ouch-org/ouch/pull/578) ([cyqsimon](https://github.com/cyqsimon)) - Use a prefix `tmp-ouch-` for temporary decompression path name to avoid conflicts [\#725](https://github.com/ouch-org/ouch/pull/725) ([valoq](https://github.com/valoq)) & [\#788](https://github.com/ouch-org/ouch/pull/788) ([talis-fb](https://github.com/talis-fb)) - Run clippy for tests too [\#738](https://github.com/ouch-org/ouch/pull/738) ([marcospb19](https://github.com/marcospb19)) +- Sevenz-rust is unmaintained, switch to sevenz-rust2 [\#796](https://github.com/ouch-org/ouch/pull/796) ([tommady](https://github.com/tommady)) ### Improvements diff --git a/Cargo.lock b/Cargo.lock index 1524148..f87245c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -154,30 +154,15 @@ dependencies = [ "which", ] -[[package]] -name = "bit-set" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0481a0e032742109b1133a095184ee93d88f3dc9e0d28a5d033dc77a073f44f" -dependencies = [ - "bit-vec 0.7.0", -] - [[package]] name = "bit-set" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ - "bit-vec 0.8.0", + "bit-vec", ] -[[package]] -name = "bit-vec" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c54ff287cfc0a34f38a6b832ea1bd8e448a330b3e40a50859e6488bee07f22" - [[package]] name = "bit-vec" version = "0.8.0" @@ -481,21 +466,6 @@ dependencies = [ "libc", ] -[[package]] -name = "crc" -version = "3.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" - [[package]] name = "crc32fast" version = "1.4.2" @@ -542,9 +512,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", ] @@ -848,6 +818,30 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +[[package]] +name = "jiff" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ad87c89110f55e4cd4dc2893a9790820206729eaf221555f742d540b0724a0" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", +] + +[[package]] +name = "jiff-static" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d076d5b64a7e2fe6f0743f02c43ca4a6725c0f904203bfe276a5b3e793103605" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "jobserver" version = "0.1.32" @@ -968,10 +962,10 @@ dependencies = [ ] [[package]] -name = "lzma-rust" -version = "0.1.7" +name = "lzma-rust2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baab2bbbd7d75a144d671e9ff79270e903957d92fb7386fd39034c709bd2661" +checksum = "561d131e2d9b07641ac55bc35de5ae4ac3e783fdeebd3c4c1dd3b6a7b920051a" dependencies = [ "byteorder", ] @@ -1029,11 +1023,13 @@ dependencies = [ [[package]] name = "nt-time" -version = "0.8.1" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2de419e64947cd8830e66beb584acc3fb42ed411d103e3c794dda355d1b374b5" +checksum = "f5e71108c089b161344bacb1227dd2124fee63ed1792fdd8308e6689197c2754" dependencies = [ "chrono", + "jiff", + "rand 0.9.0", "time", ] @@ -1097,11 +1093,11 @@ dependencies = [ "once_cell", "parse-display", "proptest", - "rand", + "rand 0.8.5", "rayon", "regex", "same-file", - "sevenz-rust", + "sevenz-rust2", "snap", "tar", "tempfile", @@ -1145,7 +1141,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1193,6 +1189,21 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +[[package]] +name = "portable-atomic" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -1205,7 +1216,7 @@ version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -1250,13 +1261,13 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ - "bit-set 0.8.0", - "bit-vec 0.8.0", + "bit-set", + "bit-vec", "bitflags 2.8.0", "lazy_static", "num-traits", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "rand_xorshift", "regex-syntax", "rusty-fork", @@ -1286,8 +1297,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "zerocopy 0.8.24", ] [[package]] @@ -1297,7 +1319,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -1309,13 +1341,22 @@ dependencies = [ "getrandom 0.2.15", ] +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.1", +] + [[package]] name = "rand_xorshift" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -1455,21 +1496,21 @@ dependencies = [ ] [[package]] -name = "sevenz-rust" -version = "0.6.1" +name = "sevenz-rust2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26482cf1ecce4540dc782fc70019eba89ffc4d87b3717eb5ec524b5db6fdefef" +checksum = "dd27d0f7d5e54cab609728bf243f870469dcc845b052285e7e47ef097c04ec6a" dependencies = [ "aes", - "bit-set 0.6.0", + "bit-set", "byteorder", "cbc", - "crc", + "crc32fast", "filetime_creation", + "getrandom 0.3.1", "js-sys", - "lzma-rust", + "lzma-rust2", "nt-time", - "rand", "sha2", "wasm-bindgen", ] @@ -1651,9 +1692,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.37" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "num-conv", @@ -1665,15 +1706,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.19" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", @@ -2013,7 +2054,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +dependencies = [ + "zerocopy-derive 0.8.24", ] [[package]] @@ -2027,6 +2077,17 @@ dependencies = [ "syn 2.0.98", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "zip" version = "0.6.6" diff --git a/Cargo.toml b/Cargo.toml index a9f3ba8..6ce7258 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,7 +35,7 @@ num_cpus = "1.16.0" once_cell = "1.20.2" rayon = "1.10.0" same-file = "1.0.6" -sevenz-rust = { version = "0.6.1", features = ["compress", "aes256"] } +sevenz-rust2 = { version = "0.13.1", features = ["compress", "aes256"] } snap = "1.1.1" tar = "0.4.42" tempfile = "3.10.1" diff --git a/src/archive/sevenz.rs b/src/archive/sevenz.rs index 8898f5f..7c14f0e 100644 --- a/src/archive/sevenz.rs +++ b/src/archive/sevenz.rs @@ -9,7 +9,7 @@ use std::{ use bstr::ByteSlice; use fs_err as fs; use same_file::Handle; -use sevenz_rust::SevenZArchiveEntry; +use sevenz_rust2::SevenZArchiveEntry; use crate::{ error::{Error, FinalError, Result}, @@ -31,7 +31,7 @@ pub fn compress_sevenz( where W: Write + Seek, { - let mut writer = sevenz_rust::SevenZWriter::new(writer)?; + let mut writer = sevenz_rust2::SevenZWriter::new(writer)?; let output_handle = Handle::from_path(output_path); for filename in files { @@ -81,7 +81,7 @@ where .detail(format!("File at '{path:?}' has a non-UTF-8 name")) })?; - let entry = sevenz_rust::SevenZArchiveEntry::from_path(path, entry_name.to_owned()); + let entry = sevenz_rust2::SevenZArchiveEntry::from_path(path, entry_name.to_owned()); let entry_data = if metadata.is_dir() { None } else { @@ -156,15 +156,15 @@ where }; match password { - Some(password) => sevenz_rust::decompress_with_extract_fn_and_password( + Some(password) => sevenz_rust2::decompress_with_extract_fn_and_password( reader, output_path, - sevenz_rust::Password::from(password.to_str().map_err(|err| Error::InvalidPassword { + sevenz_rust2::Password::from(password.to_str().map_err(|err| Error::InvalidPassword { reason: err.to_string(), })?), entry_extract_fn, )?, - None => sevenz_rust::decompress_with_extract_fn(reader, output_path, entry_extract_fn)?, + None => sevenz_rust2::decompress_with_extract_fn(reader, output_path, entry_extract_fn)?, } Ok(count) @@ -197,14 +197,14 @@ pub fn list_archive( }) } }; - sevenz_rust::decompress_with_extract_fn_and_password( + sevenz_rust2::decompress_with_extract_fn_and_password( reader, ".", - sevenz_rust::Password::from(password), + sevenz_rust2::Password::from(password), entry_extract_fn, )?; } - None => sevenz_rust::decompress_with_extract_fn(reader, ".", entry_extract_fn)?, + None => sevenz_rust2::decompress_with_extract_fn(reader, ".", entry_extract_fn)?, } Ok(files.into_iter()) diff --git a/src/error.rs b/src/error.rs index 6b2e92d..3f5bc3e 100644 --- a/src/error.rs +++ b/src/error.rs @@ -235,8 +235,8 @@ impl From for Error { } } -impl From for Error { - fn from(err: sevenz_rust::Error) -> Self { +impl From for Error { + fn from(err: sevenz_rust2::Error) -> Self { Self::SevenzipError { reason: err.to_string(), }