2016-03-12 13:50:43 -05:00
|
|
|
#!/usr/bin/python -u
|
|
|
|
|
2016-06-12 09:45:57 -04:00
|
|
|
import multiprocessing
|
2016-03-12 13:50:43 -05:00
|
|
|
import os
|
2016-06-12 09:45:57 -04:00
|
|
|
import platform
|
2016-03-12 13:50:43 -05:00
|
|
|
import shutil
|
2016-06-05 08:07:04 -04:00
|
|
|
import stat
|
2016-03-12 13:50:43 -05:00
|
|
|
import subprocess
|
|
|
|
import sys
|
|
|
|
|
2016-03-12 14:19:03 -05:00
|
|
|
# Disable buffering.
|
|
|
|
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
|
|
|
|
|
2016-03-12 13:50:43 -05:00
|
|
|
if len(sys.argv) == 1:
|
|
|
|
kWork = os.path.join('deps', sys.platform)
|
|
|
|
elif len(sys.argv) == 2:
|
|
|
|
kWork = sys.argv[1]
|
|
|
|
|
|
|
|
if not os.path.isdir(kWork):
|
|
|
|
os.makedirs(kWork)
|
|
|
|
os.chdir(kWork)
|
|
|
|
|
|
|
|
kUvRepository = 'https://github.com/libuv/libuv.git'
|
2016-06-04 16:11:37 -04:00
|
|
|
kUvBranch = 'v1.9.1'
|
2016-03-12 13:50:43 -05:00
|
|
|
kUvWork = 'uv'
|
|
|
|
|
|
|
|
kV8Repository = 'https://github.com/v8/v8.git'
|
2016-09-03 16:46:09 -04:00
|
|
|
kV8Branch = 'branch-heads/5.3'
|
2016-03-12 13:50:43 -05:00
|
|
|
kV8Work = 'v8'
|
|
|
|
|
2016-06-12 09:45:57 -04:00
|
|
|
cores = multiprocessing.cpu_count()
|
|
|
|
if platform.machine() == 'armv7l':
|
|
|
|
cores = 1
|
|
|
|
print 'Using', cores, 'cores.'
|
|
|
|
|
2016-03-19 16:02:11 -04:00
|
|
|
def run(*args, **kw):
|
|
|
|
print 'Running:', args, kw
|
|
|
|
subprocess.check_call(*args, **kw)
|
|
|
|
|
2016-06-05 08:07:04 -04:00
|
|
|
def makeWritableAndRetry(function, path, exc_info):
|
|
|
|
if not os.access(path, os.W_OK):
|
|
|
|
os.chmod(path, stat.S_IWUSR)
|
|
|
|
function(path)
|
|
|
|
else:
|
|
|
|
raise
|
|
|
|
|
2016-03-12 13:50:43 -05:00
|
|
|
def updateUv():
|
|
|
|
print 'libuv'
|
|
|
|
print
|
|
|
|
clean = False
|
|
|
|
|
|
|
|
if os.path.exists(os.path.join(kUvWork, '.update-deps-branch')):
|
|
|
|
haveBranch = open(os.path.join(kUvWork, '.update-deps-branch'), 'r').read().strip()
|
|
|
|
if kUvBranch != haveBranch:
|
|
|
|
print haveBranch, '=>', kUvBranch
|
|
|
|
clean = True
|
|
|
|
else:
|
|
|
|
clean = True
|
|
|
|
|
|
|
|
if clean:
|
|
|
|
if os.path.isdir(os.path.join(kUvWork)):
|
|
|
|
print 'Cleaning', kUvWork
|
2016-06-05 08:07:04 -04:00
|
|
|
shutil.rmtree(os.path.join(kUvWork), onerror=makeWritableAndRetry)
|
2016-03-12 13:50:43 -05:00
|
|
|
if not os.path.isdir(kUvWork):
|
2016-03-19 16:02:11 -04:00
|
|
|
run(['git', 'clone', '--branch', kUvBranch, kUvRepository, kUvWork])
|
2016-03-12 13:50:43 -05:00
|
|
|
open(os.path.join(kUvWork, '.update-deps-branch'), 'w').write(kUvBranch)
|
|
|
|
if sys.platform in ('darwin', 'win32'):
|
|
|
|
if not os.path.isdir(os.path.join(kUvWork, 'build', 'gyp')):
|
2016-03-19 16:02:11 -04:00
|
|
|
run(['git', 'clone', 'https://chromium.googlesource.com/external/gyp.git', 'build/gyp'], cwd=kUvWork)
|
2016-03-12 13:50:43 -05:00
|
|
|
|
|
|
|
if sys.platform == 'linux2':
|
2016-03-19 16:02:11 -04:00
|
|
|
run(['./gyp_uv.py', '-f', 'make'], cwd=kUvWork)
|
2016-06-12 09:45:57 -04:00
|
|
|
run(['make', '-j' + str(cores), '-C', 'out'], cwd=kUvWork)
|
2016-03-12 13:50:43 -05:00
|
|
|
elif sys.platform == 'darwin':
|
2016-03-19 16:02:11 -04:00
|
|
|
run(['./gyp_uv.py', '-f', 'xcode'], cwd=kUvWork)
|
|
|
|
run(['xcodebuild', '-ARCHS="x86_64"', '-project', 'uv.xcodeproj', '-configuration', 'Release', '-target', 'All'], cwd=kUvWork)
|
2016-03-12 13:50:43 -05:00
|
|
|
elif sys.platform == 'win32':
|
|
|
|
env = os.environ.copy()
|
|
|
|
env['VCINSTALLDIR'] = ''
|
|
|
|
env['WINDOWSSDKDIR'] = ''
|
2016-03-19 16:02:11 -04:00
|
|
|
run(['cmd', '/C', 'call', 'vcbuild.bat', 'release', 'x64'], cwd=kUvWork, env=env)
|
2016-03-12 13:50:43 -05:00
|
|
|
|
|
|
|
def updateV8():
|
|
|
|
print 'v8'
|
|
|
|
print
|
|
|
|
clean = False
|
|
|
|
|
|
|
|
if False:
|
|
|
|
if os.path.exists(os.path.join(kV8Work, '.update-deps-branch')):
|
|
|
|
haveBranch = open(os.path.join(kV8Work, '.update-deps-branch'), 'r').read().strip()
|
|
|
|
if kV8Branch != haveBranch:
|
|
|
|
print haveBranch, '=>', kV8Branch
|
|
|
|
clean = True
|
|
|
|
else:
|
|
|
|
clean = True
|
|
|
|
|
|
|
|
if clean:
|
|
|
|
if os.path.isdir(kV8Work):
|
2016-06-05 08:07:04 -04:00
|
|
|
shutil.rmtree(kV8Work, onerror=makeWritableAndRetry)
|
2016-03-12 13:50:43 -05:00
|
|
|
|
2016-03-20 10:08:04 -04:00
|
|
|
if True or sys.platform == 'linux2':
|
2016-03-20 10:00:11 -04:00
|
|
|
# XXX Modify this one .py file which assumes things that conflict with my debian environment.
|
|
|
|
if os.path.isfile(os.path.join(kV8Work, 'tools/swarming_client/third_party/requests/packages/urllib3/contrib/pyopenssl.py')):
|
|
|
|
print 'resetting tools/swarming_client'
|
|
|
|
print run(['git', 'checkout', '.'], cwd=os.path.join(kV8Work, 'tools', 'swarming_client'))
|
2016-03-12 13:50:43 -05:00
|
|
|
|
|
|
|
extension = ''
|
|
|
|
if sys.platform == 'win32':
|
|
|
|
extension = '.bat'
|
|
|
|
if not os.path.isdir(kV8Work):
|
2016-03-19 16:02:11 -04:00
|
|
|
run(['fetch' + extension, 'v8'])
|
2016-03-12 13:50:43 -05:00
|
|
|
|
|
|
|
win32Env = os.environ.copy()
|
|
|
|
win32Env['DEPOT_TOOLS_WIN_TOOLCHAIN'] = '0'
|
2016-09-10 15:45:28 -04:00
|
|
|
win32Env['GYP_MSVS_VERSION'] = '2015'
|
2016-03-12 13:50:43 -05:00
|
|
|
|
|
|
|
open(os.path.join(kV8Work, '.update-deps-branch'), 'w').write(kV8Branch)
|
2016-03-19 16:02:11 -04:00
|
|
|
run(['git', 'fetch'], cwd=kV8Work)
|
|
|
|
run(['git', 'checkout', kV8Branch], cwd=kV8Work)
|
2016-03-12 13:50:43 -05:00
|
|
|
|
|
|
|
if sys.platform == 'win32':
|
2016-03-19 16:02:11 -04:00
|
|
|
run(['gclient' + extension, 'sync'], cwd=kV8Work, env=win32Env)
|
2016-03-12 13:50:43 -05:00
|
|
|
else:
|
2016-03-19 16:02:11 -04:00
|
|
|
run(['gclient' + extension, 'sync'], cwd=kV8Work)
|
2016-03-12 13:50:43 -05:00
|
|
|
|
|
|
|
if sys.platform == 'linux2':
|
2016-06-12 09:45:57 -04:00
|
|
|
run(['make', '-j' + str(cores), 'native'], cwd=kV8Work)
|
2016-03-12 13:50:43 -05:00
|
|
|
elif sys.platform == 'darwin':
|
2016-07-23 13:02:15 -04:00
|
|
|
run(['make', '-j' + str(cores), 'native'], cwd=kV8Work)
|
2016-03-12 13:50:43 -05:00
|
|
|
elif sys.platform == 'win32':
|
2016-09-19 08:53:51 -04:00
|
|
|
run(['gn', 'gen', 'out/native', '--args="is_component_build=true"'], cwd=kV8Work, env=win32Env)
|
|
|
|
run(['ninja', '-C', 'out/native'], cwd=kV8Work, env=win32Env)
|
2016-03-12 13:50:43 -05:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
updateUv()
|
|
|
|
updateV8()
|