poky/meta/lib/oeqa/selftest/cases/esdk.py
Ross Burton 6355ba2cad oeqa/selftest/esdk: remove postconfig argument
Discovered when looking for users of get_bb_var()'s postconfig argument,
this wrapper around runCmd() has a postconfig argument that has odd
behaviour: it _appends_ the new configuration to local.conf instead of
having them used for this specific run (unlike the other functions in
commands.py)

None of the eSDK tests use this functionality, so remove it. Future test
cases that need to write further configuration should do so directly.

(From OE-Core rev: 6196d096b95b36f8b72b4049d5479f8f23e7891d)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-06-19 21:54:44 +01:00

119 lines
4.1 KiB
Python

#
# Copyright OpenEmbedded Contributors
#
# SPDX-License-Identifier: MIT
#
import tempfile
import shutil
import os
import glob
import time
from oeqa.selftest.case import OESelftestTestCase
from oeqa.utils.commands import runCmd, bitbake, get_bb_vars
class oeSDKExtSelfTest(OESelftestTestCase):
"""
# Bugzilla Test Plan: 6033
# This code is planned to be part of the automation for eSDK containig
# Install libraries and headers, image generation binary feeds, sdk-update.
"""
@staticmethod
def get_esdk_environment(env_eSDK, tmpdir_eSDKQA):
# XXX: at this time use the first env need to investigate
# what environment load oe-selftest, i586, x86_64
pattern = os.path.join(tmpdir_eSDKQA, 'environment-setup-*')
return glob.glob(pattern)[0]
@staticmethod
def run_esdk_cmd(env_eSDK, tmpdir_eSDKQA, cmd, **options):
if not options:
options = {}
if not 'shell' in options:
options['shell'] = True
runCmd("cd %s; unset BBPATH; unset BUILDDIR; . %s; %s" % (tmpdir_eSDKQA, env_eSDK, cmd), **options)
@staticmethod
def generate_eSDK(image):
pn_task = '%s -c populate_sdk_ext' % image
bitbake(pn_task)
@staticmethod
def get_eSDK_toolchain(image):
pn_task = '%s -c populate_sdk_ext' % image
bb_vars = get_bb_vars(['SDK_DEPLOY', 'TOOLCHAINEXT_OUTPUTNAME'], pn_task)
sdk_deploy = bb_vars['SDK_DEPLOY']
toolchain_name = bb_vars['TOOLCHAINEXT_OUTPUTNAME']
return os.path.join(sdk_deploy, toolchain_name + '.sh')
@staticmethod
def update_configuration(cls, image, tmpdir_eSDKQA, env_eSDK, ext_sdk_path):
sstate_dir = os.path.join(os.environ['BUILDDIR'], 'sstate-cache')
oeSDKExtSelfTest.generate_eSDK(cls.image)
cls.ext_sdk_path = oeSDKExtSelfTest.get_eSDK_toolchain(cls.image)
runCmd("%s -y -d \"%s\"" % (cls.ext_sdk_path, cls.tmpdir_eSDKQA))
cls.env_eSDK = oeSDKExtSelfTest.get_esdk_environment('', cls.tmpdir_eSDKQA)
sstate_config="""
ESDK_LOCALCONF_ALLOW = "SSTATE_MIRRORS"
SSTATE_MIRRORS = "file://.* file://%s/PATH"
CORE_IMAGE_EXTRA_INSTALL = "perl"
""" % sstate_dir
with open(os.path.join(cls.tmpdir_eSDKQA, 'conf', 'local.conf'), 'a+') as f:
f.write(sstate_config)
@classmethod
def setUpClass(cls):
super(oeSDKExtSelfTest, cls).setUpClass()
cls.image = 'core-image-minimal'
bb_vars = get_bb_vars(['SSTATE_DIR', 'WORKDIR'], cls.image)
bb.utils.mkdirhier(bb_vars["WORKDIR"])
cls.tmpdirobj = tempfile.TemporaryDirectory(prefix="selftest-esdk-", dir=bb_vars["WORKDIR"])
cls.tmpdir_eSDKQA = cls.tmpdirobj.name
oeSDKExtSelfTest.generate_eSDK(cls.image)
# Install eSDK
cls.ext_sdk_path = oeSDKExtSelfTest.get_eSDK_toolchain(cls.image)
runCmd("%s -y -d \"%s\"" % (cls.ext_sdk_path, cls.tmpdir_eSDKQA))
cls.env_eSDK = oeSDKExtSelfTest.get_esdk_environment('', cls.tmpdir_eSDKQA)
# Configure eSDK to use sstate mirror from poky
sstate_config="""
ESDK_LOCALCONF_ALLOW = "SSTATE_MIRRORS"
SSTATE_MIRRORS = "file://.* file://%s/PATH"
""" % bb_vars["SSTATE_DIR"]
with open(os.path.join(cls.tmpdir_eSDKQA, 'conf', 'local.conf'), 'a+') as f:
f.write(sstate_config)
@classmethod
def tearDownClass(cls):
for i in range(0, 10):
if os.path.exists(os.path.join(cls.tmpdir_eSDKQA, 'bitbake.lock')) or os.path.exists(os.path.join(cls.tmpdir_eSDKQA, 'cache/hashserv.db-wal')):
time.sleep(1)
else:
break
cls.tmpdirobj.cleanup()
super().tearDownClass()
def test_install_libraries_headers(self):
pn_sstate = 'bc'
bitbake(pn_sstate)
cmd = "devtool sdk-install %s " % pn_sstate
oeSDKExtSelfTest.run_esdk_cmd(self.env_eSDK, self.tmpdir_eSDKQA, cmd)
def test_image_generation_binary_feeds(self):
image = 'core-image-minimal'
cmd = "devtool build-image %s" % image
oeSDKExtSelfTest.run_esdk_cmd(self.env_eSDK, self.tmpdir_eSDKQA, cmd)