tests: llext-edk: get the Zephyr SDK path from build_info.yml
The LLEXT EDK test works by packaging an EDK and then testing its functionality to build the extension in an external CMake build step. That CMakelists.txt file currently references the required tools using the ZEPHYR_SDK_INSTALL_DIR environment variable, which must be manually set by the user. This change modifies the test to read the newly added 'build_info.yml' file, generated by Zephyr during the first build step. This allows to set the ZEPHYR_SDK_INSTALL_DIR environment variable automatically based on the (possibly auto-discovered) SDK path. A few minor compliance cleanups are also included. Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
This commit is contained in:
parent
2e436564a6
commit
ddd795a028
1 changed files with 13 additions and 6 deletions
|
@ -10,16 +10,22 @@ from pathlib import Path
|
|||
from subprocess import check_output
|
||||
|
||||
import pytest
|
||||
import yaml
|
||||
from twister_harness import DeviceAdapter
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def test_edk(unlaunched_dut: DeviceAdapter):
|
||||
# Need to have the ZEPHYR_SDK_INSTALL_DIR environment variable set,
|
||||
# otherwise can't actually build the edk
|
||||
if os.environ.get("ZEPHYR_SDK_INSTALL_DIR") is None:
|
||||
logger.warning("ZEPHYR_SDK_INSTALL_DIR is not set, skipping test")
|
||||
pytest.skip("ZEPHYR_SDK_INSTALL_DIR is not set")
|
||||
# Get the SDK path from build_info.yml
|
||||
build_dir = str(unlaunched_dut.device_config.build_dir)
|
||||
with open(Path(build_dir) / "build_info.yml") as f:
|
||||
build_info = yaml.safe_load(f)
|
||||
if build_info["cmake"]["toolchain"]["name"] != "zephyr":
|
||||
logger.warning("This test requires the Zephyr SDK to be used, skipping")
|
||||
pytest.skip("The Zephyr SDK must be used")
|
||||
|
||||
sdk_dir = build_info["cmake"]["toolchain"]["path"]
|
||||
|
||||
# Can we build the edk?
|
||||
command = [
|
||||
|
@ -64,6 +70,7 @@ def test_edk(unlaunched_dut: DeviceAdapter):
|
|||
# knows where the EDK is installed
|
||||
edk_dir = Path(tempdir) / "llext-edk"
|
||||
env = os.environ.copy()
|
||||
env.update({"ZEPHYR_SDK_INSTALL_DIR": sdk_dir})
|
||||
env.update({"LLEXT_EDK_INSTALL_DIR": edk_dir})
|
||||
|
||||
# Build the extension using the edk
|
||||
|
@ -92,7 +99,7 @@ def test_edk(unlaunched_dut: DeviceAdapter):
|
|||
"--build-dir",
|
||||
unlaunched_dut.device_config.build_dir,
|
||||
"--",
|
||||
f"-DEXTENSION_DIR={tempdir_extension}/build/"
|
||||
f"-DEXTENSION_DIR={tempdir_extension}/build/",
|
||||
]
|
||||
logger.debug(f"west command: {command}")
|
||||
output = check_output(command, text=True)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue