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

Side by Side Diff: gclient_utils.py

Issue 538393002: Make gn.py support root directories other than 'src'. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Improved readability and returning non-zero exit code on failure to find gn Created 6 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | gn.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 663 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 top_dir[0] = os.path.normpath(line.rstrip('\n')) 674 top_dir[0] = os.path.normpath(line.rstrip('\n'))
675 try: 675 try:
676 CheckCallAndFilter(["git", "rev-parse", "--show-toplevel"], 676 CheckCallAndFilter(["git", "rev-parse", "--show-toplevel"],
677 print_stdout=False, filter_fn=filter_fn) 677 print_stdout=False, filter_fn=filter_fn)
678 except Exception: 678 except Exception:
679 pass 679 pass
680 top_dir = top_dir[0] 680 top_dir = top_dir[0]
681 if os.path.exists(os.path.join(top_dir, 'buildtools')): 681 if os.path.exists(os.path.join(top_dir, 'buildtools')):
682 return os.path.join(top_dir, 'buildtools') 682 return os.path.join(top_dir, 'buildtools')
683 return None 683 return None
684 return os.path.join(gclient_root, 'src', 'buildtools') 684
685 # Some projects' top directory is not named 'src'.
686 source_dir_name = GetGClientPrimarySolutionName(gclient_root) or 'src'
687 return os.path.join(gclient_root, source_dir_name, 'buildtools')
685 688
686 689
687 def GetBuildtoolsPlatformBinaryPath(): 690 def GetBuildtoolsPlatformBinaryPath():
688 """Returns the full path to the binary directory for the current platform.""" 691 """Returns the full path to the binary directory for the current platform."""
689 # Mac and Windows just have one directory, Linux has two according to whether 692 # Mac and Windows just have one directory, Linux has two according to whether
690 # it's 32 or 64 bits. 693 # it's 32 or 64 bits.
691 buildtools_path = GetBuildtoolsPath() 694 buildtools_path = GetBuildtoolsPath()
692 if not buildtools_path: 695 if not buildtools_path:
693 return None 696 return None
694 697
(...skipping 11 matching lines...) Expand all
706 return os.path.join(buildtools_path, subdir) 709 return os.path.join(buildtools_path, subdir)
707 710
708 711
709 def GetExeSuffix(): 712 def GetExeSuffix():
710 """Returns '' or '.exe' depending on how executables work on this platform.""" 713 """Returns '' or '.exe' depending on how executables work on this platform."""
711 if sys.platform.startswith(('cygwin', 'win')): 714 if sys.platform.startswith(('cygwin', 'win')):
712 return '.exe' 715 return '.exe'
713 return '' 716 return ''
714 717
715 718
719 def GetGClientPrimarySolutionName(gclient_root_dir_path):
720 """Returns the name of the primary solution in the .gclient file specified."""
721 gclient_config_file = os.path.join(gclient_root_dir_path, '.gclient')
722 env = {}
723 execfile(gclient_config_file, env)
724 solutions = env.get('solutions', [])
725 if solutions:
726 return solutions[0].get('name')
727 return None
728
729
716 def GetGClientRootAndEntries(path=None): 730 def GetGClientRootAndEntries(path=None):
717 """Returns the gclient root and the dict of entries.""" 731 """Returns the gclient root and the dict of entries."""
718 config_file = '.gclient_entries' 732 config_file = '.gclient_entries'
719 root = FindFileUpwards(config_file, path) 733 root = FindFileUpwards(config_file, path)
720 if not root: 734 if not root:
721 print "Can't find %s" % config_file 735 print "Can't find %s" % config_file
722 return None 736 return None
723 config_path = os.path.join(root, config_file) 737 config_path = os.path.join(root, config_file)
724 env = {} 738 env = {}
725 execfile(config_path, env) 739 execfile(config_path, env)
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
1141 def DefaultIndexPackConfig(url=''): 1155 def DefaultIndexPackConfig(url=''):
1142 """Return reasonable default values for configuring git-index-pack. 1156 """Return reasonable default values for configuring git-index-pack.
1143 1157
1144 Experiments suggest that higher values for pack.threads don't improve 1158 Experiments suggest that higher values for pack.threads don't improve
1145 performance.""" 1159 performance."""
1146 cache_limit = DefaultDeltaBaseCacheLimit() 1160 cache_limit = DefaultDeltaBaseCacheLimit()
1147 result = ['-c', 'core.deltaBaseCacheLimit=%s' % cache_limit] 1161 result = ['-c', 'core.deltaBaseCacheLimit=%s' % cache_limit]
1148 if url in THREADED_INDEX_PACK_BLACKLIST: 1162 if url in THREADED_INDEX_PACK_BLACKLIST:
1149 result.extend(['-c', 'pack.threads=1']) 1163 result.extend(['-c', 'pack.threads=1'])
1150 return result 1164 return result
OLDNEW
« no previous file with comments | « no previous file | gn.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698