Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import ast | 5 import ast |
| 6 import contextlib | 6 import contextlib |
| 7 import fnmatch | 7 import fnmatch |
| 8 import json | 8 import json |
| 9 import os | 9 import os |
| 10 import pipes | 10 import pipes |
| 11 import re | 11 import re |
| 12 import shlex | 12 import shlex |
| 13 import shutil | 13 import shutil |
| 14 import subprocess | 14 import subprocess |
| 15 import sys | 15 import sys |
| 16 import tempfile | 16 import tempfile |
| 17 import zipfile | 17 import zipfile |
| 18 | 18 |
| 19 from util import md5_check | |
| 19 | 20 |
| 20 CHROMIUM_SRC = os.path.normpath( | 21 CHROMIUM_SRC = os.path.normpath( |
| 21 os.path.join(os.path.dirname(__file__), | 22 os.path.join(os.path.dirname(__file__), |
| 22 os.pardir, os.pardir, os.pardir, os.pardir)) | 23 os.pardir, os.pardir, os.pardir, os.pardir)) |
| 23 COLORAMA_ROOT = os.path.join(CHROMIUM_SRC, | 24 COLORAMA_ROOT = os.path.join(CHROMIUM_SRC, |
| 24 'third_party', 'colorama', 'src') | 25 'third_party', 'colorama', 'src') |
| 25 # aapt should ignore OWNERS files in addition the default ignore pattern. | 26 # aapt should ignore OWNERS files in addition the default ignore pattern. |
| 26 AAPT_IGNORE_PATTERN = ('!OWNERS:!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:' + | 27 AAPT_IGNORE_PATTERN = ('!OWNERS:!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:' + |
| 27 '!CVS:!thumbs.db:!picasa.ini:!*~:!*.d.stamp') | 28 '!CVS:!thumbs.db:!picasa.ini:!*~:!*.d.stamp') |
| 28 HERMETIC_TIMESTAMP = (2001, 1, 1, 0, 0, 0) | 29 HERMETIC_TIMESTAMP = (2001, 1, 1, 0, 0, 0) |
| (...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 393 file_jsons[file_path] = ReadJson(file_path) | 394 file_jsons[file_path] = ReadJson(file_path) |
| 394 | 395 |
| 395 expansion = file_jsons[file_path] | 396 expansion = file_jsons[file_path] |
| 396 for k in lookup_path[1:]: | 397 for k in lookup_path[1:]: |
| 397 expansion = expansion[k] | 398 expansion = expansion[k] |
| 398 | 399 |
| 399 new_args[i] = arg[:match.start()] + str(expansion) | 400 new_args[i] = arg[:match.start()] + str(expansion) |
| 400 | 401 |
| 401 return new_args | 402 return new_args |
| 402 | 403 |
| 404 | |
| 405 def CallAndRecordIfStale(function, options, record_path=None, input_paths=None, | |
|
jbudorick
2015/09/18 18:19:38
curious: why'd you put this in here rather than in
agrieve
2015/09/18 18:46:19
My reasoning:
- md5_check felt a bit like a generi
jbudorick
2015/09/23 14:56:37
I'm concerned about:
- having two identically-nam
| |
| 406 input_strings=None, output_paths=None, force=False): | |
| 407 """Wraps md5_check.CallAndRecordIfStale() and also writes dep & stamp files. | |
| 408 | |
| 409 Depfiles and stamp files are automatically added to output_paths when present | |
| 410 in the |options| arguemnt. They are then created after |function| is called. | |
| 411 """ | |
| 412 if not output_paths: | |
| 413 raise Exception('At least one output_path must be specified.') | |
| 414 input_paths = list(input_paths or []) | |
| 415 input_strings = list(input_strings or []) | |
| 416 output_paths = list(output_paths or []) | |
| 417 | |
| 418 python_deps = None | |
| 419 if hasattr(options, 'depfile') and options.depfile: | |
|
jbudorick
2015/09/18 18:19:38
I'm not crazy about locking option names across sc
agrieve
2015/09/18 18:46:19
All scripts already use build_utils.AddDepfileOpti
| |
| 420 python_deps = GetPythonDependencies() | |
| 421 # List python deps in input_strings rather than input_paths since the | |
| 422 # contents of them does not change what gets written to the depfile. | |
| 423 input_strings += python_deps | |
| 424 output_paths += [options.depfile] | |
| 425 | |
| 426 stamp_file = hasattr(options, 'stamp') and options.stamp | |
| 427 if stamp_file: | |
| 428 output_paths += [stamp_file] | |
| 429 | |
| 430 def on_stale_md5(): | |
| 431 function() | |
| 432 if python_deps is not None: | |
| 433 WriteDepfile(options.depfile, python_deps + input_paths) | |
| 434 if stamp_file: | |
| 435 Touch(stamp_file) | |
| 436 | |
| 437 md5_check.CallAndRecordIfStale( | |
| 438 on_stale_md5, | |
| 439 record_path=record_path, | |
| 440 input_paths=input_paths, | |
| 441 input_strings=input_strings, | |
| 442 output_paths=output_paths, | |
| 443 force=force) | |
| 444 | |
| OLD | NEW |