[Buildroot] [git commit] support/testing: check if the defconfig provided for testing is valid
Thomas Petazzoni
thomas.petazzoni at bootlin.com
Mon Apr 6 20:16:36 UTC 2020
commit: https://git.buildroot.net/buildroot/commit/?id=50b747f212be2c9c0f7cf10c674ed488d042715c
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master
Currently, the build continue even if some symbols disapear from
the generated dot config file (.config).
This patch add a new check in order to stop the test if one
of the provided symbol is missing. This must be treated as error.
For example, if a symbol disapear due to new dependency constraints.
Inspired by is_toolchain_usable() function from genrandconfig:
https://git.busybox.net/buildroot/tree/utils/genrandconfig?h=2020.02#n164
Signed-off-by: Romain Naour <romain.naour at gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
---
support/testing/infra/builder.py | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/support/testing/infra/builder.py b/support/testing/infra/builder.py
index 88f01d15c0..922a707220 100644
--- a/support/testing/infra/builder.py
+++ b/support/testing/infra/builder.py
@@ -12,6 +12,23 @@ class Builder(object):
self.builddir = builddir
self.logfile = infra.open_log_file(builddir, "build", logtofile)
+ def is_defconfig_valid(self, configfile, defconfig):
+ """Check if the .config is contains all lines present in the defconfig."""
+ with open(configfile) as configf:
+ configlines = configf.readlines()
+
+ defconfiglines = defconfig.split("\n")
+
+ # Check that all the defconfig lines are still present
+ for defconfigline in defconfiglines:
+ if defconfigline + "\n" not in configlines:
+ self.logfile.write("WARN: defconfig can't be used\n")
+ self.logfile.write(" Missing: %s\n" % defconfigline.strip())
+ self.logfile.flush()
+ return False
+
+ return True
+
def configure(self, make_extra_opts=[], make_extra_env={}):
"""Configure the build.
@@ -47,6 +64,9 @@ class Builder(object):
if ret != 0:
raise SystemError("Cannot olddefconfig")
+ if not self.is_defconfig_valid(config_file, self.config):
+ raise SystemError("The defconfig is not valid")
+
def build(self, make_extra_opts=[], make_extra_env={}):
"""Perform the build.
More information about the buildroot
mailing list