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 new file mode 100644 index 0000000000..1fbbd8fd48 --- /dev/null +++ b/meta/recipes-devtools/python/python3-cython/0001-Replace-not-predictable-build-path-prefix-with-hardc.patch @@ -0,0 +1,72 @@ +From 1690c505f1387e1884565021991a162e2f88f2b9 Mon Sep 17 00:00:00 2001 +From: Hongxu Jia +Date: Wed, 17 Sep 2025 01:42:08 -0700 +Subject: [PATCH] Replace not predictable build path prefix with hardcode + string in the generated output file + +The build path may contain tmp dir which is not predictable, it caused +the generated output file is not stable at each build and made +the generated library is not reproducible [1] between builds + +vim frozenlist/_frozenlist.cpp +... +/* BEGIN: Cython Metadata +{ + "distutils": { + "depends": [], + "language": "c++", + "name": "frozenlist._frozenlist", + "sources": [ + "/tmp/.tmp-frozenlist-pep517-cfdvygni/src/frozenlist/_frozenlist.pyx" + ] + }, + "module_name": "frozenlist._frozenlist" +} +END: Cython Metadata */ +... + +Replace build path prefix with hardcode `build_path', it is no harm to +tweak comments in source file, after applied this commit, +vim frozenlist/_frozenlist.cpp +... +/* BEGIN: Cython Metadata +{ + "distutils": { + "depends": [], + "language": "c++", + "name": "frozenlist._frozenlist", + "sources": [ + "build_path/frozenlist/_frozenlist.pyx" + ] + }, + "module_name": "frozenlist._frozenlist" +} +END: Cython Metadata */ +... + +[1] https://reproducible-builds.org/ + +Upstream-Status: Submitted [https://github.com/cython/cython/pull/7162] +Signed-off-by: Hongxu Jia +--- + Cython/Compiler/ModuleNode.py | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/Cython/Compiler/ModuleNode.py b/Cython/Compiler/ModuleNode.py +index 6672cb986..b1123515e 100644 +--- a/Cython/Compiler/ModuleNode.py ++++ b/Cython/Compiler/ModuleNode.py +@@ -779,7 +779,9 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): + code.put_generated_by() + if metadata: + code.putln("/* BEGIN: Cython Metadata") +- code.putln(json.dumps(metadata, indent=4, sort_keys=True)) ++ _metadata = json.dumps(metadata, indent=4, sort_keys=True) ++ _metadata = _metadata.replace(os.getcwd(), 'build_path') ++ code.putln(_metadata) + code.putln("END: Cython Metadata */") + code.putln("") + +-- +2.49.0 + diff --git a/meta/recipes-devtools/python/python3-cython_3.1.3.bb b/meta/recipes-devtools/python/python3-cython_3.1.3.bb index dcb61a3634..3b2835d9c5 100644 --- a/meta/recipes-devtools/python/python3-cython_3.1.3.bb +++ b/meta/recipes-devtools/python/python3-cython_3.1.3.bb @@ -11,6 +11,10 @@ SRC_URI[sha256sum] = "10ee785e42328924b78f75a74f66a813cb956b4a9bc91c44816d089d59 inherit pypi setuptools3 cython +SRC_URI += " \ + file://0001-Replace-not-predictable-build-path-prefix-with-hardc.patch \ +" + # No need to depend on self DEPENDS:remove = "python3-cython-native"