Index: gclient_utils.py |
diff --git a/gclient_utils.py b/gclient_utils.py |
index e8d916e78d5d2a8aeba4cbf61bebf7b64ad79084..a21e65a5fc31c5d01af67dc395f1ea65fabea86d 100644 |
--- a/gclient_utils.py |
+++ b/gclient_utils.py |
@@ -681,7 +681,10 @@ def GetBuildtoolsPath(): |
if os.path.exists(os.path.join(top_dir, 'buildtools')): |
return os.path.join(top_dir, 'buildtools') |
return None |
- return os.path.join(gclient_root, 'src', 'buildtools') |
+ |
+ # Some projects' top directory is not named 'src'. |
+ source_dir_name = GetGClientPrimarySolutionName(gclient_root) or 'src' |
+ return os.path.join(gclient_root, source_dir_name, 'buildtools') |
def GetBuildtoolsPlatformBinaryPath(): |
@@ -713,6 +716,17 @@ def GetExeSuffix(): |
return '' |
+def GetGClientPrimarySolutionName(gclient_root_dir_path): |
+ """Returns the name of the primary solution in the .gclient file specified.""" |
+ gclient_config_file = os.path.join(gclient_root_dir_path, '.gclient') |
+ env = {} |
+ execfile(gclient_config_file, env) |
+ solutions = env.get('solutions', []) |
+ if solutions: |
+ return solutions[0].get('name') |
+ return None |
+ |
+ |
def GetGClientRootAndEntries(path=None): |
"""Returns the gclient root and the dict of entries.""" |
config_file = '.gclient_entries' |