Initial package (close RHBZ#2257285)

This commit is contained in:
Benjamin A. Beasley 2024-02-14 08:01:04 -05:00
commit 5bbaf014cf
6 changed files with 171 additions and 0 deletions

109
python-cramjam.spec Normal file
View file

@ -0,0 +1,109 @@
%bcond tests 1
Name: python-cramjam
Version: 2.8.1
Release: %autorelease
Summary: Thin Python bindings to de/compression algorithms in Rust
# SPDX
License: MIT
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
# Remove relative libcramjam dep for python builds
# See: https://github.com/milesgranger/cramjam/pull/131
Patch: %{url}/commit/ccea06b962959b69596eada330c5acc055a5f195.patch
# Do not strip the compiled Python module; we need useful debuginfo. Upstream
# set this intentionally, so this makes sense to keep downstream-only.
Patch: 0001-Downstream-only-do-not-strip-the-compiled-Python-ext.patch
BuildRequires: python3-devel
BuildRequires: cargo-rpm-macros >= 24
%global common_description %{expand:
%{summary}.}
%description %{common_description}
%package -n python3-cramjam
Summary: %{summary}
# 0BSD OR MIT OR Apache-2.0
# Apache-2.0
# BSD-3-Clause
# BSD-3-Clause AND MIT
# MIT
# MIT OR Apache-2.0
# MIT OR Zlib OR Apache-2.0
License: %{shrink:
(0BSD OR MIT OR Apache-2.0) AND
Apache-2.0 AND
BSD-3-Clause AND
MIT AND
(MIT OR Apache-2.0) AND
(MIT OR Zlib OR Apache-2.0)
}
# LICENSE.dependencies contains a full license breakdown
%description -n python3-cramjam %{common_description}
%prep
%autosetup -n cramjam-%{version} -p1
# 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
sed -r -i 's/^([[:blank:]]*)("(black)\b)/\1# \2/' cramjam-python/pyproject.toml
# Remove bundled rust-libcramjam and the sources for cramjam-cli, which is
# versioned and released separately. Keep only the contents of cramjam-python/
# and the LICENSE file.
find . -mindepth 1 -maxdepth 1 ! -type d ! -name LICENSE -print -delete
find . -mindepth 1 -maxdepth 1 -type d ! -name cramjam-python \
-exec rm -rv '{}' '+'
cd cramjam-python
%cargo_prep
%generate_buildrequires
cd cramjam-python
%pyproject_buildrequires %{?with_tests:-x dev}
%cargo_generate_buildrequires
%build
export RUSTFLAGS='%{build_rustflags}'
cd cramjam-python
%cargo_license_summary
%{cargo_license} > ../LICENSES.dependencies
%pyproject_wheel
%install
cd cramjam-python
%pyproject_install
%pyproject_save_files cramjam
%check
cd cramjam-python
%pyproject_check_import
%if %{with tests}
%pytest -v -n auto --ignore-glob='benchmarks/*'
%endif
%files -n python3-cramjam -f %{pyproject_files}
%license LICENSE LICENSES.dependencies
%doc cramjam-python/README.md
%changelog
%autochangelog