diff options
author | iannucci@chromium.org <iannucci@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-06 00:13:27 +0000 |
---|---|---|
committer | iannucci@chromium.org <iannucci@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-06 00:13:27 +0000 |
commit | da2f7cce4f1bec439e1a22f9b2f700991edace7b (patch) | |
tree | c470ec735ba03f09ee38e038f11e2c85a4627e76 /build/gyp_helper.py | |
parent | 50908a11b5d244099263fae4c867d16fc69d5594 (diff) | |
download | chromium_src-da2f7cce4f1bec439e1a22f9b2f700991edace7b.zip chromium_src-da2f7cce4f1bec439e1a22f9b2f700991edace7b.tar.gz chromium_src-da2f7cce4f1bec439e1a22f9b2f700991edace7b.tar.bz2 |
Selective build clobbering feature (landmines.py and android build scripts).
Adds the ability for devs/troopers/etc. to set 'landmines' in the tree so that
the build will selectively clobber when a builder moves over a revision with such
a change.
This cl has an basis landmines.py, and hooks the clobber mechanism to the android
build scripts.
The relevant cl which implements this for
compile.py is here: https://chromiumcodereview.appspot.com/11234013/
I'm planning to also implement an informational invocation for gclient to let devs know
about any potential landmines so they can decide if they need to clobber.
R=cmp,maruel@chromium.org
BUG=121897
Review URL: https://chromiumcodereview.appspot.com/11175016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@166085 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'build/gyp_helper.py')
-rw-r--r-- | build/gyp_helper.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/build/gyp_helper.py b/build/gyp_helper.py new file mode 100644 index 0000000..b9b55b0 --- /dev/null +++ b/build/gyp_helper.py @@ -0,0 +1,48 @@ +# Copyright (c) 2012 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 helps gyp_chromium and landmines correctly set up the gyp +# environment from chromium.gyp_env on disk + +import os + +SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) +CHROME_SRC = os.path.dirname(SCRIPT_DIR) + + +def apply_gyp_environment_from_file(file_path): + """Reads in a *.gyp_env file and applies the valid keys to os.environ.""" + if not os.path.exists(file_path): + return + with open(file_path) as f: + file_contents = f.read() + try: + file_data = eval(file_contents, {'__builtins__': None}, None) + except SyntaxError, e: + e.filename = os.path.abspath(file_path) + raise + supported_vars = ( 'CC', + 'CHROMIUM_GYP_FILE', + 'CHROMIUM_GYP_SYNTAX_CHECK', + 'CXX', + 'GYP_DEFINES', + 'GYP_GENERATOR_FLAGS', + 'GYP_GENERATOR_OUTPUT', + 'GYP_GENERATORS', ) + for var in supported_vars: + file_val = file_data.get(var) + if file_val: + if var in os.environ: + print 'INFO: Environment value for "%s" overrides value in %s.' % ( + var, os.path.abspath(file_path) + ) + else: + os.environ[var] = file_val + + +def apply_chromium_gyp_env(): + if 'SKIP_CHROMIUM_GYP_ENV' not in os.environ: + # Update the environment based on chromium.gyp_env + path = os.path.join(os.path.dirname(CHROME_SRC), 'chromium.gyp_env') + apply_gyp_environment_from_file(path) |