#
|
# SPDX-License-Identifier: MIT
|
#
|
|
import os
|
import textwrap
|
from oeqa.selftest.case import OESelftestTestCase
|
from oeqa.utils.commands import bitbake
|
|
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"
|
"""
|
self.write_config(muslconfig, 'musl')
|
|
tinyconfig = """
|
MACHINE = "qemux86"
|
DISTRO = "poky-tiny"
|
TMPDIR = "${TOPDIR}/tmp-mc-tiny"
|
"""
|
self.write_config(tinyconfig, 'tiny')
|
|
# Build a core-image-minimal
|
bitbake('core-image-full-cmdline')
|
|
def test_multiconfig_reparse(self):
|
"""
|
Test that changes to a multiconfig conf file are correctly detected and
|
cause a reparse/rebuild of a recipe.
|
"""
|
config = textwrap.dedent('''\
|
MCTESTVAR = "test"
|
BBMULTICONFIG = "test"
|
''')
|
self.write_config(config)
|
|
testconfig = textwrap.dedent('''\
|
MCTESTVAR:append = "1"
|
''')
|
self.write_config(testconfig, 'test')
|
|
# Check that the 1) the task executed and 2) that it output the correct
|
# value. Note "bitbake -e" is not used because it always reparses the
|
# recipe and we want to ensure that the automatic reparsing and parse
|
# caching is detected.
|
result = bitbake('mc:test:multiconfig-test-parse -c showvar')
|
self.assertIn('MCTESTVAR=test1', result.output.splitlines())
|
|
testconfig = textwrap.dedent('''\
|
MCTESTVAR:append = "2"
|
''')
|
self.write_config(testconfig, 'test')
|
|
result = bitbake('mc:test:multiconfig-test-parse -c showvar')
|
self.assertIn('MCTESTVAR=test2', result.output.splitlines())
|