git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3279 ed5197a5-7fde-0310-b194-c3ffbd925b24
		
			
				
	
	
		
			137 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/python -u
 | 
						|
 | 
						|
import multiprocessing
 | 
						|
import os
 | 
						|
import platform
 | 
						|
import shutil
 | 
						|
import stat
 | 
						|
import subprocess
 | 
						|
import sys
 | 
						|
 | 
						|
# Disable buffering.
 | 
						|
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
 | 
						|
 | 
						|
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'
 | 
						|
kUvBranch = 'v1.9.1'
 | 
						|
kUvWork = 'uv'
 | 
						|
 | 
						|
kV8Repository = 'https://github.com/v8/v8.git'
 | 
						|
kV8Branch = 'branch-heads/5.2'
 | 
						|
kV8Work = 'v8'
 | 
						|
 | 
						|
cores = multiprocessing.cpu_count()
 | 
						|
if platform.machine() == 'armv7l':
 | 
						|
	cores = 1
 | 
						|
print 'Using', cores, 'cores.'
 | 
						|
 | 
						|
def run(*args, **kw):
 | 
						|
	print 'Running:', args, kw
 | 
						|
	subprocess.check_call(*args, **kw)
 | 
						|
 | 
						|
def makeWritableAndRetry(function, path, exc_info):
 | 
						|
	if not os.access(path, os.W_OK):
 | 
						|
		os.chmod(path, stat.S_IWUSR)
 | 
						|
		function(path)
 | 
						|
	else:
 | 
						|
		raise
 | 
						|
 | 
						|
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
 | 
						|
			shutil.rmtree(os.path.join(kUvWork), onerror=makeWritableAndRetry)
 | 
						|
	if not os.path.isdir(kUvWork):
 | 
						|
		run(['git', 'clone', '--branch', kUvBranch, kUvRepository, kUvWork])
 | 
						|
	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')):
 | 
						|
			run(['git', 'clone', 'https://chromium.googlesource.com/external/gyp.git', 'build/gyp'], cwd=kUvWork)
 | 
						|
 | 
						|
	if sys.platform == 'linux2':
 | 
						|
		run(['./gyp_uv.py', '-f', 'make'], cwd=kUvWork)
 | 
						|
		run(['make', '-j' + str(cores), '-C', 'out'], cwd=kUvWork)
 | 
						|
	elif sys.platform == 'darwin':
 | 
						|
		run(['./gyp_uv.py', '-f', 'xcode'], cwd=kUvWork)
 | 
						|
		run(['xcodebuild', '-ARCHS="x86_64"', '-project', 'uv.xcodeproj', '-configuration', 'Release', '-target', 'All'], cwd=kUvWork)
 | 
						|
	elif sys.platform == 'win32':
 | 
						|
		env = os.environ.copy()
 | 
						|
		env['VCINSTALLDIR'] = ''
 | 
						|
		env['WINDOWSSDKDIR'] = ''
 | 
						|
		run(['cmd', '/C', 'call', 'vcbuild.bat', 'release', 'x64'], cwd=kUvWork, env=env)
 | 
						|
 | 
						|
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):
 | 
						|
			shutil.rmtree(kV8Work, onerror=makeWritableAndRetry)
 | 
						|
 | 
						|
	if True or sys.platform == 'linux2':
 | 
						|
		# 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'))
 | 
						|
 | 
						|
	extension = ''
 | 
						|
	if sys.platform == 'win32':
 | 
						|
		extension = '.bat'
 | 
						|
	if not os.path.isdir(kV8Work):
 | 
						|
		run(['fetch' + extension, 'v8'])
 | 
						|
 | 
						|
	win32Env = os.environ.copy()
 | 
						|
	win32Env['DEPOT_TOOLS_WIN_TOOLCHAIN'] = '0'
 | 
						|
 | 
						|
	open(os.path.join(kV8Work, '.update-deps-branch'), 'w').write(kV8Branch)
 | 
						|
	run(['git', 'fetch'], cwd=kV8Work)
 | 
						|
	run(['git', 'checkout', kV8Branch], cwd=kV8Work)
 | 
						|
 | 
						|
	if sys.platform == 'win32':
 | 
						|
		run(['gclient' + extension, 'sync'], cwd=kV8Work, env=win32Env)
 | 
						|
	else:
 | 
						|
		run(['gclient' + extension, 'sync'], cwd=kV8Work)
 | 
						|
 | 
						|
	if sys.platform == 'linux2':
 | 
						|
		run(['make', '-j' + str(cores), 'native'], cwd=kV8Work)
 | 
						|
	elif sys.platform == 'darwin':
 | 
						|
		run(['build/gyp_v8', '-Dtarget_arch=x64'], cwd=kV8Work)
 | 
						|
		run(['xcodebuild', '-project', 'build/all.xcodeproj', '-configuration', 'Release'], cwd=kV8Work)
 | 
						|
	elif sys.platform == 'win32':
 | 
						|
		run(['python', 'build\\gyp_v8', '-Dtarget_arch=x64'], cwd=kV8Work, env=win32Env)
 | 
						|
		run(['devenv.com', '/Build', 'Release', 'build\\All.sln'], cwd=kV8Work)
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
	updateUv()
 | 
						|
	updateV8()
 |