diff options
author | Simon Glass <sjg@chromium.org> | 2024-07-18 10:11:23 +0100 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2024-07-29 08:42:18 -0600 |
commit | 7ff80ece2159c1e73f11e1e1b9484e00d1dfeb76 (patch) | |
tree | 0e7a3a8025cb382a8a53045eae635376b8c9c847 /tools/qconfig.py | |
parent | 9366640449ac3ef702b624e2f6f7604754a9082b (diff) |
qconfig: Allow searching for CONFIG values
Add basic support for searching for matching of non-matching values.
Signed-off-by: Simon Glass <sjg@chromium.org>
Fixes: https://source.denx.de/u-boot/custodians/u-boot-dm/-/issues/20
Diffstat (limited to 'tools/qconfig.py')
-rwxr-xr-x | tools/qconfig.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/tools/qconfig.py b/tools/qconfig.py index 408807931ff..71fe6fff29c 100755 --- a/tools/qconfig.py +++ b/tools/qconfig.py @@ -1079,7 +1079,7 @@ def do_imply_config(config_list, add_imply, imply_flags, skip_added, for linenum in sorted(linenums, reverse=True): add_imply_rule(config[CONFIG_LEN:], fname, linenum) -def defconfig_matches(configs, re_match): +def defconfig_matches(configs, re_match, re_val): """Check if any CONFIG option matches a regex The match must be complete, i.e. from the start to end of the CONFIG option. @@ -1089,13 +1089,15 @@ def defconfig_matches(configs, re_match): key: CONFIG option value: Value of option re_match (re.Pattern): Match to check + re_val (re.Pattern): Regular expression to check against value (or None) Returns: bool: True if any CONFIG matches the regex """ - for cfg in configs: + for cfg, val in configs.items(): if re_match.fullmatch(cfg): - return True + if not re_val or re_val.fullmatch(val): + return True return False def do_find_config(config_list): @@ -1123,6 +1125,11 @@ def do_find_config(config_list): if cfg[0] == '~': want = False cfg = cfg[1:] + val = None + re_val = None + if '=' in cfg: + cfg, val = cfg.split('=', maxsplit=1) + re_val = re.compile(val) # Search everything that is still in the running. If it has a config # that we want, or doesn't have one that we don't, add it into the @@ -1131,7 +1138,7 @@ def do_find_config(config_list): out = set() re_match = re.compile(cfg) for defc in in_list: - has_cfg = defconfig_matches(config_db[defc], re_match) + has_cfg = defconfig_matches(config_db[defc], re_match, re_val) if has_cfg == want: out.add(defc) print(f'{len(out)} matches') |