From: Thomas Roos <thomas@roosesweb.de>
To: openembedded-core@lists.openembedded.org
Cc: Ross Burton <ross.burton@arm.com>, Thomas Roos <thomas@roosesweb.de>
Subject: [PATCH v2] python3-cython: upgrade 3.2.9 -> 3.3.1
Date: Sun, 8 Nov 2026 22:42:36 +0100 [thread overview]
Message-ID: <20261108214236.1294076-1-thomas@roosesweb.de> (raw)
In-Reply-To: <20261108192525.1082675-1-thomas@roosesweb.de>
PyAV 19.0.0, which Home Assistant 2026.11 pins for its stream and
generic camera integrations, requires Cython 3.3: its generated code
uses __Pyx_BEGIN_CRITICAL_SECTION, which Cython 3.2 does not provide.
3.3.1 contains the upstream fixes for the non-deterministic generated
code that held back the 3.3.0 upgrade (cython#8045, #7982, #8025).
Cython 3.3 still fails intermittently when it builds itself in
parallel (cython#7997; #8008 and #8013 are not merged). Clean builds
of python3-cython-native with PARALLEL_MAKE = "-j 32" failed 6 out of
20 times with 3.3.1 (and 8 out of 20 with 3.3.0), with the refnanny
error seen on the autobuilder. With PARALLEL_MAKE = "" all 20 builds
passed, so build serially for now.
Refresh the line numbers of the build path patch for 3.3.1.
License-Update: none, LICENSE.txt is unchanged.
AI-Generated: Claude Code, Claude Opus 5.5
Signed-off-by: Thomas Roos <thomas@roosesweb.de>
---
Changes in v2:
- Build serially (PARALLEL_MAKE = ""). Cython 3.3 races when setuptools
runs cythonize in threads (cython#7997, still open; #8008 and #8013 are
not merged). Clean builds of python3-cython-native with
PARALLEL_MAKE = "-j 32" failed 6 of 20 times with 3.3.1 and 8 of 20
times with 3.3.0, with the refnanny error from the autobuilder
("'__Pyx_refnanny_mutex' redeclared", "C attributes cannot be added in
implementation part of extension type"). With PARALLEL_MAKE = "" all
20 builds of 3.3.1 passed. v1 did not have this and would have failed
on the autobuilder sooner or later.
With cython PR #8008 applied on top of 3.3.1 the parallel build passed
20 of 20 times as well, so the serial build can go once a release
contains that fix.
Ross, this follows your 3.3.0 upgrade that was held back for
reproducibility and these build failures. 3.3.1 contains the fixes for
the non-deterministic generated code (#8045 via #7982, #8025,
0a948c7d). I have not run the reproducibility selftest. If you would
rather carry this on with your patch, please drop mine.
PyAV 19.0.0 (needed by Home Assistant 2026.11) requires Cython >= 3.3.0.
Built with this upgrade for qemux86-64: python3-av 19.0.0, aiohttp, yarl,
multidict, frozenlist, propcache (with its 0.5.4 upgrade in meta-python),
numpy, pandas, scipy and uvloop.
Related changes for the Home Assistant 2026.11 upgrade:
- meta-openembedded (meta-python): two series, fixes and updates
- meta-python-ai: https://github.com/zboszor/meta-python-ai/pull/46
- meta-homeassistant: https://github.com/meta-homeassistant/meta-homeassistant/pull/207
AI disclosure: the patch, its commit message and these notes were
written with Claude Code (Claude Opus 5.5), which also ran the build
tests above in my build environment. I reviewed the change.
...ace-not-predictable-build-path-prefix-with-hardc.patch | 2 +-
.../{python3-cython_3.2.9.bb => python3-cython_3.3.1.bb} | 8 +++++++-
2 files changed, 8 insertions(+), 2 deletions(-)
rename meta/recipes-devtools/python/{python3-cython_3.2.9.bb => python3-cython_3.3.1.bb} (78%)
diff --git a/meta/recipes-devtools/python/python3-cython/0001-Replace-not-predictable-build-path-prefix-with-hardc.patch b/meta/recipes-devtools/python/python3-cython/0001-Replace-not-predictable-build-path-prefix-with-hardc.patch
index 573a53ee56..9481b9c16f 100644
--- a/meta/recipes-devtools/python/python3-cython/0001-Replace-not-predictable-build-path-prefix-with-hardc.patch
+++ b/meta/recipes-devtools/python/python3-cython/0001-Replace-not-predictable-build-path-prefix-with-hardc.patch
@@ -56,7 +56,7 @@ diff --git a/Cython/Compiler/ModuleNode.py b/Cython/Compiler/ModuleNode.py
index 34f1b32..b09350b 100644
--- a/Cython/Compiler/ModuleNode.py
+++ b/Cython/Compiler/ModuleNode.py
-@@ -877,7 +877,9 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
+@@ -899,7 +899,9 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
code.put_generated_by()
if metadata:
code.putln("/* BEGIN: Cython Metadata")
diff --git a/meta/recipes-devtools/python/python3-cython_3.2.9.bb b/meta/recipes-devtools/python/python3-cython_3.3.1.bb
similarity index 78%
rename from meta/recipes-devtools/python/python3-cython_3.2.9.bb
rename to meta/recipes-devtools/python/python3-cython_3.3.1.bb
index 3457a91490..75cde4ef70 100644
--- a/meta/recipes-devtools/python/python3-cython_3.2.9.bb
+++ b/meta/recipes-devtools/python/python3-cython_3.3.1.bb
@@ -7,12 +7,18 @@ SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=61c3ee8961575861fa86c7e62bc9f69c"
-SRC_URI[sha256sum] = "d249c9022ab13286b17bd66f30609e800c5f95efeecb06168990c7a66cecde6c"
+SRC_URI[sha256sum] = "e0e45989e821bef6aa9ae15c7d583ab5e055f7406c4b3624e49e06d24e90375a"
inherit pypi setuptools3 cython
SRC_URI += "file://0001-Replace-not-predictable-build-path-prefix-with-hardc.patch"
+# Cython 3.3 races when it builds itself in parallel: setuptools runs
+# cythonize in threads and Cython keeps global state, which fails
+# intermittently (https://github.com/cython/cython/issues/7997, not fixed
+# in 3.3.1). Build serially until upstream fixes it.
+PARALLEL_MAKE = ""
+
# No need to depend on self
DEPENDS:remove = "python3-cython-native"
--
2.56.0
next prev parent reply other threads:[~2026-11-08 21:42 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-08 19:25 [PATCH] python3-cython: upgrade 3.2.9 -> 3.3.1 Thomas Roos
2026-11-08 21:42 ` Thomas Roos [this message]
2026-11-12 9:16 ` [OE-core] [PATCH v2] " Mathieu Dubois-Briand
2026-11-12 15:26 ` Ross Burton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261108214236.1294076-1-thomas@roosesweb.de \
--to=thomas@roosesweb.de \
--cc=openembedded-core@lists.openembedded.org \
--cc=ross.burton@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox