blob: 395c18f4fd71fe4e86526cdad459f9752494cef1 [file] [log] [blame]
Ben Murdoch61f157c2016-09-16 13:49:30 +01001#!/usr/bin/env python
2# Copyright 2013 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6"""
7This file emits the list of reasons why a particular build needs to be clobbered
8(or a list of 'landmines').
9"""
10
11import sys
12
13import landmine_utils
14
15
16builder = landmine_utils.builder
17distributor = landmine_utils.distributor
18gyp_defines = landmine_utils.gyp_defines
19gyp_msvs_version = landmine_utils.gyp_msvs_version
20platform = landmine_utils.platform
21
22
23def print_landmines():
24 """
25 ALL LANDMINES ARE EMITTED FROM HERE.
26 """
27 # DO NOT add landmines as part of a regular CL. Landmines are a last-effort
28 # bandaid fix if a CL that got landed has a build dependency bug and all bots
29 # need to be cleaned up. If you're writing a new CL that causes build
30 # dependency problems, fix the dependency problems instead of adding a
31 # landmine.
32
33 if (distributor() == 'goma' and platform() == 'win32' and
34 builder() == 'ninja'):
35 print 'Need to clobber winja goma due to backend cwd cache fix.'
36 if platform() == 'android':
37 print 'Clobber: to handle new way of suppressing findbugs failures.'
38 print 'Clobber to fix gyp not rename package name (crbug.com/457038)'
39 if platform() == 'win' and builder() == 'ninja':
40 print 'Compile on cc_unittests fails due to symbols removed in r185063.'
41 if platform() == 'linux' and builder() == 'ninja':
42 print 'Builders switching from make to ninja will clobber on this.'
43 if platform() == 'mac':
44 print 'Switching from bundle to unbundled dylib (issue 14743002).'
45 if platform() in ('win', 'mac'):
46 print ('Improper dependency for create_nmf.py broke in r240802, '
47 'fixed in r240860.')
48 if (platform() == 'win' and builder() == 'ninja' and
49 gyp_msvs_version() == '2012' and
50 gyp_defines().get('target_arch') == 'x64' and
51 gyp_defines().get('dcheck_always_on') == '1'):
52 print "Switched win x64 trybots from VS2010 to VS2012."
53 if (platform() == 'win' and builder() == 'ninja' and
54 gyp_msvs_version().startswith('2013')):
55 print "Switch to VS2013"
56 if (platform() == 'win' and gyp_msvs_version().startswith('2015')):
57 print 'Switch to VS2015 Update 2'
58 print 'Need to clobber everything due to an IDL change in r154579 (blink)'
59 print 'Need to clobber everything due to gen file moves in r175513 (Blink)'
60 if (platform() != 'ios'):
61 print 'Clobber to get rid of obselete test plugin after r248358'
62 print 'Clobber to rebuild GN files for V8'
63 print 'Clobber to get rid of stale generated mojom.h files'
64 print 'Need to clobber everything due to build_nexe change in nacl r13424'
65 print '[chromium-dev] PSA: clobber build needed for IDR_INSPECTOR_* compil...'
66 print 'blink_resources.grd changed: crbug.com/400860'
67 print 'ninja dependency cycle: crbug.com/408192'
68 print 'Clobber to fix missing NaCl gyp dependencies (crbug.com/427427).'
69 print 'Another clobber for missing NaCl gyp deps (crbug.com/427427).'
70 print 'Clobber to fix GN not picking up increased ID range (crbug.com/444902)'
71 print 'Remove NaCl toolchains from the output dir (crbug.com/456902)'
72 if platform() == 'ios':
73 print 'Clobber iOS to workaround Xcode deps bug (crbug.com/485435)'
74 if platform() == 'win':
75 print 'Clobber to delete stale generated files (crbug.com/510086)'
76 if platform() == 'android' and gyp_defines().get('target_arch') == 'arm64':
77 print 'Clobber to support new location/infra for chrome_sync_shell_apk'
78 if platform() == 'mac':
79 print 'Clobber to get rid of evil libsqlite3.dylib (crbug.com/526208)'
80
81
82def main():
83 print_landmines()
84 return 0
85
86
87if __name__ == '__main__':
88 sys.exit(main())