| OLD | NEW |
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """Generic utils.""" | 5 """Generic utils.""" |
| 6 | 6 |
| 7 import codecs | 7 import codecs |
| 8 import cStringIO | 8 import cStringIO |
| 9 import datetime | 9 import datetime |
| 10 import logging | 10 import logging |
| (...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 691 """Returns the full path to the buildtools directory. | 691 """Returns the full path to the buildtools directory. |
| 692 This is based on the root of the checkout containing the current directory.""" | 692 This is based on the root of the checkout containing the current directory.""" |
| 693 | 693 |
| 694 # Overriding the build tools path by environment is highly unsupported and may | 694 # Overriding the build tools path by environment is highly unsupported and may |
| 695 # break without warning. Do not rely on this for anything important. | 695 # break without warning. Do not rely on this for anything important. |
| 696 override = os.environ.get('CHROMIUM_BUILDTOOLS_PATH') | 696 override = os.environ.get('CHROMIUM_BUILDTOOLS_PATH') |
| 697 if override is not None: | 697 if override is not None: |
| 698 return override | 698 return override |
| 699 | 699 |
| 700 primary_solution = GetPrimarySolutionPath() | 700 primary_solution = GetPrimarySolutionPath() |
| 701 if not primary_solution: |
| 702 return None |
| 701 buildtools_path = os.path.join(primary_solution, 'buildtools') | 703 buildtools_path = os.path.join(primary_solution, 'buildtools') |
| 702 if not os.path.exists(buildtools_path): | 704 if not os.path.exists(buildtools_path): |
| 703 # Buildtools may be in the gclient root. | 705 # Buildtools may be in the gclient root. |
| 704 gclient_root = FindGclientRoot(os.getcwd()) | 706 gclient_root = FindGclientRoot(os.getcwd()) |
| 705 buildtools_path = os.path.join(gclient_root, 'buildtools') | 707 buildtools_path = os.path.join(gclient_root, 'buildtools') |
| 706 return buildtools_path | 708 return buildtools_path |
| 707 | 709 |
| 708 | 710 |
| 709 def GetBuildtoolsPlatformBinaryPath(): | 711 def GetBuildtoolsPlatformBinaryPath(): |
| 710 """Returns the full path to the binary directory for the current platform.""" | 712 """Returns the full path to the binary directory for the current platform.""" |
| (...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1164 | 1166 |
| 1165 # (Windows) Query 'NUMBER_OF_PROCESSORS' environment variable. | 1167 # (Windows) Query 'NUMBER_OF_PROCESSORS' environment variable. |
| 1166 if 'NUMBER_OF_PROCESSORS' in os.environ: | 1168 if 'NUMBER_OF_PROCESSORS' in os.environ: |
| 1167 return int(os.environ['NUMBER_OF_PROCESSORS']) | 1169 return int(os.environ['NUMBER_OF_PROCESSORS']) |
| 1168 except Exception as e: | 1170 except Exception as e: |
| 1169 logging.exception("Exception raised while probing CPU count: %s", e) | 1171 logging.exception("Exception raised while probing CPU count: %s", e) |
| 1170 | 1172 |
| 1171 logging.debug('Failed to get CPU count. Defaulting to 1.') | 1173 logging.debug('Failed to get CPU count. Defaulting to 1.') |
| 1172 return 1 | 1174 return 1 |
| 1173 | 1175 |
| 1176 |
| 1174 def DefaultDeltaBaseCacheLimit(): | 1177 def DefaultDeltaBaseCacheLimit(): |
| 1175 """Return a reasonable default for the git config core.deltaBaseCacheLimit. | 1178 """Return a reasonable default for the git config core.deltaBaseCacheLimit. |
| 1176 | 1179 |
| 1177 The primary constraint is the address space of virtual memory. The cache | 1180 The primary constraint is the address space of virtual memory. The cache |
| 1178 size limit is per-thread, and 32-bit systems can hit OOM errors if this | 1181 size limit is per-thread, and 32-bit systems can hit OOM errors if this |
| 1179 parameter is set too high. | 1182 parameter is set too high. |
| 1180 """ | 1183 """ |
| 1181 if platform.architecture()[0].startswith('64'): | 1184 if platform.architecture()[0].startswith('64'): |
| 1182 return '2g' | 1185 return '2g' |
| 1183 else: | 1186 else: |
| 1184 return '512m' | 1187 return '512m' |
| 1185 | 1188 |
| 1189 |
| 1186 def DefaultIndexPackConfig(url=''): | 1190 def DefaultIndexPackConfig(url=''): |
| 1187 """Return reasonable default values for configuring git-index-pack. | 1191 """Return reasonable default values for configuring git-index-pack. |
| 1188 | 1192 |
| 1189 Experiments suggest that higher values for pack.threads don't improve | 1193 Experiments suggest that higher values for pack.threads don't improve |
| 1190 performance.""" | 1194 performance.""" |
| 1191 cache_limit = DefaultDeltaBaseCacheLimit() | 1195 cache_limit = DefaultDeltaBaseCacheLimit() |
| 1192 result = ['-c', 'core.deltaBaseCacheLimit=%s' % cache_limit] | 1196 result = ['-c', 'core.deltaBaseCacheLimit=%s' % cache_limit] |
| 1193 if url in THREADED_INDEX_PACK_BLACKLIST: | 1197 if url in THREADED_INDEX_PACK_BLACKLIST: |
| 1194 result.extend(['-c', 'pack.threads=1']) | 1198 result.extend(['-c', 'pack.threads=1']) |
| 1195 return result | 1199 return result |
| 1200 |
| 1201 |
| 1202 def FindExecutable(executable): |
| 1203 """This mimics the "which" utility.""" |
| 1204 path_folders = os.environ.get('PATH').split(os.pathsep) |
| 1205 |
| 1206 for path_folder in path_folders: |
| 1207 target = os.path.join(path_folder, executable) |
| 1208 # Just incase we have some ~/blah paths. |
| 1209 target = os.path.abspath(os.path.expanduser(target)) |
| 1210 if os.path.isfile(target) and os.access(target, os.X_OK): |
| 1211 return target |
| 1212 if sys.platform.startswith('win'): |
| 1213 for suffix in ('.bat', '.cmd', '.exe'): |
| 1214 alt_target = target + suffix |
| 1215 if os.path.isfile(alt_target) and os.access(alt_target, os.X_OK): |
| 1216 return alt_target |
| 1217 return None |
| OLD | NEW |