summaryrefslogtreecommitdiffstats
path: root/build/gyp_helper.py
diff options
context:
space:
mode:
authoriannucci@chromium.org <iannucci@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-06 00:13:27 +0000
committeriannucci@chromium.org <iannucci@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-06 00:13:27 +0000
commitda2f7cce4f1bec439e1a22f9b2f700991edace7b (patch)
treec470ec735ba03f09ee38e038f11e2c85a4627e76 /build/gyp_helper.py
parent50908a11b5d244099263fae4c867d16fc69d5594 (diff)
downloadchromium_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.py48
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)