mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
tools: moveconfig: support CONFIG_SYS_EXTRA_OPTIONS cleaning
We mostly move config options from board header files to Kconfig, but sometimes config defines come from CONFIG_SYS_EXTRA_OPTIONS. Historically, CONFIG_SYS_EXTRA_OPTIONS originates in boards.cfg, which was used as a central database of configuration prior to the Kconfig conversion. Now, we want to migrate to primary entries in Kconfig rather than option list in CONFIG_SYS_EXTRA_OPTIONS, so it should be helpful to have the tool to cleanup CONFIG_SYS_EXTRA_OPTIONS automatically. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
parent
684c306ec4
commit
9ab0296a82
1 changed files with 74 additions and 0 deletions
|
@ -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()
|
||||
|
|
Loading…
Reference in a new issue