Home | History | Annotate | Download | only in chromium-trace
      1 #!/usr/bin/env python
      2 
      3 import optparse
      4 import os
      5 import shutil
      6 import subprocess
      7 import sys
      8 
      9 upstream_git = 'https://github.com/catapult-project/catapult.git'
     10 PACKAGE_DIRS = [
     11     'common',
     12     'dependency_manager',
     13     'devil',
     14     'systrace',
     15     'third_party/pyserial',
     16     'third_party/zipfile',
     17     'tracing/tracing/trace_data',
     18 ]
     19 PACKAGE_FILES = [
     20     'tracing/tracing/__init__.py',
     21     'tracing/tracing_project.py',
     22 ]
     23 IGNORE_PATTERNS = ['OWNERS'] # doesn't make sense to sync owners files
     24 
     25 script_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
     26 catapult_src_dir = os.path.join(script_dir, 'catapult-upstream')
     27 catapult_dst_dir = os.path.join(script_dir, 'catapult')
     28 
     29 parser = optparse.OptionParser()
     30 parser.add_option('--local', dest='local_dir', metavar='DIR',
     31                   help='use a local catapult')
     32 parser.add_option('--no-min', dest='no_min', default=False, action='store_true',
     33                   help='skip minification')
     34 options, args = parser.parse_args()
     35 
     36 ## Update the source if needed.
     37 if options.local_dir is None:
     38   # Remove the old source tree.
     39   shutil.rmtree(catapult_src_dir, True)
     40 
     41   # Pull the latest source from the upstream git.
     42   git_args = ['git', 'clone', upstream_git, catapult_src_dir]
     43   p = subprocess.Popen(git_args, stdout=subprocess.PIPE, cwd=script_dir)
     44   p.communicate()
     45   if p.wait() != 0:
     46     print 'Failed to checkout source from upstream git.'
     47     sys.exit(1)
     48 
     49   catapult_git_dir = os.path.join(catapult_src_dir, '.git')
     50   # Update the UPSTREAM_REVISION file
     51   git_args = ['git', 'rev-parse', 'HEAD']
     52   p = subprocess.Popen(git_args,
     53                        stdout=subprocess.PIPE,
     54                        cwd=catapult_src_dir,
     55                        env={"GIT_DIR":catapult_git_dir})
     56   out, err = p.communicate()
     57   if p.wait() != 0:
     58     print 'Failed to get revision.'
     59     sys.exit(1)
     60 
     61   shutil.rmtree(catapult_git_dir, True)
     62 
     63   rev = out.strip()
     64   with open('UPSTREAM_REVISION', 'wt') as f:
     65     f.write(rev + '\n')
     66 else:
     67   catapult_src_dir = options.local_dir
     68 
     69 
     70 ## Update systrace_trace_viewer.html
     71 systrace_dir = os.path.join(catapult_src_dir, 'systrace', 'systrace')
     72 sys.path.append(systrace_dir)
     73 import update_systrace_trace_viewer
     74 update_systrace_trace_viewer.update(no_auto_update=True, no_min=options.no_min)
     75 
     76 ## Package the result
     77 shutil.rmtree(catapult_dst_dir)
     78 
     79 for d in PACKAGE_DIRS:
     80   src = os.path.join(catapult_src_dir, d)
     81   dst = os.path.join(catapult_dst_dir, d)
     82 
     83   # make parent dir by creating dst + ancestors, and deleting dst
     84   if not os.path.isdir(dst):
     85     os.makedirs(dst)
     86   shutil.rmtree(dst)
     87 
     88   # copy tree
     89   shutil.copytree(src, dst, ignore=shutil.ignore_patterns(*IGNORE_PATTERNS))
     90 
     91 for f in PACKAGE_FILES:
     92   src = os.path.join(catapult_src_dir, f)
     93   dst = os.path.join(catapult_dst_dir, f)
     94   shutil.copy(src, dst)
     95