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')