chromium-src-build/get_landmines.py

73 строки
2.4 KiB
Python
Исходник Обычный вид История

#!/usr/bin/env python
# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""
This file emits the list of reasons why a particular build needs to be clobbered
(or a list of 'landmines').
"""
import optparse
import sys
import landmine_utils
builder = landmine_utils.builder
distributor = landmine_utils.distributor
gyp_defines = landmine_utils.gyp_defines
gyp_msvs_version = landmine_utils.gyp_msvs_version
platform = landmine_utils.platform
def print_landmines(target):
"""
ALL LANDMINES ARE EMITTED FROM HERE.
target can be one of {'Release', 'Debug', 'Debug_x64', 'Release_x64'}.
"""
if (distributor() == 'goma' and platform() == 'win32' and
builder() == 'ninja'):
print 'Need to clobber winja goma due to backend cwd cache fix.'
if platform() == 'android':
Graphical version of the run_binary_size_analysis tool. The binary_size tool suit includes tools that are useful when trying to reduce binary size of a program, and chromium related programs in particular. This commit (mostly written by andrewhayden@chromium.org for Android but ported to generic Linux by bratell@opera.com) adds a graphical HTML based output for run_binary_size_analysis.py. In the generated web page it is possible to dynamically and graphically browse the binary and each part of the source tree is given a size that reflects its contribution to the binary size. The run_binary_size_analysis tool is run on compiled binaries with symbols and uses nm and addr2line to map parts of the binary to source code. Since addr2line is slow the operation to map binary symbols to source files takes a while but the output is well worth it when shrinking programs. See its usage information for details about how to run it. This commit also includes the tool explain_binary_size_delta.py (textual output) which can be used to understand why a binary changed size and in what way. See its usage information for details about how to run it. There are many further improvements possible to to do on these tools. Search the bug database for Label:Tools-BinarySize for suggestions. BUG=339059 R=primiano@chromium.org,andrewhayden@chromium.org Review URL: https://codereview.chromium.org/258633003 git-svn-id: http://src.chromium.org/svn/trunk/src/build@272255 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
2014-05-22 22:49:40 +04:00
print 'Clobber: build_size.jar needs to be deleted (issue 258633003)'
if platform() == 'win' and builder() == 'ninja':
print 'Compile on cc_unittests fails due to symbols removed in r185063.'
if platform() == 'linux' and builder() == 'ninja':
print 'Builders switching from make to ninja will clobber on this.'
if platform() == 'mac':
print 'Switching from bundle to unbundled dylib (issue 14743002).'
if platform() in ('win', 'mac'):
print ('Improper dependency for create_nmf.py broke in r240802, '
'fixed in r240860.')
if (platform() == 'win' and builder() == 'ninja' and
gyp_msvs_version() == '2012' and
gyp_defines().get('target_arch') == 'x64' and
gyp_defines().get('dcheck_always_on') == '1'):
print "Switched win x64 trybots from VS2010 to VS2012."
if (platform() == 'win' and builder() == 'ninja' and
gyp_msvs_version().startswith('2013')):
print "Switched win from VS2010 to VS2013."
Revert 271737 "Revert 271721 "VS2013 Update 2"" https://src.chromium.org/viewvc/chrome?view=rev&revision=271919 fixes the compiler crash, http://src.chromium.org/viewvc/chrome?view=rev&revision=271780 fixes the bug in landmines that didn't allow the initial land/revert to go smoothly. Should be A-OK this time. > Revert 271721 "VS2013 Update 2" > > static_library build ICEing on some builders on mini_installer. > > > VS2013 Update 2 > > > > As discussed in the linked bug, the toolchain2013.py script in > > depot_tools is no longer workable (because the update for Update 2 is > > supplied as a .msp that must be applied against a system-installed > > VS2013). > > > > As such, the Express hash here is not updated. > > > > The hash zip referenced here was built as follows: > > - Install VS2013 Update 2 on a clean VM > > - Copy DIA SDK\, VC\ > > - Copy DLLs from VC\redist to sys32\ and sys64\ > > - Copy win8sdk unchanged from previous .zip. > > - Delete various unused arm\ subdirectories > > - Delete the IDE-only Snippets, etc. subdirectories in VC\ > > - Patch VC\include\xtree to disable warning 4702 per request in > > http://crbug.com/346399 . > > > > A followup change will be to write a script that does these steps > > semi-automatically, hopefully for Express too, though there is the > > added complication of the WDK/ATL/MFC hacking required there. In > > particular, this script will not be useful for a dev to actually run > > as part of runhooks, but will be a bit useful for deployment/ > > documentation of the above process. > > > > In the interim there are no extremely-pressing reasons for Express > > users to update to Update2 that I'm aware of, so they get non-Update2 > > for now. > > > > R=iannucci@chromium.org > > BUG=372451,346399,371847,339215,350639 > > > > Review URL: https://codereview.chromium.org/284663003 > > TBR=scottmg@chromium.org > > Review URL: https://codereview.chromium.org/297753002 TBR=scottmg@chromium.org Review URL: https://codereview.chromium.org/295093004 git-svn-id: http://src.chromium.org/svn/trunk/src/build@271921 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
2014-05-21 21:10:43 +04:00
print "Update to VS2013 Update 2."
print 'Need to clobber everything due to an IDL change in r154579 (blink)'
if (platform() != 'ios'):
print 'Clobber to get rid of obselete test plugin after r248358'
def main():
parser = optparse.OptionParser()
parser.add_option('-t', '--target',
help=='Target for which the landmines have to be emitted')
options, args = parser.parse_args()
if args:
parser.error('Unknown arguments %s' % args)
print_landmines(options.target)
return 0
if __name__ == '__main__':
sys.exit(main())