diff mbox series

[meta-oe] nodejs: ignore QEMU_OPTIONS for native signature generation

Message ID 20250621194009.350944-1-skandigraun@gmail.com
State New
Headers show
Series [meta-oe] nodejs: ignore QEMU_OPTIONS for native signature generation | expand

Commit Message

Gyorgy Sarvari June 21, 2025, 7:40 p.m. UTC
NodeJS recipe uses qemu to run some target binaries during compilation
in qemu, in case the build machine's and the target machine's CPU
bit-width are different. The task that generates some helper scripts
(do_create_v8_qemu_wrapper) is executed before do_compile.

In case the target machine changes, that also changes the value of
QEMU_OPTIONS variable, since that is always derived from the target
machine's properties, even when the current recipe is class-native.

This also means that in case the target machine changes, that invalidates
the do_create_v8_qemu_wrapper's sstate cache (along with the very costly
do_compile), for both target and native builds.

However for native builds qemu isn't used at all, since the target and build
CPU are the same, their bit-width matches too.

To avoid unnecessarily invalidating the sstate cache of nodejs-native
when the target machine changes, add QEMU_OPTIONS to BB_HASHCONFIG_IGNORE_VARS
in order to exclude it from the signature generation.

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
---
 meta-oe/recipes-devtools/nodejs/nodejs_22.16.0.bb | 4 ++++
 1 file changed, 4 insertions(+)
diff mbox series

Patch

diff --git a/meta-oe/recipes-devtools/nodejs/nodejs_22.16.0.bb b/meta-oe/recipes-devtools/nodejs/nodejs_22.16.0.bb
index 4bc829f140..bf2bae27f1 100644
--- a/meta-oe/recipes-devtools/nodejs/nodejs_22.16.0.bb
+++ b/meta-oe/recipes-devtools/nodejs/nodejs_22.16.0.bb
@@ -47,6 +47,10 @@  CVE_PRODUCT += "node.js"
 # v8 errors out if you have set CCACHE
 CCACHE = ""
 
+# Changing qemu options can incorrectly invalidate sstate, even though it is not used.
+# Exclude it from signature generation.
+BB_HASHCONFIG_IGNORE_VARS:append:class-native = " QEMU_OPTIONS "
+
 def map_nodejs_arch(a, d):
     import re