%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