Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(394)

Unified Diff: slave/run_slave.py

Issue 2094713002: Include PowerShell in Windows PATH, if available. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Cleaner, better dox. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: slave/run_slave.py
diff --git a/slave/run_slave.py b/slave/run_slave.py
index 72c5021ec502f20334d466093b1d046b363e5c9a..779f7c959953b3d53a6670ac36a8edc5bee181b2 100755
--- a/slave/run_slave.py
+++ b/slave/run_slave.py
@@ -57,7 +57,7 @@ def IssueReboot():
'for %s' % sys.platform)
-def SigTerm(*args):
+def SigTerm(*_args):
"""Receive a SIGTERM and do nothing."""
Log('SigTerm: Received SIGTERM, doing nothing.')
@@ -433,8 +433,18 @@ def main():
os.environ['CHROME_HEADLESS'] = '1'
os.environ['PAGER'] = 'cat'
- # Platform-specific initialization.
+ # Split the path into its components.
+ path_components = os.environ['PATH'].split(os.pathsep)
+ # This function identifies a PATH component that has the supplied phrase in
+ # one of its directories.
+ def get_path_component_containing(phrase):
agable 2016/06/24 18:29:16 This function is only used once, and is defined ne
dnj (Google) 2016/06/24 18:39:59 My thought was that it is OS-independent and seeme
+ phrase = phrase.lower()
+ for c in path_components:
+ if any(phrase == d.lower() for d in c.split(os.sep)):
+ return [c]
+ return []
+ # Platform-specific initialization.
if sys.platform.startswith('win'):
# list of all variables that we want to keep
env_var = [
@@ -484,7 +494,8 @@ def main():
remove_all_vars_except(os.environ, env_var)
- # Extend the env variables with the chrome-specific settings.
+ # Extend the env variables with the chrome-specific settings. Tailor the
+ # slave process' (and derivative tasks') PATH environment variable.
slave_path = [
depot_tools,
# Reuse the python executable used to start this script.
@@ -497,6 +508,13 @@ def main():
# TODO(hinoka): Remove this when its no longer needed crbug.com/481695
os.path.join(os.environ['SYSTEMDRIVE'], os.sep, 'cmake', 'bin'),
]
+
+ # Include Windows PowerShell in PATH, if defined. It does this by looking
+ # through the system path for an element containing a directory named
+ # "WindowsPowerShell", which is assumed to be the component adding
+ # PowerShell to the PATH.
+ slave_path += get_path_component_containing('WindowsPowerShell')
+
# build_internal/tools contains tools we can't redistribute.
tools = os.path.join(ROOT_DIR, 'build_internal', 'tools')
if os.path.isdir(tools):
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698