diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2020-09-18 10:04:19 +0200 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2020-09-18 10:04:19 +0200 |
commit | 1ed7a66d836977ae9689f59b6dc5fca0f4637587 (patch) | |
tree | 07495bf2076313240931fc831841fded032eec70 | |
parent | 1b79f8510362da33c09f6e2c18740dce2cd24e5c (diff) |
explore-kconfig: explore neighbourhood of working random configurations
This is useful for projects with many non-working random configurations
-rwxr-xr-x | bin/explore-kconfig.py | 11 | ||||
-rw-r--r-- | lib/kconfig.py | 3 |
2 files changed, 13 insertions, 1 deletions
diff --git a/bin/explore-kconfig.py b/bin/explore-kconfig.py index e59db17..7602076 100755 --- a/bin/explore-kconfig.py +++ b/bin/explore-kconfig.py @@ -45,6 +45,11 @@ def main(): help="Explore a number of random configurations (make randconfig)", ) parser.add_argument( + "--with-neighbourhood", + action="store_true", + help="Explore neighbourhood of successful random configurations", + ) + parser.add_argument( "--clean-command", type=str, help="Clean command", default="make clean" ) parser.add_argument( @@ -90,7 +95,11 @@ def main(): if args.random: for i in range(args.random): logging.info(f"Running randconfig {i+1} of {args.random}") - kconf.run_randconfig() + status = kconf.run_randconfig() + if status["success"]: + config_filename = status["config_path"] + logging.info(f"Exploring neighbourhood of {config_filename}") + kconf.run_exploration_from_file(config_filename) if args.neighbourhood: if os.path.isfile(args.neighbourhood): diff --git a/lib/kconfig.py b/lib/kconfig.py index 52615e3..a85586f 100644 --- a/lib/kconfig.py +++ b/lib/kconfig.py @@ -2,6 +2,7 @@ import kconfiglib import logging +import os import re import shutil import subprocess @@ -146,6 +147,8 @@ class KConfig: self.attribute_command, ] ) + success = os.path.exists(experiment.attributes.path) + return {"success": success, "config_path": experiment.config.path} def config_is_functional(self, kconf): for choice in kconf.choices: |