blob: 7635ba63c6b2ed7f3013a8e92919cb25fb937782 [file] [log] [blame]
Søren Gjesse6d1934f2017-11-09 10:00:24 +01001#!/usr/bin/env python
2# Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
3# for details. All rights reserved. Use of this source code is governed by a
4# BSD-style license that can be found in the LICENSE file.
5
6import argparse
7import gradle
8import os
Søren Gjesse6d1934f2017-11-09 10:00:24 +01009from shutil import copyfile
Mads Ager14d9b072017-11-20 13:42:55 +010010import sys
11import tempfile
12import utils
13import urllib
14
Rico Wind03463d32018-01-22 10:44:00 +010015BUILD_ROOT = "http://storage.googleapis.com/r8-releases/raw/"
16MASTER_BUILD_ROOT = "%smaster/" % BUILD_ROOT
17
Mads Ager12a56bc2017-11-27 11:51:25 +010018JAR_TARGETS = [utils.D8, utils.R8, utils.COMPATDX, utils.COMPATPROGUARD]
19OTHER_TARGETS = ["LICENSE"]
Søren Gjesse6d1934f2017-11-09 10:00:24 +010020
21def parse_arguments():
22 parser = argparse.ArgumentParser(
23 description = 'Build and copy jars to an Android tree.')
24 parser.add_argument('android_root', nargs=1,
25 help='Android checkout root.')
Mads Ager14d9b072017-11-20 13:42:55 +010026 parser.add_argument('--commit_hash', default=None, help='Commit hash')
Rico Wind03463d32018-01-22 10:44:00 +010027 parser.add_argument('--version', default=None, help='The version to download')
Søren Gjesse6d1934f2017-11-09 10:00:24 +010028 return parser.parse_args()
29
Mads Ager12a56bc2017-11-27 11:51:25 +010030def copy_targets(root, target_root, srcs, dests):
31 for i in range(len(srcs)):
32 src = os.path.join(root, srcs[i])
33 dest = os.path.join(target_root, 'prebuilts', 'r8', dests[i])
Mads Ager14d9b072017-11-20 13:42:55 +010034 print 'Copying: ' + src + ' -> ' + dest
35 copyfile(src, dest)
36
Mads Ager12a56bc2017-11-27 11:51:25 +010037def copy_jar_targets(root, target_root):
38 srcs = map((lambda t: t + '.jar'), JAR_TARGETS)
39 dests = map((lambda t: t + '-master.jar'), JAR_TARGETS)
40 copy_targets(root, target_root, srcs, dests)
41
42def copy_other_targets(root, target_root):
43 copy_targets(root, target_root, OTHER_TARGETS, OTHER_TARGETS)
44
Rico Wind03463d32018-01-22 10:44:00 +010045def download_hash(root, commit_hash, target):
Mads Ager12a56bc2017-11-27 11:51:25 +010046 url = MASTER_BUILD_ROOT + commit_hash + '/' + target
Rico Wind03463d32018-01-22 10:44:00 +010047 download_target(root, url, target)
48
49def download_version(root, version, target):
50 url = BUILD_ROOT + version + '/' + target
51 download_target(root, url, target)
52
53def download_target(root, url, target):
Mads Ager12a56bc2017-11-27 11:51:25 +010054 download_path = os.path.join(root, target)
55 print 'Downloading: ' + url + ' -> ' + download_path
Tamas Kenez6b5d3b82018-02-05 12:02:20 +010056 result = urllib.urlretrieve(url, download_path)
57 if 'X-GUploader-Request-Result: success' not in str(result[1]):
58 raise IOError('Failed to download ' + url)
Mads Ager12a56bc2017-11-27 11:51:25 +010059
Søren Gjesse6d1934f2017-11-09 10:00:24 +010060def Main():
61 args = parse_arguments()
Mads Ager14d9b072017-11-20 13:42:55 +010062 target_root = args.android_root[0]
Rico Wind03463d32018-01-22 10:44:00 +010063 if args.commit_hash == None and args.version == None:
Mads Ager12a56bc2017-11-27 11:51:25 +010064 gradle.RunGradle(JAR_TARGETS)
65 copy_jar_targets(utils.LIBS, target_root)
66 copy_other_targets(utils.GENERATED_LICENSE_DIR, target_root)
Mads Ager14d9b072017-11-20 13:42:55 +010067 else:
Rico Wind03463d32018-01-22 10:44:00 +010068 assert args.commit_hash == None or args.version == None
Mads Ager12a56bc2017-11-27 11:51:25 +010069 targets = map((lambda t: t + '.jar'), JAR_TARGETS) + OTHER_TARGETS
Mads Ager14d9b072017-11-20 13:42:55 +010070 with utils.TempDir() as root:
Mads Ager12a56bc2017-11-27 11:51:25 +010071 for target in targets:
Rico Wind03463d32018-01-22 10:44:00 +010072 if args.commit_hash:
73 download_hash(root, args.commit_hash, target)
74 else:
75 assert args.version
76 download_version(root, args.version, target)
Mads Ager12a56bc2017-11-27 11:51:25 +010077 copy_jar_targets(root, target_root)
78 copy_other_targets(root, target_root)
Søren Gjesse6d1934f2017-11-09 10:00:24 +010079
80if __name__ == '__main__':
81 sys.exit(Main())