python-gevent/python-gevent.spec
2025-08-23 13:05:42 +02:00

95 lines
3 KiB
RPMSpec

%global __provides_exclude_from ^%{python3_sitearch}/.*\\.so$
%global modname gevent
%global optflags %(echo %{optflags} -I%{_includedir}/libev)
Name: python-%{modname}
Version: 24.11.1
Release: %autorelease
Summary: A coroutine-based Python networking library
License: MIT
URL: http://www.gevent.org/
Source0: %{pypi_source %{modname} %{version} tar.gz}
BuildRequires: gcc
BuildRequires: c-ares-devel
BuildRequires: libev-devel
BuildRequires: libuv-devel
%description
gevent is a coroutine-based Python networking library that uses greenlet to
provide a high-level synchronous API on top of libevent event loop.
Features include:
* convenient API around greenlets
* familiar synchronization primitives (gevent.event, gevent.queue)
* socket module that cooperates
* WSGI server on top of libevent-http
* DNS requests done through libevent-dns
* monkey patching utility to get pure Python modules to cooperate
%package -n python3-%{modname}
Summary: %{summary}
BuildRequires: python3-devel
BuildRequires: python3-greenlet-devel >= 2.0.0
BuildRequires: python3-zope-event
%description -n python3-%{modname}
gevent is a coroutine-based Python networking library that uses greenlet to
provide a high-level synchronous API on top of libevent event loop.
Features include:
* convenient API around greenlets
* familiar synchronization primitives (gevent.event, gevent.queue)
* socket module that cooperates
* WSGI server on top of libevent-http
* DNS requests done through libevent-dns
* monkey patching utility to get pure Python modules to cooperate
%prep
%autosetup -n %{modname}-%{version}
# Remove bundled libraries
rm -r deps
# Upstream intentionally includes C extension sources in the built package,
# because... reasons (PyPy I think?) however we do not want that. Sources will
# go into debuginfo as normal.
sed -i -e 's/include_package_data=True/include_package_data=False/' setup.py
# No linters
sed -i -e '/coverage/d' -e '/objgraph/d' setup.py
# Force re-cythonizing the sources - missing with github tarballs
rm -f $(grep -rl '/\* Generated by Cython')
rm -f src/gevent/_generated_include/*
# Test requires network, fails in mock/koji
mv src/gevent/tests/test__resolver_dnspython.py{,.needsnetwork}
%generate_buildrequires
%pyproject_buildrequires -t
%build
export GEVENTSETUP_EMBED=0
%pyproject_wheel
%install
export GEVENTSETUP_EMBED=0
%pyproject_install
find %{buildroot} -name '.buildinfo' -delete
# Correct the permissions.
find %{buildroot} -name '*.so' -exec chmod 755 {} ';'
%pyproject_save_files -l %{modname}
%check
%pyproject_check_import -t
export PYTHONPATH=%{buildroot}%{python3_sitearch}
# test_resolution is failing - https://github.com/gevent/gevent/issues/2064
%{py3_test_envvars} %{python3} -m gevent.tests --verbose || :
cd src/gevent/tests && GEVENT_FILE=thread %{python3} -mgevent.tests test__*subprocess*.py
%files -n python3-%{modname} -f %{pyproject_files}
%doc README.rst
%changelog
%autochangelog