diff --git a/.gitignore b/.gitignore index 787522c..a7a581a 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,10 @@ /cramjam-2.9.0rc1.tar.gz /cramjam-2.9.0.tar.gz /cramjam-2.9.1.tar.gz +/cramjam-61564e7761e38e5ec55e7939ccd6a276c2c55d11-filtered.tar.gz +/cramjam-cdc7d307d0f592f89b3319a7037fd875a5371ef3-filtered.tar.gz +/cramjam-2.10.0rc1.tar.gz +/cramjam-2.10.0.tar.gz +/cramjam-2.11.0rc2.tar.gz +/cramjam-2.11.0rc3.tar.gz +/cramjam-2.11.0.tar.gz diff --git a/196.patch b/196.patch deleted file mode 100644 index 89f17fb..0000000 --- a/196.patch +++ /dev/null @@ -1,20 +0,0 @@ -From 7a993e9d4418a5e44c0c775a11c438f248b333c7 Mon Sep 17 00:00:00 2001 -From: Agriya Khetarpal <74401230+agriyakhetarpal@users.noreply.github.com> -Date: Mon, 30 Dec 2024 19:49:23 +0530 -Subject: [PATCH] Add a `version` key in the `[project]` table - ---- - pyproject.toml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/pyproject.toml b/pyproject.toml -index 038e21ae..acb2a183 100644 ---- a/pyproject.toml -+++ b/pyproject.toml -@@ -1,5 +1,6 @@ - [project] - name = "cramjam" -+version = "2.9.1" - keywords = ["compression", "decompression", "snappy", "zstd", "bz2", "gzip", "lz4", "brotli", "deflate", "blosc2"] - requires-python = ">=3.8" - license = { file = "LICENSE" } diff --git a/python-cramjam.spec b/python-cramjam.spec index 1a226e6..cb1b1c2 100644 --- a/python-cramjam.spec +++ b/python-cramjam.spec @@ -1,10 +1,10 @@ %bcond tests 1 -# isa-l is ExcludeArch: i686 -%bcond isal %[ 0%{?__isa_bits} != 32 ] +#global commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +#global snapdate YYYYMMDD Name: python-cramjam -Version: 2.9.1 +Version: 2.11.0 Release: %autorelease Summary: Thin Python bindings to de/compression algorithms in Rust @@ -33,12 +33,10 @@ Source1: get_source %endif -# Updates for Maturin 1.8: add a version key in the project metadata -# https://github.com/milesgranger/cramjam/pull/196 -Patch: %{url}/pull/196.patch +BuildSystem: pyproject +BuildOption(install): -l cramjam -BuildRequires: python3-devel -BuildRequires: tomcli +BuildRequires: tomcli >= 0.8.0 BuildRequires: cargo-rpm-macros >= 24 %if %{with tests} @@ -46,7 +44,6 @@ BuildRequires: cargo-rpm-macros >= 24 # dev extra in pyproject.toml. BuildRequires: %{py3_dist numpy} BuildRequires: %{py3_dist pytest} -BuildRequires: %{py3_dist pytest-xdist} BuildRequires: %{py3_dist hypothesis} %endif @@ -60,7 +57,6 @@ BuildRequires: %{py3_dist hypothesis} Summary: %{summary} # 0BSD OR MIT OR Apache-2.0 # Apache-2.0 -# Apache-2.0 OR MIT # BSD-3-Clause # BSD-3-Clause AND MIT # MIT @@ -78,19 +74,30 @@ License: %{shrink: %description -n python3-cramjam %{common_description} -%prep -%autosetup -n cramjam-%{srcversion} - -# Do not strip the compiled Python module; we need useful debuginfo. Upstream -# set this intentionally, so this makes sense to keep downstream-only. -tomcli set pyproject.toml false 'tool.maturin.strip' -tomcli set pyproject.toml false 'profile.release.strip' - +%prep -a # Downstream-only: patch out the generate-import-lib feature, which is only # relevant on Windows, and which depends on the corresponding pyo3 feature – # which is not packaged for that reason. tomcli set Cargo.toml del 'features.generate-import-lib' +# Downstream-only: patch out the wasm-compat feature, which is unnecessary and +# would bring in unwanted dependencies +tomcli set Cargo.toml del 'features.wasm32-compat' + +# Downstream-only: patch out the "experimental" feature and all of the features +# related to blosc2 and isa-l support. We only want to build the Python +# extension with the default features, and we only want maturin to check +# dependencies for those features. +blosc2_isal_features="$( + tomcli get Cargo.toml features -F newline-keys | + grep -E 'blosc2|ideflate|igzip|isal|izlib' | + tr '\n' ' ' +)" +for feature in experimental ${blosc2_isal_features} +do + tomcli set Cargo.toml del "features.${feature}" +done + # Downstream-only: remove all the static-linking features, and make the # dynamic-linking ones default, as we do in rust-libcramjam. static_features="$( @@ -109,74 +116,22 @@ do fi done -# Downstream-only: patch out the wasm-compat feature, which requires an -# unavailable blosc2 crate feature. -tomcli set Cargo.toml del 'features.wasm32-compat' - -%if %{without isal} -tomcli set Cargo.toml lists delitem --type regex \ - 'features.default' 'i(gzip|deflate|zlib)' -isal_features="$( - tomcli get Cargo.toml features -F newline-keys | - grep -E '^i(gzip|deflate|zlib)|-isal-' | - tr '\n' ' ' -)" -for sf in ${isal_features} -do - tomcli set Cargo.toml del "features.${sf}" -done -%endif - %cargo_prep -%generate_buildrequires -%pyproject_buildrequires +%generate_buildrequires -a %cargo_generate_buildrequires -%build -export RUSTFLAGS='%{build_rustflags}' +%build -p %cargo_license_summary %{cargo_license} > LICENSES.dependencies -%pyproject_wheel -%install -%pyproject_install -%pyproject_save_files cramjam - - -%check -%pyproject_check_import +%check -a %if %{with tests} -%ifarch s390x -# Even after serious effort by upstream (see -# https://github.com/milesgranger/blosc2-rs/issues/23), several blosc2-rs tests -# still fail on s390x, and therefore blosc2-related tests may also fail in this -# package. Making this package ExcludeArch would have a ripple effect on -# a whole tree of packages that depend on it, and which probably do not even -# use its blosc2 support. We consider that outcome even worse than shipping -# broken blosc2 support on s390x. Note that the endianness issues are probably -# in the C blosc2 library (and that the blosc2 package ignores any and all -# test failures on s390x), and see also: -# https://github.com/Blosc/c-blosc2/issues/467. -# -# […] -# E cramjam.DecompressionError: Blosc2(InvalidHeader) -# […] -# tests/test_variants.py:55: DecompressionError -k="${k-}${k+ and }not test_variants_different_dtypes[blosc2]" -%endif - -# Some tests in test_variants.py may produce segmentation faults -# https://github.com/milesgranger/cramjam/issues/190 -k="${k-}${k+ and }not (test_variants and [blosc2)" - -%if 0%{?fedora} > 41 # Test failures in test_variants_decompress_into with recent hypothesis -# versions -# https://github.com/milesgranger/cramjam/issues/201 +# versions: https://github.com/milesgranger/cramjam/issues/201 # # It is hard to be really sure what is going on here. The failures are # concerning, and might (or might not) reflect a serious problem. Nevertheless, @@ -184,14 +139,17 @@ k="${k-}${k+ and }not (test_variants and [blosc2)" # not reason to believe that the package has *new* problems. It *might* have # newly *revealed* problems. This merits further investigation. k="${k-}${k+ and }not test_variants_decompress_into" -%endif -%pytest -k "${k-}" -v -n auto +# Regression with miniz_oxide>0.8.5 +# https://github.com/milesgranger/cramjam/issues/211 +# Failed: DID NOT RAISE +k="${k-}${k+ and }not test_variants_raise_exception[deflate]" + +%pytest -k "${k-}" --ignore=benchmarks/test_bench.py -v %endif %files -n python3-cramjam -f %{pyproject_files} -%license LICENSE LICENSES.dependencies %doc README.md diff --git a/sources b/sources index cf0327b..9b98da9 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cramjam-2.9.1.tar.gz) = a2bcb6f98c8f7ffdf026fe9ffc061b3a462368a9bb69eea79697f7cba5091b1beb52cde9c298423d3a7538f86c1d6b15fdd083ccfd26fa2700c024c6d2a0437f +SHA512 (cramjam-2.11.0.tar.gz) = d92446c0c0ef885f3544783caa1f179fd50b6a6290ada011495b7385411527f75a2544c0c8cdc36910c83c879dbac7dd130f4fe8f3dc3b885a84a45286cb3695