| #!/usr/bin/env python |
| # Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file |
| # for details. All rights reserved. Use of this source code is governed by a |
| # BSD-style license that can be found in the LICENSE file. |
| |
| # Test prebuilt AOSP jar files: compile with D8 and run dex2out to validate |
| |
| from __future__ import print_function |
| from glob import glob |
| from itertools import chain |
| from os.path import join |
| import argparse |
| import jdk |
| import os |
| import subprocess |
| import sys |
| |
| import gradle |
| |
| import dex2oat |
| import utils |
| |
| REPLAY_SCRIPT_DIR = join(utils.REPO_ROOT, 'third_party', |
| 'android_cts_baseline', 'dx_replay') |
| REPLAY_SCRIPT = join(REPLAY_SCRIPT_DIR, 'replay_script.py') |
| OUT_DIR = join(REPLAY_SCRIPT_DIR, 'out') |
| |
| def parse_arguments(): |
| parser = argparse.ArgumentParser( |
| description = 'Run D8 (CompatDX) and dex2oat on prebuilt AOSP jars.') |
| parser.add_argument('--no-build', default = False, action = 'store_true') |
| return parser.parse_args() |
| |
| def Main(): |
| args = parse_arguments() |
| |
| if not args.no_build: |
| gradle.RunGradle(['CompatDx']) |
| |
| cmd = [REPLAY_SCRIPT, jdk.GetJavaExecutable(), '-jar', utils.COMPATDX_JAR] |
| utils.PrintCmd(cmd) |
| subprocess.check_call(cmd) |
| |
| # collect dex files below OUT_DIR |
| dex_files = (chain.from_iterable(glob(join(x[0], '*.dex')) |
| for x in os.walk(OUT_DIR))) |
| |
| for dex_file in dex_files: |
| dex2oat.run(dex_file) |
| |
| |
| if __name__ == '__main__': |
| sys.exit(Main()) |