Index: build/scripts/slave/runhooks_wrapper.py |
=================================================================== |
--- build/scripts/slave/runhooks_wrapper.py (revision 0) |
+++ build/scripts/slave/runhooks_wrapper.py (working copy) |
@@ -0,0 +1,49 @@ |
+#!/usr/bin/env python |
+# Copyright 2014 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. |
+ |
+"""Wrapper script for `gclient runhooks`. |
+ |
+This is useful to set slave-dependent gyp defines. |
+""" |
+ |
+import optparse |
+import os |
+import pipes |
+import sys |
+ |
+from common import chromium_utils |
+ |
+ |
+# Path of the scripts/slave/ checkout on the slave, found by looking at the |
+# current runhooks_wrapper.py script's path's dirname(). |
+SLAVE_SCRIPTS_DIR = os.path.dirname(os.path.abspath(__file__)) |
+# Path of the build/ checkout on the slave, found relative to the |
+# scripts/slave/ directory. |
+BUILD_DIR = os.path.dirname(os.path.dirname(SLAVE_SCRIPTS_DIR)) |
+ |
+ |
+def main(): |
+ parser = optparse.OptionParser(description=__doc__) |
+ parser.add_option('--use-goma', action='store_true') |
+ parser.add_option('--goma-dir', |
+ default=os.path.join(BUILD_DIR, 'goma'), |
+ help='goma directory, only used if --use-goma is passed') |
+ options, args = parser.parse_args() |
+ assert not args |
+ |
+ if options.use_goma: |
+ # Add goma-related GYP_DEFINES if requested. This is done in a slave script |
+ # because goma_dir is a slave-relative path and is not known to the master. |
+ gyp_defines = os.environ.get('GYP_DEFINES', '') |
+ # pipes.quote() is necessary on Windows: http://crbug.com/340918#c7 - 11. |
+ gyp_defines += ' use_goma=1 gomadir=' + pipes.quote(options.goma_dir) |
+ os.environ['GYP_DEFINES'] = gyp_defines |
+ print 'Changed GYP_DEFINES to', os.environ['GYP_DEFINES'] |
+ |
+ return chromium_utils.RunCommand(['gclient', 'runhooks']) |
+ |
+ |
+if '__main__' == __name__: |
+ sys.exit(main()) |