Change clang_format.py to search for clang-format in buildtools

BUG=none
R=brettw@chromium.org,nick@chromium.org

Review URL: https://codereview.chromium.org/356733002

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@280971 0039d316-1c4b-4281-b951-d872f2087c98
changes/01/332501/1
jochen@chromium.org 11 years ago
parent 76ce73c726
commit aaee92f1ec

@ -23,22 +23,14 @@ class NotFoundError(Exception):
' %s' % e) ' %s' % e)
def _FindChromiumSourceRoot():
"""Return the source root of the current chromium checkout, or die trying."""
# The use of .gn is somewhat incongruous here, but we need a file uniquely
# existing at src/. GN does the same thing at least.
source_root = gclient_utils.FindFileUpwards('.gn')
if not source_root:
raise NotFoundError(
'.gn file not found in any parent of the current path.')
return source_root
def FindClangFormatToolInChromiumTree(): def FindClangFormatToolInChromiumTree():
"""Return a path to the clang-format executable, or die trying.""" """Return a path to the clang-format executable, or die trying."""
tool_path = os.path.join(_FindChromiumSourceRoot(), 'third_party', bin_path = gclient_utils.GetBuildtoolsPlatformBinaryPath()
'clang_format', 'bin', if not bin_path:
gclient_utils.GetMacWinOrLinux(), raise NotFoundError(
'Could not find checkout in any parent of the current path.')
tool_path = os.path.join(bin_path,
'clang-format' + gclient_utils.GetExeSuffix()) 'clang-format' + gclient_utils.GetExeSuffix())
if not os.path.exists(tool_path): if not os.path.exists(tool_path):
raise NotFoundError('File does not exist: %s' % tool_path) raise NotFoundError('File does not exist: %s' % tool_path)
@ -47,8 +39,11 @@ def FindClangFormatToolInChromiumTree():
def FindClangFormatScriptInChromiumTree(script_name): def FindClangFormatScriptInChromiumTree(script_name):
"""Return a path to a clang-format helper script, or die trying.""" """Return a path to a clang-format helper script, or die trying."""
script_path = os.path.join(_FindChromiumSourceRoot(), 'third_party', tools_path = gclient_utils.GetBuildtoolsPath()
'clang_format', 'script', script_name) if not tools_path:
raise NotFoundError(
'Could not find checkout in any parent of the current path.')
script_path = os.path.join(tools_path, 'clang_format', 'script', script_name)
if not os.path.exists(script_path): if not os.path.exists(script_path):
raise NotFoundError('File does not exist: %s' % script_path) raise NotFoundError('File does not exist: %s' % script_path)
return script_path return script_path

@ -655,6 +655,19 @@ def GetBuildtoolsPath():
This is based on the root of the checkout containing the current directory.""" This is based on the root of the checkout containing the current directory."""
gclient_root = FindGclientRoot(os.getcwd()) gclient_root = FindGclientRoot(os.getcwd())
if not gclient_root: if not gclient_root:
# Some projects might not use .gclient. Try to see whether we're in a git
# checkout.
top_dir = [os.getcwd()]
def filter_fn(line):
top_dir[0] = os.path.normpath(line.rstrip('\n'))
try:
CheckCallAndFilter(["git", "rev-parse", "--show-toplevel"],
print_stdout=False, filter_fn=filter_fn)
except Exception:
pass
top_dir = top_dir[0]
if os.path.exists(os.path.join(top_dir, 'buildtools')):
return os.path.join(top_dir, 'buildtools')
return None return None
return os.path.join(gclient_root, 'src', 'buildtools') return os.path.join(gclient_root, 'src', 'buildtools')

Loading…
Cancel
Save