xref: /aosp_15_r20/external/cronet/build/get_landmines.py (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker#!/usr/bin/env python3
2*6777b538SAndroid Build Coastguard Worker# Copyright 2013 The Chromium Authors
3*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
4*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file.
5*6777b538SAndroid Build Coastguard Worker
6*6777b538SAndroid Build Coastguard Worker"""
7*6777b538SAndroid Build Coastguard WorkerThis file emits the list of reasons why a particular build needs to be clobbered
8*6777b538SAndroid Build Coastguard Worker(or a list of 'landmines').
9*6777b538SAndroid Build Coastguard Worker"""
10*6777b538SAndroid Build Coastguard Worker
11*6777b538SAndroid Build Coastguard Worker
12*6777b538SAndroid Build Coastguard Workerimport sys
13*6777b538SAndroid Build Coastguard Worker
14*6777b538SAndroid Build Coastguard Workerimport landmine_utils
15*6777b538SAndroid Build Coastguard Worker
16*6777b538SAndroid Build Coastguard Worker
17*6777b538SAndroid Build Coastguard Workerhost_os = landmine_utils.host_os
18*6777b538SAndroid Build Coastguard Worker
19*6777b538SAndroid Build Coastguard Worker
20*6777b538SAndroid Build Coastguard Workerdef print_landmines():
21*6777b538SAndroid Build Coastguard Worker  """
22*6777b538SAndroid Build Coastguard Worker  ALL LANDMINES ARE EMITTED FROM HERE.
23*6777b538SAndroid Build Coastguard Worker  """
24*6777b538SAndroid Build Coastguard Worker  # DO NOT add landmines as part of a regular CL. Landmines are a last-effort
25*6777b538SAndroid Build Coastguard Worker  # bandaid fix if a CL that got landed has a build dependency bug and all bots
26*6777b538SAndroid Build Coastguard Worker  # need to be cleaned up. If you're writing a new CL that causes build
27*6777b538SAndroid Build Coastguard Worker  # dependency problems, fix the dependency problems instead of adding a
28*6777b538SAndroid Build Coastguard Worker  # landmine.
29*6777b538SAndroid Build Coastguard Worker  #
30*6777b538SAndroid Build Coastguard Worker  # Before adding or changing a landmine consider the consequences of doing so.
31*6777b538SAndroid Build Coastguard Worker  # Doing so will wipe out every output directory on every Chrome developer's
32*6777b538SAndroid Build Coastguard Worker  # machine. This can be particularly problematic on Windows where the directory
33*6777b538SAndroid Build Coastguard Worker  # deletion may well fail (locked files, command prompt in the directory,
34*6777b538SAndroid Build Coastguard Worker  # etc.), and generated .sln and .vcxproj files will be deleted.
35*6777b538SAndroid Build Coastguard Worker  #
36*6777b538SAndroid Build Coastguard Worker  # This output directory deletion will be repeated when going back and forth
37*6777b538SAndroid Build Coastguard Worker  # across the change that added the landmine, adding to the cost. There are
38*6777b538SAndroid Build Coastguard Worker  # usually less troublesome alternatives.
39*6777b538SAndroid Build Coastguard Worker
40*6777b538SAndroid Build Coastguard Worker  if host_os() == 'win':
41*6777b538SAndroid Build Coastguard Worker    print('Compile on cc_unittests fails due to symbols removed in r185063.')
42*6777b538SAndroid Build Coastguard Worker  if host_os() == 'linux':
43*6777b538SAndroid Build Coastguard Worker    print('Builders switching from make to ninja will clobber on this.')
44*6777b538SAndroid Build Coastguard Worker  if host_os() == 'mac':
45*6777b538SAndroid Build Coastguard Worker    print('Switching from bundle to unbundled dylib (issue 14743002).')
46*6777b538SAndroid Build Coastguard Worker  if host_os() in ('win', 'mac'):
47*6777b538SAndroid Build Coastguard Worker    print('Improper dependency for create_nmf.py broke in r240802, '
48*6777b538SAndroid Build Coastguard Worker          'fixed in r240860.')
49*6777b538SAndroid Build Coastguard Worker  if host_os() == 'win':
50*6777b538SAndroid Build Coastguard Worker    print('Switch to VS2015 Update 3, 14393 SDK')
51*6777b538SAndroid Build Coastguard Worker  print('Need to clobber everything due to an IDL change in r154579 (blink)')
52*6777b538SAndroid Build Coastguard Worker  print('Need to clobber everything due to gen file moves in r175513 (Blink)')
53*6777b538SAndroid Build Coastguard Worker  print('Clobber to get rid of obselete test plugin after r248358')
54*6777b538SAndroid Build Coastguard Worker  print('Clobber to rebuild GN files for V8')
55*6777b538SAndroid Build Coastguard Worker  print('Clobber to get rid of stale generated mojom.h files')
56*6777b538SAndroid Build Coastguard Worker  print('Need to clobber everything due to build_nexe change in nacl r13424')
57*6777b538SAndroid Build Coastguard Worker  print(
58*6777b538SAndroid Build Coastguard Worker      '[chromium-dev] PSA: clobber build needed for IDR_INSPECTOR_* compil...')
59*6777b538SAndroid Build Coastguard Worker  print('blink_resources.grd changed: crbug.com/400860')
60*6777b538SAndroid Build Coastguard Worker  print('ninja dependency cycle: crbug.com/408192')
61*6777b538SAndroid Build Coastguard Worker  print('Clobber to fix missing NaCl gyp dependencies (crbug.com/427427).')
62*6777b538SAndroid Build Coastguard Worker  print('Another clobber for missing NaCl gyp deps (crbug.com/427427).')
63*6777b538SAndroid Build Coastguard Worker  print(
64*6777b538SAndroid Build Coastguard Worker      'Clobber to fix GN not picking up increased ID range (crbug.com/444902)')
65*6777b538SAndroid Build Coastguard Worker  print('Remove NaCl toolchains from the output dir (crbug.com/456902)')
66*6777b538SAndroid Build Coastguard Worker  if host_os() == 'win':
67*6777b538SAndroid Build Coastguard Worker    print('Clobber to delete stale generated files (crbug.com/510086)')
68*6777b538SAndroid Build Coastguard Worker  if host_os() == 'mac':
69*6777b538SAndroid Build Coastguard Worker    print('Clobber to get rid of evil libsqlite3.dylib (crbug.com/526208)')
70*6777b538SAndroid Build Coastguard Worker  if host_os() == 'mac':
71*6777b538SAndroid Build Coastguard Worker    print('Clobber to remove libsystem.dylib. See crbug.com/620075')
72*6777b538SAndroid Build Coastguard Worker  if host_os() == 'mac':
73*6777b538SAndroid Build Coastguard Worker    print('Clobber to get past mojo gen build error (crbug.com/679607)')
74*6777b538SAndroid Build Coastguard Worker  if host_os() == 'win':
75*6777b538SAndroid Build Coastguard Worker    print('Clobber Windows to fix strange PCH-not-rebuilt errors.')
76*6777b538SAndroid Build Coastguard Worker  print('CLobber all to fix GN breakage (crbug.com/736215)')
77*6777b538SAndroid Build Coastguard Worker  print('The Great Blink mv for source files (crbug.com/768828)')
78*6777b538SAndroid Build Coastguard Worker  if host_os() == 'linux':
79*6777b538SAndroid Build Coastguard Worker    print('Clobber to workaround buggy .ninja_deps cycle (crbug.com/934404)')
80*6777b538SAndroid Build Coastguard Worker  print('Clobber to flush stale generated files. See crbug.com/1406628')
81*6777b538SAndroid Build Coastguard Worker  print('Clobber to flush old .ninja_log files for updating ninja. '
82*6777b538SAndroid Build Coastguard Worker        'See crbug.com/1406628#c14')
83*6777b538SAndroid Build Coastguard Worker  if host_os() == 'mac':
84*6777b538SAndroid Build Coastguard Worker    print('Clobber to clear old nocompile targets. See crbug.com/1497005.')
85*6777b538SAndroid Build Coastguard Worker
86*6777b538SAndroid Build Coastguard Worker
87*6777b538SAndroid Build Coastguard Workerdef main():
88*6777b538SAndroid Build Coastguard Worker  print_landmines()
89*6777b538SAndroid Build Coastguard Worker  return 0
90*6777b538SAndroid Build Coastguard Worker
91*6777b538SAndroid Build Coastguard Worker
92*6777b538SAndroid Build Coastguard Workerif __name__ == '__main__':
93*6777b538SAndroid Build Coastguard Worker  sys.exit(main())
94