You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.7 KiB
95 lines
2.7 KiB
#!/usr/bin/env python2
|
|
|
|
import optparse
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
|
|
upstream_git = 'https://github.com/catapult-project/catapult.git'
|
|
PACKAGE_DIRS = [
|
|
'common',
|
|
'dependency_manager',
|
|
'devil',
|
|
'systrace',
|
|
'third_party/pyserial',
|
|
'third_party/polymer',
|
|
'tracing/tracing/trace_data',
|
|
]
|
|
PACKAGE_FILES = [
|
|
'tracing/tracing/__init__.py',
|
|
'tracing/tracing_project.py',
|
|
]
|
|
IGNORE_PATTERNS = ['OWNERS'] # doesn't make sense to sync owners files
|
|
|
|
script_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
|
|
catapult_src_dir = os.path.join(script_dir, 'catapult-upstream')
|
|
catapult_dst_dir = os.path.join(script_dir, 'catapult')
|
|
|
|
parser = optparse.OptionParser()
|
|
parser.add_option('--local', dest='local_dir', metavar='DIR',
|
|
help='use a local catapult')
|
|
parser.add_option('--no-min', dest='no_min', default=False, action='store_true',
|
|
help='skip minification')
|
|
options, args = parser.parse_args()
|
|
|
|
## Update the source if needed.
|
|
if options.local_dir is None:
|
|
# Remove the old source tree.
|
|
shutil.rmtree(catapult_src_dir, True)
|
|
|
|
# Pull the latest source from the upstream git.
|
|
git_args = ['git', 'clone', upstream_git, catapult_src_dir]
|
|
p = subprocess.Popen(git_args, stdout=subprocess.PIPE, cwd=script_dir)
|
|
p.communicate()
|
|
if p.wait() != 0:
|
|
print 'Failed to checkout source from upstream git.'
|
|
sys.exit(1)
|
|
|
|
catapult_git_dir = os.path.join(catapult_src_dir, '.git')
|
|
# Update the UPSTREAM_REVISION file
|
|
git_args = ['git', 'rev-parse', 'HEAD']
|
|
p = subprocess.Popen(git_args,
|
|
stdout=subprocess.PIPE,
|
|
cwd=catapult_src_dir,
|
|
env={"GIT_DIR":catapult_git_dir})
|
|
out, err = p.communicate()
|
|
if p.wait() != 0:
|
|
print 'Failed to get revision.'
|
|
sys.exit(1)
|
|
|
|
shutil.rmtree(catapult_git_dir, True)
|
|
|
|
rev = out.strip()
|
|
with open('UPSTREAM_REVISION', 'wt') as f:
|
|
f.write(rev + '\n')
|
|
else:
|
|
catapult_src_dir = options.local_dir
|
|
|
|
|
|
## Update systrace_trace_viewer.html
|
|
systrace_dir = os.path.join(catapult_src_dir, 'systrace', 'systrace')
|
|
sys.path.append(systrace_dir)
|
|
import update_systrace_trace_viewer
|
|
update_systrace_trace_viewer.update(no_auto_update=True, no_min=options.no_min)
|
|
|
|
## Package the result
|
|
shutil.rmtree(catapult_dst_dir)
|
|
|
|
for d in PACKAGE_DIRS:
|
|
src = os.path.join(catapult_src_dir, d)
|
|
dst = os.path.join(catapult_dst_dir, d)
|
|
|
|
# make parent dir by creating dst + ancestors, and deleting dst
|
|
if not os.path.isdir(dst):
|
|
os.makedirs(dst)
|
|
shutil.rmtree(dst)
|
|
|
|
# copy tree
|
|
shutil.copytree(src, dst, ignore=shutil.ignore_patterns(*IGNORE_PATTERNS))
|
|
|
|
for f in PACKAGE_FILES:
|
|
src = os.path.join(catapult_src_dir, f)
|
|
dst = os.path.join(catapult_dst_dir, f)
|
|
shutil.copy(src, dst)
|