Skip to content

Commit fa1812d

Browse files
committed
Make optional by using Gradle JDK auto-detection and clean up Spark 4.0 CI workflow
Signed-off-by: Sotaro Hikita <bering1814@gmail.com>
1 parent 41dbf1d commit fa1812d

6 files changed

Lines changed: 37 additions & 34 deletions

File tree

.github/workflows/build_spark_40.yml

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,6 @@ jobs:
1414
- name: Checkout Branch
1515
uses: actions/checkout@v3
1616

17-
- name: Set up JDK 8
18-
uses: actions/setup-java@v3
19-
with:
20-
distribution: 'temurin'
21-
java-version: '8'
22-
cache: 'gradle'
23-
24-
- name: 'Setup: Java 8 env'
25-
run: echo "JAVA8_HOME=$JAVA_HOME" >> $GITHUB_ENV
26-
27-
- name: Set up JDK 11
28-
uses: actions/setup-java@v3
29-
with:
30-
distribution: 'temurin'
31-
java-version: '11'
32-
cache: 'gradle'
33-
34-
- name: 'Setup: Java 11 env'
35-
run: echo "JAVA11_HOME=$JAVA_HOME" >> $GITHUB_ENV
36-
3717
- name: Set up JDK 17
3818
uses: actions/setup-java@v3
3919
with:

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
88

99
### Changed
1010
- Switched to more reliable OpenSearch Lucene snapshot location ([#597](https://github.com/opensearch-project/opensearch-hadoop/pull/597))
11+
- Make $JAVA8_HOME optional by using Gradle auto-detection and remove unnecessary JDK 8/11 setup from Spark 4.0 CI workflow ([#XXX](https://github.com/opensearch-project/opensearch-hadoop/pull/XXX))
12+
- Make $JAVA8_HOME environment variable optional by using Gradle auto-detection to find JDK 8 ([#XXX](https://github.com/opensearch-project/opensearch-hadoop/pull/XXX))
1113

1214
### Deprecated
1315

buildSrc/src/main/groovy/org/opensearch/hadoop/gradle/BaseBuildPlugin.groovy

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,27 @@ class BaseBuildPlugin implements Plugin<Project> {
7777

7878
// We snap the runtime to java 8 since Hadoop needs to see some significant
7979
// upgrades to support any runtime higher than that
80+
// Try to find JDK 8 from BuildParams (populated by JAVA8_HOME env var).
81+
// If not found, use Gradle's JavaInstallationRegistry to auto-detect installed JDKs.
8082
JavaHome opensearchHadoopRuntimeJava = BuildParams.javaVersions.find { it.version == 8 }
81-
if (opensearchHadoopRuntimeJava == null) {
82-
throw new GradleException(
83-
'$JAVA8_HOME must be set to build OpenSearch-Hadoop. ' +
84-
"Note that if the variable was just set you might have to run `./gradlew --stop` for " +
85-
"it to be picked up. See https://github.com/elastic/elasticsearch/issues/31399 details."
86-
)
83+
if (opensearchHadoopRuntimeJava != null) {
84+
project.rootProject.ext.runtimeJavaHome = opensearchHadoopRuntimeJava.javaHome.get()
85+
} else {
86+
def javaInstallationRegistry = project.rootProject.services.get(org.gradle.internal.jvm.inspection.JavaInstallationRegistry)
87+
def jvmMetadataDetector = project.rootProject.services.get(org.gradle.internal.jvm.inspection.JvmMetadataDetector)
88+
def jdk8Install = javaInstallationRegistry.toolchains().find { toolchain ->
89+
def metadata = jvmMetadataDetector.getMetadata(toolchain.location)
90+
metadata.languageVersion.majorVersion == '8'
91+
}
92+
if (jdk8Install != null) {
93+
project.rootProject.ext.runtimeJavaHome = jdk8Install.location.location
94+
} else {
95+
throw new GradleException(
96+
'JDK 8 is required to build OpenSearch-Hadoop but was not found. ' +
97+
'Either set $JAVA8_HOME or install JDK 8 via a toolchain manager (e.g. sdkman) ' +
98+
'so that Gradle auto-detection can find it.'
99+
)
100+
}
87101
}
88102

89103
// Set on global build info
@@ -92,7 +106,6 @@ class BaseBuildPlugin implements Plugin<Project> {
92106
}
93107

94108
// Set on build settings
95-
project.rootProject.ext.runtimeJavaHome = opensearchHadoopRuntimeJava.javaHome.get()
96109
project.rootProject.ext.minimumRuntimeVersion = minimumRuntimeVersion
97110

98111
project.rootProject.ext.buildInfoConfigured = true

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ systemProp.org.gradle.warning.mode=fail
55
org.gradle.daemon=false
66

77
# java homes resolved by environment variables
8-
org.gradle.java.installations.auto-detect=false
8+
org.gradle.java.installations.auto-detect=true
99
org.gradle.java.installations.fromEnv=JAVA_HOME,RUNTIME_JAVA_HOME,JAVA15_HOME,JAVA14_HOME,JAVA13_HOME,JAVA12_HOME,JAVA11_HOME,JAVA8_HOME
1010

1111
## Dependecies Version

spark/core/build.gradle

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,9 @@ sparkVariants {
129129
source(generatedJavaDirectory)
130130
if (variant.name.contains('spark40')) {
131131
executable = new File(System.getenv('SPARK_TEST_JAVA_HOME') ?: System.getenv('JAVA17_HOME') ?: project.ext.runtimeJavaHome.toString(), 'bin/javadoc').absolutePath
132-
options.addStringOption('Xdoclint:none', '-quiet')
133-
failOnError = false
134132
}
133+
options.addStringOption('Xdoclint:none', '-quiet')
134+
failOnError = false
135135
}
136136
}
137137

@@ -187,8 +187,11 @@ tasks.withType(ScalaCompile) { ScalaCompile task ->
187187
if (task.name.contains("spark40") || task.name.contains("Spark40")) {
188188
return
189189
}
190-
task.scalaCompileOptions.additionalParameters = ["-javabootclasspath", new File(project.ext.runtimeJavaHome, 'jre/lib/rt.jar').absolutePath]
191-
task.options.bootstrapClasspath = layout.files(new File(project.ext.runtimeJavaHome, 'jre/lib/rt.jar'))
190+
File rtJar = new File(project.ext.runtimeJavaHome, 'jre/lib/rt.jar')
191+
if (rtJar.exists()) {
192+
task.scalaCompileOptions.additionalParameters = ["-javabootclasspath", rtJar.absolutePath]
193+
task.options.bootstrapClasspath = layout.files(rtJar)
194+
}
192195
task.sourceCompatibility = project.ext.minimumRuntimeVersion
193196
task.targetCompatibility = project.ext.minimumRuntimeVersion
194197
task.options.forkOptions.executable = new File(project.ext.runtimeJavaHome, 'bin/java').absolutePath

spark/sql-30/build.gradle

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,8 @@ sparkVariants {
150150
tasks.getByName(variant.taskName('javadoc')) {
151151
dependsOn compileScala
152152
source(generatedJavaDirectory)
153+
options.addStringOption('Xdoclint:none', '-quiet')
154+
failOnError = false
153155
}
154156

155157
scaladoc {
@@ -159,8 +161,11 @@ sparkVariants {
159161
}
160162

161163
tasks.withType(ScalaCompile) { ScalaCompile task ->
162-
task.scalaCompileOptions.additionalParameters = ["-javabootclasspath", new File(project.ext.runtimeJavaHome, 'jre/lib/rt.jar').absolutePath]
163-
task.options.bootstrapClasspath = layout.files(new File(project.ext.runtimeJavaHome, 'jre/lib/rt.jar'))
164+
File rtJar = new File(project.ext.runtimeJavaHome, 'jre/lib/rt.jar')
165+
if (rtJar.exists()) {
166+
task.scalaCompileOptions.additionalParameters = ["-javabootclasspath", rtJar.absolutePath]
167+
task.options.bootstrapClasspath = layout.files(rtJar)
168+
}
164169
task.sourceCompatibility = project.ext.minimumRuntimeVersion
165170
task.targetCompatibility = project.ext.minimumRuntimeVersion
166171
task.options.forkOptions.executable = new File(project.ext.runtimeJavaHome, 'bin/java').absolutePath

0 commit comments

Comments
 (0)