Files
meta-openembedded/meta-python/recipes-devtools/python/python3-pyzmq_27.2.0.bb
T
Khem Raj 2a36133394 python3-pyzmq: skip test_close_all_fds ptest on musl
test_close_all_fds closes the socket through the IOLoop's shadow socket
and then reads s.closed. pyzmq implements that by calling
zmq_getsockopt() on the handle, which libzmq's reaper thread may already
have freed. With glibc the memory stays mapped, libzmq's tag check fails
and ENOTSOCK comes back; musl's allocator can unmap it, so the ptest run
segfaults intermittently and loses every result after it:

  File ".../tests/test_future.py", line 319 in test_close_all_fds
  Segmentation fault (core dumped)

Closing a socket via a shadow and then querying .closed on the original
segfaults on musl every time in a standalone reproducer and survives on
glibc. Skip the test for musl.

Tested with meta-python-image-ptest-python3-pyzmq on qemux86-64 with
yoe-musl-systemd-wayland.

AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
2026-09-27 12:55:51 -07:00

70 lines
2.2 KiB
BlitzBasic

SUMMARY = "PyZMQ: Python bindings for ZMQ"
DESCRIPTION = "This package contains Python bindings for ZeroMQ. ZMQ is a lightweight and fast messaging implementation."
HOMEPAGE = "https://zeromq.org/bindings:python"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "\
file://LICENSE.md;md5=1787206f198344195a671b60326c59dc \
"
DEPENDS = "python3-packaging-native \
python3-setuptools-scm-native \
python3-scikit-build-core-native \
cmake-native \
ninja-native \
zeromq \
"
PEP517_BUILD_OPTS = "--skip-dependency-check \
-Ccmake.define.PYZMQ_LIBZMQ_RPATH=OFF \
-Ccmake.define.PYZMQ_NO_BUNDLE=ON \
-Ccmake.define.CMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY \
-Ccmake.define.CMAKE_FIND_ROOT_PATH_MODE_PROGRAM=ONLY \
-Ccmake.define.CMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
-Ccmake.define.CMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \
-Ccmake.define.CMAKE_FIND_ROOT_PATH="${STAGING_DIR_NATIVE}" \
-Ccmake.build-type="RelWithDebInfo" \
-Cbuild-dir="${B}" \
"
SRC_URI:append = " \
file://run-ptest \
"
SRC_URI[sha256sum] = "54d4259d1bfae24ecdb5ca79f7acc2eac6c286a02d6a0ae617797cb45f0726d3"
inherit pypi pkgconfig python_setuptools_build_meta ptest cython
PACKAGES =+ "\
${PN}-test \
"
FILES:${PN}-test += "\
${PYTHON_SITEPACKAGES_DIR}/*/tests \
"
RDEPENDS:${PN} += "\
python3-json \
python3-multiprocessing \
python3-tornado \
"
RDEPENDS:${PN}-ptest += "\
${PN}-test \
python3-pytest \
python3-asyncio \
python3-pytest-asyncio \
python3-unittest-automake-output \
python3-unixadmin \
"
do_install_ptest() {
install -d ${D}${PTEST_PATH}/tests
cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
install -m 0644 ${S}/pytest.ini ${D}${PTEST_PATH}/pytest.ini
}
do_install_ptest:append:libc-musl() {
sed -i -e "s/ and not test_process_teardown'/ and not test_process_teardown and not test_close_all_fds'/" \
${D}${PTEST_PATH}/run-ptest
grep -q "not test_close_all_fds'" ${D}${PTEST_PATH}/run-ptest || bbfatal "failed to skip test_close_all_fds in run-ptest"
}