From patchwork Mon Nov 2 01:18:13 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Orling X-Patchwork-Id: 102639 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.3540.1793582307814843159 for ; Sun, 01 Nov 2026 17:18:27 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@konsulko.com header.s=google header.b=LoXXwhnU; spf=pass (domain: konsulko.com, ip: 209.85.216.48, mailfrom: tim.orling@konsulko.com) Received: by mail-pj1-f48.google.com with SMTP id 98e67ed59e1d1-3ac91ac8924so1194813a91.1 for ; Sun, 01 Nov 2026 17:18:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=konsulko.com; s=google; t=1793582307; x=1794187107; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=PCaQJZwp2kLLDeYcfU17wWMWiwGz5mtSn6AR8zMUguc=; b=LoXXwhnUyUkvicllw9sCd+4CarlAd5MLHwXjWPhdB/i0Q5T50P6ohuRne0sFhLl5e7 9Oc1/3G2NPSg2DmMutrv6Ts388U+TL9bEvUAfDD4SWaryX+vT8qUv3f9QYoY1jn1VcOD nRB6aSu2uxo2iTnO/08Tw03QUuGKB1utdDxz0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793582307; x=1794187107; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=PCaQJZwp2kLLDeYcfU17wWMWiwGz5mtSn6AR8zMUguc=; b=jboDWI91hXYVM7WcQDAKUUhdkTXMOBrn4q8CGZPnTVwwKG2HCRWLQTPnQAw+LXt0oj TKxbjv2EMILC3KsO13RZayuX7K6lgUmqfwtRxfeoO1JBoocy1cMnc7btRaIbjCfnYBPE 6h5xSeN9Opf2K3iHvUpdC6i1CzLPozmhLRi2Ews2bQDps2xbg6aedn/ArKA0o122fU1w gxG6570ZRnEuALdBwXNCVkHVbk6+QSmG1rZtCIW6RfAd09wtjGB4DWvggxEajcHXNZ2e 6RgCM7TNcDj2ulU24jz5L1OH33cq43aBory4iMnrR7HZyVipELsWyxAxW9JQYMj3Pwbh bTow== X-Gm-Message-State: APuU4Z87M+6hTZAd4+nQbFUyjKto1zbFfKnuFgBpK+UgOzqB7yovtVkC hXHkQ9M6cWYs+R+4Gl45mV1AdCNzFHMJ4JbWnXDdg3fIOxOQVuTcQEYSzL1R22ZHPVT2sUenQWX 2DV2U X-Gm-Gg: AYBFou2TSLPClxQUizi8Tw1Bl1EIg3Y8uNdb/aQzvu/I4qQveW0WO8fRwVx5FxTJF7b a7bfXgnWfIwztiLP9kqH5GgFE5F/e4xhR0ABhEaoRHsWsiU01A7LQGKn0A4CJFFvmIEx4Z8qCCZ fvth501M41YuaeOz22KiNmz2HUi+1X48/dOTpZ3xEAkBmiuESMckxB/r5hGEl/kR1xXNDrWrHsd c0Z14mZDYbcCr5fLecftu7CYKPh2iAcRfViBJ/Fd32584asqlF4Or4DtzeUU/auQ24UpbmLKuaQ nGQmVD4jSoOex0wdx6JcJertqxawv1OOwtml9XHeBrhmxj3gsrk+vJoAY6sxOVbOnK1vk1vUA6n JnX7b/Ti4Nxy/UpF20YRBjVmhg5v+EGGfRa5oVBmGaQPxoa59Gxkl0MfArhWiQbndNGdKGv7o/e UIa69hAIQ3sdmkdQq2lCksRhrsHyn2zdufMO0a98mFXUW8Qp73g2GSIZL3IGAHXRf6ZM+M4NjRu dz70tm3DIEn0ExuNn0sIc3g0bCduoBDuBStExs8iveDVEKcDDJcsXmsxHubCPacTo0tBzIKFrtK oH+ADoQ02x6FTvv7Fvn3GwzvFSm/AZekF3usZ9sQ+anUj0FH4AYQ6KPPQfVfQXyYw5SAAfzjDc1 lZSkclqCthkUUt2OhPyhvckkl3A== X-Received: by 2002:a17:90b:4ac8:b0:3ac:7116:434a with SMTP id 98e67ed59e1d1-3ae897ccac3mr6327894a91.15.1793582307012; Sun, 01 Nov 2026 17:18:27 -0800 (PST) Return-Path: Received: from thetis.home.local ([2606:c800:6024:2000:9eb8:9e38:131:9f02]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3ae6e9426ffsm16436533a91.7.2026.11.01.17.18.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Nov 2026 17:18:26 -0800 (PST) From: tim.orling@konsulko.com To: openembedded-core@lists.openembedded.org Cc: Tim Orling Subject: [PATCH 2/5] python3-uvloop: enable ptest Date: Sun, 1 Nov 2026 17:18:13 -0800 Message-ID: <20261102011816.3710992-2-tim.orling@konsulko.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20261102011816.3710992-1-tim.orling@konsulko.com> References: <20261102011816.3710992-1-tim.orling@konsulko.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by lin-tor-korg-lkml-alma10-1 with HTTPS for ; Mon, 02 Nov 2026 01:18:30 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/249166 From: Tim Orling The sdist ships the test suite. run-ptest deselects: * tests that conflict with pytest's output capture; * tests broken by libuv 1.53.0 spawning with posix_spawn() on Linux, which bypasses uvloop's preexec_fn fork hook; * DNS tests that wait for resolver timeouts without network access, which took the suite from 1 to 10 minutes over tap without NAT. .flake8 and mypy.ini let test_sourcecode skip cleanly when flake8 and mypy are missing. Tested with core-image-ptest-python3-uvloop on qemux86-64 (kvm, tap): 455 passed, 35 skipped, 0 failed in 82s, so add it to PTESTS_SLOW. AI-Generated: Uses Claude Code (Claude Opus 5.5) Signed-off-by: Tim Orling --- .../distro/include/ptest-packagelists.inc | 1 + .../python/python3-uvloop/run-ptest | 25 +++++++++++++++++ .../python/python3-uvloop_0.22.1.bb | 27 +++++++++++++++++-- 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100755 meta/recipes-devtools/python/python3-uvloop/run-ptest diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc index bef45bb4d5..50b971bace 100644 --- a/meta/conf/distro/include/ptest-packagelists.inc +++ b/meta/conf/distro/include/ptest-packagelists.inc @@ -154,6 +154,7 @@ PTESTS_SLOW = "\ python3-click \ python3-cryptography \ python3-numpy \ + python3-uvloop \ python3-xmltodict \ strace \ tar \ diff --git a/meta/recipes-devtools/python/python3-uvloop/run-ptest b/meta/recipes-devtools/python/python3-uvloop/run-ptest new file mode 100755 index 0000000000..db86664f9a --- /dev/null +++ b/meta/recipes-devtools/python/python3-uvloop/run-ptest @@ -0,0 +1,25 @@ +#!/bin/sh +# test_process_streams_redirect: replaces the stdout/stderr fds, which +# conflicts with pytest's output capture. +# test_process_preexec_fn_{1,2}, Test_UV_DNS test_getaddrinfo_{8,9}: libuv +# 1.53.0 spawns with posix_spawn(), so preexec_fn never runs, and an empty +# host gives EAI_NODATA. +# test_getaddrinfo_{1,2,3,5,6,11}, Test_AIO_DNS test_getaddrinfo_{8,9}: each +# DNS lookup waits for the resolver timeout without network access. +# --deselect matches a node id prefix, so -k handles 1, 2 and 11. +pytest --automake \ + -k "not (test_getaddrinfo_1 or test_getaddrinfo_2) or test_getaddrinfo_10 or test_getaddrinfo_12 or test_getaddrinfo_13 or test_getaddrinfo_14 or test_getaddrinfo_15 or test_getaddrinfo_16 or test_getaddrinfo_17 or test_getaddrinfo_18 or test_getaddrinfo_19 or test_getaddrinfo_20 or test_getaddrinfo_21 or test_getaddrinfo_22" \ + --deselect=tests/test_process.py::Test_UV_Process::test_process_streams_redirect \ + --deselect=tests/test_process.py::Test_AIO_Process::test_process_streams_redirect \ + --deselect=tests/test_process.py::Test_UV_Process::test_process_preexec_fn_1 \ + --deselect=tests/test_process.py::Test_UV_Process::test_process_preexec_fn_2 \ + --deselect=tests/test_dns.py::Test_UV_DNS::test_getaddrinfo_3 \ + --deselect=tests/test_dns.py::Test_UV_DNS::test_getaddrinfo_5 \ + --deselect=tests/test_dns.py::Test_UV_DNS::test_getaddrinfo_6 \ + --deselect=tests/test_dns.py::Test_UV_DNS::test_getaddrinfo_8 \ + --deselect=tests/test_dns.py::Test_UV_DNS::test_getaddrinfo_9 \ + --deselect=tests/test_dns.py::Test_AIO_DNS::test_getaddrinfo_3 \ + --deselect=tests/test_dns.py::Test_AIO_DNS::test_getaddrinfo_5 \ + --deselect=tests/test_dns.py::Test_AIO_DNS::test_getaddrinfo_6 \ + --deselect=tests/test_dns.py::Test_AIO_DNS::test_getaddrinfo_8 \ + --deselect=tests/test_dns.py::Test_AIO_DNS::test_getaddrinfo_9 diff --git a/meta/recipes-devtools/python/python3-uvloop_0.22.1.bb b/meta/recipes-devtools/python/python3-uvloop_0.22.1.bb index 887c262ae7..39b6a2602a 100644 --- a/meta/recipes-devtools/python/python3-uvloop_0.22.1.bb +++ b/meta/recipes-devtools/python/python3-uvloop_0.22.1.bb @@ -7,11 +7,34 @@ LIC_FILES_CHKSUM = "file://LICENSE-APACHE;md5=bb92739ddad0a2811957bd98bdb90474 \ DEPENDS += "libuv python3-wheel-native" -SRC_URI += "file://0001-setup.cfg-use-system-libuv.patch" +SRC_URI += "\ + file://0001-setup.cfg-use-system-libuv.patch \ + file://run-ptest \ +" SRC_URI[sha256sum] = "6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f" -inherit pypi python_setuptools_build_meta cython +inherit pypi python_setuptools_build_meta cython ptest-python-pytest RDEPENDS:${PN} = "python3-asyncio" +RDEPENDS:${PN}-ptest += "\ + python3-ctypes \ + python3-io \ + python3-logging \ + python3-math \ + python3-multiprocessing \ + python3-netclient \ + python3-numbers \ + python3-pickle \ + python3-pprint \ + python3-psutil \ + python3-pyopenssl \ + python3-threading \ +" + +do_install_ptest:append() { + # test_sourcecode needs these to skip cleanly when flake8 and mypy are missing + install -m 0644 ${S}/.flake8 ${S}/mypy.ini ${D}${PTEST_PATH}/ +} + BBCLASSEXTEND = "native nativesdk"