Use jdk.GetJavaExecutable() in tools.
Bug: 124239658
Change-Id: Ia2fce6eb5f25000f519d499f70fb54d04c7dfd66
diff --git a/tools/api_sample_coverage.py b/tools/api_sample_coverage.py
index b14ad1a..4eea8c7 100755
--- a/tools/api_sample_coverage.py
+++ b/tools/api_sample_coverage.py
@@ -8,6 +8,7 @@
'''
import argparse
+import jdk
import os
import subprocess
import utils
@@ -23,16 +24,17 @@
if output_dir is None:
output_dir = ''
+ javaExecutable = jdk.GetJavaExecutable()
printseeds_path = os.path.join(output_dir, 'keep-seeds.txt')
printseeds_args = [
- 'java', '-jar', utils.R8_JAR, 'printseeds',
+ javaExecutable, '-jar', utils.R8_JAR, 'printseeds',
utils.RT_JAR, utils.R8_JAR, utils.R8LIB_KEEP_RULES,
]
write_sorted_lines(printseeds_args, printseeds_path)
printuses_path = os.path.join(output_dir, 'sample-uses.txt')
printuses_args = [
- 'java', '-jar', utils.R8_JAR, 'printuses',
+ javaExecutable, '-jar', utils.R8_JAR, 'printuses',
utils.RT_JAR, utils.R8_JAR, API_SAMPLE_JAR,
]
write_sorted_lines(printuses_args, printuses_path)
diff --git a/tools/archive.py b/tools/archive.py
index d8fb4d0..9de199c 100755
--- a/tools/archive.py
+++ b/tools/archive.py
@@ -5,6 +5,7 @@
import create_maven_release
import gradle
+import jdk
import optparse
import os
import shutil
@@ -25,7 +26,9 @@
return result.parse_args()
def GetToolVersion(jar_path):
- output = subprocess.check_output(['java', '-jar', jar_path, '--version'])
+ output = subprocess.check_output([
+ jdk.GetJavaExecutable(), '-jar', jar_path, '--version'
+ ])
return output.splitlines()[0].strip()
def GetVersion():
diff --git a/tools/asmifier.py b/tools/asmifier.py
index 280c6f1..3080378 100755
--- a/tools/asmifier.py
+++ b/tools/asmifier.py
@@ -4,6 +4,7 @@
# BSD-style license that can be found in the LICENSE file.
import gradle
+import jdk
import os
import subprocess
import sys
@@ -13,7 +14,7 @@
if build:
gradle.RunGradle(['copyMavenDeps'])
cmd = []
- cmd.append('java')
+ cmd.append(jdk.GetJavaExecutable())
cp = ":".join([os.path.join(utils.REPO_ROOT, 'build/deps/asm-6.2.1.jar'),
os.path.join(utils.REPO_ROOT, 'build/deps/asm-util-6.2.1.jar')])
cmd.extend(['-cp', cp])
diff --git a/tools/build_r8lib.py b/tools/build_r8lib.py
index 5368f6f..980715e 100755
--- a/tools/build_r8lib.py
+++ b/tools/build_r8lib.py
@@ -10,6 +10,7 @@
import argparse
import gradle
+import jdk
import os
import subprocess
import toolhelper
@@ -76,7 +77,8 @@
def test_d8sample(paths):
with utils.TempDir() as path:
- args = ['java', '-cp', '%s:%s' % (SAMPLE_JAR, ":".join(paths)),
+ args = [jdk.GetJavaExecutable(),
+ '-cp', '%s:%s' % (SAMPLE_JAR, ":".join(paths)),
'com.android.tools.apiusagesample.D8ApiUsageSample',
'--output', path,
'--min-api', str(API_LEVEL),
@@ -94,7 +96,8 @@
# R8CommandParser should have been minified in LIB_JAR.
# Just in case R8CommandParser is also present in LIB_JAR, we put
# SAMPLE_JAR first on the classpath to use its version of R8CommandParser.
- args = ['java', '-cp', '%s:%s' % (SAMPLE_JAR, ":".join(paths)),
+ args = [jdk.GetJavaExecutable(),
+ '-cp', '%s:%s' % (SAMPLE_JAR, ":".join(paths)),
'com.android.tools.r8.R8CommandParser',
'--output', path + "/output.zip",
'--min-api', str(API_LEVEL),
@@ -111,7 +114,8 @@
# R8CommandParser should have been minified in LIB_JAR.
# Just in case R8CommandParser is also present in LIB_JAR, we put
# SAMPLE_JAR first on the classpath to use its version of R8CommandParser.
- args = ['java', '-cp', '%s:%s' % (SAMPLE_JAR, ":".join(paths)),
+ args = [jdk.GetJavaExecutable(),
+ '-cp', '%s:%s' % (SAMPLE_JAR, ":".join(paths)),
'com.android.tools.r8.R8CommandParser',
'--classfile',
'--output', path + "/output.jar",
diff --git a/tools/build_sample_apk.py b/tools/build_sample_apk.py
index 9053e23..29f7459 100755
--- a/tools/build_sample_apk.py
+++ b/tools/build_sample_apk.py
@@ -8,6 +8,7 @@
import apk_utils
import fnmatch
import glob
+import jdk
import optparse
import os
import shutil
@@ -21,7 +22,7 @@
DEFAULT_AAPT = 'aapt' # Assume in path.
DEFAULT_D8 = os.path.join(utils.REPO_ROOT, 'tools', 'd8.py')
DEFAULT_DEXSPLITTER = os.path.join(utils.REPO_ROOT, 'tools', 'dexsplitter.py')
-DEFAULT_JAVAC = 'javac'
+DEFAULT_JAVAC = jdk.GetJavacExecutable()
SRC_LOCATION = 'src/com/android/tools/r8/sample/{app}/*.java'
DEFAULT_KEYSTORE = os.path.join(os.getenv('HOME'), '.android', 'debug.keystore')
PACKAGE_PREFIX = 'com.android.tools.r8.sample'
diff --git a/tools/gradle.py b/tools/gradle.py
index 374f885..232e96d 100755
--- a/tools/gradle.py
+++ b/tools/gradle.py
@@ -44,9 +44,15 @@
utils.EnsureDepFromGoogleCloudStorage(
GRADLE, GRADLE_TGZ, GRADLE_SHA1, 'Gradle binary')
+def EnsureJdk():
+ jdkHome = jdk.GetJdkHome()
+ jdkTgz = jdkHome + '.tar.gz'
+ jdkSha1 = jdkTgz + '.sha1'
+ utils.EnsureDepFromGoogleCloudStorage(jdkHome, jdkTgz, jdkSha1, 'JDK')
+
def EnsureDeps():
EnsureGradle()
- jdk.EnsureJdk()
+ EnsureJdk()
def RunGradleIn(gradleCmd, args, cwd, throw_on_failure=True, env=None):
EnsureDeps()
diff --git a/tools/jdk.py b/tools/jdk.py
index 5a20901..5791e50 100755
--- a/tools/jdk.py
+++ b/tools/jdk.py
@@ -3,40 +3,33 @@
# 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.
+import defines
import os
import sys
-import utils
-JDK_DIR = os.path.join(utils.REPO_ROOT, 'third_party', 'openjdk')
+JDK_DIR = os.path.join(defines.THIRD_PARTY, 'openjdk')
def GetJdkHome():
root = os.path.join(JDK_DIR, 'openjdk-9.0.4')
- if utils.IsLinux():
+ if defines.IsLinux():
return os.path.join(root, 'linux')
- elif utils.IsOsX():
+ elif defines.IsOsX():
return os.path.join(root, 'osx')
- elif utils.IsWindows():
+ elif defines.IsWindows():
return os.path.join(root, 'windows')
else:
return os.environ['JAVA_HOME']
- return jdkHome
def GetJavaExecutable(jdkHome=None):
jdkHome = jdkHome if jdkHome else GetJdkHome()
- executable = 'java.exe' if utils.IsWindows() else 'java'
+ executable = 'java.exe' if defines.IsWindows() else 'java'
return os.path.join(jdkHome, 'bin', executable) if jdkHome else executable
def GetJavacExecutable(jdkHome=None):
jdkHome = jdkHome if jdkHome else GetJdkHome()
- executable = 'javac.exe' if utils.IsWindows() else 'javac'
+ executable = 'javac.exe' if defines.IsWindows() else 'javac'
return os.path.join(jdkHome, 'bin', executable) if jdkHome else executable
-def EnsureJdk():
- jdkHome = GetJdkHome()
- jdkTgz = jdkHome + '.tar.gz'
- jdkSha1 = jdkTgz + '.sha1'
- utils.EnsureDepFromGoogleCloudStorage(jdkHome, jdkTgz, jdkSha1, 'JDK')
-
def Main():
print GetJdkHome()
diff --git a/tools/proguard.py b/tools/proguard.py
index 640094f..b1bde54 100755
--- a/tools/proguard.py
+++ b/tools/proguard.py
@@ -6,6 +6,7 @@
# Run ProGuard, Google's internal version
from __future__ import print_function
+import jdk
import os
import subprocess
import sys
@@ -19,7 +20,7 @@
cmd = []
if track_memory_file:
cmd.extend(['tools/track_memory.sh', track_memory_file])
- cmd.extend(['java', '-jar', PROGUARD_JAR])
+ cmd.extend([jdk.GetJavaExecutable(), '-jar', PROGUARD_JAR])
cmd.extend(args)
utils.PrintCmd(cmd)
subprocess.call(cmd, stdout=stdout, stderr=stderr)
diff --git a/tools/retrace.py b/tools/retrace.py
index 1b77e9a..44120f2 100755
--- a/tools/retrace.py
+++ b/tools/retrace.py
@@ -5,6 +5,7 @@
import archive
import argparse
+import jdk
import subprocess
import sys
import tempfile
@@ -49,7 +50,9 @@
print('Could not find map file from argument: %s.' % hashOrVersion)
return 1
- retrace_args = ['java', '-jar', utils.RETRACE_JAR, r8lib_map_path]
+ retrace_args = [
+ jdk.GetJavaExecutable(), '-jar', utils.RETRACE_JAR, r8lib_map_path
+ ]
if args.stacktrace:
retrace_args.append(args.stacktrace)
diff --git a/tools/run_on_as_app.py b/tools/run_on_as_app.py
index 2889d74..506c583 100755
--- a/tools/run_on_as_app.py
+++ b/tools/run_on_as_app.py
@@ -7,6 +7,7 @@
import apk_utils
import golem
import gradle
+import jdk
import os
import optparse
import shutil
@@ -177,7 +178,7 @@
# Use the copy of r8.jar if it is there.
if os.path.isfile(r8_jar):
- cmd = ['java', '-ea', '-jar', r8_jar, 'extractmarker', apk]
+ cmd = [jdk.GetJavaExecutable(), '-ea', '-jar', r8_jar, 'extractmarker', apk]
else:
script = os.path.join(utils.TOOLS_DIR, 'extractmarker.py')
cmd = ['python', script, apk]
@@ -493,7 +494,7 @@
# is 'r8'.
entry_point = 'com.android.tools.r8.R8'
- cmd = ['java', '-ea:com.android.tools.r8...', '-cp', r8_jar, entry_point,
+ cmd = [jdk.GetJavaExecutable(), '-ea:com.android.tools.r8...', '-cp', r8_jar, entry_point,
'--release', '--min-api', str(min_sdk), '--pg-conf', proguard_config_file,
'--lib', android_jar, '--output', zip_dest, apk]
diff --git a/tools/run_proguard_dx_on_app.py b/tools/run_proguard_dx_on_app.py
index e78d5d1..4e408ff 100755
--- a/tools/run_proguard_dx_on_app.py
+++ b/tools/run_proguard_dx_on_app.py
@@ -13,6 +13,7 @@
import argparse
import fnmatch
import gmscore_data
+import jdk
import os
import stat
import sys
@@ -140,7 +141,7 @@
if options.print_memoryuse:
track_memory_file = join(temp, utils.MEMORY_USE_TMP_FILE)
cmd.extend(['tools/track_memory.sh', track_memory_file])
- cmd.extend(['java', '-jar', jar, '--multi-dex',
+ cmd.extend([jdk.GetJavaExecutable(), '-jar', jar, '--multi-dex',
'--output=' + outdir])
if 'min-api' in values_proguarded:
cmd.append('--min-sdk-version=' + values_proguarded['min-api'])
diff --git a/tools/test_aosp_jar.py b/tools/test_aosp_jar.py
index bf12045..6f7e8f5 100755
--- a/tools/test_aosp_jar.py
+++ b/tools/test_aosp_jar.py
@@ -10,6 +10,7 @@
from itertools import chain
from os.path import join
import argparse
+import jdk
import os
import subprocess
import sys
@@ -36,7 +37,7 @@
if not args.no_build:
gradle.RunGradle(['CompatDx'])
- cmd = [REPLAY_SCRIPT, 'java', '-jar', utils.COMPATDX_JAR]
+ cmd = [REPLAY_SCRIPT, jdk.GetJavaExecutable(), '-jar', utils.COMPATDX_JAR]
utils.PrintCmd(cmd)
subprocess.check_call(cmd)
diff --git a/tools/test_framework.py b/tools/test_framework.py
index 7400541..f30d7d9 100755
--- a/tools/test_framework.py
+++ b/tools/test_framework.py
@@ -21,6 +21,7 @@
from glob import glob
import argparse
import golem
+import jdk
import os
import re
import subprocess
@@ -96,7 +97,7 @@
if tool_file.endswith('.jar'):
assert xmx is not None
- cmd.extend(['java', xmx, '-jar'])
+ cmd.extend([jdk.GetJavaExecutable(), xmx, '-jar'])
cmd.extend([tool_file] + tool_args + [FRAMEWORK_JAR])
diff --git a/tools/test_self_retrace.py b/tools/test_self_retrace.py
index 6e48aa6..46cb1d9 100755
--- a/tools/test_self_retrace.py
+++ b/tools/test_self_retrace.py
@@ -7,6 +7,7 @@
from __future__ import division
from __future__ import print_function
import gradle
+import jdk
import os
import subprocess
import sys
@@ -37,7 +38,9 @@
raise Exception("Only one argument is allowed, see '--help'.")
# Run 'r8 --help' which throws an exception.
- cmd = ['java','-cp', r8lib, 'com.android.tools.r8.R8', '--help']
+ cmd = [
+ jdk.GetJavaExecutable(),'-cp', r8lib, 'com.android.tools.r8.R8', '--help'
+ ]
os.environ["R8_THROW_EXCEPTION_FOR_TESTING_RETRACE"] = "1"
utils.PrintCmd(cmd)
p = subprocess.Popen(cmd, stderr=subprocess.PIPE)
@@ -48,7 +51,7 @@
assert('SelfRetraceTest' not in stacktrace)
# Run the retrace tool.
- cmd = ['java', '-jar', utils.RETRACE_JAR, r8lib + ".map"]
+ cmd = [jdk.GetJavaExecutable(), '-jar', utils.RETRACE_JAR, r8lib + ".map"]
utils.PrintCmd(cmd)
p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
retrace_stdout, _ = p.communicate(stacktrace)
diff --git a/tools/toolhelper.py b/tools/toolhelper.py
index 9371fb9..10da97d 100644
--- a/tools/toolhelper.py
+++ b/tools/toolhelper.py
@@ -4,7 +4,7 @@
import glob
import gradle
-import os
+import jdk
import subprocess
from threading import Timer
import utils
@@ -19,7 +19,7 @@
cmd = []
if track_memory_file:
cmd.extend(['tools/track_memory.sh', track_memory_file])
- cmd.append('java')
+ cmd.append(jdk.GetJavaExecutable())
if extra_args:
cmd.extend(extra_args)
if debug:
@@ -61,7 +61,7 @@
'compileTestJava',
])
cmd = []
- cmd.append('java')
+ cmd.append(jdk.GetJavaExecutable())
if extra_args:
cmd.extend(extra_args)
if debug:
diff --git a/tools/utils.py b/tools/utils.py
index 20d7bc7..892fe7d 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -4,7 +4,9 @@
# Different utility functions used accross scripts
+import defines
import hashlib
+import jdk
import os
import re
import shutil
@@ -16,9 +18,9 @@
ANDROID_JAR_DIR = 'third_party/android_jar/lib-v{api}'
ANDROID_JAR = os.path.join(ANDROID_JAR_DIR, 'android.jar')
-TOOLS_DIR = os.path.abspath(os.path.normpath(os.path.join(__file__, '..')))
-REPO_ROOT = os.path.realpath(os.path.join(TOOLS_DIR, '..'))
-THIRD_PARTY = os.path.join(REPO_ROOT, 'third_party')
+TOOLS_DIR = defines.TOOLS_DIR
+REPO_ROOT = defines.REPO_ROOT
+THIRD_PARTY = defines.THIRD_PARTY
MEMORY_USE_TMP_FILE = 'memory_use.tmp'
DEX_SEGMENTS_RESULT_PATTERN = re.compile('- ([^:]+): ([0-9]+)')
BUILD = os.path.join(REPO_ROOT, 'build')
@@ -156,13 +158,13 @@
return stdout
def IsWindows():
- return sys.platform.startswith('win')
+ return defines.IsWindows()
def IsLinux():
- return sys.platform.startswith('linux')
+ return defines.IsLinux()
def IsOsX():
- return sys.platform.startswith('darwin')
+ return defines.IsOsX()
def EnsureDepFromGoogleCloudStorage(dep, tgz, sha1, msg):
if not os.path.exists(dep) or os.path.getmtime(tgz) < os.path.getmtime(sha1):
@@ -385,7 +387,7 @@
# Return a dictionary: {segment_name -> segments_size}
def getDexSegmentSizes(dex_files):
assert len(dex_files) > 0
- cmd = ['java', '-jar', R8_JAR, 'dexsegments']
+ cmd = [jdk.GetJavaExecutable(), '-jar', R8_JAR, 'dexsegments']
cmd.extend(dex_files)
PrintCmd(cmd)
output = subprocess.check_output(cmd)
@@ -405,7 +407,7 @@
# Return a dictionary: {segment_name -> segments_size}
def getCfSegmentSizes(cfFile):
- cmd = ['java',
+ cmd = [jdk.GetJavaExecutable(),
'-cp',
CF_SEGMENTS_TOOL,
'com.android.tools.r8.cf_segments.MeasureLib',
@@ -443,7 +445,7 @@
# Ensure that we are not benchmarking with a google jvm.
def check_java_version():
- cmd= ['java', '-version']
+ cmd= [jdk.GetJavaExecutable(), '-version']
output = subprocess.check_output(cmd, stderr = subprocess.STDOUT)
m = re.search('openjdk version "([^"]*)"', output)
if m is None: