Commit cc968feb authored by brettw@chromium.org's avatar brettw@chromium.org

Make gn wrapper use the one in buildtools rather than tools/gn/bin.

This updates some infrastructure to make it easy to get at the platform-specific build tools directories.

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@279132 0039d316-1c4b-4281-b951-d872f2087c98
parent 2b7d3ed2
......@@ -650,6 +650,37 @@ def GetMacWinOrLinux():
raise Error('Unknown platform: ' + sys.platform)
def GetBuildtoolsPath():
"""Returns the full path to the buildtools directory.
This is based on the root of the checkout containing the current directory."""
gclient_root = FindGclientRoot(os.getcwd())
if not gclient_root:
return None
return os.path.join(gclient_root, 'src', 'buildtools')
def GetBuildtoolsPlatformBinaryPath():
"""Returns the full path to the binary directory for the current platform."""
# Mac and Windows just have one directory, Linux has two according to whether
# it's 32 or 64 bits.
buildtools_path = GetBuildtoolsPath()
if not buildtools_path:
return None
if sys.platform.startswith(('cygwin', 'win')):
subdir = 'win'
elif sys.platform == 'darwin':
subdir = 'mac'
elif sys.platform.startswith('linux'):
if sys.maxsize > 2**32:
subdir = 'linux64'
else:
subdir = 'linux32'
else:
raise Error('Unknown platform: ' + sys.platform)
return os.path.join(buildtools_path, subdir)
def GetExeSuffix():
"""Returns '' or '.exe' depending on how executables work on this platform."""
if sys.platform.startswith(('cygwin', 'win')):
......
......@@ -18,32 +18,15 @@ import subprocess
import sys
def RunGN(sourceroot):
# The binaries in platform-specific subdirectories in src/tools/gn/bin.
gnpath = os.path.join(sourceroot,
'tools', 'gn', 'bin', gclient_utils.GetMacWinOrLinux(),
'gn' + gclient_utils.GetExeSuffix())
return subprocess.call([gnpath] + sys.argv[1:])
def main(args):
for arg in sys.argv:
if arg.startswith('--root='):
sourceroot = arg.replace('--root=', '')
dotfile_path = os.path.join(sourceroot, '.gn')
if not os.path.exists(dotfile_path):
print >> sys.stderr, 'gn.py: "%s" not found, exiting.' % dotfile_path
sys.exit(1)
return RunGN(sourceroot)
sourceroot = gclient_utils.FindFileUpwards('.gn')
if not sourceroot:
print >> sys.stderr, ('gn.py: No .gn file found in any parent of '
'the current path.')
print >> sys.stderr, ('\nYou need to either be inside a checkout, '
'or use --root to specify the checkout root.')
bin_path = gclient_utils.GetBuildtoolsPlatformBinaryPath()
if not bin_path:
print >> sys.stderr, ('gn.py: Could not find checkout in any parent of '
'the current path.\nThis must be run inside a '
'checkout.')
sys.exit(1)
return RunGN(sourceroot)
gn_path = os.path.join(bin_path, 'gn' + gclient_utils.GetExeSuffix())
return subprocess.call([gn_path] + sys.argv[1:])
if __name__ == '__main__':
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment