Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Unified Diff: tools/gn/bin/gyp_flag_compare.py

Issue 533413002: Group flag comparison output by file (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/gn/bin/gyp_flag_compare.py
diff --git a/tools/gn/bin/gyp_flag_compare.py b/tools/gn/bin/gyp_flag_compare.py
index f2ce3c873a688c0f7b94c9e74cbb7c33cafcffa8..f53240fa05dfbd878773b53d9735d8d6190dcb7f 100755
--- a/tools/gn/bin/gyp_flag_compare.py
+++ b/tools/gn/bin/gyp_flag_compare.py
@@ -17,6 +17,8 @@ def FindAndRemoveArgWithValue(command_line, argname):
Modifies |command_line| in place.
"""
+ if argname not in command_line:
+ return ''
location = command_line.index(argname)
value = command_line[location + 1]
command_line[location:location + 2] = []
@@ -58,7 +60,12 @@ def GetFlags(lines):
include_dirs = [x for x in command_line if x.startswith('-I')]
dash_f = [x for x in command_line if x.startswith('-f')]
warnings = [x for x in command_line if x.startswith('-W')]
- cc_file = [x for x in command_line if x.endswith('.cc') or x.endswith('.c')]
+ cc_file = [x for x in command_line if x.endswith('.cc') or
+ x.endswith('.c') or
+ x.endswith('.cpp')]
+ if len(cc_file) != 1:
+ print 'Skipping %s' % command_line
+ continue
assert len(cc_file) == 1
others = [x for x in command_line if x not in defines and \
x not in include_dirs and \
@@ -78,21 +85,20 @@ def GetFlags(lines):
def CompareLists(gyp, gn, name, dont_care=None):
- """Output any differences between to lists, ignoring anything in
- |dont_care|."""
+ """Return a report of any differences between two lists, ignoring anything
+ in |dont_care|."""
if not dont_care:
dont_care = []
+ output = ''
if gyp[name] != gn[name]:
- print ' %s differ:' % name
+ output += ' %s differ:\n' % name
gyp_set = set(gyp[name]) - set(dont_care)
gn_set = set(gn[name]) - set(dont_care)
- print ' In gyp, but not in GN:\n %s' % '\n '.join(
- sorted(gyp_set - gn_set))
- print ' In GN, but not in gyp:\n %s' % '\n '.join(
- sorted(gn_set - gyp_set))
- print
- return True
- return False
+ output += ' In gyp, but not in GN:\n %s' % '\n '.join(
+ sorted(gyp_set - gn_set)) + '\n'
+ output += ' In GN, but not in gyp:\n %s' % '\n '.join(
+ sorted(gn_set - gyp_set)) + '\n\n'
+ return output
def main():
@@ -107,32 +113,38 @@ def main():
all_gn_flags = GetFlags(gn)
gyp_files = set(all_gyp_flags.keys())
gn_files = set(all_gn_flags.keys())
- differences = False
- if gyp_files != gn_files:
+ different_source_list = gyp_files != gn_files
+ if different_source_list:
print 'Different set of sources files:'
print ' In gyp, not in GN:\n %s' % '\n '.join(
sorted(gyp_files - gn_files))
print ' In GN, not in gyp:\n %s' % '\n '.join(
sorted(gn_files - gyp_files))
print '\nNote that flags will only be compared for files in both sets.\n'
- differences |= True
file_list = gyp_files & gn_files
+ files_with_given_differences = {}
for filename in sorted(file_list):
gyp_flags = all_gyp_flags[filename]
gn_flags = all_gn_flags[filename]
- print filename
- differences |= CompareLists(gyp_flags, gn_flags, 'dash_f')
- differences |= CompareLists(gyp_flags, gn_flags, 'defines', dont_care=[
+ differences = CompareLists(gyp_flags, gn_flags, 'dash_f')
+ differences += CompareLists(gyp_flags, gn_flags, 'defines', dont_care=[
'-DENABLE_PRE_SYNC_BACKUP',
'-DENABLE_WEBRTC=1',
'-DUSE_LIBJPEG_TURBO=1',
'-DUSE_PANGO=1',
'-DUSE_SYMBOLIZE',
])
- differences |= CompareLists(gyp_flags, gn_flags, 'include_dirs')
- differences |= CompareLists(gyp_flags, gn_flags, 'warnings')
- differences |= CompareLists(gyp_flags, gn_flags, 'other')
- return 1 if differences else 0
+ differences += CompareLists(gyp_flags, gn_flags, 'include_dirs')
+ differences += CompareLists(gyp_flags, gn_flags, 'warnings')
+ differences += CompareLists(gyp_flags, gn_flags, 'other')
+ if differences:
+ files_with_given_differences.setdefault(differences, []).append(filename)
+
+ for diff, files in files_with_given_differences.iteritems():
+ print '\n'.join(sorted(files))
+ print diff
+
+ return 1 if files_with_given_differences or different_source_list else 0
if __name__ == '__main__':
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698