summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/selftest/cases/esdk.py
diff options
context:
space:
mode:
Diffstat (limited to 'meta/lib/oeqa/selftest/cases/esdk.py')
-rw-r--r--meta/lib/oeqa/selftest/cases/esdk.py122
1 files changed, 122 insertions, 0 deletions
diff --git a/meta/lib/oeqa/selftest/cases/esdk.py b/meta/lib/oeqa/selftest/cases/esdk.py
new file mode 100644
index 0000000000..9f5de2cde7
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/esdk.py
@@ -0,0 +1,122 @@
1#
2# Copyright OpenEmbedded Contributors
3#
4# SPDX-License-Identifier: MIT
5#
6
7import tempfile
8import shutil
9import os
10import glob
11import time
12from oeqa.selftest.case import OESelftestTestCase
13from oeqa.utils.commands import runCmd, bitbake, get_bb_vars
14
15class oeSDKExtSelfTest(OESelftestTestCase):
16 """
17 # Bugzilla Test Plan: 6033
18 # This code is planned to be part of the automation for eSDK containig
19 # Install libraries and headers, image generation binary feeds, sdk-update.
20 """
21
22 @staticmethod
23 def get_esdk_environment(env_eSDK, tmpdir_eSDKQA):
24 # XXX: at this time use the first env need to investigate
25 # what environment load oe-selftest, i586, x86_64
26 pattern = os.path.join(tmpdir_eSDKQA, 'environment-setup-*')
27 return glob.glob(pattern)[0]
28
29 @staticmethod
30 def run_esdk_cmd(env_eSDK, tmpdir_eSDKQA, cmd, postconfig=None, **options):
31 if postconfig:
32 esdk_conf_file = os.path.join(tmpdir_eSDKQA, 'conf', 'local.conf')
33 with open(esdk_conf_file, 'a+') as f:
34 f.write(postconfig)
35 if not options:
36 options = {}
37 if not 'shell' in options:
38 options['shell'] = True
39
40 runCmd("cd %s; unset BBPATH; unset BUILDDIR; . %s; %s" % (tmpdir_eSDKQA, env_eSDK, cmd), **options)
41
42 @staticmethod
43 def generate_eSDK(image):
44 pn_task = '%s -c populate_sdk_ext' % image
45 bitbake(pn_task)
46
47 @staticmethod
48 def get_eSDK_toolchain(image):
49 pn_task = '%s -c populate_sdk_ext' % image
50
51 bb_vars = get_bb_vars(['SDK_DEPLOY', 'TOOLCHAINEXT_OUTPUTNAME'], pn_task)
52 sdk_deploy = bb_vars['SDK_DEPLOY']
53 toolchain_name = bb_vars['TOOLCHAINEXT_OUTPUTNAME']
54 return os.path.join(sdk_deploy, toolchain_name + '.sh')
55
56 @staticmethod
57 def update_configuration(cls, image, tmpdir_eSDKQA, env_eSDK, ext_sdk_path):
58 sstate_dir = os.path.join(os.environ['BUILDDIR'], 'sstate-cache')
59
60 oeSDKExtSelfTest.generate_eSDK(cls.image)
61
62 cls.ext_sdk_path = oeSDKExtSelfTest.get_eSDK_toolchain(cls.image)
63 runCmd("%s -y -d \"%s\"" % (cls.ext_sdk_path, cls.tmpdir_eSDKQA))
64
65 cls.env_eSDK = oeSDKExtSelfTest.get_esdk_environment('', cls.tmpdir_eSDKQA)
66
67 sstate_config="""
68ESDK_LOCALCONF_ALLOW = "SSTATE_MIRRORS"
69SSTATE_MIRRORS = "file://.* file://%s/PATH"
70CORE_IMAGE_EXTRA_INSTALL = "perl"
71 """ % sstate_dir
72
73 with open(os.path.join(cls.tmpdir_eSDKQA, 'conf', 'local.conf'), 'a+') as f:
74 f.write(sstate_config)
75
76 @classmethod
77 def setUpClass(cls):
78 super(oeSDKExtSelfTest, cls).setUpClass()
79 cls.image = 'core-image-minimal'
80
81 bb_vars = get_bb_vars(['SSTATE_DIR', 'WORKDIR'], cls.image)
82 bb.utils.mkdirhier(bb_vars["WORKDIR"])
83 cls.tmpdirobj = tempfile.TemporaryDirectory(prefix="selftest-esdk-", dir=bb_vars["WORKDIR"])
84 cls.tmpdir_eSDKQA = cls.tmpdirobj.name
85
86 oeSDKExtSelfTest.generate_eSDK(cls.image)
87
88 # Install eSDK
89 cls.ext_sdk_path = oeSDKExtSelfTest.get_eSDK_toolchain(cls.image)
90 runCmd("%s -y -d \"%s\"" % (cls.ext_sdk_path, cls.tmpdir_eSDKQA))
91
92 cls.env_eSDK = oeSDKExtSelfTest.get_esdk_environment('', cls.tmpdir_eSDKQA)
93
94 # Configure eSDK to use sstate mirror from poky
95 sstate_config="""
96ESDK_LOCALCONF_ALLOW = "SSTATE_MIRRORS"
97SSTATE_MIRRORS = "file://.* file://%s/PATH"
98 """ % bb_vars["SSTATE_DIR"]
99 with open(os.path.join(cls.tmpdir_eSDKQA, 'conf', 'local.conf'), 'a+') as f:
100 f.write(sstate_config)
101
102 @classmethod
103 def tearDownClass(cls):
104 for i in range(0, 10):
105 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')):
106 time.sleep(1)
107 else:
108 break
109 cls.tmpdirobj.cleanup()
110 super().tearDownClass()
111
112 def test_install_libraries_headers(self):
113 pn_sstate = 'bc'
114 bitbake(pn_sstate)
115 cmd = "devtool sdk-install %s " % pn_sstate
116 oeSDKExtSelfTest.run_esdk_cmd(self.env_eSDK, self.tmpdir_eSDKQA, cmd)
117
118 def test_image_generation_binary_feeds(self):
119 image = 'core-image-minimal'
120 cmd = "devtool build-image %s" % image
121 oeSDKExtSelfTest.run_esdk_cmd(self.env_eSDK, self.tmpdir_eSDKQA, cmd)
122