From 3d047196a81f19404bb62132256b9a65dcd23695 Mon Sep 17 00:00:00 2001 From: Henrik Kjellander Date: Mon, 17 Oct 2016 15:37:47 +0200 Subject: [PATCH] Add landmine support After switching bots from GYP to GN, build artifacts are left that fails the next builds. Since it's unfeasible to clean out all bot machines it's better to have an automated system for this, which is what landmines is. By adding a line to tools/get_landmines.py it is possible to clobber each bot that syncs past that "landmine CL". BUG=chromium:652188 TBR=ehmaldonado@chromium.org Review URL: https://codereview.chromium.org/2427633003 . --- .gitignore | 1 + DEPS | 15 +++++++++++++ tools/get_landmines.py | 49 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100755 tools/get_landmines.py diff --git a/.gitignore b/.gitignore index b53a81e00..563c71db5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.pyc +.landmines pin-log.txt /base /build diff --git a/DEPS b/DEPS index bbd851f17..ed16637b3 100644 --- a/DEPS +++ b/DEPS @@ -34,6 +34,21 @@ hooks = [ 'pattern': '.', 'action': ['python', Var('root_dir') + '/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', + Var('root_dir') + '/build/landmines.py', + '--landmine-scripts', + Var('root_dir') + '/tools/get_landmines.py', + '--src-dir', + Var('root_dir'), + ], + }, { # A change to a .gyp, .gypi, or to GYP itself should run the generator. 'pattern': '.', diff --git a/tools/get_landmines.py b/tools/get_landmines.py new file mode 100755 index 000000000..33ccd9d18 --- /dev/null +++ b/tools/get_landmines.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python +# Copyright 2016 The LibYuv 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)) +sys.path.insert(0, os.path.join(checkout_root, 'build')) +import landmine_utils + + +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())