%global common_description %{expand: The 0MQ lightweight messaging kernel is a library which extends the standard socket interfaces with features traditionally provided by specialized messaging middle-ware products. 0MQ sockets provide an abstraction of asynchronous message queues, multiple messaging patterns, message filtering (subscriptions), seamless access to multiple transport protocols and more.} Name: python-zmq Version: 25.1.1 Release: %autorelease Summary: Software library for fast, message-based applications License: MPLv2.0 and ASL 2.0 and BSD URL: https://zeromq.org/languages/python/ Source0: %{pypi_source pyzmq} # Python 3.13 compatibility Patch: https://github.com/zeromq/pyzmq/pull/1961.patch BuildRequires: gcc BuildRequires: pkgconfig(libzmq) BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-pytest BuildRequires: python%{python3_pkgversion}-pytest-asyncio BuildRequires: python%{python3_pkgversion}-tornado BuildRequires: python%{python3_pkgversion}-numpy # The gevent tests are automatically skipped when gevent is not installed. # When bootstrapping new Python versions, gevent is often not available until very late. # This bcond allows to ship zmq without gevent when needed. %bcond gevent 1 %if %{with gevent} BuildRequires: python%{python3_pkgversion}-gevent %endif %description %{common_description} %package -n python%{python3_pkgversion}-zmq Summary: %{summary} License: MPL-2.0 %py_provides python%{python3_pkgversion}-pyzmq %description -n python%{python3_pkgversion}-zmq %{common_description} This package contains the python bindings. %package -n python%{python3_pkgversion}-zmq-tests Summary: %{summary}, testsuite License: MPL-2.0 Requires: python%{python3_pkgversion}-zmq = %{version}-%{release} %py_provides python%{python3_pkgversion}-pyzmq-tests %description -n python%{python3_pkgversion}-zmq-tests %{common_description} This package contains the testsuite for the python bindings. %prep %autosetup -p1 -n pyzmq-%{version} # Upstream is testing with cython 3 on 3.12 sed -i -e '/cython>=3/d' pyproject.toml test-requirements.txt sed -i -e '/min_cython_version/s/"3.*"/"0.29"/' setup.py # remove bundled libraries rm -rf bundled # remove the Cython .c files in order to regenerate them: find zmq -name "*.c" -delete # remove shebangs grep -lr "^#\!/usr/bin/env python" | xargs sed -i "1d" # remove excecutable bits find . -type f -executable | xargs chmod -x %generate_buildrequires %pyproject_buildrequires %build %pyproject_wheel %install %pyproject_install %pyproject_save_files zmq %check # to avoid partially initialized zmq module from cwd # test_draft seems to get incorrectly run - https://github.com/zeromq/pyzmq/issues/1853 cd %{_topdir} %pytest --pyargs zmq -v --asyncio-mode auto \ %ifarch ppc64le -k "not (test_draft or test_green_device or (Green and (test_raw or test_timeout or test_poll)))" # this crashes on Python 3.12, TODO investigate %else -k "not test_draft" %endif %files -n python%{python3_pkgversion}-zmq -f %{pyproject_files} %doc README.md %exclude %{python3_sitearch}/zmq/tests %files -n python%{python3_pkgversion}-zmq-tests %{python3_sitearch}/zmq/tests %changelog %autochangelog