%global python3_pkgversion 3.11 %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: 2.ac16.py3.11%{?dist} 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 for b in $(find %{buildroot}%{_bindir}/ -type f) ; do mv "$b" $(sed -re "s|(.*)$|\1-%{python3_pkgversion}|"<<<"$b"); done for m in $(find %{buildroot}%{_mandir}/ -type f) ; do mv "$m" $(sed -re "s|(.*).([1-8])(.*)$|\1-%{python3_pkgversion}.\2\3|"<<<"$m"); done for m in $(find %{buildroot}%{_datadir}/locale/* -type f) ; do mv "$m" $(sed -re "s|(.*).mo$|\1-%{python3_pkgversion}.mo|"<<<"$m"); done for l in $(find %{buildroot}/usr/lib64/lib* -type f -o -type l) ; do mv "$l" $(sed -re "s|(.*).so(.*)$|\1-py%{python3_pkgversion}.so\2|"<<<"$l"); done for p in $(find %{buildroot}/usr/lib64/pkgconfig/* -type f) ; do mv "$p" $(sed -re "s|(.*).pc$|\1-py%{python3_pkgversion}.pc|"<<<"$p"); done %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 * Thu May 16 2024 Ding-Yi Chen - 25.1.1-2.ac16.py3.11 - Cut corner packaging