diff mbox series

[v2] python3-cython: upgrade 3.2.9 -> 3.3.1

Message ID 20261108214236.1294076-1-thomas@roosesweb.de
State New
Headers show
Series [v2] python3-cython: upgrade 3.2.9 -> 3.3.1 | expand

Commit Message

Thomas Roos Nov. 8, 2026, 9:42 p.m. UTC
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 mbox series

Patch

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"