Add support for using source when using compile-dump and run_on_app
Change-Id: I19cad28813a443b5ce83c8188d793094086d715f
diff --git a/tools/compiledump.py b/tools/compiledump.py
index 48c596b..5919e3f 100755
--- a/tools/compiledump.py
+++ b/tools/compiledump.py
@@ -38,6 +38,7 @@
help='Compiler version to use (default read from dump version file).'
'Valid arguments are:'
' "master" to run from your own tree,'
+ ' "source" to run from build classes directly,'
' "X.Y.Z" to run a specific version, or'
' <hash> to run that hash from master.',
default=None)
@@ -209,6 +210,8 @@
def download_distribution(args, version, temp):
if version == 'master':
return utils.R8_JAR if args.nolib else utils.R8LIB_JAR
+ if version == 'source':
+ return '%s:%s' % (utils.BUILD_JAVA_MAIN_DIR, utils.ALL_DEPS_JAR)
name = 'r8.jar' if args.nolib else 'r8lib.jar'
source = archive.GetUploadDestination(version, name, is_hash(version))
dest = os.path.join(temp, 'r8.jar')
@@ -299,7 +302,7 @@
return 0
except subprocess.CalledProcessError, e:
print e.output
- if not args.nolib:
+ if not args.nolib and version != 'source':
stacktrace = os.path.join(temp, 'stacktrace')
open(stacktrace, 'w+').write(e.output)
local_map = utils.R8LIB_MAP if version == 'master' else None
diff --git a/tools/run_on_app_dump.py b/tools/run_on_app_dump.py
index 2cac8c2..5c7468d 100755
--- a/tools/run_on_app_dump.py
+++ b/tools/run_on_app_dump.py
@@ -369,6 +369,10 @@
return '-full' in shrinker
+def version_is_built_jar(version):
+ return version != 'master' and version != 'source'
+
+
def compute_size_of_dex_files_in_package(path):
dex_size = 0
z = zipfile.ZipFile(path, 'r')
@@ -386,6 +390,13 @@
return os.path.join(app_dir, app.dump_test)
+def get_r8_jar(options, temp_dir, shrinker):
+ if (options.version == 'source'):
+ return None
+ return os.path.join(
+ temp_dir, 'r8lib.jar' if is_minified_r8(shrinker) else 'r8.jar')
+
+
def get_results_for_app(app, options, temp_dir):
app_folder = app.folder if app.folder else app.name + "_" + app.revision
app_dir = os.path.join(utils.OPENSOURCE_DUMPS_DIR, app_folder)
@@ -527,14 +538,12 @@
def build_app_with_shrinker(app, options, temp_dir, app_dir, shrinker,
compilation_step_index, compilation_steps,
prev_recomp_jar):
- r8jar = os.path.join(
- temp_dir, 'r8lib.jar' if is_minified_r8(shrinker) else 'r8.jar')
args = AttrDict({
'dump': dump_for_app(app_dir, app),
- 'r8_jar': r8jar,
+ 'r8_jar': get_r8_jar(options, temp_dir, shrinker),
'ea': False if options.disable_assertions else True,
- 'version': 'master',
+ 'version': options.version,
'compiler': 'r8full' if is_full_r8(shrinker) else 'r8',
'debug_agent': options.debug_agent,
'program_jar': prev_recomp_jar,
@@ -574,8 +583,6 @@
def build_test_with_shrinker(app, options, temp_dir, app_dir, shrinker,
compilation_step_index, mapping):
- r8jar = os.path.join(
- temp_dir, 'r8lib.jar' if is_minified_r8(shrinker) else 'r8.jar')
def rewrite_file(file):
remove_print_lines(file)
@@ -589,9 +596,9 @@
args = AttrDict({
'dump': dump_test_for_app(app_dir, app),
- 'r8_jar': r8jar,
+ 'r8_jar': get_r8_jar(options, temp_dir, shrinker),
'ea': False if options.disable_assertions else True,
- 'version': 'master',
+ 'version': options.version,
'compiler': 'r8full' if is_full_r8(shrinker) else 'r8',
'debug_agent': options.debug_agent,
'nolib': not is_minified_r8(shrinker),
@@ -805,7 +812,7 @@
else:
options.shrinker = [shrinker for shrinker in SHRINKERS]
- if options.hash or options.version:
+ if options.hash or version_is_built_jar(options.version):
# No need to build R8 if a specific version should be used.
options.no_build = True
if 'r8-nolib' in options.shrinker:
@@ -845,16 +852,16 @@
as_utils.MoveFile(
os.path.join(temp_dir, target), os.path.join(temp_dir, 'r8lib.jar'),
quiet=options.quiet)
- elif options.version:
- # Download r8-<version>.jar from
- # https://storage.googleapis.com/r8-releases/raw/.
- target = 'r8-{}.jar'.format(options.version)
- update_prebuilds_in_android.download_version(
- temp_dir, 'com/android/tools/r8/' + options.version, target)
- as_utils.MoveFile(
- os.path.join(temp_dir, target), os.path.join(temp_dir, 'r8lib.jar'),
- quiet=options.quiet)
- else:
+ elif version_is_built_jar(options.version):
+ # Download r8-<version>.jar from
+ # https://storage.googleapis.com/r8-releases/raw/.
+ target = 'r8-{}.jar'.format(options.version)
+ update_prebuilds_in_android.download_version(
+ temp_dir, 'com/android/tools/r8/' + options.version, target)
+ as_utils.MoveFile(
+ os.path.join(temp_dir, target), os.path.join(temp_dir, 'r8lib.jar'),
+ quiet=options.quiet)
+ elif options.version == 'master':
if not (options.no_build or options.golem):
gradle.RunGradle(['r8', '-Pno_internal'])
build_r8lib = False
diff --git a/tools/utils.py b/tools/utils.py
index 0ece764..5396c0a 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -29,6 +29,7 @@
BUILD = os.path.join(REPO_ROOT, 'build')
BUILD_DEPS_DIR = os.path.join(BUILD, 'deps')
BUILD_MAIN_DIR = os.path.join(BUILD, 'classes', 'main')
+BUILD_JAVA_MAIN_DIR = os.path.join(BUILD, 'classes', 'java', 'main')
BUILD_TEST_DIR = os.path.join(BUILD, 'classes', 'test')
LIBS = os.path.join(BUILD, 'libs')
GENERATED_LICENSE_DIR = os.path.join(BUILD, 'generatedLicense')
@@ -43,6 +44,7 @@
R8_SRC = 'sourceJar'
LIBRARY_DESUGAR_CONVERSIONS = 'buildLibraryDesugarConversions'
+ALL_DEPS_JAR = os.path.join(LIBS, 'deps_all.jar')
D8_JAR = os.path.join(LIBS, 'd8.jar')
R8_JAR = os.path.join(LIBS, 'r8.jar')
R8LIB_JAR = os.path.join(LIBS, 'r8lib.jar')