From d3080e777fed62c9f3f8008a44772f01e987126b Mon Sep 17 00:00:00 2001 From: Andrew Scheller Date: Wed, 20 Nov 2024 22:41:28 +0000 Subject: [PATCH] Slight tweak to the config-extraction scripts. (#2070) * Slight tweak to the config-extraction scripts. A small logic bug meant they were reporting more false-positive warnings than they should have been. * Small code tidy-up --- tools/extract_build_defines.py | 6 +++++- tools/extract_cmake_configs.py | 6 +++++- tools/extract_configs.py | 8 ++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/tools/extract_build_defines.py b/tools/extract_build_defines.py index bd4dc88b3..bbcad15af 100755 --- a/tools/extract_build_defines.py +++ b/tools/extract_build_defines.py @@ -99,7 +99,7 @@ def ValidateAttrs(config_name, config_attrs, file_path, linenum): _default = config_attrs.get('default', None) if _default is not None: if '/' not in _default: - if (_default.lower() != '0') and (config_attrs['default'].lower() != '1') and ( _default not in all_configs): + if (_default not in ('0', '1')) and (_default not in all_config_names): logger.info('{} at {}:{} has non-integer default value "{}"'.format(config_name, file_path, linenum, config_attrs['default'])) elif _type == 'string': @@ -185,6 +185,10 @@ def ValidateAttrs(config_name, config_attrs, file_path, linenum): all_configs[config_name] = {'attrs': config_attrs, 'filename': os.path.relpath(file_path, scandir), 'line_number': linenum, 'description': config_description} +all_config_names = set() +for all_configs in chips_all_configs.values(): + all_config_names.update(all_configs.keys()) + for applicable, all_configs in chips_all_configs.items(): for config_name, config_obj in all_configs.items(): file_path = os.path.join(scandir, config_obj['filename']) diff --git a/tools/extract_cmake_configs.py b/tools/extract_cmake_configs.py index a782ea8ee..8fdb4504e 100755 --- a/tools/extract_cmake_configs.py +++ b/tools/extract_cmake_configs.py @@ -99,7 +99,7 @@ def ValidateAttrs(config_name, config_attrs, file_path, linenum): _default = config_attrs.get('default', None) if _default is not None: if '/' not in _default: - if (_default.lower() != '0') and (config_attrs['default'].lower() != '1') and (_default not in all_configs): + if (_default not in ('0', '1')) and (_default not in all_config_names): logger.info('{} at {}:{} has non-integer default value "{}"'.format(config_name, file_path, linenum, config_attrs['default'])) elif _type == 'string': @@ -185,6 +185,10 @@ def ValidateAttrs(config_name, config_attrs, file_path, linenum): all_configs[config_name] = {'attrs': config_attrs, 'filename': os.path.relpath(file_path, scandir), 'line_number': linenum, 'description': config_description} +all_config_names = set() +for all_configs in chips_all_configs.values(): + all_config_names.update(all_configs.keys()) + for applicable, all_configs in chips_all_configs.items(): for config_name, config_obj in all_configs.items(): file_path = os.path.join(scandir, config_obj['filename']) diff --git a/tools/extract_configs.py b/tools/extract_configs.py index 35ebe8438..4689f163e 100755 --- a/tools/extract_configs.py +++ b/tools/extract_configs.py @@ -105,7 +105,7 @@ def ValidateAttrs(config_name, config_attrs, file_path, linenum): _default = config_attrs.get('default', None) if _default is not None: if '/' not in _default: - if (_default.lower() != '0') and (config_attrs['default'].lower() != '1') and ( _default not in all_configs): + if (_default not in ('0', '1')) and (_default not in all_config_names): logger.info('{} at {}:{} has non-integer default value "{}"'.format(config_name, file_path, linenum, config_attrs['default'])) elif _type == 'enum': @@ -217,11 +217,15 @@ def ValidateAttrs(config_name, config_attrs, file_path, linenum): all_defines[name][value] = set() all_defines[name][value] = (file_path, linenum) +all_config_names = set() +for all_configs in chips_all_configs.values(): + all_config_names.update(all_configs.keys()) + # Check for defines with missing PICO_CONFIG entries chips_resolved_defines = defaultdict(dict) for applicable, all_defines in chips_all_defines.items(): for d in all_defines: - if d not in all_configs and d.startswith("PICO_"): + if d not in all_config_names and d.startswith("PICO_"): logger.warning("Potential unmarked PICO define {}".format(d)) resolved_defines = chips_resolved_defines[applicable] # resolve "nested defines" - this allows e.g. USB_DPRAM_MAX to resolve to USB_DPRAM_SIZE which is set to 4096 (which then matches the relevant PICO_CONFIG entry)