From: Harish Sadineni <[email protected]> Ensure that cargo build successfully builds the binary for the target by default. This test validates whether the default build process produces the expected output for the specified target.
Signed-off-by: Harish Sadineni <[email protected]> --- meta/lib/oeqa/sdk/cases/rust.py | 37 ++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/meta/lib/oeqa/sdk/cases/rust.py b/meta/lib/oeqa/sdk/cases/rust.py index 4b115bebf5..4802a714ab 100644 --- a/meta/lib/oeqa/sdk/cases/rust.py +++ b/meta/lib/oeqa/sdk/cases/rust.py @@ -7,6 +7,10 @@ import os import shutil import unittest +import json +import subprocess +import re + from oeqa.sdk.case import OESDKTestCase @@ -32,8 +36,39 @@ class RustCompileTest(OESDKTestCase): def test_cargo_build(self): self._run('cd %s/hello; cargo add zstd' % (self.tc.sdk_dir)) - self._run('cd %s/hello; cargo build' % self.tc.sdk_dir) + result_env = self._run("echo $RUST_TARGET_SYS_VALUE") + rust_target_sys = result_env.strip() + result = self._run( + "cd %s/hello; cargo build --message-format=json-render-diagnostics" + % self.tc.sdk_dir + ) + + executable_path = None + for line in result.splitlines(): + try: + msg = json.loads(line) + except json.JSONDecodeError: + continue + + # Cargo emits multiple JSON messages; we want the executable + if isinstance(msg, dict) and msg.get("executable"): + executable_path = msg["executable"] + + parts = executable_path.split(os.sep) + target_index = parts.index("target") + path_component = parts[target_index + 1] + if path_component in ("debug", "release"): + file_output = subprocess.check_output(["file", executable_path]).decode().strip() + match = re.search(r"/sysroots/([^/]+)/lib/", file_output) + target_triple = match.group(1) if match else None + else: + target_triple = path_component + self.assertTrue( + rust_target_sys == target_triple, + f"Cargo built natively for the nativesdk host instead of '{rust_target_sys}.\n" + f"Cargo build needs to build for target by default not nativesdk_host" + ) class RustHostCompileTest(OESDKTestCase): td_vars = ['MACHINE', 'SDK_SYS'] -- 2.51.0
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#242994): https://lists.openembedded.org/g/openembedded-core/message/242994 Mute This Topic: https://lists.openembedded.org/mt/120640032/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
