python-pyrsistent/python-pyrsistent.spec

156 lines
4.5 KiB
RPMSpec
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Sphinx-generated HTML documentation is not suitable for packaging; see
# https://bugzilla.redhat.com/show_bug.cgi?id=2006555 for discussion.
#
# We can generate PDF documentation as a lesser substitute.
%bcond_without doc_pdf
Name: python-pyrsistent
Summary: Persistent/Functional/Immutable data structures
Version: 0.18.0
Release: %autorelease
# The entire source is MIT, except pyrsistent/_toolz.py which is BSD.
License: MIT and BSD
URL: https://github.com/tobgu/pyrsistent/
Source0: %{url}/archive/v%{version}/pyrsistent-%{version}.tar.gz
# Relax dependencies specified in setup.py (allow newer pytest/hypothesis)
Patch0: 00-relax-dependencies.patch
BuildRequires: python3-devel
BuildRequires: gcc
# For Sphinx documentation
%if %{with doc_pdf}
BuildRequires: make
BuildRequires: python3-sphinx-latex
BuildRequires: latexmk
%endif
# We need manual BRs since they are generally not available where
# %%pyproject_buildrequires can access them, i.e., outside requirements.txt,
# and even in requirements.txt a number of packages are not actually required
# for the RPM build.
# ============================================================================
# From requirements.txt:
# hypothesis
BuildRequires: python3dist(hypothesis)
# ----------------------------------------------------------------------------
# We do not need these, since we are not running the memorytest* environment
# from tox.ini.
# ----------------------------------------------------------------------------
# memory-profiler==0.57.0
# psutil==5.7.0
# ----------------------------------------------------------------------------
# We do not need this, since we are not running the benchmarks from
# performance_suites/.
# ----------------------------------------------------------------------------
# pyperform
# pytest
BuildRequires: python3dist(pytest)
# Sphinx
BuildRequires: python3dist(sphinx)
# sphinx-rtd-theme==0.1.5
BuildRequires: python3dist(sphinx-rtd-theme)
# ----------------------------------------------------------------------------
# We do not need this, since we are not using tox to run the tests.
# ----------------------------------------------------------------------------
# tox
# ----------------------------------------------------------------------------
# We do not need this, since it is implied by pyproject-rpm-macros.
# ----------------------------------------------------------------------------
# setuptools>=0.16.1
# ----------------------------------------------------------------------------
# We do not need these for the RPM build either.
# ----------------------------------------------------------------------------
# twine>=3.2
# pip>=20.2.3
# ============================================================================
# From setup_requires in setup.py, when tests are to be executed:
BuildRequires: python3dist(pytest-runner)
# Note that pyrsistent/_toolz.py contains a bit of code ported from toolz, but
# not enough to constitute a bundled dependency.
%global common_description %{expand:
Pyrsistent is a number of persistent collections (by some referred to as
functional data structures). Persistent in the sense that they are
immutable.
All methods on a data structure that would normally mutate it instead
return a new copy of the structure containing the requested updates. The
original structure is left untouched.}
%description %{common_description}
%package -n python3-pyrsistent
Summary: %{summary}
%description -n python3-pyrsistent %{common_description}
%package doc
Summary: Documentation for pyrsistent
BuildArch: noarch
%description doc %{common_description}
%prep
%autosetup -n pyrsistent-%{version} -p1
%generate_buildrequires
%pyproject_buildrequires -r
%build
%pyproject_wheel
# Default SPHINXOPTS are '-W -n', but -W turns warnings into errors and there
# are some warnings. We want to build the documentation as best we can anyway.
# Additionally, we parallelize sphinx-build.
%if %{with doc_pdf}
PYTHONPATH="${PWD}" %make_build -C docs latex SPHINXOPTS='-n %{?_smp_mflags}'
%make_build -C docs/build/latex
%endif
%install
%pyproject_install
%pyproject_save_files pyrsistent _pyrsistent_version pvectorc
%check
%pytest
# See tox.ini:
env PYTHONHASHSEED=0 %pytest --doctest-modules pyrsistent
%files -n python3-pyrsistent -f %{pyproject_files}
%files doc
%license LICENSE.mit
%doc CHANGES.txt
%doc README.rst
%if %{with doc_pdf}
%doc docs/build/latex/Pyrsistent.pdf
%endif
%changelog
%autochangelog