mirror of
https://github.com/smaeul/u-boot.git
synced 2025-10-14 12:56:00 +01:00
moveconfig: Fix code relying on now-stripped newline characters
Commit 37f815cad07d ("moveconfig: Use a function to read files") adds a helper function that can read a file as lines, but strips the newline characters. This change broke parts of moveconfig code that relied on their existence, resulting in a few issues: Configs that are defined as empty aren't removed from header files (e.g. "#define CONFIG_REMAKE_ELF"). Make regex patterns use '\b' to match word boundaries instead of '\W' (which matched the newlines) so these lines still match and get removed. All changes in defconfig are considered removed by savedefconfig even if they weren't, and line continuations in the headers aren't recognized and removed properly, because their checks explicitly look for a newline character. Remove the character from both comparisons. The printed diff of header files is wrongly formatted and raises an IndexError if a blank line was removed. Let print() print the new lines, and use size-independent ways to check strings to fix the diff output. Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
e267665a74
commit
6c928c63a1
@ -205,12 +205,12 @@ def show_diff(alines, blines, file_path, color_enabled):
|
|||||||
tofile=os.path.join('b', file_path))
|
tofile=os.path.join('b', file_path))
|
||||||
|
|
||||||
for line in diff:
|
for line in diff:
|
||||||
if line[0] == '-' and line[1] != '-':
|
if line.startswith('-') and not line.startswith('--'):
|
||||||
print(color_text(color_enabled, COLOR_RED, line), end=' ')
|
print(color_text(color_enabled, COLOR_RED, line))
|
||||||
elif line[0] == '+' and line[1] != '+':
|
elif line.startswith('+') and not line.startswith('++'):
|
||||||
print(color_text(color_enabled, COLOR_GREEN, line), end=' ')
|
print(color_text(color_enabled, COLOR_GREEN, line))
|
||||||
else:
|
else:
|
||||||
print(line, end=' ')
|
print(line)
|
||||||
|
|
||||||
def extend_matched_lines(lines, matched, pre_patterns, post_patterns,
|
def extend_matched_lines(lines, matched, pre_patterns, post_patterns,
|
||||||
extend_pre, extend_post):
|
extend_pre, extend_post):
|
||||||
@ -368,7 +368,7 @@ def cleanup_one_header(header_path, patterns, args):
|
|||||||
|
|
||||||
matched = []
|
matched = []
|
||||||
for i, line in enumerate(lines):
|
for i, line in enumerate(lines):
|
||||||
if i - 1 in matched and lines[i - 1][-2:] == '\\\n':
|
if i - 1 in matched and lines[i - 1].endswith('\\'):
|
||||||
matched.append(i)
|
matched.append(i)
|
||||||
continue
|
continue
|
||||||
for pattern in patterns:
|
for pattern in patterns:
|
||||||
@ -380,9 +380,9 @@ def cleanup_one_header(header_path, patterns, args):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# remove empty #ifdef ... #endif, successive blank lines
|
# remove empty #ifdef ... #endif, successive blank lines
|
||||||
pattern_if = re.compile(r'#\s*if(def|ndef)?\W') # #if, #ifdef, #ifndef
|
pattern_if = re.compile(r'#\s*if(def|ndef)?\b') # #if, #ifdef, #ifndef
|
||||||
pattern_elif = re.compile(r'#\s*el(if|se)\W') # #elif, #else
|
pattern_elif = re.compile(r'#\s*el(if|se)\b') # #elif, #else
|
||||||
pattern_endif = re.compile(r'#\s*endif\W') # #endif
|
pattern_endif = re.compile(r'#\s*endif\b') # #endif
|
||||||
pattern_blank = re.compile(r'^\s*$') # empty line
|
pattern_blank = re.compile(r'^\s*$') # empty line
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
@ -424,8 +424,8 @@ def cleanup_headers(configs, args):
|
|||||||
|
|
||||||
patterns = []
|
patterns = []
|
||||||
for config in configs:
|
for config in configs:
|
||||||
patterns.append(re.compile(r'#\s*define\s+%s\W' % config))
|
patterns.append(re.compile(r'#\s*define\s+%s\b' % config))
|
||||||
patterns.append(re.compile(r'#\s*undef\s+%s\W' % config))
|
patterns.append(re.compile(r'#\s*undef\s+%s\b' % config))
|
||||||
|
|
||||||
for dir in 'include', 'arch', 'board':
|
for dir in 'include', 'arch', 'board':
|
||||||
for (dirpath, dirnames, filenames) in os.walk(dir):
|
for (dirpath, dirnames, filenames) in os.walk(dir):
|
||||||
@ -451,7 +451,7 @@ def cleanup_one_extra_option(defconfig_path, configs, args):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
start = 'CONFIG_SYS_EXTRA_OPTIONS="'
|
start = 'CONFIG_SYS_EXTRA_OPTIONS="'
|
||||||
end = '"\n'
|
end = '"'
|
||||||
|
|
||||||
lines = read_file(defconfig_path)
|
lines = read_file(defconfig_path)
|
||||||
|
|
||||||
@ -812,7 +812,7 @@ class KconfigParser:
|
|||||||
for (action, value) in self.results:
|
for (action, value) in self.results:
|
||||||
if action != ACTION_MOVE:
|
if action != ACTION_MOVE:
|
||||||
continue
|
continue
|
||||||
if not value + '\n' in defconfig_lines:
|
if not value in defconfig_lines:
|
||||||
log += color_text(self.args.color, COLOR_YELLOW,
|
log += color_text(self.args.color, COLOR_YELLOW,
|
||||||
"'%s' was removed by savedefconfig.\n" %
|
"'%s' was removed by savedefconfig.\n" %
|
||||||
value)
|
value)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user