mirror of
https://git.yoctoproject.org/poky
synced 2026-09-14 21:49:33 +02:00
oeqa: Test multiconfig parsing
Add a test to verify that when multiconfig conf files changed, recipes are correctly reparsed. [YOCTO #13541] (From OE-Core rev: a424ef0a0c49123f4518e8fef993fd10f6fc5f4e) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
bbe46d8ca3
commit
2b74cece39
@@ -0,0 +1,11 @@
|
|||||||
|
SUMMARY = "Test Multiconfig Parsing"
|
||||||
|
LICENSE = "MIT"
|
||||||
|
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
|
||||||
|
|
||||||
|
INHIBIT_DEFAULT_DEPS = "1"
|
||||||
|
|
||||||
|
do_showvar() {
|
||||||
|
bbplain "MCTESTVAR=${MCTESTVAR}"
|
||||||
|
}
|
||||||
|
addtask do_showvar
|
||||||
|
|
||||||
@@ -193,13 +193,20 @@ to ensure accurate results.")
|
|||||||
self.logger.debug("Adding path '%s' to be cleaned up when test is over" % path)
|
self.logger.debug("Adding path '%s' to be cleaned up when test is over" % path)
|
||||||
self._track_for_cleanup.append(path)
|
self._track_for_cleanup.append(path)
|
||||||
|
|
||||||
def write_config(self, data):
|
def write_config(self, data, multiconfig=None):
|
||||||
"""Write to <builddir>/conf/selftest.inc"""
|
"""Write to config file"""
|
||||||
|
if multiconfig:
|
||||||
|
multiconfigdir = "%s/conf/multiconfig" % self.builddir
|
||||||
|
os.makedirs(multiconfigdir, exist_ok=True)
|
||||||
|
dest_path = '%s/%s.conf' % (multiconfigdir, multiconfig)
|
||||||
|
self.track_for_cleanup(dest_path)
|
||||||
|
else:
|
||||||
|
dest_path = self.testinc_path
|
||||||
|
|
||||||
self.logger.debug("Writing to: %s\n%s\n" % (self.testinc_path, data))
|
self.logger.debug("Writing to: %s\n%s\n" % (dest_path, data))
|
||||||
ftools.write_file(self.testinc_path, data)
|
ftools.write_file(dest_path, data)
|
||||||
|
|
||||||
if self.tc.custommachine and 'MACHINE' in data:
|
if not multiconfig and self.tc.custommachine and 'MACHINE' in data:
|
||||||
machine = get_bb_var('MACHINE')
|
machine = get_bb_var('MACHINE')
|
||||||
self.logger.warning('MACHINE overridden: %s' % machine)
|
self.logger.warning('MACHINE overridden: %s' % machine)
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import textwrap
|
||||||
from oeqa.selftest.case import OESelftestTestCase
|
from oeqa.selftest.case import OESelftestTestCase
|
||||||
from oeqa.utils.commands import bitbake
|
from oeqa.utils.commands import bitbake
|
||||||
import oeqa.utils.ftools as ftools
|
|
||||||
|
|
||||||
class MultiConfig(OESelftestTestCase):
|
class MultiConfig(OESelftestTestCase):
|
||||||
|
|
||||||
@@ -28,20 +28,45 @@ DISTRO = "poky"
|
|||||||
TCLIBC = "musl"
|
TCLIBC = "musl"
|
||||||
TMPDIR = "${TOPDIR}/tmp-mc-musl"
|
TMPDIR = "${TOPDIR}/tmp-mc-musl"
|
||||||
"""
|
"""
|
||||||
|
self.write_config(muslconfig, 'musl')
|
||||||
|
|
||||||
tinyconfig = """
|
tinyconfig = """
|
||||||
MACHINE = "qemux86"
|
MACHINE = "qemux86"
|
||||||
DISTRO = "poky-tiny"
|
DISTRO = "poky-tiny"
|
||||||
TMPDIR = "${TOPDIR}/tmp-mc-tiny"
|
TMPDIR = "${TOPDIR}/tmp-mc-tiny"
|
||||||
"""
|
"""
|
||||||
|
self.write_config(tinyconfig, '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
|
# Build a core-image-minimal
|
||||||
bitbake('core-image-full-cmdline')
|
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())
|
||||||
|
|||||||
Reference in New Issue
Block a user