blob: e54ffbe0e9d0938d86da970d66b62e88e944f189 [file] [log] [blame]
Chris Craikb122baf2015-03-05 13:58:42 -08001#!/usr/bin/env python
Jamie Gennisd1270ce2012-05-06 13:27:13 -07002
Chris Craik576fd2a2017-06-02 13:39:51 -07003import optparse
4import os
5import shutil
6import subprocess
7import sys
Jamie Gennisd1270ce2012-05-06 13:27:13 -07008
Dan Sinclaircfc706a2015-08-17 14:04:28 -04009upstream_git = 'https://github.com/catapult-project/catapult.git'
Chris Craik576fd2a2017-06-02 13:39:51 -070010PACKAGE_DIRS = [
11 'common',
12 'dependency_manager',
13 'devil',
14 'systrace',
15 'third_party/pyserial',
16 'third_party/zipfile',
17 'tracing/tracing/trace_data',
18]
19PACKAGE_FILES = [
20 'tracing/tracing/__init__.py',
21 'tracing/tracing_project.py',
22]
Chris Craik5f019af2017-02-21 17:11:58 -080023IGNORE_PATTERNS = ['OWNERS'] # doesn't make sense to sync owners files
Jamie Gennis2da489c2012-09-19 18:06:29 -070024
25script_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
John Reckee838d12016-10-19 08:18:32 -070026catapult_src_dir = os.path.join(script_dir, 'catapult-upstream')
27catapult_dst_dir = os.path.join(script_dir, 'catapult')
Jamie Gennis2da489c2012-09-19 18:06:29 -070028
Jamie Gennis69073772012-09-20 12:14:58 -070029parser = optparse.OptionParser()
30parser.add_option('--local', dest='local_dir', metavar='DIR',
Zhen Wang46b43bf2015-08-28 09:54:29 -070031 help='use a local catapult')
Jamie Gennis69073772012-09-20 12:14:58 -070032parser.add_option('--no-min', dest='no_min', default=False, action='store_true',
33 help='skip minification')
34options, args = parser.parse_args()
Jamie Gennis2da489c2012-09-19 18:06:29 -070035
Chris Craik576fd2a2017-06-02 13:39:51 -070036## Update the source if needed.
Jamie Gennis69073772012-09-20 12:14:58 -070037if options.local_dir is None:
Chris Craikb122baf2015-03-05 13:58:42 -080038 # Remove the old source tree.
John Reckee838d12016-10-19 08:18:32 -070039 shutil.rmtree(catapult_src_dir, True)
Jamie Gennis2da489c2012-09-19 18:06:29 -070040
Chris Craikbeca7ae2015-04-07 13:29:55 -070041 # Pull the latest source from the upstream git.
John Reckee838d12016-10-19 08:18:32 -070042 git_args = ['git', 'clone', upstream_git, catapult_src_dir]
Chris Craikb122baf2015-03-05 13:58:42 -080043 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.'
Jamie Gennis69073772012-09-20 12:14:58 -070047 sys.exit(1)
48
John Reckee838d12016-10-19 08:18:32 -070049 catapult_git_dir = os.path.join(catapult_src_dir, '.git')
Jamie Gennis69073772012-09-20 12:14:58 -070050 # Update the UPSTREAM_REVISION file
Chris Craikb122baf2015-03-05 13:58:42 -080051 git_args = ['git', 'rev-parse', 'HEAD']
Chris Craik51b76352015-06-11 15:03:53 -070052 p = subprocess.Popen(git_args,
53 stdout=subprocess.PIPE,
John Reckee838d12016-10-19 08:18:32 -070054 cwd=catapult_src_dir,
Zhen Wang46b43bf2015-08-28 09:54:29 -070055 env={"GIT_DIR":catapult_git_dir})
Chris Craikb122baf2015-03-05 13:58:42 -080056 out, err = p.communicate()
57 if p.wait() != 0:
58 print 'Failed to get revision.'
59 sys.exit(1)
60
Zhen Wang46b43bf2015-08-28 09:54:29 -070061 shutil.rmtree(catapult_git_dir, True)
Chris Craik51b76352015-06-11 15:03:53 -070062
Chris Craikb122baf2015-03-05 13:58:42 -080063 rev = out.strip()
64 with open('UPSTREAM_REVISION', 'wt') as f:
65 f.write(rev + '\n')
Jamie Gennis69073772012-09-20 12:14:58 -070066else:
John Reckee838d12016-10-19 08:18:32 -070067 catapult_src_dir = options.local_dir
Jamie Gennis2da489c2012-09-19 18:06:29 -070068
Chris Craikb122baf2015-03-05 13:58:42 -080069
Chris Craik576fd2a2017-06-02 13:39:51 -070070## Update systrace_trace_viewer.html
John Reckee838d12016-10-19 08:18:32 -070071systrace_dir = os.path.join(catapult_src_dir, 'systrace', 'systrace')
Zhen Wang46b43bf2015-08-28 09:54:29 -070072sys.path.append(systrace_dir)
73import update_systrace_trace_viewer
74update_systrace_trace_viewer.update(no_auto_update=True, no_min=options.no_min)
John Reckee838d12016-10-19 08:18:32 -070075
Chris Craik576fd2a2017-06-02 13:39:51 -070076## Package the result
John Reckee838d12016-10-19 08:18:32 -070077shutil.rmtree(catapult_dst_dir)
Chris Craik576fd2a2017-06-02 13:39:51 -070078
John Reckee838d12016-10-19 08:18:32 -070079for d in PACKAGE_DIRS:
Chris Craik576fd2a2017-06-02 13:39:51 -070080 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
91for 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)