support/tests: allow top-level parallel builds
Running tests with top-level parallel builds can speed up running some tests, expecially those that have a lot of packages like the systemd init tests. Trigger TLPB when the configuration enables per-package directories. We're using the jlevel argument, which normally is used for BR2_JLEVEL as the value for calling make -j<N> at the top-level. In fact, BR2_JLEVEL is "unused" when using TLPB, because the top-level make acts as the job server that distributes tokens to sub-makes (except for the few build systems like waf or scons that don't support this), so it's really the top-level make -j<N> that determines the level of parallelism, and BR2_JLEVEL doesn't really have an effect. Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Thomas: extend explanation a bit] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
parent
de03312db0
commit
2c41fb6225
@ -52,7 +52,7 @@ class BRConfigTest(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.show_msg("Starting")
|
||||
self.b = Builder(self.config, self.builddir, self.logtofile)
|
||||
self.b = Builder(self.config, self.builddir, self.logtofile, self.jlevel)
|
||||
|
||||
if not self.keepbuilds:
|
||||
self.b.delete()
|
||||
|
@ -6,11 +6,12 @@ import infra
|
||||
|
||||
|
||||
class Builder(object):
|
||||
def __init__(self, config, builddir, logtofile):
|
||||
def __init__(self, config, builddir, logtofile, jlevel=None):
|
||||
self.config = '\n'.join([line.lstrip() for line in
|
||||
config.splitlines()]) + '\n'
|
||||
self.builddir = builddir
|
||||
self.logfile = infra.open_log_file(builddir, "build", logtofile)
|
||||
self.jlevel = jlevel
|
||||
|
||||
def is_defconfig_valid(self, configfile, defconfig):
|
||||
"""Check if the .config is contains all lines present in the defconfig."""
|
||||
@ -87,6 +88,8 @@ class Builder(object):
|
||||
env.update(make_extra_env)
|
||||
|
||||
cmd = ["make", "-C", self.builddir]
|
||||
if "BR2_PER_PACKAGE_DIRECTORIES=y" in self.config.splitlines() and self.jlevel:
|
||||
cmd.append(f"-j{self.jlevel}")
|
||||
cmd += make_extra_opts
|
||||
|
||||
ret = subprocess.call(cmd, stdout=self.logfile, stderr=self.logfile,
|
||||
|
Loading…
Reference in New Issue
Block a user