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