# 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 substitute. Since the .rst sources are
# complete (nothing like sphinx.ext.autodoc is used) and rather readable,
# however, we package them directly to reduce the build-time dependencies and
# produce a smaller package.
%bcond_with doc_pdf
%global commit 3779f1221363b0f8c65c4f0ee24b36603c98547a
%global snapdate 20221127
Name: pythoncapi-compat
Summary: Python C API compatibility
# Upstream has never versioned this project.
Version: 0^%{snapdate}git%(echo '%{commit}' | cut -b -7)
Release: %autorelease
License: 0BSD
URL: https://github.com/python/%{name}
Source0: %{url}/archive/%{commit}/%{name}-%{commit}.tar.gz
# Man page hand-written for Fedora in groff_man(7) format based on --help
Source1: upgrade_pythoncapi.py.1
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: python3-devel
%if %{with doc_pdf}
BuildRequires: make
BuildRequires: python3dist(sphinx)
BuildRequires: python3-sphinx-latex
BuildRequires: latexmk
%endif
# As a header-only library package (with an additional command-line tool
# subpackage), the base package is arched so that it is compiled and tested on
# all architectures; however, no compiled code is installed, and there are no
# debugging symbols.
%global debug_package %{nil}
%global common_description %{expand:
The pythoncapi-compat project can be used to write a C or C++ extension
supporting a wide range of Python versions with a single code base. It is made
of the pythoncapi_compat.h header file and the upgrade_pythoncapi.py script.}
%description %{common_description}
%package devel
Summary: %{summary}
# https://docs.fedoraproject.org/en-US/packaging-guidelines/#_packaging_header_only_libraries
Provides: %{name}-static = %{version}-%{release}
BuildArch: noarch
%description devel %{common_description}
This package provides the compatibility header library pythoncapi_compat.h.
%package tools
Summary: %{summary}
BuildArch: noarch
%description tools %{common_description}
This package provides the command-line tool upgrade_pythoncapi.py.
%package doc
Summary: Documentation for %{name}
BuildArch: noarch
%description doc %{common_description}
%prep
%autosetup -n %{name}-%{commit}
%generate_buildrequires
pushd tests >/dev/null
%pyproject_buildrequires
popd >/dev/null
%build
pushd tests >/dev/null
%pyproject_wheel
popd >/dev/null
%if %{with doc_pdf}
%make_build -C docs latex SPHINXOPTS='%{?_smp_mflags}'
%make_build -C docs/build/latex LATEXMKOPTS='-quiet'
%endif
%install
install -t '%{buildroot}%{_includedir}' -D -p -m 0644 pythoncapi_compat.h
install -D -p -t '%{buildroot}%{_bindir}' upgrade_pythoncapi.py
install -t '%{buildroot}%{_mandir}/man1' -D -p -m 0644 '%{SOURCE1}'
%check
%{python3} runtests.py
%files devel
%license COPYING
%{_includedir}/pythoncapi_compat.h
%files tools
%license COPYING
%{_bindir}/upgrade_pythoncapi.py
%{_mandir}/man1/upgrade_pythoncapi.py.1*
%files doc
%license COPYING
# This primarily documents the script rather than the header.
%doc README.rst
%if %{with doc_pdf}
# This is a source for the PDF documentation, but is useful as a standalone
# documentation file as well.
%doc docs/changelog.rst
%doc docs/build/latex/pythoncapi_compat.pdf
%else
%doc docs/*.rst
%endif
%changelog
%autochangelog