blob: 6f7e8f5998d51b9ad447d69fbe723aad66836d74 [file] [log] [blame]
#!/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())