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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.