7de307a64f
Really I just want the Mac binary, but Linux kind of comes along for free. (It'd work for Windows too if there were arm64 GN binaries.) Python2 calls Linux 'linux2', while Python3 calls it 'linux'. Change-Id: I8ef3d482a956acfe6b1eec3d7b5429b25c528c54 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/354556 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Mike Klein <mtklein@google.com>
49 lines
1.5 KiB
Python
Executable File
49 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
# Copyright 2016 Google Inc.
|
|
#
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import os
|
|
import platform
|
|
import shutil
|
|
import stat
|
|
import sys
|
|
import tempfile
|
|
import zipfile
|
|
|
|
if sys.version_info[0] < 3:
|
|
from urllib2 import urlopen
|
|
else:
|
|
from urllib.request import urlopen
|
|
|
|
os.chdir(os.path.join(os.path.dirname(__file__), os.pardir))
|
|
|
|
gnzip = os.path.join(tempfile.mkdtemp(), 'gn.zip')
|
|
with open(gnzip, 'wb') as f:
|
|
OS = {'darwin': 'mac', 'linux': 'linux', 'linux2': 'linux', 'win32': 'windows'}[sys.platform]
|
|
cpu = {'amd64': 'amd64', 'arm64': 'arm64', 'x86_64': 'amd64'}[platform.machine().lower()]
|
|
|
|
rev = 'd62642c920e6a0d1756316d225a90fd6faa9e21e'
|
|
url = 'https://chrome-infra-packages.appspot.com/dl/gn/gn/{}-{}/+/git_revision:{}'.format(
|
|
OS,cpu,rev)
|
|
f.write(urlopen(url).read())
|
|
|
|
gn = 'gn.exe' if 'win32' in sys.platform else 'gn'
|
|
with zipfile.ZipFile(gnzip, 'r') as f:
|
|
f.extract(gn, 'bin')
|
|
|
|
gn = os.path.join('bin', gn)
|
|
|
|
os.chmod(gn, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
|
|
stat.S_IRGRP | stat.S_IXGRP |
|
|
stat.S_IROTH | stat.S_IXOTH )
|
|
|
|
# We'll also copy to a path that depot_tools' GN wrapper will expect to find the binary.
|
|
copy_path = 'buildtools/linux64/gn' if 'linux' in sys.platform else \
|
|
'buildtools/mac/gn' if 'darwin' in sys.platform else \
|
|
'buildtools/win/gn.exe'
|
|
if os.path.isdir(os.path.dirname(copy_path)):
|
|
shutil.copy(gn, copy_path)
|