oeqa/sdk: add some buildtools tests

These two tests are designed to exercise the buildtools-tarball.

SanityTests simply verifies that inside the SDK, some commands are used
from the SDK.

BuildTests creates a new OE build directory and builds virtual/libc to
verify that a basic build works correctly. DL_DIR is reused to avoid
needless downloading, but sstate is not shared to ensure a build does
happen.

(From OE-Core rev: 6157d6ffa32d6df383c29d4b6de07feb9d619913)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ross Burton
2021-08-09 14:49:33 +01:00
committed by Richard Purdie
parent 43af729d31
commit 262587d754
3 changed files with 47 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
These test cases are used by buildtools-tarball, and are not used by the testsdk
class.

View File

@@ -0,0 +1,23 @@
#
# SPDX-License-Identifier: MIT
#
import os, tempfile
from oeqa.sdk.case import OESDKTestCase
from oeqa.utils.subprocesstweak import errors_have_output
errors_have_output()
class BuildTests(OESDKTestCase):
"""
Verify that bitbake can build virtual/libc inside the buildtools.
"""
def test_libc(self):
with tempfile.TemporaryDirectory(prefix='bitbake-build-', dir=self.tc.sdk_dir) as testdir:
corebase = self.td['COREBASE']
self._run('. %s/oe-init-build-env %s' % (corebase, testdir))
with open(os.path.join(testdir, 'conf', 'local.conf'), 'ta') as conf:
conf.write('\n')
conf.write('DL_DIR = "%s"\n' % self.td['DL_DIR'])
self._run('. %s/oe-init-build-env %s && bitbake virtual/libc' % (corebase, testdir))

View File

@@ -0,0 +1,22 @@
#
# SPDX-License-Identifier: MIT
#
import shutil
import os.path
from oeqa.sdk.case import OESDKTestCase
class SanityTests(OESDKTestCase):
def test_tools(self):
"""
Test that wget and tar come from the buildtools, not the host. This
verifies that the buildtools have installed correctly. We can't check
for gcc as that is only installed by buildtools-extended.
"""
for command in ("tar", "wget"):
# Canonicalise the SDK root
sdk_base = os.path.realpath(self.tc.sdk_dir)
# Canonicalise the location of this command
tool_path = os.path.realpath(self._run("command -v %s" % command).strip())
# Assert that the tool was found inside the SDK root
self.assertEquals(os.path.commonprefix((sdk_base, tool_path)), sdk_base)