diff --git a/.gitignore b/.gitignore index 7822910350..5b932c17b8 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,7 @@ .cproject .gdb_history .gdbinit +.landmines .metadata .project .pydevproject @@ -176,4 +177,3 @@ /webrtc/video_engine/test/android/obj /x86-generic_out/ /xcodebuild - diff --git a/DEPS b/DEPS index bd2d0b0470..a61126afcf 100644 --- a/DEPS +++ b/DEPS @@ -70,6 +70,21 @@ hooks = [ 'pattern': '.', 'action': ['python', 'src/setup_links.py'], }, + { + # This clobbers when necessary (based on get_landmines.py). It should be + # an early hook but it will need to be run after syncing Chromium and + # setting up the links, so the script actually exists. + 'name': 'landmines', + 'pattern': '.', + 'action': [ + 'python', + 'src/build/landmines.py', + '--landmine-scripts', + 'src/webrtc/build/get_landmines.py', + '--src-dir', + 'src', + ], + }, { # Pull sanitizer-instrumented third-party libraries if requested via # GYP_DEFINES. This could be done as part of sync_chromium.py above diff --git a/webrtc/build/get_landmines.py b/webrtc/build/get_landmines.py new file mode 100755 index 0000000000..91b3e251ad --- /dev/null +++ b/webrtc/build/get_landmines.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python +# Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. +# +# Use of this source code is governed by a BSD-style license +# that can be found in the LICENSE file in the root of the source +# tree. An additional intellectual property rights grant can be found +# in the file PATENTS. All contributing project authors may +# be found in the AUTHORS file in the root of the source tree. + +""" +This file emits the list of reasons why a particular build needs to be clobbered +(or a list of 'landmines'). +""" + +import os +import sys + +script_dir = os.path.dirname(os.path.realpath(__file__)) +checkout_root = os.path.abspath(os.path.join(script_dir, os.pardir, os.pardir)) +sys.path.insert(0, os.path.join(checkout_root, 'build')) +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(): + """ + ALL LANDMINES ARE EMITTED FROM HERE. + """ + # DO NOT add landmines as part of a regular CL. Landmines are a last-effort + # bandaid fix if a CL that got landed has a build dependency bug and all bots + # need to be cleaned up. If you're writing a new CL that causes build + # dependency problems, fix the dependency problems instead of adding a + # landmine. + # See the Chromium version in src/build/get_landmines.py for usage examples. + pass + + +def main(): + print_landmines() + return 0 + + +if __name__ == '__main__': + sys.exit(main())