OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2011 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 """Makes sure that files include headers from allowed directories. | 6 """Makes sure that files include headers from allowed directories. |
7 | 7 |
8 Checks DEPS files in the source tree for rules, and applies those rules to | 8 Checks DEPS files in the source tree for rules, and applies those rules to |
9 "#include" commands in source files. Any source file including something not | 9 "#include" commands in source files. Any source file including something not |
10 permitted by the DEPS files will fail. | 10 permitted by the DEPS files will fail. |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 if not (os.path.exists(os.path.join(dir_name, ".svn")) or | 239 if not (os.path.exists(os.path.join(dir_name, ".svn")) or |
240 (dir_name.lower() in GIT_SOURCE_DIRECTORY)): | 240 (dir_name.lower() in GIT_SOURCE_DIRECTORY)): |
241 return (None, []) | 241 return (None, []) |
242 | 242 |
243 # Check the DEPS file in this directory. | 243 # Check the DEPS file in this directory. |
244 if VERBOSE: | 244 if VERBOSE: |
245 print "Applying rules from", dir_name | 245 print "Applying rules from", dir_name |
246 def FromImpl(unused, unused2): | 246 def FromImpl(unused, unused2): |
247 pass # NOP function so "From" doesn't fail. | 247 pass # NOP function so "From" doesn't fail. |
248 | 248 |
| 249 def FileImpl(unused): |
| 250 pass # NOP function so "File" doesn't fail. |
| 251 |
249 class _VarImpl: | 252 class _VarImpl: |
250 def __init__(self, local_scope): | 253 def __init__(self, local_scope): |
251 self._local_scope = local_scope | 254 self._local_scope = local_scope |
252 | 255 |
253 def Lookup(self, var_name): | 256 def Lookup(self, var_name): |
254 """Implements the Var syntax.""" | 257 """Implements the Var syntax.""" |
255 if var_name in self._local_scope.get("vars", {}): | 258 if var_name in self._local_scope.get("vars", {}): |
256 return self._local_scope["vars"][var_name] | 259 return self._local_scope["vars"][var_name] |
257 raise Error("Var is not defined: %s" % var_name) | 260 raise Error("Var is not defined: %s" % var_name) |
258 | 261 |
259 local_scope = {} | 262 local_scope = {} |
260 global_scope = {"From": FromImpl, "Var": _VarImpl(local_scope).Lookup} | 263 global_scope = { |
| 264 "File": FileImpl, |
| 265 "From": FromImpl, |
| 266 "Var": _VarImpl(local_scope).Lookup, |
| 267 } |
261 deps_file = os.path.join(dir_name, "DEPS") | 268 deps_file = os.path.join(dir_name, "DEPS") |
262 | 269 |
263 if os.path.isfile(deps_file): | 270 if os.path.isfile(deps_file): |
264 execfile(deps_file, global_scope, local_scope) | 271 execfile(deps_file, global_scope, local_scope) |
265 elif VERBOSE: | 272 elif VERBOSE: |
266 print " No deps file found in", dir_name | 273 print " No deps file found in", dir_name |
267 | 274 |
268 # Even if a DEPS file does not exist we still invoke ApplyRules | 275 # Even if a DEPS file does not exist we still invoke ApplyRules |
269 # to apply the implicit "allow" rule for the current directory | 276 # to apply the implicit "allow" rule for the current directory |
270 deps = local_scope.get(DEPS_VAR_NAME, {}) | 277 deps = local_scope.get(DEPS_VAR_NAME, {}) |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 if '__main__' == __name__: | 498 if '__main__' == __name__: |
492 option_parser = optparse.OptionParser() | 499 option_parser = optparse.OptionParser() |
493 option_parser.add_option("", "--root", default="", dest="base_directory", | 500 option_parser.add_option("", "--root", default="", dest="base_directory", |
494 help='Specifies the repository root. This defaults ' | 501 help='Specifies the repository root. This defaults ' |
495 'to "../../.." relative to the script file, which ' | 502 'to "../../.." relative to the script file, which ' |
496 'will normally be the repository root.') | 503 'will normally be the repository root.') |
497 option_parser.add_option("-v", "--verbose", action="store_true", | 504 option_parser.add_option("-v", "--verbose", action="store_true", |
498 default=False, help="Print debug logging") | 505 default=False, help="Print debug logging") |
499 options, args = option_parser.parse_args() | 506 options, args = option_parser.parse_args() |
500 main(options, args) | 507 main(options, args) |
OLD | NEW |