[OE-core][PATCH V3 1/2] runqemu: restore support to run inside SDK

Qi.Chen
2026-02-27T02:24:28Z

From: Chen Qi <Qi.Chen@windriver.com>

Using runqemu from SDK has been supported for a long time[1].

Below are example steps for using runqemu inside SDK.
1. mkdir destdir
2. cp -r /path/to/build/tmp/deploy/image/qemux86-64 destdir
3. Install SDK to destdir
4. Source SDK
5. runqemu qemux86-64 nographic slirp

Recently the related code path was deleted by accident during
an effort to make codes cleaner and more consistent.

We need to restore support for it.

What actually matters is the STAGING_BINDIR_NATIVE, which we
use to locate the qemu binary. So in case of SDK, we set it
from OECORE_NATIVE_SYSROOT. The STAGING_DIR_NATIVE checking
and setting are meaningless, thus deleting it.

[1] https://git.openembedded.org/openembedded-core/commit/?id=93649edc034f2540ff55dc9b41638797209cfb9c

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
scripts/runqemu | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/scripts/runqemu b/scripts/runqemu
index 32a3d6296a..5587d47865 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -997,17 +997,21 @@ to your build configuration.
logger.info('Setting DEPLOY_DIR_IMAGE to folder containing %s (%s)' % (self.qemuboot, imgdir))
self.set('DEPLOY_DIR_IMAGE', imgdir)

- # If the STAGING_*_NATIVE directories from the config file don't exist
+ oecore_native_sysroot = self.get('OECORE_NATIVE_SYSROOT')
+ if oecore_native_sysroot:
+ logger.info('In SDK environment, setting STAGING_BINDIR_NATIVE from OECORE_NATIVE_SYSROOT (%s)' % oecore_native_sysroot)
+ self.set('STAGING_BINDIR_NATIVE', '%s/usr/bin' % oecore_native_sysroot)
+
+ # If the STAGING_BINDIR_NATIVE directories from the config file don't exist
# and we're in a sourced OE build directory try to extract the paths
# from `bitbake -e`
- havenative = os.path.exists(self.get('STAGING_DIR_NATIVE')) and \
- os.path.exists(self.get('STAGING_BINDIR_NATIVE'))
+ havenative = os.path.exists(os.path.exists(self.get('STAGING_BINDIR_NATIVE')))

if not havenative:
if not self.bitbake_e:
self.load_bitbake_env()

- native_vars = ['STAGING_DIR_NATIVE']
+ native_vars = ['STAGING_BINDIR_NATIVE']
for nv in native_vars:
s = re.search('^%s="(.*)"' % nv, self.bitbake_e, re.M)
if s and s.group(1) != self.get(nv):
--
2.43.0