From 0e8ab29be101f2fd3beb7d5fdb72e2272a37564c Mon Sep 17 00:00:00 2001 From: Yi Hu Date: Thu, 15 Oct 2026 15:19:45 -0400 Subject: [PATCH] Follow up fix fork comiple errors * Partly revert #40595: setCompileAndRuntimeJavaVersion logic wasn't stale it's needed to resolve errorprone x Gradle known issue compatibility * Clean up Java8 leftovers in setJavaVerOptions. --- .../beam/gradle/BeamModulePlugin.groovy | 61 +++++++++---------- 1 file changed, 29 insertions(+), 32 deletions(-) diff --git a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy index 6550dbd843b4..d699f9efab94 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -482,19 +482,33 @@ class BeamModulePlugin implements Plugin { /* * Set compile args for compiling and running in different java version by modifying the compiler args in place. * - * Replace `--release X` option if already existed in compilerArgs. + * Replace `-source X` and `-target X` or `--release X` options if already existed in compilerArgs. */ static def setCompileAndRuntimeJavaVersion(List compilerArgs, String ver) { - boolean foundR = false + boolean foundS = false, foundT = false + int foundR = -1 logger.fine("set java ver ${ver} to compiler args") - for (int i = 0; i < compilerArgs.size() - 1; ++i) { - if (compilerArgs.get(i) == '--release') { - foundR = true - compilerArgs.set(i + 1, ver) + for (int i = 0; i < compilerArgs.size()-1; ++i) { + if (compilerArgs.get(i) == '-source') { + foundS = true + compilerArgs.set(i+1, ver) + } else if (compilerArgs.get(i) == '-target') { + foundT = true + compilerArgs.set(i+1, ver) + } else if (compilerArgs.get(i) == '--release') { + foundR = i } } - if (!foundR) { - compilerArgs.addAll('--release', ver) + // Remove "--release" and replace with '-source -target' due to errorprone compatibility and Gradle issue #22747 + if (foundR != -1) { + compilerArgs.removeAt(foundR + 1) + compilerArgs.removeAt(foundR) + } + if (!foundS) { + compilerArgs.addAll('-source', ver) + } + if (!foundT) { + compilerArgs.addAll('-target', ver) } } @@ -994,7 +1008,8 @@ class BeamModulePlugin implements Plugin { // set compiler options for java version overrides to compile with a different java version project.ext.setJavaVerOptions = { CompileOptions options, String ver -> - if (!project.findProperty("java${ver}Home")) { + def javaVerHome = project.findProperty("java${ver}Home") + if (!javaVerHome) { return } // TODO(yathu): remove this once generated code (antlr) no longer trigger "this-escape", see above @@ -1004,31 +1019,12 @@ class BeamModulePlugin implements Plugin { '-Xlint:-this-escape', ] } - if (ver == '8') { - def java8Home = project.findProperty("java8Home") - options.fork = true - options.forkOptions.javaHome = java8Home as File - options.compilerArgs += ['-Xlint:-path'] - } else if (ver == '11') { - def java11Home = project.findProperty("java11Home") - options.fork = true - options.forkOptions.javaHome = java11Home as File - options.compilerArgs += ['-Xlint:-path'] - } else if (ver == '17') { - def java17Home = project.findProperty("java17Home") - options.fork = true - options.forkOptions.javaHome = java17Home as File - options.compilerArgs += ['-Xlint:-path'] - // The -J prefix is needed to workaround https://github.com/gradle/gradle/issues/22747 + options.fork = true + options.forkOptions.javaHome = javaVerHome as File + if (ver == '17') { options.forkOptions.jvmArgs += errorProneAddModuleOpts.collect { '-J' + it } } else if (ver == '21' || ver == '25') { - def javaVerHome = project.findProperty("java${ver}Home") - options.fork = true - options.forkOptions.javaHome = javaVerHome as File - options.compilerArgs += [ - '-Xlint:-path', - '-Xlint:-this-escape' - ] + options.compilerArgs += ['-Xlint:-this-escape'] if (ver == '25') { // TODO: Upgrade errorprone and checkerFramework when Beam move to Java17+ and enable it in Java 25+ options.errorprone.errorproneArgs.add("-XepDisableAllChecks") @@ -1208,6 +1204,7 @@ class BeamModulePlugin implements Plugin { 'classfile', 'deprecation', 'fallthrough', + 'path', 'processing', 'serial', 'try',