| Index: build/landmines.py
|
| diff --git a/build/landmines.py b/build/landmines.py
|
| index 36253e9badd5bcdc9d752f1e194eef3f53bc0ec5..4aebeffe440a53e9f2e453a570ae6fd7670a4c9b 100755
|
| --- a/build/landmines.py
|
| +++ b/build/landmines.py
|
| @@ -20,6 +20,8 @@ build is clobbered.
|
| import difflib
|
| import functools
|
| import gyp_helper
|
| +import logging
|
| +import optparse
|
| import os
|
| import shlex
|
| import sys
|
| @@ -36,7 +38,8 @@ def memoize(default=None):
|
| if not val:
|
| ret = func()
|
| val.append(ret if ret is not None else default)
|
| - print '%s -> %r' % (func.__name__, val[0])
|
| + if logging.getLogger().isEnabledFor(logging.INFO):
|
| + print '%s -> %r' % (func.__name__, val[0])
|
| return val[0]
|
| return inner
|
| return memoizer
|
| @@ -167,44 +170,58 @@ def get_target_build_dir(build_tool, target, is_iphone=False):
|
| return os.path.abspath(ret)
|
|
|
|
|
| -def main(argv):
|
| - if len(argv) > 1:
|
| - print('Unknown arguments %s' % argv[1:])
|
| - return 1
|
| +def set_up_landmines(target):
|
| + """Does the work of setting, planting, and triggering landmines."""
|
| + out_dir = get_target_build_dir(builder(), target, platform() == 'ios')
|
|
|
| - gyp_helper.apply_chromium_gyp_env()
|
| + landmines_path = os.path.join(out_dir, '.landmines')
|
| + if not os.path.exists(out_dir):
|
| + os.makedirs(out_dir)
|
|
|
| - for target in ('Debug', 'Release'):
|
| - out_dir = get_target_build_dir(builder(), target,
|
| - platform() == 'ios')
|
| + new_landmines = get_landmines(target)
|
|
|
| - landmines_path = os.path.join(out_dir, '.landmines')
|
| - if not os.path.exists(out_dir):
|
| - os.makedirs(out_dir)
|
| + if not os.path.exists(landmines_path):
|
| + with open(landmines_path, 'w') as f:
|
| + f.writelines(new_landmines)
|
| + else:
|
| + triggered = os.path.join(out_dir, '.landmines_triggered')
|
| + with open(landmines_path, 'r') as f:
|
| + old_landmines = f.readlines()
|
| + if old_landmines != new_landmines:
|
| + old_date = time.ctime(os.stat(landmines_path).st_ctime)
|
| + diff = difflib.unified_diff(old_landmines, new_landmines,
|
| + fromfile='old_landmines', tofile='new_landmines',
|
| + fromfiledate=old_date, tofiledate=time.ctime(), n=0)
|
| +
|
| + with open(triggered, 'w') as f:
|
| + f.writelines(diff)
|
| + elif os.path.exists(triggered):
|
| + # Remove false triggered landmines.
|
| + os.remove(triggered)
|
| +
|
| +
|
| +def main():
|
| + parser = optparse.OptionParser()
|
| + parser.add_option('-v', '--verbose', action='store_true',
|
| + default=('LANDMINES_VERBOSE' in os.environ),
|
| + help=('Emit some extra debugging information (default off). This option '
|
| + 'is also enabled by the presence of a LANDMINES_VERBOSE environment '
|
| + 'variable.'))
|
| + options, args = parser.parse_args()
|
| +
|
| + if args:
|
| + parser.error('Unknown arguments %s' % args)
|
| +
|
| + logging.basicConfig(
|
| + level=logging.DEBUG if options.verbose else logging.ERROR)
|
|
|
| - new_landmines = get_landmines(target)
|
| + gyp_helper.apply_chromium_gyp_env()
|
|
|
| - if not os.path.exists(landmines_path):
|
| - with open(landmines_path, 'w') as f:
|
| - f.writelines(new_landmines)
|
| - else:
|
| - triggered = os.path.join(out_dir, '.landmines_triggered')
|
| - with open(landmines_path, 'r') as f:
|
| - old_landmines = f.readlines()
|
| - if old_landmines != new_landmines:
|
| - old_date = time.ctime(os.stat(landmines_path).st_ctime)
|
| - diff = difflib.unified_diff(old_landmines, new_landmines,
|
| - fromfile='old_landmines', tofile='new_landmines',
|
| - fromfiledate=old_date, tofiledate=time.ctime(), n=0)
|
| -
|
| - with open(triggered, 'w') as f:
|
| - f.writelines(diff)
|
| - elif os.path.exists(triggered):
|
| - # Remove false triggered landmines.
|
| - os.remove(triggered)
|
| + for target in ('Debug', 'Release'):
|
| + set_up_landmines(target)
|
|
|
| return 0
|
|
|
|
|
| if __name__ == '__main__':
|
| - sys.exit(main(sys.argv))
|
| + sys.exit(main())
|
|
|