From patchwork Mon Oct 26 03:58:07 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khem Raj X-Patchwork-Id: 101941 Received: from mail-dy1-f170.google.com (mail-dy1-f170.google.com [74.125.82.170]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.35456.1792987099796971288 for ; Sun, 25 Oct 2026 20:58:19 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20251104 header.b=tEzvHis2; spf=pass (domain: gmail.com, ip: 74.125.82.170, mailfrom: raj.khem@gmail.com) Received: by mail-dy1-f170.google.com with SMTP id 5a478bee46e88-3550c917fd3so3888249eec.0 for ; Sun, 25 Oct 2026 20:58:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792987099; x=1793591899; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=Wwqlajcwu06pPzj3QgIUwNVgFE00DZY8+8h0xh+U24A=; b=tEzvHis2UvdkCVaGiheOp9i8EXnc8XsDwicY37EOSpHnM4+JbBWP89m0Utque8CyVM LkE6jx619XSShZidF+/VAFqrbliKQ/PXXeceiBKPqaGjydmRGNouhgAJyPo8DbuB3XO5 1vTMMagwRiSvFkWJkUb3j8E5Xr4/YiDIjiWCvDPYdiNJP4JyL+byRW61UxC5w4FPn4mI XR489mmOp8psJIKmaXJse9JmecuIGf7496BsfGiwRtrEWdzsOt15ffwliOWbhw7anHke GtKYPmPwH/gQRFMdsNTFJOvREwy0kmJUIajT5YVK1V3mUuxb3ew+cFqyC8xC3IhFI5D6 q1cQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792987099; x=1793591899; h=content-transfer-encoding:mime-version: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=Wwqlajcwu06pPzj3QgIUwNVgFE00DZY8+8h0xh+U24A=; b=W23mrzOeF9abheDxFUrSXY4CHJ+Q432GRyfEd3uHS1VtxPT2655YkeaMhq1/P3XP2A iKSWNf0GcZG8cmuyhk7xCOStjUhaqYa5c5IMmQrXS9Cg1B27kejqSQvFILYpdPZJ9y8a nFRwrQH3xKLxuQl6oXSOwAfKLqXwHJ7Bmh6xQlrXY7R0Rgh+eKbFvZ43F88qSUcK8ONa +SYKJ/tDr6jTNIis3wHoLea5I6ZJyfcO7osMex5qmpgsWb93DW0f35RDn1I38rp+KHrw 8Yfqc+T5AVsxarl7IGAKf2LYCV0kC8ysHx0HhQhKzozSpfzx9b4Isp2+/S21eg3x9Gw7 APTg== X-Gm-Message-State: AFq9FYLPx0z5BN+KKviiPg9NFtd8nzXm2N/E0+mCbRsr+TFsFDC36KWG JpQ9spK38cM59VIKrwIvHxdkY3fETyIrdG0bZv6+TH4r7lqSLo5F5Z4mAOOsBnmksjk= X-Gm-Gg: AYBFou2FKJ/A0+mYyuQnaFhAjNc1OeI2F1OoKz4fHq6UypN7hgP+LStwiqgrS5INDaY BGkPefZS41zyNRR7q7evBubgFMHYuMyXjsndEsLPLsucT2nnbn2Xiw0L9p0hRh3b6QD9CzmWTB3 WAnuT/W8cO7DH5aAf+Zcn5LHY2SBg27Iu5x0WkesVTaqS7HHjmcSz0Umk0/aD9aaYTV6aA9hGCx r/KPkgy4VvEFV0jO7QBbY9e8nePVb3d4Gld/nNii0mFcUctPe6pdtSPmXuMYk0GvOZvWT4qp/dX ikDyU8lZv9udwFgCvU/RBk5R4xxcqMzCUORz94XI/nmKhmbXP42KCQbZT4OJUktaYvkI3kfH2+w /H4Cf3B47I+Vn9mNOi4yCsSulIcFXatoz6BAgZNYMK2vKzAjw+yJ94e9hFS8nUdjVMyDkowZu/1 rzLtzBqJAGdhs0VGKKXUi4E+9HzdN0RGfG6+TKTrY5BBLN7N9agKuVOgPwZ4z+d8R5xc5egxA35 IKVRRgVkwEzP4C9Wo1fviPSAIP/bv5bkZrJwp9LVteAmLlJU+fWfQwpbn1MTaPKJGg6oFlL2UBj PW3WCXs0UB2o7oP8RgZtzJ8/vYkmc7AIJgB74lBXoD56+qJQ1MTntQi2i3P6D1v/ZHaCnQqw2R7 wsUC8Hl7GeWTv+3PPdH8q1ibRH0WGpoOOTeGgMKRIiQry96JNQwcDdCRPzqDZYp2aWRNAhIOlCy V8GgP2nfQfcW2vTZHU0T1BUWR4rSCCFGjZvL2IPnbTxXEMPsPPeuBmQe7Er9cvQhGSFJidSY/1r hGuGsvBw5NcsQsFxDFur6oDu1ugEjk= X-Received: by 2002:a05:7300:88:b0:367:3d68:8480 with SMTP id 5a478bee46e88-369e81ca340mr9408581eec.0.1792987098703; Sun, 25 Oct 2026 20:58:18 -0700 (PDT) Return-Path: Received: from apollo.tail3ccdd3.ts.net ([147.160.63.35]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-369f44bd644sm13277417eec.15.2026.10.25.20.58.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2026 20:58:17 -0700 (PDT) From: Khem Raj X-Google-Original-From: Khem Raj To: openembedded-devel@lists.openembedded.org Cc: Khem Raj Subject: [meta-python][PATCH 1/8] python3-ipy: upgrade 1.01 -> 1.2 Date: Sun, 25 Oct 2026 20:58:07 -0700 Message-ID: <20261026035814.55254-1-khem.raj@oss.qualcomm.com> X-Mailer: git-send-email 2.56.0 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, 26 Oct 2026 03:58:30 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/131413 Changelog: * Drop Python 2 support; require Python 3.5+ * Remove the module-level names INT_TYPES, STR_TYPES and xrange * Add inline type annotations; IPy is now a package that ships py.typed * Fix IP.broadcast() returning an IPv4 address for IPv6 networks * Fix IP.reverseName() for 0.0.0.0/0 * Fix the flaky IPSet fuzz test The fuzz test fix stops the intermittent ptest failure in TestIPSet.testRandomContains, whose oracle ignored that IPSet merges adjacent prefixes into a larger one. The sdist is now named ipy-1.2.tar.gz, so drop PYPI_PACKAGE_SDIST. AI-Generated: Uses Claude Code Signed-off-by: Khem Raj --- .../python/{python3-ipy_1.01.bb => python3-ipy_1.2.bb} | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) rename meta-python/recipes-devtools/python/{python3-ipy_1.01.bb => python3-ipy_1.2.bb} (84%) diff --git a/meta-python/recipes-devtools/python/python3-ipy_1.01.bb b/meta-python/recipes-devtools/python/python3-ipy_1.2.bb similarity index 84% rename from meta-python/recipes-devtools/python/python3-ipy_1.01.bb rename to meta-python/recipes-devtools/python/python3-ipy_1.2.bb index 437f23975d..1e128e8370 100644 --- a/meta-python/recipes-devtools/python/python3-ipy_1.01.bb +++ b/meta-python/recipes-devtools/python/python3-ipy_1.2.bb @@ -9,12 +9,10 @@ HOMEPAGE = "https://github.com/autocracy/python-ipy" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://COPYING;md5=848d24919845901b4f48bae5f13252e6" -SRC_URI[sha256sum] = "edeca741dea2d54aca568fa23740288c3fe86c0f3ea700344571e9ef14a7cc1a" +SRC_URI[sha256sum] = "c145e664e84642fac875a043fab1a0b50bd65297385dc438dbfe25f24e65ac61" inherit pypi setuptools3_legacy ptest-python-pytest PTEST_PYTEST_DIR = "test" -PYPI_PACKAGE_SDIST = "IPy" - BBCLASSEXTEND = "native" From patchwork Mon Oct 26 03:58:08 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khem Raj X-Patchwork-Id: 101936 Received: from mail-dy1-f175.google.com (mail-dy1-f175.google.com [74.125.82.175]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.35457.1792987100785498437 for ; Sun, 25 Oct 2026 20:58:20 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20251104 header.b=QOAXjMew; spf=pass (domain: gmail.com, ip: 74.125.82.175, mailfrom: raj.khem@gmail.com) Received: by mail-dy1-f175.google.com with SMTP id 5a478bee46e88-369f33df08eso2012759eec.0 for ; Sun, 25 Oct 2026 20:58:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792987100; x=1793591900; 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=+rg0JwW5iNKNUAOzIFy1tsfp4cIcMifeMO+SEE84d9Y=; b=QOAXjMewlJLWrs7vIYTXvxRCSU4f4xuv+ku2ZPShsvL0lsHViH5/Tmq/qckOyYZTqQ xKtmZ99uprapSfDMDq/8WTUfZi7vhIozHYTFVQjMKwEE0BWKBmLyNm3VU/iScw6Eu9/Y t6PhohdqoHtq0sJAbckhTQ/fptxZ6+o1KFQiGZf6avDodUYE+0oZKff6KNpL2RF8asK+ YcrTmnPb3fVFoJ7G3ZtnUkZDxZuOUb4fOS/+z4kNglS447a7piUmUO1ZKKwJ2IVPTMmw AiDELgPy1qhcHbrGEaIwWXk2ON205FVJB3Am5M3y0KHwl5dWP1O7CjcDdxo0wpA9/ALx Z3Qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792987100; x=1793591900; 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=+rg0JwW5iNKNUAOzIFy1tsfp4cIcMifeMO+SEE84d9Y=; b=I/gDX8Et13COkHNrdJkhOt3lsWAJKimi4jT4JaN5LnrCHq/S2+vCkc0yurliJoXZO6 BNx5QvCnNcJV2gPY3Iiz1wz4DeRNAo5tggCre0yADg2yNdjhcksj+/N+Q0zGEi1S0ypV 5T9fu8CnRHhapX1x+haM5YGEKWGsbdir1NDAMQ5l6dFB05zV8zr2VVtlGdKUfrVnewX4 0B/FOvDT0G0bSPb0P2HqZT9ZbfyaXcpxopg33Fv06IVwXnfXoMPYbnMwqco8JsKfp5QD Xd/JycU+Z5Gyw/2ukmPZy7IO97n0rhHWHiRb7hbGhcooZD4uEylEB0XO38Q+umoiEmB5 zweg== X-Gm-Message-State: AFq9FYKJTConegfDuDmLYCSViA/DK6ifcMbfID+DecFdzhaTnV6sl9QQ QDzD4GhUcremoZYPwK4dJ5/WX+53AEDJwXjjX1DIxi1/FZg2jnqyaVgwp9iK8Lj1fE8= X-Gm-Gg: AYBFou2D20MxjgaYhij80YMJql4AMJr1mo+r9cN0mOS7u4NhSUrXVzlOjmLemq+BlOW V2z5OyY/RHK+1DBX30dtL7ILjLv9Y2GlOkNwJ54uwVfPYeQD+D35iHbA4V0AaSN4XnafejExwa5 rc75KO2wOXUO4kn96SP1oL48I/NyLcAMh5x7fj0BIPrbUEjdEYzjH8yowAEryzl8KF4/DupY4YV B57zy0B5GhfGdtX2TnGxijeYQXUd/nUisIiu39nNFDnT/bt4Gzf+GLMEvVGuTqoVksylfXSVhAM VDc7atZov3oUcNr+tOFZDok5n8zfXndY9dQNWn/5+DW3SpsualWIcjjVl43BPqLi4Y7fTMjxnOT VaiVKaWusQ4QF0BjmLkX2oylWkqpCV/cylCrqStz7EmjHdtKPWyd/4t7ulU2onCJ9mBfAF4CfqK 1zeS1dEJkpmQeJkeNDJYAyDTaTUGFNHhv4vhQUQkzfpfypCXCrV9EOHLKK5Nc9gutfOzlng5mEs X39YxHIuh1gSwlAKyYWvgDiTkoAjXht20YPXAsEYNln5AvriFcCNR7rtkldxBAq1jIRvM2hOfcy k+T+xQcv02sPl0ssCRplBHCdVsd7En/AhEa/o5EbRacW0ry/R3cWJ9xbTJlqe+uu4mvWXZ0tfg1 YQ7R9ODztybf3Me5q7M9E1CDAsk4vfWDFczyhIOvOMOmLLkKfmCVp/ghp1zwX+AtNx2Unb+hdFN zJyl8ymCinxNIX/h6b6DzDXkSntN0CHLVKK6V1HJervwrabHBjQBwZQgBev2QuTvgdixcG2muIk 8EAovHMjcLpDEdKs5J74ELXEHG+YMLg X-Received: by 2002:a05:7300:d085:b0:369:f9da:a70f with SMTP id 5a478bee46e88-369f9daa873mr4561198eec.17.1792987099942; Sun, 25 Oct 2026 20:58:19 -0700 (PDT) Return-Path: Received: from apollo.tail3ccdd3.ts.net ([147.160.63.35]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-369f44bd644sm13277417eec.15.2026.10.25.20.58.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2026 20:58:19 -0700 (PDT) From: Khem Raj X-Google-Original-From: Khem Raj To: openembedded-devel@lists.openembedded.org Cc: Khem Raj Subject: [meta-networking][PATCH 2/8] python3-scapy: Skip live whois tests in ptest Date: Sun, 25 Oct 2026 20:58:08 -0700 Message-ID: <20261026035814.55254-2-khem.raj@oss.qualcomm.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261026035814.55254-1-khem.raj@oss.qualcomm.com> References: <20261026035814.55254-1-khem.raj@oss.qualcomm.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, 26 Oct 2026 03:58:29 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/131414 "Whois request" and "AS resolver - IPv6" only query public whois servers and upstream notes they often fail. "AS resolver - IPv6" failed intermittently in testimage on qemuarm64 and passed on a rerun. Tag both with skipped_ptest so run-ptest leaves them out. AI-Generated: Uses Claude Code Signed-off-by: Khem Raj --- ...-test-skip-live-whois-tests-in-ptest.patch | 43 +++++++++++++++++++ .../python/python3-scapy_2.7.0.bb | 1 + 2 files changed, 44 insertions(+) create mode 100644 meta-networking/recipes-devtools/python/python3-scapy/0005-test-skip-live-whois-tests-in-ptest.patch diff --git a/meta-networking/recipes-devtools/python/python3-scapy/0005-test-skip-live-whois-tests-in-ptest.patch b/meta-networking/recipes-devtools/python/python3-scapy/0005-test-skip-live-whois-tests-in-ptest.patch new file mode 100644 index 0000000000..479500abe9 --- /dev/null +++ b/meta-networking/recipes-devtools/python/python3-scapy/0005-test-skip-live-whois-tests-in-ptest.patch @@ -0,0 +1,43 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sun, 25 Oct 2026 15:56:41 -0700 +Subject: [PATCH] test: skip live whois tests in ptest + +"Whois request" and "AS resolver - IPv6" only query public whois +servers, and upstream already notes that they often fail. In OE +testimage runs "AS resolver - IPv6" fails intermittently and turns the +whole ptest result into a failure, while it passes on a rerun. + +Tag them with "skipped_ptest" so run-ptest filters them out with +-K skipped_ptest. "AS resolvers" is kept since it also carries the +offline riswhois and cymru parser checks. + +Upstream-Status: Inappropriate [OE-specific] + +Signed-off-by: Khem Raj +--- + test/regression.uts | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/test/regression.uts b/test/regression.uts +index b6bb9d6..c818e4c 100644 +--- a/test/regression.uts ++++ b/test/regression.uts +@@ -1781,7 +1781,7 @@ def _test(): + retry_test(_test) + + = Whois request +-~ netaccess IP as_resolvers ++~ netaccess IP as_resolvers skipped_ptest + * This test retries on failure because it often fails + def _test(): + IP(src="8.8.8.8").whois() +@@ -1825,7 +1825,7 @@ assert len(tmp) == 3 + assert [l[1] for l in tmp] == ['AS24776', 'AS36459', 'AS26496'] + + = AS resolver - IPv6 +-~ netaccess IP as_resolvers ++~ netaccess IP as_resolvers skipped_ptest + * This test retries on failure because it often fails + + def _test(): diff --git a/meta-networking/recipes-devtools/python/python3-scapy_2.7.0.bb b/meta-networking/recipes-devtools/python/python3-scapy_2.7.0.bb index aa570308a9..4995f8e2cd 100644 --- a/meta-networking/recipes-devtools/python/python3-scapy_2.7.0.bb +++ b/meta-networking/recipes-devtools/python/python3-scapy_2.7.0.bb @@ -22,6 +22,7 @@ SRC_URI = "git://github.com/secdev/scapy.git;branch=master;protocol=https;tag=v$ file://0002-main-initialize-banner-for-the-default-Python-shell.patch \ file://0003-libpcap-load-libpcap-even-when-find_library-cannot-l.patch \ file://0004-test-don-t-depend-on-libc-formatting-of-IPv4-compati.patch \ + file://0005-test-skip-live-whois-tests-in-ptest.patch \ file://run-ptest" UPSTREAM_CHECK_COMMITS = "1" From patchwork Mon Oct 26 03:58:09 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khem Raj X-Patchwork-Id: 101939 Received: from mail-dy1-f179.google.com (mail-dy1-f179.google.com [74.125.82.179]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.35458.1792987101950492739 for ; Sun, 25 Oct 2026 20:58:21 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20251104 header.b=RTuF5J9u; spf=pass (domain: gmail.com, ip: 74.125.82.179, mailfrom: raj.khem@gmail.com) Received: by mail-dy1-f179.google.com with SMTP id 5a478bee46e88-33bf40b0c8bso7648616eec.0 for ; Sun, 25 Oct 2026 20:58:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792987101; x=1793591901; 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=BmrdfL9n1UbdlB80WQxxv7Jb39N+O5uQv7GxV58Uzg8=; b=RTuF5J9uJM0udzEEMySckn8G4kCYpn5ypWL3upoILwEKKqYcPSWPHNr0m5PFxdNgrt rmIuH5NHj8l09fhe+AD6kAo+2ilqquJ7yAVznNKTOXc8v8vhp7JLCMAg/aRWtWVerFmZ aiZyCGO+Wc0Qgi18nuu0rDLTPp/yZTVzhx6w21iI2KNbw4mw1SosGlfnN+dw9qUuHKXX yMnuFBJ9XdPusJAEc09OfKAlBBaqe8YfMRoydB3FN+AEL5qT/mjSSSqCkL88cdEz22vx cEnjfobDp5ccyjhXkbtxQmDnNH5KSR/6ITsuxrwWCDBubf3jfHjly7v4nxTYwp8otbOP zchQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792987101; x=1793591901; 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=BmrdfL9n1UbdlB80WQxxv7Jb39N+O5uQv7GxV58Uzg8=; b=yMFMnvJrHe4gctBJ/FoehKhx6tvSLPFMxTVnAibhpACbRWN+Ye+0Z86cdB+tVrbUD9 6Vkj3wM/gg3Fkok+YRxCh4LSz8qlVXEkSQV08Q6xqsVIWppEXH99FXWcqWZFsGtOn/tf ZgO3P+42knimmwF/MOpKFVqM4m2VVRgR0WVAUw7yaYu46B5ugyQ0nnsUYhDYazOLOCSS gE9qlGU7GHfq4edO6pm3U5/zlmjLrGiuIrmoXL8EIizy27n9kC6e2JPG5EOnbI6IS3j2 32R1R5P97H3wo7XmxM/i5x0wFRUs7LGUOhftBB0nT3xC9ahpGPTa4A/0MhyDkLfDpP51 071Q== X-Gm-Message-State: AFq9FYLgQxgcPDIgytFZRHeQUWjjkkfODvrAMG9iJNowS2BXn8cOqaBK D0smYs9gQROB5Sj8Mc1p6YJy0gmQLgRURJEi4D2xNQxYplKs8atU5wCdvPTBEmP1xj8= X-Gm-Gg: AYBFou0rE9s4PMlQfZe10UeBNCo9sTtnXs3eKAJxBXrAbmwCLEeGH/y6AMYNW5V5ebb kmO1CBK+b/5xs5v4+SYE+ecTBXXVBKAMxpXDg3YkWIMyLoqHula85+0PECKPOh1hcPUjH+X/vJ8 EPux40EOJjPJBO3LGIjw/MPNkL6/8aJhQB7+zWIkrhuPNeChmshOu9FQ5h/nq3VGB0G2C9xaqVq pc5OTQMoboyyPHcgYhmOXkwQC5+ulfYAVM4qiM0gWmPEIvxkY9Xeh/HRw1WtA5EZYuPFCxw9CPF lOEqLVgV525id8SrnZ4zbIGTpBl8XYC2hNJ2G0NqxIycj2bxTu1w7GQYZzXDPCD6i9+1v1CMi9p MQKqVOd8Cl+rv3P9Ts6hB+lMOMEjNMfFS+o+VHeyhJWuZQaYFjttEdh6W1FqoHkFCXRAYxbDEzk PLOoQx1z8CzxZkmZZY8dbCG6EsPUlCbjElcjKHQBkV/w7n5PtoZ/LK/qNe6PMFY0Qcv9esb5F9C uhSvtKovx+93LKeNBTe8caK1Sd3ZslJiO+DVKj98NVsEUMbT4GdPWBndKKD3D+iEfgHrZPC9mjN RTbxpnGIHoQfOCMbhwWahebHXweky56xwPe379J+GAYdei+dBVvyzPk4eyIpSa9GEVGSjcfWU4k yXodUkkuxtnBZpjladnB/UlSJKueCbI5E0QjWlBu4GJbzfFJtPq8eCeKhRD/n2VgcEUTyeQNKFI 2nOuV5EUTf4OJySQnR+JRSBhepL7ALlmJh/zl95bY5FE+X4B50SApY2A3etD1EpVnDrIOd2tipu 83Zx7AruIi8AdHge5Jrndcq99t0bk0W X-Received: by 2002:a05:7300:cc14:b0:358:1f59:48c9 with SMTP id 5a478bee46e88-369e84dcb4amr11001478eec.24.1792987101087; Sun, 25 Oct 2026 20:58:21 -0700 (PDT) Return-Path: Received: from apollo.tail3ccdd3.ts.net ([147.160.63.35]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-369f44bd644sm13277417eec.15.2026.10.25.20.58.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2026 20:58:20 -0700 (PDT) From: Khem Raj X-Google-Original-From: Khem Raj To: openembedded-devel@lists.openembedded.org Cc: Khem Raj Subject: [meta-oe][PATCH 3/8] re2: Skip upstream's big tests in ptest under QEMU Date: Sun, 25 Oct 2026 20:58:09 -0700 Message-ID: <20261026035814.55254-3-khem.raj@oss.qualcomm.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261026035814.55254-1-khem.raj@oss.qualcomm.com> References: <20261026035814.55254-1-khem.raj@oss.qualcomm.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, 26 Oct 2026 03:58:30 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/131415 The CMake build registers every test with ctest, including the ones upstream's Makefile keeps in BIGTESTS (and Bazel marks size = "large"), which "make test" does not run. Each of these runs silently until it finishes, and under qemu emulation several of them take longer than the ptest-runner timeout. On qemuriscv64, dfa_test stalled in Multithreaded.SearchDFA until ptest-runner killed the whole suite after 450s. Under qemu-user, exhaustive3_test takes ~460s, random_test ~760s, and dfa_test more than 15 minutes. Exclude dfa_test, exhaustive*_test and random_test from run-ptest when running under QEMU, detected at runtime via DMI sys_vendor, a fw-cfg device tree node or a qemu device tree compatible. Doing this at build time with a qemuall override would make re2's task signatures differ between machines sharing a tune. Real hardware still runs all tests. AI-Generated: Uses Claude Code Signed-off-by: Khem Raj --- meta-oe/recipes-support/re2/re2/run-ptest | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/meta-oe/recipes-support/re2/re2/run-ptest b/meta-oe/recipes-support/re2/re2/run-ptest index 8bd5fd1efb..8026ebc2b5 100644 --- a/meta-oe/recipes-support/re2/re2/run-ptest +++ b/meta-oe/recipes-support/re2/re2/run-ptest @@ -1,3 +1,20 @@ #!/bin/sh -ctest --force-new-ctest-process | sed -u 's/\*\*\*/ /g' | awk '/Test +#/{gsub(/Passed/,"PASS"); gsub(/Failed/,"FAIL"); gsub(/Skipped/,"SKIP"); print $6": "$4; fflush();}' +# Running under QEMU (x86 and UEFI arm64 report it via DMI, arm/arm64/riscv +# virt machines have a fw-cfg node, ppc64 pseries a qemu compatible) +is_qemu() { + [ "$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null)" = "QEMU" ] && return 0 + for f in /proc/device-tree/fw-cfg@*; do + [ -e "$f" ] && return 0 + done + grep -qs qemu /proc/device-tree/compatible +} + +# Under QEMU, skip the tests upstream's Makefile lists as BIGTESTS (not run by +# "make test", "size = large" in Bazel); emulated, each of them can run for +# longer than the ptest-runner timeout without printing anything. +if is_qemu; then + set -- -E '^(dfa|exhaustive[0-9]*|random)_test$' +fi + +ctest --force-new-ctest-process "$@" | sed -u 's/\*\*\*/ /g' | awk '/Test +#/{gsub(/Passed/,"PASS"); gsub(/Failed/,"FAIL"); gsub(/Skipped/,"SKIP"); print $6": "$4; fflush();}' From patchwork Mon Oct 26 03:58:10 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khem Raj X-Patchwork-Id: 101940 Received: from mail-dy1-f172.google.com (mail-dy1-f172.google.com [74.125.82.172]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.35459.1792987103696722655 for ; Sun, 25 Oct 2026 20:58:23 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20251104 header.b=FZ+4uCXv; spf=pass (domain: gmail.com, ip: 74.125.82.172, mailfrom: raj.khem@gmail.com) Received: by mail-dy1-f172.google.com with SMTP id 5a478bee46e88-35b2c599f43so469169eec.0 for ; Sun, 25 Oct 2026 20:58:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792987103; x=1793591903; 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=Cptz8115WqS2STkCxCImCt3e9lvkf0rpf13ex9P5AvQ=; b=FZ+4uCXvgTEeeF7T4rcqhYLEZ51bSE4hocTucnJFTTH9DRCtnn1KvAqv/+1C68TUOn VgJfyc7cM6uFfqKj8C0rpGoJgAtUkgsZzoO8VeftZ3X7NfPrFMaZqa8AYoFBi+lWJVfx xElPHo5rOWsu3dNrin3GxBgYrkLP/utNwn4ITdNQDEffOAeQi5KIys+Ynp5uuA2M1AoN +m5D4+OqyTEEZx9eV+sdfZ+bPlYrBcZ0pAWhymgMR0U1IYm5Ca1nvu1jFQ/N4L75GKLO TpD6bwu3RwD/hLhvoVYT+dL3VYPxOgTK2w2m4XFa7YFl+pIy7znnbx2/KtWO7hhryDkN zs1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792987103; x=1793591903; 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=Cptz8115WqS2STkCxCImCt3e9lvkf0rpf13ex9P5AvQ=; b=glw8qEKpu5OaZjuYB6lz5XVSJ+sjR90u3Ncl4ZaMEVAia37Lx9hlHnn4BbM4J7+9vl 3QxEy5o9D0z7QjIrisbqQBgDsUNTfmCVe8yse0Wh8p0iZ0u5pTKnPvKU43+SW0wO8hUx TSFHNo3xdMdJ+AL8qkd2JWdreR691XwPIiEvabwV8kLfoyQneWlnC3zngD4hilIGj1VV iL1wvFbz7LNdpbhca54YXRL6sWykTMOiPiVikyBPoB4NGqI9wOX/BOGxeqi3i8xNeaAI b1IHDXPggxOOgvXLywEH0kWbGux5r6Uo1ENQoQfCUibhChXg5JtmEpvkFalnGlNLVb8r Bu+w== X-Gm-Message-State: AFq9FYLqnwWgp3OW7s6woYBXsRC/JSkime3VBAWmlIP6B/tli2Wc/R/B D3A8DrO1dFrSyKiFEN83j6PGe+Xq10vjlUUnQKrNJmBFgtW2ctLEUL6+1cF2SveCTQc= X-Gm-Gg: AYBFou10Cw6PctOVZOOnLa3NznQf7X9SrBUJA3lBfZXmjMxgaQiYjVof5qD2R4p7995 v9sEqSJLoeIcCuzLAyciCNZNCgDOTRr0HOdxJUxU0a7voX7Psd+zdBPK4Hh1mQofmRZtLb9BzlY 8MFNOFePfQZHMSZo8HEpDy9y3r30XceU+wgTJxR2gHK0b+bxvdycxLvX8b0p4pIzfYQ3Xk5/HFN oLWpCP8zFnvdWRFD9f5SnNzvMXE1YlB7YUejmklck026m+26bUudaGon67JrPVS2XxwXMY6P1g6 lS4Cq5G7vZFPG+iQJYG5WUZNyBVdQUjCKa5h0Wwy/pLnQf9kF8N7aZg/q5TADHIFnYGVtfKehXI TwIAV4IRoLnlbK6Y9v2v9/SFkCWdDKTPvuXhwsltEFpM7O3QDMPX84oLtLN8JKlASjpFnIKwMR4 5gc/Xt2fohnEDwNoMQh57S7bA8of6uYg77pgrwmiL7j9eHfn3QFPfaW5oexJ+qmA8JYDixka+gm SoX6Pl7DFgA1I1op8jxhx5oa4Wdhz0ughlWNv3LUIqPco60Fa79GftQ0hgWSP7p6VLYVPZcN0ki 0bB6yOi1UlZ7DVEdxOdH0kasbd5jARn7U/bK/lArm0IlpWRCFn+byflnoJc62CiiajfkrPoQZdm s2qnrVB2iHwSbD3CBFuYBpYBc29RJRlrI7CqW/nRtpBF8qxPKXCzQTYW1HOqIu1Tl4j5zt/sl2Y 05+KG6fojWYGTIK+/FHdekPVIope1UMGUavC/Qb58o3bgtoB4dbd3Mj+0ytBZS9K67q7fNCV0Rg P9XVtSO1nN7EBY7xk1tN7KAezendZU= X-Received: by 2002:a05:7301:4205:b0:369:d793:328d with SMTP id 5a478bee46e88-369e84bd8b1mr8924356eec.31.1792987102792; Sun, 25 Oct 2026 20:58:22 -0700 (PDT) Return-Path: Received: from apollo.tail3ccdd3.ts.net ([147.160.63.35]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-369f44bd644sm13277417eec.15.2026.10.25.20.58.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2026 20:58:21 -0700 (PDT) From: Khem Raj X-Google-Original-From: Khem Raj To: openembedded-devel@lists.openembedded.org Cc: Khem Raj Subject: [meta-oe][PATCH 4/8] HDF5: Remove license file Date: Sun, 25 Oct 2026 20:58:10 -0700 Message-ID: <20261026035814.55254-4-khem.raj@oss.qualcomm.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261026035814.55254-1-khem.raj@oss.qualcomm.com> References: <20261026035814.55254-1-khem.raj@oss.qualcomm.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, 26 Oct 2026 03:58:30 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/131416 Its added to OE-core via below commit commit f9903f74ee36de4dd592f3bc8b1ce7b08f32608c Author: Ross Burton Date: Fri Oct 17 14:16:25 2025 +0100 Signed-off-by: Khem Raj --- meta-oe/licenses/HDF5 | 92 ------------------------------------------- 1 file changed, 92 deletions(-) delete mode 100644 meta-oe/licenses/HDF5 diff --git a/meta-oe/licenses/HDF5 b/meta-oe/licenses/HDF5 deleted file mode 100644 index 10481dd107..0000000000 --- a/meta-oe/licenses/HDF5 +++ /dev/null @@ -1,92 +0,0 @@ -Copyright Notice and License Terms for -HDF5 (Hierarchical Data Format 5) Software Library and Utilities ------------------------------------------------------------------------------ - -HDF5 (Hierarchical Data Format 5) Software Library and Utilities -Copyright (c) 2006-2018, The HDF Group. - -NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities -Copyright (c) 1998-2006, The Board of Trustees of the University of Illinois. - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted for any purpose (including commercial purposes) -provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, - this list of conditions, and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions, and the following disclaimer in the documentation - and/or materials provided with the distribution. - -3. Neither the name of The HDF Group, the name of the University, nor the - name of any Contributor may be used to endorse or promote products derived - from this software without specific prior written permission from - The HDF Group, the University, or the Contributor, respectively. - -DISCLAIMER: -THIS SOFTWARE IS PROVIDED BY THE HDF GROUP AND THE CONTRIBUTORS -"AS IS" WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT SHALL THE HDF GROUP OR THE CONTRIBUTORS BE LIABLE FOR ANY DAMAGES SUFFERED BY THE USERS ARISING OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -You are under no obligation whatsoever to provide any bug fixes, patches, or upgrades to the features, functionality or performance of the source code ("Enhancements") to anyone; however, if you choose to make your Enhancements available either publicly, or directly to The HDF Group, without imposing a separate written license agreement for such Enhancements, then you hereby grant the following license: a non-exclusive, royalty-free perpetual license to install, use, modify, prepare derivative works, incorporate into other computer software, distribute, and sublicense such enhancements or derivative works thereof, in binary and source code form. - ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ - -Limited portions of HDF5 were developed by Lawrence Berkeley National -Laboratory (LBNL). LBNL's Copyright Notice and Licensing Terms can be -found here: COPYING_LBNL_HDF5 file in this directory or at -http://support.hdfgroup.org/ftp/HDF5/releases/COPYING_LBNL_HDF5. - ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ - -Contributors: National Center for Supercomputing Applications (NCSA) at -the University of Illinois, Fortner Software, Unidata Program Center (netCDF), The Independent JPEG Group (JPEG), Jean-loup Gailly and Mark Adler (gzip), and Digital Equipment Corporation (DEC). - ------------------------------------------------------------------------------ - -Portions of HDF5 were developed with support from the Lawrence Berkeley -National Laboratory (LBNL) and the United States Department of Energy -under Prime Contract No. DE-AC02-05CH11231. - ------------------------------------------------------------------------------ - -Portions of HDF5 were developed with support from the University of -California, Lawrence Livermore National Laboratory (UC LLNL). -The following statement applies to those portions of the product and must -be retained in any redistribution of source code, binaries, documentation, -and/or accompanying materials: - - This work was partially produced at the University of California, - Lawrence Livermore National Laboratory (UC LLNL) under contract - no. W-7405-ENG-48 (Contract 48) between the U.S. Department of Energy - (DOE) and The Regents of the University of California (University) - for the operation of UC LLNL. - - DISCLAIMER: - This work was prepared as an account of work sponsored by an agency of - the United States Government. Neither the United States Government nor - the University of California nor any of their employees, makes any - warranty, express or implied, or assumes any liability or responsibility - for the accuracy, completeness, or usefulness of any information, - apparatus, product, or process disclosed, or represents that its use - would not infringe privately- owned rights. Reference herein to any - specific commercial products, process, or service by trade name, - trademark, manufacturer, or otherwise, does not necessarily constitute - or imply its endorsement, recommendation, or favoring by the United - States Government or the University of California. The views and - opinions of authors expressed herein do not necessarily state or reflect - those of the United States Government or the University of California, - and shall not be used for advertising or product endorsement purposes. - ------------------------------------------------------------------------------ - -HDF5 is available with the SZIP compression library but SZIP is not part -of HDF5 and has separate copyright and license terms. See SZIP Compression -in HDF Products (www.hdfgroup.org/doc_resource/SZIP/) for further details. - ------------------------------------------------------------------------------ - From patchwork Mon Oct 26 03:58:11 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khem Raj X-Patchwork-Id: 101942 Received: from mail-dy1-f178.google.com (mail-dy1-f178.google.com [74.125.82.178]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.35866.1792987104727083772 for ; Sun, 25 Oct 2026 20:58:24 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20251104 header.b=g3Q1G+jq; spf=pass (domain: gmail.com, ip: 74.125.82.178, mailfrom: raj.khem@gmail.com) Received: by mail-dy1-f178.google.com with SMTP id 5a478bee46e88-354ba08cfd1so4707234eec.1 for ; Sun, 25 Oct 2026 20:58:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792987104; x=1793591904; 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=Pq9Cd9JckRRn1FAKHf5S5DGp5sbKP3dsTU0sxdo4opU=; b=g3Q1G+jqYNp5zz/JvtZK37o1t2YPIHby++HamFpjQ/8TNqk+Tf95N9qkh3idajRA1/ DnERtizdkd3b3OCIKzy866u+sW2FdEQqTHqdR2tPDcN0E7gbrcs9FRXCl8aiw3ARNsPf rqi4/CXdI12NykHjTWQ2foxZeOzPhX2ynkljL0LnuzQjcf6PUh/Bqsk/5KXUbM0rNx4a zVih1HMZq5oy0HAWkykJfbPHIx0FP0y42pMz5o8Xzx197INUozLyhNN+4BW/fH2hMN77 ghD49Vw/AR0WPIvfzHKCiNa1SrDgrOAjQrzSjTZ6OncAcb9ZkvWGVgpi0e7sxHw+E5jm oSqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792987104; x=1793591904; 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=Pq9Cd9JckRRn1FAKHf5S5DGp5sbKP3dsTU0sxdo4opU=; b=ppHaQs7GHNpw7PfcGieeEBt9UoIRqV+90lefE4FSW5RlmJUN94G5kctNuMt9rSWgie WC7lp/dXO3XX9ZzKcyHPFlCwEpEl1AePhXtkdWi159jD2lEdYNb1HegmD0LQFRlx/n2g vRHJ08bOuvSJCJX/uAbJCa5bjvDecRK3dq+923LbZA4mjjGWoBb8OzOyl9RvM+0czzRC 49KxPmB0nSLd2LLS3oEp83IPjlZccBVEq3bbkfvO1Rkd0b3PUnq7EhrmXJDq20ujZJ2p sERCgqdJW8ChRS6VPlY/ohOHEy6pajBHrhqDvHJ3Ji9Y2VIAplMDfzZ/kp5/CNArXvwm iVTg== X-Gm-Message-State: AFq9FYLNtsEaXff4ONsiNQJtJ3XT0C5icnYMxtCdLTZaWkXckBtbhaQU zR2/yTc7kBQH1wESFmwyWFKRbQ85uwbBsfjllBwlwKBbrX6xCaC6nJtRBMMHF5A9hjY= X-Gm-Gg: AYBFou3jrIt8NfX3r+KGjAsiOsPAhSNfo73eYqOMx7Tnp/PRDafYbTiMQbxRdMi9ZLF gIkNIQm9ND/b7uy2bteOfjrw5Cz9HV+McG9ZSQyBa150ai610jveC36S5lfcMJ9WcLnurt3lrx2 UDVtXFj4QZ/j/1c48ANiCJk5R54ZcTjvpzZ0dBvdk9Xy1mPC2voikLPsckT5AhhxZdLy2r2Wtk5 aw+8g5+Iw4vYRwgSQKGGq9/QQnCye6vE5MGovK0vnV07RiyffxUy9kehJAeKqaV4zr0JxTsiB8g Lxc8m0/Zw4H80vRjuN4nwVJ1Yw4JeyxbzZX5JlVDxcjyVaLJsEpSJdkCZGeODOmKFMXSbT+c8XG HthFjMa2FZxDi7dFIG1vTIwT+jcPOF6nO43sR7ZoEzBCFZEsJUpBZR9UoA170JxmLniNVqy49PS WRk7O7/6shDLgwKU2kHwrTHs0lurarCzVrFT43OIi2U5KInaeSH73Qw8EMoaBRfmXZnHAKLp3te aEJ+ULGZ2cyDRdNBWLq/DVr7KANhdXfk+pB2+/93AVoPlHX/0GrXa1hPnwBcgdpIURRiVRW621z i0MTc+7MmbWe5aBbUQ/4gmrOJsH05GuPXiLLh4Qooz0S13WgdBz6kR/UJxX3MVt3Z2ipkDO/2N7 Ipi4QpVGAtXRh569yXWES5eZXvfiAGtP0JKvp67HIsZRL9kjR6riUjwvP/5ph3xzAJXUT36vy+0 4IMbzk8sVyzmJFztHC1UykGlT7oyYzmO1kiVDvWLtEjtwJh+xw3NwBqgJ3kH9d93+6T3a9J2QYN DExfc4ZfPSMwOAvc//Nb104unN/rcQ= X-Received: by 2002:a05:693c:66d2:10b0:35d:2633:ff79 with SMTP id 5a478bee46e88-369e8620108mr8075142eec.40.1792987103925; Sun, 25 Oct 2026 20:58:23 -0700 (PDT) Return-Path: Received: from apollo.tail3ccdd3.ts.net ([147.160.63.35]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-369f44bd644sm13277417eec.15.2026.10.25.20.58.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2026 20:58:23 -0700 (PDT) From: Khem Raj X-Google-Original-From: Khem Raj To: openembedded-devel@lists.openembedded.org Cc: Khem Raj Subject: [meta-oe][PATCH 5/8] hdf5: Add PACKAGECONFIG for the C++ library Date: Sun, 25 Oct 2026 20:58:11 -0700 Message-ID: <20261026035814.55254-5-khem.raj@oss.qualcomm.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261026035814.55254-1-khem.raj@oss.qualcomm.com> References: <20261026035814.55254-1-khem.raj@oss.qualcomm.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, 26 Oct 2026 03:58:30 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/131417 Since 1.14.0 upstream no longer builds the C++ library (libhdf5_cpp, libhdf5_hl_cpp) by default, so recipes that need it fail to find it. Add a "cpp" PACKAGECONFIG to turn on HDF5_BUILD_CPP_LIB, keeping it disabled by default. The C++ build also installs the h5c++ compiler wrapper, which needs the same RECIPE_SYSROOT_NATIVE cleanup and multilib script handling as h5cc. Fixes: https://github.com/openembedded/meta-openembedded/issues/814 Signed-off-by: Khem Raj --- meta-oe/recipes-support/hdf5/hdf5_2.0.0.bb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/meta-oe/recipes-support/hdf5/hdf5_2.0.0.bb b/meta-oe/recipes-support/hdf5/hdf5_2.0.0.bb index a0eb5eb155..4e493f0aa7 100644 --- a/meta-oe/recipes-support/hdf5/hdf5_2.0.0.bb +++ b/meta-oe/recipes-support/hdf5/hdf5_2.0.0.bb @@ -35,6 +35,10 @@ EXTRA_OECMAKE = " \ -DCMAKE_INSTALL_PREFIX='${prefix}' \ -DHDF5_INSTALL_LIB_DIR='${baselib}' \ " + +PACKAGECONFIG ??= "" +PACKAGECONFIG[cpp] = "-DHDF5_BUILD_CPP_LIB=ON,-DHDF5_BUILD_CPP_LIB=OFF" + EXTRA_OECMAKE:prepend:class-target = "-DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper " gen_emu() { @@ -60,9 +64,14 @@ do_install:append() { # Used for generating config files on target oe_multilib_header H5pubconf.h sed -i -e 's|${RECIPE_SYSROOT_NATIVE}||g' ${D}${bindir}/h5cc + if ${@bb.utils.contains('PACKAGECONFIG', 'cpp', 'true', 'false', d)}; then + sed -i -e 's|${RECIPE_SYSROOT_NATIVE}||g' ${D}${bindir}/h5c++ + fi } -MULTILIB_SCRIPTS += "${PN}:${bindir}/h5cc" +MULTILIB_SCRIPTS += "${PN}:${bindir}/h5cc \ + ${@bb.utils.contains('PACKAGECONFIG', 'cpp', '${PN}:${bindir}/h5c++', '', d)} \ +" BBCLASSEXTEND = "native" From patchwork Mon Oct 26 03:58:12 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khem Raj X-Patchwork-Id: 101937 Received: from mail-dy1-f174.google.com (mail-dy1-f174.google.com [74.125.82.174]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.35867.1792987106382541127 for ; Sun, 25 Oct 2026 20:58:26 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20251104 header.b=q/kfPaUQ; spf=pass (domain: gmail.com, ip: 74.125.82.174, mailfrom: raj.khem@gmail.com) Received: by mail-dy1-f174.google.com with SMTP id 5a478bee46e88-33fb4680717so4561768eec.1 for ; Sun, 25 Oct 2026 20:58:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792987106; x=1793591906; 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=GIhk9bNcu5nBR/tmIaxSoDi0TeJ1mCjSxTG9wnRfTsw=; b=q/kfPaUQqZJAb8fa0KtKpIbsG3NQl0xzhQCeHSSRA2dO7bLO9gaStnPt8Aeyj8uxhF C4+4TsVD/KAJrVHXDwBGH9Eby7mT/wY9ASlbtxhYhl0c5J6XJDtya7rDbZfEovu716it yMDp+680m8lC62mpeXGM/pR6Bjuc7Z0+ES464v3UThGhWed0DQZxdZfsGK30Lgsdp6fd oUF34A+p9XOkP1MdcYl+yUrUvPq/tnzVx7l771I2Cws18BwchGzYVM/iwpaSr23XJEpn ORb8qIk/rOTqqxSJ0/81tQ3M/sSwHq1c9tWAb8G7QI1+uaH+3rwoaGwQuh/57RKGnF7C Gxjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792987106; x=1793591906; 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=GIhk9bNcu5nBR/tmIaxSoDi0TeJ1mCjSxTG9wnRfTsw=; b=ljpzGKvAvdncggzin9zTVxaWPdGS9xk3ZIyb+cJnMUVqYr4vrTpvi9MPb9ZcpR2uN2 +lwp5KpJHJG3YlpmPFYWlgTbhNmaZzWssdJjp/z52ZXubSP3G4imfbl22xo1yHuC/JxZ RFnl+Dyintix32HFwIgLmhmVYw6cNvsLGgMOKmqA+Wh4riVd/fPYzCHLlzmcdN7x4FiJ fgUXc6HyGb/j3JHrbjChJV1C2wGrY3OpoLhmGNkS7PpCTPgxikLwnlYww71BUzgvkxMw kxeRa8nSXWH8R3pjlTdC9v6BB8of2GQsLcteRIW1tp4NXu7ZWhCMsehT10mLmZoEVIDV KsSg== X-Gm-Message-State: AFq9FYJvVDnZxh9j11ivuT7yTkKyGYNqkF10ALo7L0ZAJQ9vpIikkWYa YDyuhiXhKOeMfvyrHP5hFcVa+shySV21t5DAU4zDaL5Se8ZPe6TILdCbb3WLVlnpbnc= X-Gm-Gg: AYBFou1qnjsAFbf4d9i16g4Q1HsWD/lqK9JGGukmdxTQtT8ogecHJ+6NwSLQJj1hPwm rNYzMYo5fQsS0FeqwCQGo9HqcXY9lHJ1gbwgLzoJmJYh2g/qkrJ0fKbducLR/e5Wxxj4jwp+0Q9 IwxlDEHsLq/dpUmzj5o1s2O8887M7fsu+j3Z1UXSpVME5rd+ydlEf6H2ab3m3cV9ZowZE+yTd4C ub9z/FIJ0jcV0jKTS0ELPPcqmHTFassrC1e7O6+SkdaNJg1pIEhmo9/eDOVyqmDcHjRy8NvL5+R 4TebloSA5wFRAueP3sn9GWa1vTdG7rGLHmfD8jxA7SdVVKgJoqVpphG+jh6KgZBvoYByYDywnxK h+RWOOlfW8ed0EkI1L+DtR/C/VWOEXM6DC3Tb7CgycVN970fsVnmb0ujiIKxenF06Ys97Nx9h4q ttOEZUR8YWPv0EiTJ+fp7R+p2WJa1IQYP/5HiaP7npDZtA3qFlQfnQuhhM/DMwtJpRlv1/A0p98 MXXFLNaNZpTXJ3dFWmaiBKZ/9aI+TboboUbHJDxp//Mrt2GHb1sZzzXG5wT8v2k3as+CRpLnsXv juWfDlQsUARzBwy/MMP2kMoozI6x3MNyyL3/FSuhP2YMyJ+iR+vnwF6oow9Ulb9kqDM4XJPKoE3 lp/XDCOC8xyOKvCL7JjC4R/duqCDvMxvgAZYmGdoHwZMqt/4dRgN1B08Plg6gw5UH5oKBMHX9Se oa6r0642rsGVEmGpK5TSIp9sRynzbzUKMVQ5bp5sym2pW2ClVG8xbrB1IRQfCLYrYyy4KfR5WaN kFLBnwko+4IXw/E4b9cpq/gGDfQh6vtajwac/nqp+TG1uRDiFxF X-Received: by 2002:a05:693c:2d86:b0:35c:707b:acba with SMTP id 5a478bee46e88-369e8369d86mr13842596eec.3.1792987105643; Sun, 25 Oct 2026 20:58:25 -0700 (PDT) Return-Path: Received: from apollo.tail3ccdd3.ts.net ([147.160.63.35]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-369f44bd644sm13277417eec.15.2026.10.25.20.58.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2026 20:58:24 -0700 (PDT) From: Khem Raj X-Google-Original-From: Khem Raj To: openembedded-devel@lists.openembedded.org Cc: Khem Raj Subject: [meta-oe][PATCH 6/8] tbb: Skip test_resumable_tasks in ptest under QEMU Date: Sun, 25 Oct 2026 20:58:12 -0700 Message-ID: <20261026035814.55254-6-khem.raj@oss.qualcomm.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261026035814.55254-1-khem.raj@oss.qualcomm.com> References: <20261026035814.55254-1-khem.raj@oss.qualcomm.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, 26 Oct 2026 03:58:29 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/131418 test_resumable_tasks suspends and resumes tasks about 6 million times. On qemuriscv64 it passes but takes ~790s without printing anything, so ptest-runner hits its 450s timeout and kills the whole suite after 28 tests. Skip it when running under QEMU, detected at runtime via DMI sys_vendor, a fw-cfg device tree node or a qemu device tree compatible, so real hardware still runs it. With that, all other 140 tests pass on qemuriscv64. AI-Generated: Uses Claude Code Signed-off-by: Khem Raj --- meta-oe/recipes-support/tbb/files/run-ptest | 23 ++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/meta-oe/recipes-support/tbb/files/run-ptest b/meta-oe/recipes-support/tbb/files/run-ptest index ef14dab437..d5ca892150 100755 --- a/meta-oe/recipes-support/tbb/files/run-ptest +++ b/meta-oe/recipes-support/tbb/files/run-ptest @@ -1,10 +1,27 @@ #!/bin/sh -# ctest result lines look like: " 1/142 Test #1: test_tick_count ..... Passed 0.01 sec" -# anything other than Passed/Skipped/Disabled (Failed, Timeout, Exception, Not Run) is a FAIL +# Running under QEMU (x86 and UEFI arm64 report it via DMI, arm/arm64/riscv +# virt machines have a fw-cfg node, ppc64 pseries a qemu compatible) +is_qemu() { + [ "$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null)" = "QEMU" ] && return 0 + for f in /proc/device-tree/fw-cfg@*; do + [ -e "$f" ] && return 0 + done + grep -qs qemu /proc/device-tree/compatible +} + # test_scheduler_mix hangs intermittently on every architecture # https://github.com/uxlfoundation/oneTBB/issues/1281 -ctest -E '^test_scheduler_mix$' | awk '/Test +#[0-9]+:/ { +SKIP='test_scheduler_mix' +# test_resumable_tasks switches fibers ~6 million times; emulated, it runs +# silently for longer than the ptest-runner timeout (~790s on qemuriscv64) +if is_qemu; then + SKIP="$SKIP|test_resumable_tasks" +fi + +# ctest result lines look like: " 1/142 Test #1: test_tick_count ..... Passed 0.01 sec" +# anything other than Passed/Skipped/Disabled (Failed, Timeout, Exception, Not Run) is a FAIL +ctest -E "^($SKIP)\$" | awk '/Test +#[0-9]+:/ { if ($0 ~ /Passed/) res = "PASS" else if ($0 ~ /Skipped|Disabled/) res = "SKIP" else res = "FAIL" From patchwork Mon Oct 26 03:58:13 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khem Raj X-Patchwork-Id: 101938 Received: from mail-dy1-f181.google.com (mail-dy1-f181.google.com [74.125.82.181]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.35868.1792987107957283002 for ; Sun, 25 Oct 2026 20:58:28 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20251104 header.b=LQ6N3haj; spf=pass (domain: gmail.com, ip: 74.125.82.181, mailfrom: raj.khem@gmail.com) Received: by mail-dy1-f181.google.com with SMTP id 5a478bee46e88-3645f0f3fcdso4950979eec.0 for ; Sun, 25 Oct 2026 20:58:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792987107; x=1793591907; 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=v3ucMiA3RPbOkOv7GkKIsN7Sp6150xZtAG4sgD8hI68=; b=LQ6N3haj0p/CIiDiNu8PfjyOoOKCC+tnxbdVbkEKvCVvT0z2tJPsV5ejCmLySB7kNO m0B/paRKiGD1yJFvPfeDQbP4ycojgl8bqlTqjyyLBRcYxvgkLoSDnzYRUru2BfpsYkPF 8N4TBdU5flpaV6m0CsVkCQ9ZB/nIL9Rl/3ZMXD7M+Ey5zP/XN6wGoc0vpYUZggMCG7bU fqNHSodCoV91N8V1cx5hDeFIEek8+a0sWaQvDRIcW4RbpYWSLkbe8er/6SeUWbZBBu3A dCTdYRNqG5AJhrwxi2MJI99wgiT5BVjL07aBeFx4mQ+F02Sp8dXFRkMVduupz/O9vcVI VuhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792987107; x=1793591907; 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=v3ucMiA3RPbOkOv7GkKIsN7Sp6150xZtAG4sgD8hI68=; b=zggTzAoO4Bg+5Of70NV9EsUq0rmP+7+7rWjH0W7qmVtdLAeb9uH93Z9o8Mm0VxIk4C teWyyW9lyAMzOcIyxzOjI6musM7MjlnqEecgVI6xsKvsQVX7rhwAyygMjQqdCx6fuXpb vFGndVJya5OJXpdrU5QpMqdBimy17mS+/Gg/xm4JiNksGabfS8eYLhU32IRt54l4qwJe ppoGogi8VD58ZHxZEimGE085TJEz9fYmmiOh4Va+pBYMLUq0MFvtjBa10OoiUu0cPWNS FaVzUevKIUlHAItU9XpUbl5c2BQrZVs6E+PIcKPw/cGzzJOiXQkitOSphfxxClJB1hYc dh+w== X-Gm-Message-State: AFq9FYIhiE1u9xPzbSzgUmXHM+JUZo6r+7pZwnNL3erUcWbHs/eFllJ3 Sb1fu4zl4kI/KIh3on4ya1QQwL+z0LyXLcA8cKk9B1EOG3Ne/3Y4hsCHUNFHvGHChuk= X-Gm-Gg: AYBFou3WnRj68BQGWzg1jjD2/AxDdcPl/CEuvjLhol8Sit9qJyc6GcCWRisS/47GhGb NUUouAp8nffHQ68zNbHKQ5a3eI4gqer9eN2klipPT/frxFbF4CVAr5AkY/Q28i7eH9uWKPGiBbb zsEXq6Ek+CucD3oceuS9lcF2RLAWvo8YT4gOL1mdw367/B2xShZuhHpbsJ3hkz5aB+ErXrz4Gg4 FYOey+r0TYWoU3wobb0kPClfj/hrnB7WvmWZlj4u8SgNH2RuIiwfb3hTeUIXvCT7faSEZyF5NV/ cJj5gDEnqnXBl7h76QLUsoDbkqEf32LWjh8DqM3WGPWxQ6xXwKqVlXsgMbu4A2Av35+w6YygNbz ZuLM55RC7nWRvZk8/e6/jw/gkhkwvCLsucsOgvJhdCPQgoWt5FnNm+i8ffDH8gqsOLLuWc6e7gk QzXvD0b+kQHFMSAXym1QYU91bcKvtU6kMOfumxF6hOEo+gTC+CfmnOWIx/RVpVANJwmw/DW2EbP 1QJpupVRLJRKKa3+gEOOVithYWQ+GJj55q8kvZL32ZElNnRRlALJfuiwsPm/fHvR7Igj2eyu3fc reb6jC3dYZc8idKupKepmFTrTCfMu3EoUXVXNuySqZRaI0p507vLm43cvypaUzWcKoCUuPjG7I/ OPn59ErgUIO0znkdkucdO/tFqeZpUs/YnkvZvZr0EzHz0ErFAVu6kiavF7Yl8l4iZWJClcnxhNk OfX3WK107tUgzPILVlZfvvcklvGg1EtL9HYfnI05gjigIg5w/BjMwUco8dJoedeD+IHTLqo6cYS wNQsq6Ksf2zJDNtHiFP0n0SCYEnFIM= X-Received: by 2002:a05:693c:3944:b0:369:ec31:8fd5 with SMTP id 5a478bee46e88-369ec31a168mr12119152eec.3.1792987107105; Sun, 25 Oct 2026 20:58:27 -0700 (PDT) Return-Path: Received: from apollo.tail3ccdd3.ts.net ([147.160.63.35]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-369f44bd644sm13277417eec.15.2026.10.25.20.58.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2026 20:58:26 -0700 (PDT) From: Khem Raj X-Google-Original-From: Khem Raj To: openembedded-devel@lists.openembedded.org Cc: Khem Raj Subject: [meta-python][PATCH 7/8] python3-simple-websocket: Add recipe Date: Sun, 25 Oct 2026 20:58:13 -0700 Message-ID: <20261026035814.55254-7-khem.raj@oss.qualcomm.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261026035814.55254-1-khem.raj@oss.qualcomm.com> References: <20261026035814.55254-1-khem.raj@oss.qualcomm.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, 26 Oct 2026 03:58:29 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/131419 Simple WebSocket server and client for Python, built on wsproto. Backport the upstream conversion of the async tests to pytest-asyncio; the 1.1.0 tests call asyncio.get_event_loop(), which fails on Python 3.14 when there is no current event loop. Add it to the fast ptest list; all 47 tests pass on qemuriscv64. AI-Generated: Uses Claude Code Signed-off-by: Khem Raj --- .../ptest-packagelists-meta-python.inc | 1 + ...test-improvements-for-Python-3.14-48.patch | 422 ++++++++++++++++++ .../python/python3-simple-websocket_1.1.0.bb | 19 + 3 files changed, 442 insertions(+) create mode 100644 meta-python/recipes-devtools/python/python3-simple-websocket/0001-Async-test-improvements-for-Python-3.14-48.patch create mode 100644 meta-python/recipes-devtools/python/python3-simple-websocket_1.1.0.bb diff --git a/meta-python/conf/include/ptest-packagelists-meta-python.inc b/meta-python/conf/include/ptest-packagelists-meta-python.inc index 92183897c7..6e4af06aaa 100644 --- a/meta-python/conf/include/ptest-packagelists-meta-python.inc +++ b/meta-python/conf/include/ptest-packagelists-meta-python.inc @@ -103,6 +103,7 @@ PTESTS_FAST_META_PYTHON = "\ python3-serpent \ python3-service-identity \ python3-setproctitle \ + python3-simple-websocket \ python3-simpleeval \ python3-six \ python3-smpplib \ diff --git a/meta-python/recipes-devtools/python/python3-simple-websocket/0001-Async-test-improvements-for-Python-3.14-48.patch b/meta-python/recipes-devtools/python/python3-simple-websocket/0001-Async-test-improvements-for-Python-3.14-48.patch new file mode 100644 index 0000000000..2be661c29e --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-simple-websocket/0001-Async-test-improvements-for-Python-3.14-48.patch @@ -0,0 +1,422 @@ +From 03832db418f11a818051eefcd774495798b203af Mon Sep 17 00:00:00 2001 +From: Miguel Grinberg +Date: Sun, 12 Apr 2026 10:38:44 +0100 +Subject: [PATCH] Async test improvements for Python 3.14 (#48) + +Python 3.14 no longer creates an event loop in asyncio.get_event_loop(), +so the make_sync() test helper fails with "There is no current event +loop in thread 'MainThread'". Run the async tests with pytest-asyncio. + +Upstream-Status: Backport [https://github.com/miguelgrinberg/simple-websocket/commit/2005dbb96b5b42a4ebf309d10ac1d33daaddb99f] +Signed-off-by: Khem Raj +--- + tests/helpers.py | 25 ------------------------- + tests/test_aioclient.py | 39 ++++++++++++++------------------------- + tests/test_aioserver.py | 39 +++++++++++++-------------------------- + tests/test_server.py | 2 +- + 4 files changed, 28 insertions(+), 77 deletions(-) + delete mode 100644 tests/helpers.py + +diff --git a/tests/helpers.py b/tests/helpers.py +deleted file mode 100644 +index a7c1a46..0000000 +--- a/tests/helpers.py ++++ /dev/null +@@ -1,25 +0,0 @@ +-import asyncio +-from unittest import mock +- +- +-def AsyncMock(*args, **kwargs): +- """Return a mock asynchronous function.""" +- m = mock.MagicMock(*args, **kwargs) +- +- async def mock_coro(*args, **kwargs): +- return m(*args, **kwargs) +- +- mock_coro.mock = m +- return mock_coro +- +- +-def _run(coro): +- """Run the given coroutine.""" +- return asyncio.get_event_loop().run_until_complete(coro) +- +- +-def make_sync(coro): +- """Wrap a coroutine so that it can be executed by pytest.""" +- def wrapper(*args, **kwargs): +- return _run(coro(*args, **kwargs)) +- return wrapper +diff --git a/tests/test_aioclient.py b/tests/test_aioclient.py +index 01a772a..5ec12ff 100644 +--- a/tests/test_aioclient.py ++++ b/tests/test_aioclient.py +@@ -1,15 +1,14 @@ + import asyncio +-import unittest + from unittest import mock + import pytest # noqa: F401 + + from wsproto.events import AcceptConnection, CloseConnection, TextMessage, \ + BytesMessage, Ping + import simple_websocket +-from .helpers import make_sync, AsyncMock + + +-class AioSimpleWebSocketClientTestCase(unittest.TestCase): ++@pytest.mark.asyncio ++class TestAioSimpleWebSocketClient: + async def get_client(self, mock_wsconn, url, events=[], subprotocols=None, + headers=None): + mock_wsconn().events.side_effect = \ +@@ -19,11 +18,10 @@ class AioSimpleWebSocketClientTestCase(unittest.TestCase): + return await simple_websocket.AioClient.connect( + url, subprotocols=subprotocols, headers=headers) + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_make_client(self, mock_wsconn, mock_open_connection): +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + client = await self.get_client(mock_wsconn, 'ws://example.com/ws?a=1') +@@ -40,12 +38,11 @@ class AioSimpleWebSocketClientTestCase(unittest.TestCase): + assert client.port == 80 + assert client.path == '/ws?a=1' + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_make_client_subprotocol(self, mock_wsconn, + mock_open_connection): +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + client = await self.get_client(mock_wsconn, 'ws://example.com/ws?a=1', +@@ -55,12 +52,11 @@ class AioSimpleWebSocketClientTestCase(unittest.TestCase): + b"Request(host='example.com', target='/ws?a=1', extensions=[], " + b"extra_headers=[], subprotocols=['foo'])") + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_make_client_subprotocols(self, mock_wsconn, + mock_open_connection): +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + client = await self.get_client(mock_wsconn, 'ws://example.com/ws?a=1', +@@ -70,12 +66,11 @@ class AioSimpleWebSocketClientTestCase(unittest.TestCase): + b"Request(host='example.com', target='/ws?a=1', extensions=[], " + b"extra_headers=[], subprotocols=['foo', 'bar'])") + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_make_client_headers(self, mock_wsconn, + mock_open_connection): +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + client = await self.get_client(mock_wsconn, 'ws://example.com/ws?a=1', +@@ -84,12 +79,11 @@ class AioSimpleWebSocketClientTestCase(unittest.TestCase): + b"Request(host='example.com', target='/ws?a=1', extensions=[], " + b"extra_headers=[('Foo', 'Bar')], subprotocols=[])") + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_make_client_headers2(self, mock_wsconn, + mock_open_connection): +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + client = await self.get_client( +@@ -100,11 +94,10 @@ class AioSimpleWebSocketClientTestCase(unittest.TestCase): + b"extra_headers=[('Foo', 'Bar'), ('Foo', 'Baz')], " + b"subprotocols=[])") + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_send(self, mock_wsconn, mock_open_connection): +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + client = await self.get_client(mock_wsconn, 'ws://example.com/ws') +@@ -123,11 +116,10 @@ class AioSimpleWebSocketClientTestCase(unittest.TestCase): + b"Message(data=b'hello', frame_finished=True, " + b"message_finished=True)") + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_receive(self, mock_wsconn, mock_open_connection): +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + client = await self.get_client( +@@ -142,12 +134,11 @@ class AioSimpleWebSocketClientTestCase(unittest.TestCase): + assert await client.receive() == b'hello' + assert await client.receive(timeout=0) is None + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_receive_after_close(self, mock_wsconn, + mock_open_connection): +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + client = await self.get_client( +@@ -160,11 +151,10 @@ class AioSimpleWebSocketClientTestCase(unittest.TestCase): + with pytest.raises(simple_websocket.ConnectionClosed): + await client.receive() + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_receive_ping(self, mock_wsconn, mock_open_connection): +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) +@@ -176,11 +166,11 @@ class AioSimpleWebSocketClientTestCase(unittest.TestCase): + await asyncio.sleep(0.01) + wsock.write.assert_any_call(b"Pong(payload=b'hello')") + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_receive_empty(self, mock_wsconn, mock_open_connection): +- rsock = mock.MagicMock(read=AsyncMock(side_effect=[b'x', b'x', b''])) ++ rsock = mock.MagicMock(read=mock.AsyncMock( ++ side_effect=[b'x', b'x', b''])) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + client = await self.get_client( +@@ -193,11 +183,10 @@ class AioSimpleWebSocketClientTestCase(unittest.TestCase): + assert await client.receive() == 'hello' + assert await client.receive(timeout=0) is None + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_close(self, mock_wsconn, mock_open_connection): +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + client = await self.get_client( +diff --git a/tests/test_aioserver.py b/tests/test_aioserver.py +index a274019..071e035 100644 +--- a/tests/test_aioserver.py ++++ b/tests/test_aioserver.py +@@ -1,15 +1,14 @@ + import asyncio +-import unittest + from unittest import mock + import pytest # noqa: F401 + + from wsproto.events import Request, CloseConnection, TextMessage, \ + BytesMessage, Ping, Pong + import simple_websocket +-from .helpers import make_sync, AsyncMock + + +-class AioSimpleWebSocketServerTestCase(unittest.TestCase): ++@pytest.mark.asyncio ++class TestAioSimpleWebSocketServer: + async def get_server(self, mock_wsconn, request, events=[], + client_subprotocols=None, server_subprotocols=None, + **kwargs): +@@ -29,12 +28,11 @@ class AioSimpleWebSocketServerTestCase(unittest.TestCase): + return await simple_websocket.AioServer.accept( + aiohttp=request, subprotocols=server_subprotocols, **kwargs) + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_aiohttp(self, mock_wsconn, mock_open_connection): + mock_request = mock.MagicMock(headers={}) +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + server = await self.get_server(mock_wsconn, mock_request) +@@ -53,19 +51,17 @@ class AioSimpleWebSocketServerTestCase(unittest.TestCase): + b'Sec-Websocket-Version: 13\r\n\r\n') + assert server.is_server + +- @make_sync + async def test_invalid_request(self): + with pytest.raises(ValueError): + await simple_websocket.AioServer.accept(aiohttp='foo', asgi='bar') + with pytest.raises(ValueError): + await simple_websocket.AioServer.accept(asgi='bar', sock='baz') + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_send(self, mock_wsconn, mock_open_connection): + mock_request = mock.MagicMock(headers={}) +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + server = await self.get_server(mock_wsconn, mock_request) +@@ -84,12 +80,11 @@ class AioSimpleWebSocketServerTestCase(unittest.TestCase): + b"Message(data=b'hello', frame_finished=True, " + b"message_finished=True)") + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_receive(self, mock_wsconn, mock_open_connection): + mock_request = mock.MagicMock(headers={}) +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + server = await self.get_server(mock_wsconn, mock_request, events=[ +@@ -103,13 +98,12 @@ class AioSimpleWebSocketServerTestCase(unittest.TestCase): + assert await server.receive() == b'hello' + assert await server.receive(timeout=0) is None + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_receive_after_close(self, mock_wsconn, + mock_open_connection): + mock_request = mock.MagicMock(headers={}) +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + server = await self.get_server(mock_wsconn, mock_request, events=[ +@@ -121,13 +115,12 @@ class AioSimpleWebSocketServerTestCase(unittest.TestCase): + with pytest.raises(simple_websocket.ConnectionClosed): + await server.receive() + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_receive_split_messages(self, mock_wsconn, + mock_open_connection): + mock_request = mock.MagicMock(headers={}) +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + server = await self.get_server(mock_wsconn, mock_request, events=[ +@@ -151,12 +144,11 @@ class AioSimpleWebSocketServerTestCase(unittest.TestCase): + assert await server.receive() == b'hello' + assert await server.receive(timeout=0) is None + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_receive_ping(self, mock_wsconn, mock_open_connection): + mock_request = mock.MagicMock(headers={}) +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + server = await self.get_server(mock_wsconn, mock_request, events=[ +@@ -166,12 +158,11 @@ class AioSimpleWebSocketServerTestCase(unittest.TestCase): + await asyncio.sleep(0.01) + wsock.write.assert_any_call(b"Pong(payload=b'hello')") + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_receive_empty(self, mock_wsconn, mock_open_connection): + mock_request = mock.MagicMock(headers={}) +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + server = await self.get_server(mock_wsconn, mock_request, events=[ +@@ -183,12 +174,11 @@ class AioSimpleWebSocketServerTestCase(unittest.TestCase): + assert await server.receive() == 'hello' + assert await server.receive(timeout=0) is None + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_receive_large(self, mock_wsconn, mock_open_connection): + mock_request = mock.MagicMock(headers={}) +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + server = await self.get_server(mock_wsconn, mock_request, events=[ +@@ -201,12 +191,11 @@ class AioSimpleWebSocketServerTestCase(unittest.TestCase): + assert await server.receive() == 'hello' + assert await server.receive(timeout=0) is None + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_close(self, mock_wsconn, mock_open_connection): + mock_request = mock.MagicMock(headers={}) +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + server = await self.get_server(mock_wsconn, mock_request) +@@ -222,7 +211,6 @@ class AioSimpleWebSocketServerTestCase(unittest.TestCase): + b'CloseConnection(code=, ' + b'reason=None)') + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + @mock.patch('simple_websocket.aiows.time') +@@ -230,7 +218,7 @@ class AioSimpleWebSocketServerTestCase(unittest.TestCase): + async def test_ping_pong(self, mock_wait_for, mock_time, mock_wsconn, + mock_open_connection): + mock_request = mock.MagicMock(headers={}) +- rsock = mock.MagicMock(read=AsyncMock()) ++ rsock = mock.MagicMock(read=mock.AsyncMock()) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + server = await self.get_server(mock_wsconn, mock_request, events=[ +@@ -246,12 +234,11 @@ class AioSimpleWebSocketServerTestCase(unittest.TestCase): + assert wsock.write.call_args_list[2][0][0].startswith(b'Ping') + assert wsock.write.call_args_list[3][0][0].startswith(b'Close') + +- @make_sync + @mock.patch('simple_websocket.aiows.asyncio.open_connection') + @mock.patch('simple_websocket.aiows.WSConnection') + async def test_subprotocols(self, mock_wsconn, mock_open_connection): + mock_request = mock.MagicMock(headers={}) +- rsock = mock.MagicMock(read=AsyncMock(return_value=b'x')) ++ rsock = mock.MagicMock(read=mock.AsyncMock(return_value=b'x')) + wsock = mock.MagicMock() + mock_open_connection.return_value = (rsock, wsock) + +diff --git a/tests/test_server.py b/tests/test_server.py +index 7be5d15..ca5fe99 100644 +--- a/tests/test_server.py ++++ b/tests/test_server.py +@@ -92,7 +92,7 @@ class SimpleWebSocketServerTestCase(unittest.TestCase): + b"message_finished=True)") + server.connected = True + server.send(b'hello') +- mock_socket.send.assert_called_with( ++ mock_socket.send.assert_any_call( + b"Message(data=b'hello', frame_finished=True, " + b"message_finished=True)") + diff --git a/meta-python/recipes-devtools/python/python3-simple-websocket_1.1.0.bb b/meta-python/recipes-devtools/python/python3-simple-websocket_1.1.0.bb new file mode 100644 index 0000000000..35c568cf7c --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-simple-websocket_1.1.0.bb @@ -0,0 +1,19 @@ +SUMMARY = "Simple WebSocket server and client for Python" +HOMEPAGE = "https://github.com/miguelgrinberg/simple-websocket" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=9d272c9fe2437531b5bbecf4fcc82e24" + +inherit pypi python_setuptools_build_meta ptest-python-pytest + +SRC_URI += "file://0001-Async-test-improvements-for-Python-3.14-48.patch" +SRC_URI[sha256sum] = "7939234e7aa067c534abdab3a9ed933ec9ce4691b0713c78acb195560aa52ae4" + +RDEPENDS:${PN} += " \ + python3-asyncio \ + python3-io \ + python3-wsproto \ +" + +RDEPENDS:${PN}-ptest += " \ + python3-pytest-asyncio \ +" From patchwork Mon Oct 26 03:58:14 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Khem Raj X-Patchwork-Id: 101943 Received: from mail-dy1-f174.google.com (mail-dy1-f174.google.com [74.125.82.174]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.35869.1792987109328477871 for ; Sun, 25 Oct 2026 20:58:29 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20251104 header.b=cz0ft0II; spf=pass (domain: gmail.com, ip: 74.125.82.174, mailfrom: raj.khem@gmail.com) Received: by mail-dy1-f174.google.com with SMTP id 5a478bee46e88-35b2c599f43so469262eec.0 for ; Sun, 25 Oct 2026 20:58:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792987109; x=1793591909; 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=CDc5Y8zMFx3OcjsHdt4HSGR/86gJbhL46DyRCpJCHW4=; b=cz0ft0IIFUtDcpvvrewJF9u9SIUPtoY0nBE/Rg79nHRkaV1z6AZmtBbJy2SvfzXYEJ PNMZp44Po49CyV7QoHNkyNLtvXD1Y/2H6iSbWtP9WP/xZGDft5yiaaUEQ6Ig4bpeQRZn XnL2nQZAEdSYhC871nGBNgiUX2u1FLyq4W3UsmRcbh4CnskHPyHoJg3n8FjfcGK3Op5l ErFXVLatCnhq2CCIgIg0ed0mRJCZ7Tu/PTZOwRILXZa6Q56mhm5SoyqghHHybmSaSplY +oqgyU/MnmEk8Y8pDO/k1Wogc5IVNIwbNHCddU8t0xzDFwwy9QJIcUgGMNUvM5y33nGK GEBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792987109; x=1793591909; 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=CDc5Y8zMFx3OcjsHdt4HSGR/86gJbhL46DyRCpJCHW4=; b=zePElZyV2l1rqayea5pbRjmsXr0WaZQ6X7raib0ymBcVVeX2mG/KnR/JF+md3gUYPx bC29pFtKscSjkBPrcnET7nAhYh3JZy/CmxSS9dgSiVizUFredi7W1h96J30prkg/SPvH YUXgwM0XVX7TA3s6WcuzhY0fsvIaf9ocUJ8x3fwN6JI8M4cm6QDmSP9nA+1KFNvcdnZa Tt8AaKRqD0ANGgSsjl8nBxmcIExsjPiPq3Kx5QxytQT8fP4EComzSCOXYosgy3VP3boC goAqYutcysLvRsh2Jv3lmsMmE1ckSEXMu6M1wCFyciHqqNxFD0dG9VOLy4suunJQb9WG /d8Q== X-Gm-Message-State: AFq9FYJ/kQC5Ag/gbTTJlz6+UTw1W6/k1bSNuL7l9ip/N5BSWIsyxiSD NZTIZd0lVa6JTGB1ikoDAmhNmI8hj0elF1qx6HkPbK5uBW1UEzTHTqNKYTuhsMk2pKg= X-Gm-Gg: AYBFou3VphvRcuijlh8PeQvgVzX553eqcUnPJcZqzs8nD/NmgpqHNSI8IHEVDe9MR5j 5MIlCc0+qPsU/fu6ipagyy789iWx98TfvDIOYlebgbESdQqqDCE3h1WSQJkZ3L2DT29V6ttM/cT NFKNrzpWXl2RgkLZo298+trH0tIbfGO8ewbztq13HCHY2pM76mNF5Ailm4uGBsShAry47KcldSA 7kGz65IPmCilwXpEDjGHlT38ndlHnbnXfT8vdwQNmpaAG89DM3Rzw1rB/r5afCsh3lT4zJ5Yw0a kQUX37RNq1CoB7Lb1ZHsTuOEgV2nzTQYTpInZXUkMTi1ezzY3IcAhgxeurVgIQKXEoYn1CdgYEF 4KiIqLhrKDq20DNU2zmKSm59AWgzAEWmcs+6LYYSRjoY0r3k9Z3hDJshgPfkXXYzkIFL22NXAt7 pcqRI4EAUpMogCrtnqE0dGXndEJTd6iOG4m1ikaZU3x0G6M7MIXyIQv30eeCOiG1WeG+ctn4BlA KlJ2msjtERgKs4JiNW/kN5FkHMzpouy20A0h2MQV3cycAfrIhcgw/X6BoCb105c2sAkTZnPLLWN M7ZXQhHcsIRpnzydg3tFYMPQpQk/IaRtsxlrkuiHsQr4ny4q9YMLi/owM3Sw66Y3te2dj5pM7uu ZxtToHRgWNyr4lQq0vNAkbfpK5/zHM451A5qvqYmKW1J0n5W/3fVy44f2/F34N609ELkmFAKMey N4fUy4TPVhc/a4AHQl26D6Ydr+raH0pk5meRexEnXJdg6XIduE6Vv3OP7NzCHktDidyXsRC8vDE Uk1s+2kj+0EiSKzIWjeEaeTEKJ2ogAvV9rb8HxSH4CPsAlXXamc X-Received: by 2002:a05:7301:d816:20b0:369:f277:7f09 with SMTP id 5a478bee46e88-369f277b32cmr6872593eec.25.1792987108472; Sun, 25 Oct 2026 20:58:28 -0700 (PDT) Return-Path: Received: from apollo.tail3ccdd3.ts.net ([147.160.63.35]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-369f44bd644sm13277417eec.15.2026.10.25.20.58.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Oct 2026 20:58:27 -0700 (PDT) From: Khem Raj X-Google-Original-From: Khem Raj To: openembedded-devel@lists.openembedded.org Cc: Khem Raj Subject: [meta-python][PATCH 8/8] python3-engineio: Add missing runtime dependencies Date: Sun, 25 Oct 2026 20:58:14 -0700 Message-ID: <20261026035814.55254-8-khem.raj@oss.qualcomm.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261026035814.55254-1-khem.raj@oss.qualcomm.com> References: <20261026035814.55254-1-khem.raj@oss.qualcomm.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, 26 Oct 2026 03:58:30 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/131420 simple-websocket is the only hard dependency in pyproject.toml, and the default threading async mode uses it for WebSocket connections. The threading driver and the client also import queue (python3-threading), and the client imports ssl (python3-io). Signed-off-by: Khem Raj --- meta-python/recipes-devtools/python/python3-engineio_4.14.0.bb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/meta-python/recipes-devtools/python/python3-engineio_4.14.0.bb b/meta-python/recipes-devtools/python/python3-engineio_4.14.0.bb index cabee98d00..3811ca332c 100644 --- a/meta-python/recipes-devtools/python/python3-engineio_4.14.0.bb +++ b/meta-python/recipes-devtools/python/python3-engineio_4.14.0.bb @@ -15,6 +15,9 @@ RDEPENDS:${PN} += " \ python3-logging \ python3-compression \ python3-asyncio \ + python3-io \ + python3-simple-websocket \ + python3-threading \ " SRC_URI[sha256sum] = "eaa1e386baf9c2c7959eef7f9d9165c5ea910c5b392f5316e78d29ed073cb43d"