[OE-core] [PATCH 2/2] selftest: Add multiconfig test

Richard Purdie richard.purdie at linuxfoundation.org
Sat Mar 2 16:53:07 UTC 2019


Add a test for a multiconfig build which mixes tiny and musl builds
along with using the mcextend class to combine and package multiple images
into another image. This gives the multiconfig a decent test in a scenario
users may use.

Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 .../multiconfig-image-packager_0.1.bb         | 25 +++++++++++
 meta/lib/oeqa/selftest/cases/multiconfig.py   | 43 +++++++++++++++++++
 2 files changed, 68 insertions(+)
 create mode 100644 meta-selftest/recipes-test/mulitconfig/multiconfig-image-packager_0.1.bb
 create mode 100644 meta/lib/oeqa/selftest/cases/multiconfig.py

diff --git a/meta-selftest/recipes-test/mulitconfig/multiconfig-image-packager_0.1.bb b/meta-selftest/recipes-test/mulitconfig/multiconfig-image-packager_0.1.bb
new file mode 100644
index 00000000000..ad18d865c82
--- /dev/null
+++ b/meta-selftest/recipes-test/mulitconfig/multiconfig-image-packager_0.1.bb
@@ -0,0 +1,25 @@
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+MCMACHINE_virtclass-mcextend-musl = "qemux86-64"
+MCMACHINE_virtclass-mcextend-tiny = "qemux86"
+MCIMGTYPE_virtclass-mcextend-musl = "ext4"
+MCIMGTYPE_virtclass-mcextend-tiny = "cpio.gz"
+
+MC_DEPLOY_DIR_IMAGE = "${TOPDIR}/tmp-mc-${MCNAME}/deploy/images/${MCMACHINE}"
+
+do_install[mcdepends] += "multiconfig::${MCNAME}:core-image-minimal:do_image_complete multiconfig::${MCNAME}:virtual/kernel:do_deploy"
+
+do_install () {
+    install -d ${D}/var/lib/machines/${MCNAME}
+    install ${MC_DEPLOY_DIR_IMAGE}/core-image-minimal-${MCMACHINE}.${MCIMGTYPE} ${D}/var/lib/machines/${MCNAME}/core-image-minimal.${MCIMGTYPE}
+    install ${MC_DEPLOY_DIR_IMAGE}/bzImage ${D}/var/lib/machines/${MCNAME}
+}
+
+python () {
+    mcname = d.getVar('MCNAME')
+    if not mcname:
+        raise bb.parse.SkipRecipe("Not a multiconfig target")
+}
+
+BBCLASSEXTEND = "mcextend:tiny mcextend:musl"
\ No newline at end of file
diff --git a/meta/lib/oeqa/selftest/cases/multiconfig.py b/meta/lib/oeqa/selftest/cases/multiconfig.py
new file mode 100644
index 00000000000..3c36f6e5d2e
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/multiconfig.py
@@ -0,0 +1,43 @@
+import os
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import bitbake
+import oeqa.utils.ftools as ftools
+
+class MultiConfig(OESelftestTestCase):
+
+    def test_multiconfig(self):
+        """
+        Test that a simple multiconfig build works. This uses the mcextend class and the 
+        multiconfig-image-packager test recipe to build a core-image-full-cmdline image which 
+        contains a tiny core-image-minimal and a musl core-image-minimal, installed as packages.
+        """
+
+        config = """
+IMAGE_INSTALL_append_pn-core-image-full-cmdline = " multiconfig-image-packager-tiny multiconfig-image-packager-musl"
+BBMULTICONFIG = "tiny musl"
+"""
+        self.write_config(config)
+
+        muslconfig = """
+MACHINE = "qemux86-64"
+DISTRO = "poky"
+TCLIBC = "musl"
+TMPDIR = "${TOPDIR}/tmp-mc-musl"
+"""
+
+        tinyconfig = """
+MACHINE = "qemux86"
+DISTRO = "poky-tiny"
+TMPDIR = "${TOPDIR}/tmp-mc-tiny"
+"""
+
+        multiconfigdir = self.builddir + "/conf/multiconfig"
+        os.makedirs(multiconfigdir, exist_ok=True)
+        self.track_for_cleanup(multiconfigdir + "/musl.conf")
+        ftools.write_file(multiconfigdir + "/musl.conf", muslconfig)
+        self.track_for_cleanup(multiconfigdir + "/tiny.conf")
+        ftools.write_file(multiconfigdir + "/tiny.conf", tinyconfig)
+
+        # Build a core-image-minimal
+        bitbake('core-image-full-cmdline')
+
-- 
2.20.1



More information about the Openembedded-core mailing list