Compare commits
33 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ed709046ea | ||
|
|
9233dbc996 | ||
|
|
2344e1fb46 | ||
|
|
05fe45941e | ||
|
|
a9dc08b12b | ||
|
|
c9aa2899b6 | ||
|
|
a6f9420ae8 | ||
|
|
cf3a917ff3 | ||
|
|
96ae7df798 | ||
|
|
08f281c034 | ||
|
|
7e7726133c | ||
|
|
87d59a3af7 | ||
|
|
8318941aeb | ||
|
|
40f3d5aecb | ||
|
|
c57085d2d0 | ||
|
|
26737d07f0 | ||
|
|
dd26b0fa97 | ||
|
|
29da16297c | ||
|
|
fbf783c04f | ||
|
|
1b551f270c | ||
|
|
f21b8048d2 | ||
|
|
ec1308384a | ||
|
|
319eba6ebb | ||
|
|
c81c8fc454 | ||
|
|
c663726bce | ||
|
|
7fe16cc411 | ||
|
|
460c02b931 | ||
|
|
c311c75d96 | ||
|
|
b9be4ddadd | ||
|
|
ded4fd5129 | ||
|
|
818d3bee3d | ||
|
|
de7622062a | ||
|
|
3ebdbdac59 |
4 changed files with 156 additions and 58 deletions
12
.gitignore
vendored
12
.gitignore
vendored
|
|
@ -1,3 +1,15 @@
|
||||||
/cramjam-2.8.1.tar.gz
|
/cramjam-2.8.1.tar.gz
|
||||||
/cramjam-2.8.2.tar.gz
|
/cramjam-2.8.2.tar.gz
|
||||||
/cramjam-2.8.3.tar.gz
|
/cramjam-2.8.3.tar.gz
|
||||||
|
/cramjam-6068e8bbb8786c9173b2f0a229032b9ed7452b79-filtered.tar.gz
|
||||||
|
/cramjam-2.8.4.tar.gz
|
||||||
|
/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
|
||||||
|
|
|
||||||
49
get_source
Executable file
49
get_source
Executable file
|
|
@ -0,0 +1,49 @@
|
||||||
|
#!/bin/sh
|
||||||
|
set -o errexit
|
||||||
|
set -o nounset
|
||||||
|
|
||||||
|
if [ "$#" != '1' ]
|
||||||
|
then
|
||||||
|
cat 1>&2 <<EOF
|
||||||
|
Usage: $0 VERSION
|
||||||
|
|
||||||
|
Downloads the requested version and creates a filtered source tarball.
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
VERSION="${1}"
|
||||||
|
OUTDIR="${PWD}"
|
||||||
|
TMPDIR="$(mktemp -d)"
|
||||||
|
trap "rm -rf '${TMPDIR}'" INT TERM EXIT
|
||||||
|
|
||||||
|
cd "${TMPDIR}"
|
||||||
|
REPO="https://github.com/milesgranger/cramjam"
|
||||||
|
URL="${REPO}/archive/${VERSION}/cramjam-${VERSION}.tar.gz"
|
||||||
|
echo "--> Downloading: ${URL}" 1>&2
|
||||||
|
curl -L -O "${URL}"
|
||||||
|
|
||||||
|
ARCHIVE="$(find . -mindepth 1 -maxdepth 1 -type f -name '*.tar.gz' -print -quit)"
|
||||||
|
echo "--> Extracting: $(basename "${ARCHIVE}")" 1>&2
|
||||||
|
tar -xzf "${ARCHIVE}"
|
||||||
|
echo '--> Removing benchmarks/data/ due to licensing issues' 1>&2
|
||||||
|
TARDIR="$(basename "${ARCHIVE}" '.tar.gz')"
|
||||||
|
MTIME="$(stat -c '%Y' "${TARDIR}")"
|
||||||
|
rm -rvf "${TARDIR}/benchmarks/data/"
|
||||||
|
# Make sure the original mtime is preserved even if we modified the base
|
||||||
|
# directory by removing something at the top level. (So far, we didn’t.)
|
||||||
|
touch -d @"${MTIME}" "${TARDIR}"
|
||||||
|
FILTERED="$(basename "${ARCHIVE}" .tar.gz)-filtered.tar.gz"
|
||||||
|
echo "--> Re-archiving: ${FILTERED}" 1>&2
|
||||||
|
# https://www.gnu.org/software/tar/manual/html_section/Reproducibility.html
|
||||||
|
TZ=UTC LC_ALL=C tar \
|
||||||
|
--create --verbose \
|
||||||
|
--sort=name \
|
||||||
|
--format=posix \
|
||||||
|
--numeric-owner --owner=0 --group=0 \
|
||||||
|
--mode=go+u,go-w \
|
||||||
|
--pax-option='delete=atime,delete=ctime' \
|
||||||
|
"${TARDIR}/" |
|
||||||
|
gzip -9 > "${FILTERED}"
|
||||||
|
mv -v "${FILTERED}" "${OUTDIR}"
|
||||||
|
echo 'Done.' 1>&2
|
||||||
|
|
@ -1,30 +1,51 @@
|
||||||
%bcond tests 1
|
%bcond tests 1
|
||||||
|
|
||||||
|
#global commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
|
#global snapdate YYYYMMDD
|
||||||
|
|
||||||
Name: python-cramjam
|
Name: python-cramjam
|
||||||
Version: 2.8.3
|
Version: 2.11.0
|
||||||
Release: %autorelease
|
Release: %autorelease
|
||||||
Summary: Thin Python bindings to de/compression algorithms in Rust
|
Summary: Thin Python bindings to de/compression algorithms in Rust
|
||||||
|
|
||||||
# SPDX
|
# SPDX
|
||||||
License: MIT
|
License: MIT
|
||||||
URL: https://github.com/milesgranger/cramjam
|
URL: https://github.com/milesgranger/cramjam
|
||||||
# The PyPI sdist is structured like the git repository, but with pyproject.toml
|
|
||||||
# moved to the top level from cramjam-python/ and
|
|
||||||
# manifest-path = "cramjam-python/Cargo.toml"
|
|
||||||
# added to the [tool.maturin] section. We find it easiest to just build from
|
|
||||||
# the GitHub source archive.
|
|
||||||
Source: %{url}/archive/v%{version}/cramjam-%{version}.tar.gz
|
|
||||||
|
|
||||||
BuildRequires: python3-devel
|
%if !%{defined commit}
|
||||||
BuildRequires: tomcli
|
|
||||||
|
# This handles pre-release versioning:
|
||||||
|
%global srcversion %(echo '%{version}' | tr -d '~')
|
||||||
|
# Future PyPI sdists should not include benchmark data (some of which has
|
||||||
|
# complicated or unclear license status). See: “Consider excluding benchmarks
|
||||||
|
# from PyPI sdists” https://github.com/milesgranger/cramjam/issues/178
|
||||||
|
Source: %{pypi_source cramjam %{srcversion}}
|
||||||
|
|
||||||
|
%else
|
||||||
|
|
||||||
|
%global srcversion %{commit}
|
||||||
|
# For snapshots, we must filter the source archive from GitHub using the script
|
||||||
|
# in Source1, since some of the benchmark data has complicated or unclear
|
||||||
|
# license status.
|
||||||
|
Source0: cramjam-%{commit}-filtered.tar.gz
|
||||||
|
# ./get_source ${COMMIT} (or ${TAG})
|
||||||
|
Source1: get_source
|
||||||
|
|
||||||
|
%endif
|
||||||
|
|
||||||
|
BuildSystem: pyproject
|
||||||
|
BuildOption(install): -l cramjam
|
||||||
|
|
||||||
|
BuildRequires: tomcli >= 0.8.0
|
||||||
BuildRequires: cargo-rpm-macros >= 24
|
BuildRequires: cargo-rpm-macros >= 24
|
||||||
|
|
||||||
# The Python extension module now gets a SONAME of libcramjam.so; we
|
%if %{with tests}
|
||||||
# must ensure it is not used to generate automatic Provides. See:
|
# These (along with some unwanted dependencies like linters) are listed in the
|
||||||
# Rust 1.81+ implicitly / automatically sets soname on cdylib targets
|
# dev extra in pyproject.toml.
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2314879
|
BuildRequires: %{py3_dist numpy}
|
||||||
# https://docs.fedoraproject.org/en-US/packaging-guidelines/AutoProvidesAndRequiresFiltering/#_filtering_provides_and_requires_after_scanning
|
BuildRequires: %{py3_dist pytest}
|
||||||
%global __provides_exclude ^libcramjam\\.so.*$
|
BuildRequires: %{py3_dist hypothesis}
|
||||||
|
%endif
|
||||||
|
|
||||||
%global common_description %{expand:
|
%global common_description %{expand:
|
||||||
%{summary}.}
|
%{summary}.}
|
||||||
|
|
@ -36,7 +57,6 @@ BuildRequires: cargo-rpm-macros >= 24
|
||||||
Summary: %{summary}
|
Summary: %{summary}
|
||||||
# 0BSD OR MIT OR Apache-2.0
|
# 0BSD OR MIT OR Apache-2.0
|
||||||
# Apache-2.0
|
# Apache-2.0
|
||||||
# Apache-2.0 OR MIT
|
|
||||||
# BSD-3-Clause
|
# BSD-3-Clause
|
||||||
# BSD-3-Clause AND MIT
|
# BSD-3-Clause AND MIT
|
||||||
# MIT
|
# MIT
|
||||||
|
|
@ -54,66 +74,83 @@ License: %{shrink:
|
||||||
%description -n python3-cramjam %{common_description}
|
%description -n python3-cramjam %{common_description}
|
||||||
|
|
||||||
|
|
||||||
%prep
|
%prep -a
|
||||||
%autosetup -n cramjam-%{version}
|
|
||||||
|
|
||||||
# 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 cramjam-python/pyproject.toml false 'tool.maturin.strip'
|
|
||||||
|
|
||||||
# Downstream-only: patch out linters/formatters/etc. from the “dev” extra so we
|
|
||||||
# can use it to generate test dependencies.
|
|
||||||
# https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_linters
|
|
||||||
tomcli set cramjam-python/pyproject.toml lists delitem --type regex \
|
|
||||||
'project.optional-dependencies.dev' '(black)\b.*'
|
|
||||||
|
|
||||||
# Downstream-only: patch out the generate-import-lib feature, which is only
|
# Downstream-only: patch out the generate-import-lib feature, which is only
|
||||||
# relevant on Windows, and which depends on the corresponding pyo3 feature –
|
# relevant on Windows, and which depends on the corresponding pyo3 feature –
|
||||||
# which is not packaged for that reason.
|
# which is not packaged for that reason.
|
||||||
tomcli set cramjam-python/Cargo.toml del 'features.generate-import-lib'
|
tomcli set Cargo.toml del 'features.generate-import-lib'
|
||||||
|
|
||||||
# Remove bundled rust-libcramjam and the sources for cramjam-cli, which is
|
# Downstream-only: patch out the wasm-compat feature, which is unnecessary and
|
||||||
# versioned and released separately. Keep only the contents of cramjam-python/
|
# would bring in unwanted dependencies
|
||||||
# and the LICENSE file.
|
tomcli set Cargo.toml del 'features.wasm32-compat'
|
||||||
find . -mindepth 1 -maxdepth 1 ! -type d ! -name LICENSE -print -delete
|
|
||||||
find . -mindepth 1 -maxdepth 1 -type d ! -name cramjam-python \
|
# Downstream-only: patch out the "experimental" feature and all of the features
|
||||||
-exec rm -rv '{}' '+'
|
# 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="$(
|
||||||
|
tomcli get Cargo.toml features -F newline-keys |
|
||||||
|
grep -E '.-static$' |
|
||||||
|
tr '\n' ' '
|
||||||
|
)"
|
||||||
|
for sf in ${static_features}
|
||||||
|
do
|
||||||
|
tomcli set Cargo.toml del "features.${sf}"
|
||||||
|
if ! echo "${sf}" | grep -E '^use-system-' >/dev/null
|
||||||
|
then
|
||||||
|
binding="$(echo "${sf}" | sed -r 's/-static//')"
|
||||||
|
tomcli set Cargo.toml lists replace --type regex \
|
||||||
|
"features.${binding}" "${binding}-static" "${binding}-shared"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
cd cramjam-python
|
|
||||||
%cargo_prep
|
%cargo_prep
|
||||||
|
|
||||||
|
|
||||||
%generate_buildrequires
|
%generate_buildrequires -a
|
||||||
cd cramjam-python
|
|
||||||
%pyproject_buildrequires %{?with_tests:-x dev}
|
|
||||||
%cargo_generate_buildrequires
|
%cargo_generate_buildrequires
|
||||||
|
|
||||||
|
|
||||||
%build
|
%build -p
|
||||||
export RUSTFLAGS='%{build_rustflags}'
|
|
||||||
cd cramjam-python
|
|
||||||
%cargo_license_summary
|
%cargo_license_summary
|
||||||
%{cargo_license} > ../LICENSES.dependencies
|
%{cargo_license} > LICENSES.dependencies
|
||||||
%pyproject_wheel
|
|
||||||
|
|
||||||
|
|
||||||
%install
|
%check -a
|
||||||
cd cramjam-python
|
|
||||||
%pyproject_install
|
|
||||||
%pyproject_save_files cramjam
|
|
||||||
|
|
||||||
|
|
||||||
%check
|
|
||||||
cd cramjam-python
|
|
||||||
%pyproject_check_import
|
|
||||||
%if %{with tests}
|
%if %{with tests}
|
||||||
%pytest -v -n auto --ignore-glob='benchmarks/*'
|
# Test failures in test_variants_decompress_into with recent hypothesis
|
||||||
|
# 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,
|
||||||
|
# since the problem appears to be linked to newer hypothesis versions, there’s
|
||||||
|
# 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"
|
||||||
|
|
||||||
|
# Regression with miniz_oxide>0.8.5
|
||||||
|
# https://github.com/milesgranger/cramjam/issues/211
|
||||||
|
# Failed: DID NOT RAISE <class 'cramjam.DecompressionError'>
|
||||||
|
k="${k-}${k+ and }not test_variants_raise_exception[deflate]"
|
||||||
|
|
||||||
|
%pytest -k "${k-}" --ignore=benchmarks/test_bench.py -v
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
|
||||||
%files -n python3-cramjam -f %{pyproject_files}
|
%files -n python3-cramjam -f %{pyproject_files}
|
||||||
%license LICENSE LICENSES.dependencies
|
%doc README.md
|
||||||
%doc cramjam-python/README.md
|
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
|
|
||||||
2
sources
2
sources
|
|
@ -1 +1 @@
|
||||||
SHA512 (cramjam-2.8.3.tar.gz) = 26e85bcc09eeef9623bf69f0659e33310c6a0152c3b89572db7e7584319790b682af65733bb863e69204ce1cea37b30de530bb7f1c686e98217f2bf52b81f9d4
|
SHA512 (cramjam-2.11.0.tar.gz) = d92446c0c0ef885f3544783caa1f179fd50b6a6290ada011495b7385411527f75a2544c0c8cdc36910c83c879dbac7dd130f4fe8f3dc3b885a84a45286cb3695
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue