From 262587d754b0a435953abfa4cf923add6e880a35 Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Mon, 9 Aug 2021 14:49:33 +0100 Subject: 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 Signed-off-by: Richard Purdie --- meta/lib/oeqa/sdk/buildtools-cases/README | 2 ++ meta/lib/oeqa/sdk/buildtools-cases/build.py | 23 +++++++++++++++++++++++ meta/lib/oeqa/sdk/buildtools-cases/sanity.py | 22 ++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 meta/lib/oeqa/sdk/buildtools-cases/README create mode 100644 meta/lib/oeqa/sdk/buildtools-cases/build.py create mode 100644 meta/lib/oeqa/sdk/buildtools-cases/sanity.py diff --git a/meta/lib/oeqa/sdk/buildtools-cases/README b/meta/lib/oeqa/sdk/buildtools-cases/README new file mode 100644 index 0000000000..d4f20faa9f --- /dev/null +++ b/meta/lib/oeqa/sdk/buildtools-cases/README @@ -0,0 +1,2 @@ +These test cases are used by buildtools-tarball, and are not used by the testsdk +class. diff --git a/meta/lib/oeqa/sdk/buildtools-cases/build.py b/meta/lib/oeqa/sdk/buildtools-cases/build.py new file mode 100644 index 0000000000..5a17ab98c6 --- /dev/null +++ b/meta/lib/oeqa/sdk/buildtools-cases/build.py @@ -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)) diff --git a/meta/lib/oeqa/sdk/buildtools-cases/sanity.py b/meta/lib/oeqa/sdk/buildtools-cases/sanity.py new file mode 100644 index 0000000000..64baaa8f84 --- /dev/null +++ b/meta/lib/oeqa/sdk/buildtools-cases/sanity.py @@ -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) -- cgit v1.2.3-54-g00ecf