Build with OpenJDK 9 -target 1.8 by default except for errorprone.

(This is cherry-picked from the first attempt to submit this CL
topic, which was reverted after 3 hours because of bug 70286093;
robolectric 3.{1.1,4.2} now stick with OpenJDK 8 to avoid that bug).

Before this CL topic, the build toolchain for .java source files
used OpenJDK 8, targeting 1.8 (v52 class files) by default.

This CL topic switches the default to OpenJDK 9, but still
targeting 1.8 (v52 class files) by default. If USE_ERROR_PRONE
is set to true, then the default remains OpenJDK 8.

Code in the Android platform should generally be unaffected,
but if host tools that are now compiled and run using
OpenJDK 9 are causing problems for your team, then let me
know.

To manually switch back to the old behavior for now (continue
using OpenJDK 8), run this command in your shell:
export EXPERIMENTAL_USE_OPENJDK9=false

Bug: 69449021
Test: Treehugger
Test: Running robolectric tests succeeds on internal-master
      after cherry-picking this CL topic, using the command
      line from http://b/70286093#comment1
(cherry picked from commit 0ae8b548af)

Change-Id: Ide6a7e55126d919a44f89ef8e0bd14fb12ff470e
This commit is contained in:
Tobias Thierer 2017-11-17 14:14:29 +00:00
parent 06ae582000
commit 13f23a2753
2 changed files with 15 additions and 3 deletions

View file

@ -295,7 +295,10 @@ func NewConfig(srcDir, buildDir string) (Config, error) {
func (c *config) fromEnv() error {
switch c.Getenv("EXPERIMENTAL_USE_OPENJDK9") {
case "":
// Use OpenJDK8
if c.Getenv("RUN_ERROR_PRONE") != "true" {
// Use OpenJDK9, but target 1.8
c.useOpenJDK9 = true
}
case "false":
// Use OpenJDK8
case "1.8":
@ -306,7 +309,7 @@ func (c *config) fromEnv() error {
c.useOpenJDK9 = true
c.targetOpenJDK9 = true
default:
return fmt.Errorf(`Invalid value for EXPERIMENTAL_USE_OPENJDK9, should be "", "1.8", or "true"`)
return fmt.Errorf(`Invalid value for EXPERIMENTAL_USE_OPENJDK9, should be "", "false", "1.8", or "true"`)
}
return nil

View file

@ -150,7 +150,16 @@ func NewConfig(ctx Context, args ...string) Config {
if override, ok := ret.environ.Get("OVERRIDE_ANDROID_JAVA_HOME"); ok {
return override
}
if v, ok := ret.environ.Get("EXPERIMENTAL_USE_OPENJDK9"); ok && v != "" && v != "false" {
v, ok := ret.environ.Get("EXPERIMENTAL_USE_OPENJDK9")
if !ok {
v2, ok2 := ret.environ.Get("RUN_ERROR_PRONE")
if ok2 && (v2 == "true") {
v = "false"
} else {
v = "1.8"
}
}
if v != "false" {
return filepath.Join("prebuilts/jdk/jdk9", ret.HostPrebuiltTag())
}
return filepath.Join("prebuilts/jdk/jdk8", ret.HostPrebuiltTag())