From ea6bb507b1d3841be052525936121f7e88c43fbd Mon Sep 17 00:00:00 2001 From: James Hilliard Date: Mon, 19 Aug 2024 18:03:25 -0600 Subject: [PATCH] utils/genrandconfig: allow overriding KCONFIG_PROBABILITY Tweaking this variable should allow us to get better coverage of packages with larger dependency trees. Signed-off-by: James Hilliard Signed-off-by: Thomas Petazzoni --- utils/genrandconfig | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/utils/genrandconfig b/utils/genrandconfig index ae1f0f85de..282a9ebdea 100755 --- a/utils/genrandconfig +++ b/utils/genrandconfig @@ -542,7 +542,7 @@ async def gen_config(args): proc = await asyncio.create_subprocess_exec( "make", "O=%s" % args.outputdir, "-C", args.buildrootdir, "KCONFIG_SEED=0x%s" % hexlify(os.urandom(4)).decode("ascii").upper(), - "KCONFIG_PROBABILITY=%d" % randint(1, 20), + "KCONFIG_PROBABILITY=%d" % args.probability, "randconfig", stdout=asyncio.subprocess.DEVNULL, stderr=asyncio.subprocess.DEVNULL) @@ -603,6 +603,21 @@ async def gen_config(args): if __name__ == '__main__': import argparse + + class Range(argparse.Action): + def __init__(self, minimum=None, maximum=None, *args, **kwargs): + self.min = minimum + self.max = maximum + kwargs["metavar"] = "[%d-%d]" % (self.min, self.max) + super(Range, self).__init__(*args, **kwargs) + + def __call__(self, parser, namespace, value, option_string=None): + if not (self.min <= value <= self.max): + msg = 'invalid choice: %r (choose from [%d-%d])' % \ + (value, self.min, self.max) + raise argparse.ArgumentError(self, msg) + setattr(namespace, self.dest, value) + parser = argparse.ArgumentParser(description="Generate a random configuration") parser.add_argument("--outputdir", "-o", help="Output directory (relative to current directory)", @@ -610,6 +625,10 @@ if __name__ == '__main__': parser.add_argument("--buildrootdir", "-b", help="Buildroot directory (relative to current directory)", type=str, default='.') + parser.add_argument("--probability", "-p", + help="Override the KCONFIG_PROBABILITY value", + type=int, action=Range, minimum=0, maximum=100, + default=randint(1, 20)) parser.add_argument("--toolchains-csv", help="Legacy, unused", type=str) parser.add_argument("--no-toolchains-csv", help="Legacy, unused", type=bool)