diff options
Diffstat (limited to 'tools/moveconfig.py')
| -rwxr-xr-x | tools/moveconfig.py | 74 | 
1 files changed, 74 insertions, 0 deletions
| diff --git a/tools/moveconfig.py b/tools/moveconfig.py index d0e4b2d2f35..aaa8e9615cf 100755 --- a/tools/moveconfig.py +++ b/tools/moveconfig.py @@ -494,6 +494,79 @@ def cleanup_headers(configs, options):                      cleanup_one_header(os.path.join(dirpath, filename),                                         patterns, options) +def cleanup_one_extra_option(defconfig_path, configs, options): +    """Delete config defines in CONFIG_SYS_EXTRA_OPTIONS in one defconfig file. + +    Arguments: +      defconfig_path: path to the cleaned defconfig file. +      configs: A list of CONFIGs to remove. +      options: option flags. +    """ + +    start = 'CONFIG_SYS_EXTRA_OPTIONS="' +    end = '"\n' + +    with open(defconfig_path) as f: +        lines = f.readlines() + +    for i, line in enumerate(lines): +        if line.startswith(start) and line.endswith(end): +            break +    else: +        # CONFIG_SYS_EXTRA_OPTIONS was not found in this defconfig +        return + +    old_tokens = line[len(start):-len(end)].split(',') +    new_tokens = [] + +    for token in old_tokens: +        pos = token.find('=') +        if not (token[:pos] if pos >= 0 else token) in configs: +            new_tokens.append(token) + +    if new_tokens == old_tokens: +        return + +    tolines = copy.copy(lines) + +    if new_tokens: +        tolines[i] = start + ','.join(new_tokens) + end +    else: +        tolines.pop(i) + +    show_diff(lines, tolines, defconfig_path, options.color) + +    if options.dry_run: +        return + +    with open(defconfig_path, 'w') as f: +        for line in tolines: +            f.write(line) + +def cleanup_extra_options(configs, options): +    """Delete config defines in CONFIG_SYS_EXTRA_OPTIONS in defconfig files. + +    Arguments: +      configs: A list of CONFIGs to remove. +      options: option flags. +    """ +    while True: +        choice = raw_input('Clean up CONFIG_SYS_EXTRA_OPTIONS? [y/n]: ').lower() +        print choice +        if choice == 'y' or choice == 'n': +            break + +    if choice == 'n': +        return + +    configs = [ config[len('CONFIG_'):] for config in configs ] + +    defconfigs = get_all_defconfigs() + +    for defconfig in defconfigs: +        cleanup_one_extra_option(os.path.join('configs', defconfig), configs, +                                 options) +  ### classes ###  class Progress: @@ -1160,6 +1233,7 @@ def main():      if configs:          cleanup_headers(configs, options) +        cleanup_extra_options(configs, options)  if __name__ == '__main__':      main() | 
