From a710ae468707e50c866e648f9589cf2a6b15a906 Mon Sep 17 00:00:00 2001 From: Reagan Bohan Date: Thu, 8 Aug 2024 10:06:48 +0000 Subject: [PATCH] Add config option to switch to unstable liblzma fork --- Cargo.toml | 9 ++++++++- src/codec/xz2/decoder.rs | 3 +++ src/codec/xz2/encoder.rs | 3 +++ tests/utils/algos.rs | 34 ++++++++++++++++++++++++++++++---- 4 files changed, 44 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 0215300..84b3fd5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,10 +41,14 @@ libzstd = { package = "zstd", version = "0.13.1", optional = true, default-featu memchr = "2" pin-project-lite = "0.2" tokio = { version = "1.24.2", optional = true, default-features = false } -xz2 = { version = "0.1.6", optional = true } zstd-safe = { version = "7", optional = true, default-features = false } deflate64 = { version = "0.1.5", optional = true } +[target.'cfg(not(async_compression_unstable_liblzma_fork))'.dependencies] +xz2 = { version = "0.1.6", optional = true } +[target.'cfg(async_compression_unstable_liblzma_fork)'.dependencies] +xz2 = { package = "liblzma", version = "0.3.2", optional = true } + [dev-dependencies] bytes = "1" futures = "0.3.5" @@ -103,3 +107,6 @@ required-features = ["zlib", "tokio"] [[example]] name = "zstd_gzip" required-features = ["zstd", "gzip", "tokio"] + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(async_compression_unstable_liblzma_fork)'] } diff --git a/src/codec/xz2/decoder.rs b/src/codec/xz2/decoder.rs index 158976a..129b040 100644 --- a/src/codec/xz2/decoder.rs +++ b/src/codec/xz2/decoder.rs @@ -1,5 +1,8 @@ use std::{fmt, io}; +#[cfg(async_compression_unstable_liblzma_fork)] +use liblzma::stream::{Action, Status, Stream}; +#[cfg(not(async_compression_unstable_liblzma_fork))] use xz2::stream::{Action, Status, Stream}; use crate::{codec::Decode, util::PartialBuffer}; diff --git a/src/codec/xz2/encoder.rs b/src/codec/xz2/encoder.rs index cf5d7cd..a9402cb 100644 --- a/src/codec/xz2/encoder.rs +++ b/src/codec/xz2/encoder.rs @@ -1,5 +1,8 @@ use std::{fmt, io}; +#[cfg(async_compression_unstable_liblzma_fork)] +use liblzma::stream::{Action, Check, LzmaOptions, Status, Stream}; +#[cfg(not(async_compression_unstable_liblzma_fork))] use xz2::stream::{Action, Check, LzmaOptions, Status, Stream}; use crate::{ diff --git a/tests/utils/algos.rs b/tests/utils/algos.rs index b82bdba..67dd8e4 100644 --- a/tests/utils/algos.rs +++ b/tests/utils/algos.rs @@ -169,14 +169,22 @@ algos! { pub use crate::utils::impls::sync::to_vec; pub fn compress(bytes: &[u8]) -> Vec { + #[cfg(not(async_compression_unstable_liblzma_fork))] use xz2::bufread::XzEncoder; + #[cfg(async_compression_unstable_liblzma_fork)] + use liblzma::bufread::XzEncoder; + to_vec(XzEncoder::new(bytes, 0)) } pub fn decompress(bytes: &[u8]) -> Vec { + #[cfg(not(async_compression_unstable_liblzma_fork))] use xz2::bufread::XzDecoder; + #[cfg(async_compression_unstable_liblzma_fork)] + use liblzma::bufread::XzDecoder; + to_vec(XzDecoder::new(bytes)) } } @@ -187,8 +195,17 @@ algos! { pub use crate::utils::impls::sync::to_vec; pub fn compress(bytes: &[u8]) -> Vec { - use xz2::bufread::XzEncoder; - use xz2::stream::{LzmaOptions, Stream}; + #[cfg(not(async_compression_unstable_liblzma_fork))] + use xz2::{ + bufread::XzEncoder, + stream::{LzmaOptions, Stream}, + }; + + #[cfg(async_compression_unstable_liblzma_fork)] + use liblzma::{ + bufread::XzEncoder, + stream::{LzmaOptions, Stream}, + }; to_vec(XzEncoder::new_stream( bytes, @@ -197,8 +214,17 @@ algos! { } pub fn decompress(bytes: &[u8]) -> Vec { - use xz2::bufread::XzDecoder; - use xz2::stream::Stream; + #[cfg(not(async_compression_unstable_liblzma_fork))] + use xz2::{ + bufread::XzDecoder, + stream::Stream, + }; + + #[cfg(async_compression_unstable_liblzma_fork)] + use liblzma::{ + bufread::XzDecoder, + stream::Stream, + }; to_vec(XzDecoder::new_stream( bytes,