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

Side by Side Diff: android_webview/buildbot/deps_whitelist.py

Issue 324813006: Add known_incompatible.py items to the blacklist in deps_whitelist.py (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove leading dot. Created 6 years, 6 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 unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 # 5 #
6 """Logic to generate lists of DEPS used by various parts of 6 """Logic to generate lists of DEPS used by various parts of
7 the android_webview continuous integration (buildbot) infrastructure. 7 the android_webview continuous integration (buildbot) infrastructure.
8 8
9 Note: The root Chromium project (which is not explicitly listed here) 9 Note: The root Chromium project (which is not explicitly listed here)
10 has a couple of third_party libraries checked in directly into it. This means 10 has a couple of third_party libraries checked in directly into it. This means
11 that the list of third parties present in this file is not a comprehensive 11 that the list of third parties present in this file is not a comprehensive
12 list of third party android_webview dependencies. 12 list of third party android_webview dependencies.
13 """ 13 """
14 14
15 import argparse 15 import argparse
16 import json 16 import json
17 import logging 17 import logging
18 import os 18 import os
19 import sys 19 import sys
20 20
21 # Add android_webview/tools to path to get at known_issues.
22 sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'tools'))
23 import known_issues
24
21 25
22 class DepsWhitelist(object): 26 class DepsWhitelist(object):
23 def __init__(self): 27 def __init__(self):
24 # If a new DEPS entry is needed for the AOSP bot to compile please add it 28 # If a new DEPS entry is needed for the AOSP bot to compile please add it
25 # here first. 29 # here first.
26 # This is a staging area for deps that are accepted by the android_webview 30 # This is a staging area for deps that are accepted by the android_webview
27 # team and are in the process of having the required branches being created 31 # team and are in the process of having the required branches being created
28 # in the Android tree. 32 # in the Android tree.
29 self._compile_but_not_snapshot_dependencies = [ 33 self._compile_but_not_snapshot_dependencies = [
30 ] 34 ]
(...skipping 25 matching lines...) Expand all
56 'third_party/skia', 60 'third_party/skia',
57 'third_party/smhasher/src', 61 'third_party/smhasher/src',
58 'third_party/usrsctp/usrsctplib', 62 'third_party/usrsctp/usrsctplib',
59 'third_party/webrtc', 63 'third_party/webrtc',
60 'third_party/yasm/source/patched-yasm', 64 'third_party/yasm/source/patched-yasm',
61 'tools/grit', 65 'tools/grit',
62 'tools/gyp', 66 'tools/gyp',
63 'v8', 67 'v8',
64 ] 68 ]
65 69
70 self._uneeded_for_building_android = [
mkosiba (inactive) 2014/06/11 09:38:38 maybe _prune_from_rsync_build ? And add a comment
hjd 2014/06/11 09:59:25 Done.
71 'third_party/WebKit/LayoutTests',
72 ]
73
66 # Dependencies required to build android_webview. 74 # Dependencies required to build android_webview.
67 self._compile_dependencies = (self._snapshot_into_android_dependencies + 75 self._compile_dependencies = (self._snapshot_into_android_dependencies +
68 self._compile_but_not_snapshot_dependencies) 76 self._compile_but_not_snapshot_dependencies)
69 77
70 # Dependencies required to run android_webview tests but not required to 78 # Dependencies required to run android_webview tests but not required to
71 # compile. 79 # compile.
72 self._test_data_dependencies = [ 80 self._test_data_dependencies = [
73 'chrome/test/data/perf/third_party/octane', 81 'chrome/test/data/perf/third_party/octane',
74 ] 82 ]
75 83
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 'Var': var.Lookup, 125 'Var': var.Lookup,
118 'deps_os': {}, 126 'deps_os': {},
119 } 127 }
120 execfile(deps_file_path, global_scope, local_scope) 128 execfile(deps_file_path, global_scope, local_scope)
121 deps = local_scope.get('deps', {}) 129 deps = local_scope.get('deps', {})
122 deps_os = local_scope.get('deps_os', {}) 130 deps_os = local_scope.get('deps_os', {})
123 for os_specific_deps in deps_os.itervalues(): 131 for os_specific_deps in deps_os.itervalues():
124 deps.update(os_specific_deps) 132 deps.update(os_specific_deps)
125 return deps.keys() 133 return deps.keys()
126 134
135 def _get_known_issues(self):
136 issues = []
137 for root, paths in known_issues.KNOWN_INCOMPATIBLE.items():
138 for path in paths:
139 # The leading dot seems to confuse rsync.
mkosiba (inactive) 2014/06/11 09:38:38 maybe use os.path.normpath instead of a special ca
hjd 2014/06/11 09:59:25 Done.
140 if root == '.':
141 issues.append(path)
142 else:
143 issues.append(os.path.join(root, path))
144 return issues
145
127 def _make_gclient_blacklist(self, deps_file_path, whitelisted_deps): 146 def _make_gclient_blacklist(self, deps_file_path, whitelisted_deps):
128 """Calculates the list of deps that need to be excluded from the deps_file 147 """Calculates the list of deps that need to be excluded from the deps_file
129 so that the only deps left are the one in the whitelist.""" 148 so that the only deps left are the one in the whitelist."""
130 all_deps = self._read_deps_file(deps_file_path) 149 all_deps = self._read_deps_file(deps_file_path)
131 # The list of deps read from the DEPS file are prefixed with the source 150 # The list of deps read from the DEPS file are prefixed with the source
132 # tree root, which is 'src' for Chromium. 151 # tree root, which is 'src' for Chromium.
133 def prepend_root(path): 152 def prepend_root(path):
134 return os.path.join('src', path) 153 return os.path.join('src', path)
135 whitelisted_deps = map(prepend_root, whitelisted_deps) 154 whitelisted_deps = map(prepend_root, whitelisted_deps)
136 deps_blacklist = set(all_deps).difference(set(whitelisted_deps)) 155 deps_blacklist = set(all_deps).difference(set(whitelisted_deps))
137 return dict(map(lambda(x): (x, None), deps_blacklist)) 156 return dict(map(lambda(x): (x, None), deps_blacklist))
138 157
158 def _make_blacklist(self, deps_file_path, whitelisted_deps):
159 """Calculates the list of paths we should exclude """
160 all_deps = self._read_deps_file(deps_file_path)
161 def remove_src_prefix(path):
162 return path.replace('src/', '', 1)
163 all_deps = map(remove_src_prefix, all_deps)
164 # Ignore all deps except those whitelisted.
165 blacklist = set(all_deps).difference(whitelisted_deps)
166 # Ignore the 'known issues'. Typically these are the licence incompatible
167 # things checked directly into Chromium.
168 blacklist = blacklist.union(self._get_known_issues())
169 # Ignore any other non-deps, non-licence paths we don't like.
170 blacklist = blacklist.union(self._uneeded_for_building_android)
171 return list(blacklist)
172
139 def get_deps_for_android_build(self, deps_file_path): 173 def get_deps_for_android_build(self, deps_file_path):
140 """This is used to calculate the custom_deps list for the Android bot. 174 """This is used to calculate the custom_deps list for the Android bot.
141 """ 175 """
142 if not deps_file_path: 176 if not deps_file_path:
143 raise Exception('You need to specify a DEPS file path.') 177 raise Exception('You need to specify a DEPS file path.')
144 return self._make_gclient_blacklist(deps_file_path, 178 return self._make_gclient_blacklist(deps_file_path,
145 self._compile_dependencies) 179 self._compile_dependencies)
146 180
147 def get_deps_for_android_build_and_test(self, deps_file_path): 181 def get_deps_for_android_build_and_test(self, deps_file_path):
148 """This is used to calculate the custom_deps list for the Android perf bot. 182 """This is used to calculate the custom_deps list for the Android perf bot.
149 """ 183 """
150 if not deps_file_path: 184 if not deps_file_path:
151 raise Exception('You need to specify a DEPS file path.') 185 raise Exception('You need to specify a DEPS file path.')
152 return self._make_gclient_blacklist(deps_file_path, 186 return self._make_gclient_blacklist(deps_file_path,
153 self._compile_dependencies + 187 self._compile_dependencies +
154 self._test_data_dependencies) 188 self._test_data_dependencies)
155 189
190 def get_blacklist_for_android_build(self, deps_file_path):
191 """Calculates the list of paths we should exclude when building Android
192 either because of license compatibility or because they are large and
193 uneeded.
194 """
195 if not deps_file_path:
196 raise Exception('You need to specify a DEPS file path.')
197 return self._make_blacklist(deps_file_path, self._compile_dependencies)
198
156 def get_deps_for_android_merge(self, _): 199 def get_deps_for_android_merge(self, _):
157 """Calculates the list of deps that need to be merged into the Android tree 200 """Calculates the list of deps that need to be merged into the Android tree
158 in order to build the C++ and Java android_webview code.""" 201 in order to build the C++ and Java android_webview code."""
159 return self._snapshot_into_android_dependencies 202 return self._snapshot_into_android_dependencies
160 203
161 def get_deps_for_license_check(self, _): 204 def get_deps_for_license_check(self, _):
162 """Calculates the list of deps that need to be checked for Android license 205 """Calculates the list of deps that need to be checked for Android license
163 compatibility""" 206 compatibility"""
164 return self._compile_dependencies 207 return self._compile_dependencies
165 208
209
166 def execute_method(self, method_name, deps_file_path): 210 def execute_method(self, method_name, deps_file_path):
167 methods = { 211 methods = {
168 'android_build': self.get_deps_for_android_build, 212 'android_build': self.get_deps_for_android_build,
169 'android_build_and_test': 213 'android_build_and_test':
170 self.get_deps_for_android_build_and_test, 214 self.get_deps_for_android_build_and_test,
171 'android_merge': self.get_deps_for_android_merge, 215 'android_merge': self.get_deps_for_android_merge,
172 'license_check': self.get_deps_for_license_check 216 'license_check': self.get_deps_for_license_check,
217 'android_build_blacklist': self.get_blacklist_for_android_build,
mkosiba (inactive) 2014/06/11 09:38:38 maybe android_rsync_build ?
hjd 2014/06/11 09:59:25 Done.
173 } 218 }
174 if not method_name in methods: 219 if not method_name in methods:
175 raise Exception('Method name %s is not valid. Valid choices are %s' % 220 raise Exception('Method name %s is not valid. Valid choices are %s' %
176 (method_name, methods.keys())) 221 (method_name, methods.keys()))
177 return methods[method_name](deps_file_path) 222 return methods[method_name](deps_file_path)
178 223
179 def main(): 224 def main():
180 parser = argparse.ArgumentParser() 225 parser = argparse.ArgumentParser()
181 parser.add_argument('--method', help='Method to use to fetch from whitelist.', 226 parser.add_argument('--method', help='Method to use to fetch from whitelist.',
182 required=True) 227 required=True)
(...skipping 14 matching lines...) Expand all
197 with open(opts.output_json, 'w') as output_json_file: 242 with open(opts.output_json, 'w') as output_json_file:
198 json.dump(output_dict, output_json_file) 243 json.dump(output_dict, output_json_file)
199 else: 244 else:
200 print blacklist 245 print blacklist
201 246
202 return 0 247 return 0
203 248
204 249
205 if __name__ == '__main__': 250 if __name__ == '__main__':
206 sys.exit(main()) 251 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | android_webview/tools/webview_licenses.py » ('j') | android_webview/tools/webview_licenses.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698