156 lines
4.5 KiB
RPMSpec
156 lines
4.5 KiB
RPMSpec
# 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 BR’s 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
|