[PATCH v6 5/6] oeqa/sdk/meson: improve test to validate host/build target assignments

Tom Hochstein
2025-04-11T17:28:52Z

From: Ross Burton <ross.burton@arm.com>

Use 'meson introspect' to dump JSON describing the build configuration
and validate that the build and host architectures are correctly set in
the meson.cross file.

Also instead of calling ninja directly, call the relevant meson commands.

Fixes: [YOCTO #15485]
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Tom Hochstein <tom.hochstein@oss.nxp.com>
---
meta/lib/oeqa/sdk/cases/meson.py | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/meta/lib/oeqa/sdk/cases/meson.py b/meta/lib/oeqa/sdk/cases/meson.py
index 1edf78720a..407b94d242 100644
--- a/meta/lib/oeqa/sdk/cases/meson.py
+++ b/meta/lib/oeqa/sdk/cases/meson.py
@@ -4,6 +4,7 @@
# SPDX-License-Identifier: MIT
#

+import json
import os
import subprocess
import tempfile
@@ -39,10 +40,17 @@ class MesonTest(OESDKTestCase):
self.assertTrue(os.path.isdir(dirs["source"]))
os.makedirs(dirs["build"])

- log = self._run("meson --warnlevel 1 -Degl=no -Dglx=no -Dx11=false {build} {source}".format(**dirs))
- # Check that Meson thinks we're doing a cross build and not a native
- self.assertIn("Build type: cross build", log)
- self._run("ninja -C {build} -v".format(**dirs))
- self._run("DESTDIR={install} ninja -C {build} -v install".format(**dirs))
+ log = self._run("meson setup --warnlevel 1 -Degl=no -Dglx=no -Dx11=false {build} {source}".format(**dirs))
+
+ # Check that the host (gcc) and build (cross-gcc) compilers are different
+ data = json.loads(self._run("meson introspect --compilers {build}".format(**dirs)))
+ self.assertNotEqual(data["build"]["c"]["exelist"], data["host"]["c"]["exelist"])
+ # Check that the system architectures were set correctly
+ data = json.loads(self._run("meson introspect --machines {build}".format(**dirs)))
+ self.assertEqual(data["build"]["cpu"], self.td["SDK_ARCH"])
+ self.assertEqual(data["host"]["cpu"], self.td["HOST_ARCH"])
+
+ self._run("meson compile -C {build} -v".format(**dirs))
+ self._run("meson install -C {build} --destdir {install}".format(**dirs))

self.check_elf(os.path.join(dirs["install"], "usr", "local", "lib", "libepoxy.so"))
--
2.34.1