]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core.git/commitdiff
classes-recipe: add cython class
authorRoss Burton <ross.burton@arm.com>
Fri, 8 Nov 2024 11:55:57 +0000 (11:55 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 12 Nov 2024 23:45:58 +0000 (23:45 +0000)
Recipes that use Cython typically also do some bespoke fixup.  Add a
class to centralise the logic:

- Set CYTHON_PREFIX_MAP to stop build paths appearing in generated
  objects
- Strip "Cython Metadata" blocks from generated code that ends up in the
  -src package

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes-recipe/cython.bbclass [new file with mode: 0644]

diff --git a/meta/classes-recipe/cython.bbclass b/meta/classes-recipe/cython.bbclass
new file mode 100644 (file)
index 0000000..f37ebeb
--- /dev/null
@@ -0,0 +1,11 @@
+DEPENDS:append = " python3-cython-native"
+
+# Remap the build paths that appear in generated .c code
+export CYTHON_PREFIX_MAP = "${S}=${TARGET_DBGSRC_DIR} ${B}=${TARGET_DBGSRC_DIR}"
+
+do_compile[postfuncs] = "strip_cython_metadata"
+strip_cython_metadata() {
+    # Remove the Cython Metadata headers that we don't need after the build, and
+    # may contain build paths.
+    find ${S} -name "*.c" -print0 | xargs -0 sed -i -e "/BEGIN: Cython Metadata/,/END: Cython Metadata/d"
+}