Skip to content

Commit 1a52716

Browse files
authored
Use bundled jdk as default runtime jdk instead of build jvm (#111197)
* Fallback to bundled jdk for runtime jdk instead of build jvm * Rework bundled jdk resolution to be lazy * Use fixed runtime jdk for gradle build integ tests
1 parent 3090438 commit 1a52716

File tree

9 files changed

+91
-72
lines changed

9 files changed

+91
-72
lines changed

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleInternalPluginFuncTest.groovy

+9-3
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,23 @@ abstract class AbstractGradleInternalPluginFuncTest extends AbstractJavaGradleFu
1515
abstract <T extends Plugin> Class<T> getPluginClassUnderTest();
1616

1717
def setup() {
18+
settingsFile.text = """
19+
plugins {
20+
id 'elasticsearch.java-toolchain'
21+
}
22+
""" + settingsFile.text
23+
1824
buildFile << """
1925
import ${getPluginClassUnderTest().getName()}
20-
26+
2127
plugins {
2228
// bring in build-tools-internal onto the classpath
2329
id 'elasticsearch.global-build-info'
2430
}
2531
// internally used plugins do not have a plugin id as they are
26-
// not intended to be used directly from build scripts
32+
// not intended to be used directly from build scripts
2733
plugins.apply(${getPluginClassUnderTest().getSimpleName()})
28-
34+
2935
"""
3036
}
3137
}

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchJavadocPluginFuncTest.groovy

+17-16
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,22 @@ class ElasticsearchJavadocPluginFuncTest extends AbstractGradleFuncTest {
1919
given:
2020
someLibProject()
2121
subProject("some-depending-lib") {
22-
buildFile << """
22+
buildFile << """
2323
plugins {
2424
id 'elasticsearch.java-doc'
2525
id 'java'
2626
}
2727
group = 'org.acme.depending'
28-
28+
2929
dependencies {
3030
implementation project(':some-lib')
3131
}
3232
"""
3333
classFile('org.acme.depending.SomeDepending') << """
3434
package org.acme.depending;
35-
35+
3636
import org.acme.Something;
37-
37+
3838
public class SomeDepending {
3939
public Something createSomething() {
4040
return new Something();
@@ -66,26 +66,27 @@ class ElasticsearchJavadocPluginFuncTest extends AbstractGradleFuncTest {
6666

6767
def "sources of shadowed dependencies are added to projects javadoc"() {
6868
given:
69+
settingsFile.text = ""
6970
someLibProject() << """version = 1.0"""
7071
subProject("some-depending-lib") {
71-
buildFile << """
72+
buildFile << """
7273
plugins {
7374
id 'elasticsearch.java-doc'
7475
id 'com.github.johnrengelman.shadow' version '7.1.2'
7576
id 'java'
7677
}
7778
group = 'org.acme.depending'
78-
79+
7980
dependencies {
8081
implementation project(':some-lib')
8182
shadow project(':some-shadowed-lib')
8283
}
8384
"""
8485
classFile('org.acme.depending.SomeDepending') << """
8586
package org.acme.depending;
86-
87+
8788
import org.acme.Something;
88-
89+
8990
public class SomeDepending {
9091
public Something createSomething() {
9192
return new Something();
@@ -94,9 +95,9 @@ class ElasticsearchJavadocPluginFuncTest extends AbstractGradleFuncTest {
9495
"""
9596
classFile('org.acme.depending.SomeShadowedDepending') << """
9697
package org.acme.depending;
97-
98+
9899
import org.acme.shadowed.Shadowed;
99-
100+
100101
public class SomeShadowedDepending {
101102
public Shadowed createShadowed() {
102103
return new Shadowed();
@@ -114,7 +115,7 @@ class ElasticsearchJavadocPluginFuncTest extends AbstractGradleFuncTest {
114115
"""
115116
classFile('org.acme.shadowed.Shadowed') << """
116117
package org.acme.shadowed;
117-
118+
118119
public class Shadowed {
119120
}
120121
"""
@@ -145,22 +146,22 @@ class ElasticsearchJavadocPluginFuncTest extends AbstractGradleFuncTest {
145146
tasks.named("javadoc").configure { enabled = false }
146147
"""
147148
subProject("some-depending-lib") {
148-
buildFile << """
149+
buildFile << """
149150
plugins {
150151
id 'elasticsearch.java-doc'
151152
id 'java'
152153
}
153154
group = 'org.acme.depending'
154-
155+
155156
dependencies {
156157
implementation project(':some-lib')
157158
}
158159
"""
159160
classFile('org.acme.depending.SomeDepending') << """
160161
package org.acme.depending;
161-
162+
162163
import org.acme.Something;
163-
164+
164165
public class SomeDepending {
165166
public Something createSomething() {
166167
return new Something();
@@ -264,7 +265,7 @@ class ElasticsearchJavadocPluginFuncTest extends AbstractGradleFuncTest {
264265

265266
classFile('org.acme.Something') << """
266267
package org.acme;
267-
268+
268269
public class Something {
269270
}
270271
"""

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTaskFuncTest.groovy

+5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest
1818
import org.elasticsearch.gradle.fixtures.AbstractGradleInternalPluginFuncTest
1919
import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersPrecommitPlugin
2020
import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin
21+
import org.gradle.testkit.runner.GradleRunner
2122
import org.gradle.testkit.runner.TaskOutcome
2223

2324

@@ -211,6 +212,10 @@ class ThirdPartyAuditTaskFuncTest extends AbstractGradleInternalPluginFuncTest {
211212
loggingDynamicType.toJar(targetFile(dir("${baseGroupFolderPath}/broken-log4j/0.0.1/"), "broken-log4j-0.0.1.jar"))
212213
}
213214

215+
GradleRunner gradleRunner(Object... arguments) {
216+
return super.gradleRunner(arguments).withEnvironment([RUNTIME_JAVA_HOME: System.getProperty("java.home")])
217+
}
218+
214219
static File targetFile(File dir, String fileName) {
215220
new File(dir, fileName)
216221
}

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/LegacyYamlRestTestPluginFuncTest.groovy

+5
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import spock.lang.IgnoreIf
1212

1313
import org.elasticsearch.gradle.VersionProperties
1414
import org.elasticsearch.gradle.fixtures.AbstractRestResourcesFuncTest
15+
import org.gradle.testkit.runner.GradleRunner
1516
import org.gradle.testkit.runner.TaskOutcome
1617

1718
@IgnoreIf({ os.isWindows() })
@@ -205,4 +206,8 @@ echo "Running elasticsearch \$0"
205206
}
206207
"""
207208
}
209+
210+
GradleRunner gradleRunner(Object... arguments) {
211+
return super.gradleRunner(arguments).withEnvironment([RUNTIME_JAVA_HOME: System.getProperty("java.home")])
212+
}
208213
}

build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle

-9
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ configure(allprojects) {
2525
JvmVendorSpec.ORACLE :
2626
JvmVendorSpec.matching(VersionProperties.bundledJdkVendor)
2727
}
28-
2928
project.tasks.withType(Test).configureEach { Test test ->
3029
if (BuildParams.getIsRuntimeJavaHomeSet()) {
3130
test.executable = "${BuildParams.runtimeJavaHome}/bin/java" +
@@ -47,12 +46,4 @@ configure(allprojects) {
4746
}
4847
}
4948
}
50-
project.plugins.withType(ThirdPartyAuditPrecommitPlugin) {
51-
project.getTasks().withType(ThirdPartyAuditTask.class).configureEach {
52-
if (BuildParams.getIsRuntimeJavaHomeSet() == false) {
53-
javaHome.set(launcher.map { it.metadata.installationPath.asFile.path })
54-
targetCompatibility.set(providers.provider(() -> JavaVersion.toVersion(launcher.map { it.metadata.javaRuntimeVersion }.get())))
55-
}
56-
}
57-
}
5849
}

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java

+19-17
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@
2626
import static java.util.Objects.requireNonNull;
2727

2828
public class BuildParams {
29-
private static File runtimeJavaHome;
29+
private static Provider<File> runtimeJavaHome;
3030
private static Boolean isRuntimeJavaHomeSet;
3131
private static List<JavaHome> javaVersions;
3232
private static JavaVersion minimumCompilerVersion;
3333
private static JavaVersion minimumRuntimeVersion;
3434
private static JavaVersion gradleJavaVersion;
35-
private static JavaVersion runtimeJavaVersion;
35+
private static Provider<JavaVersion> runtimeJavaVersion;
3636
private static Provider<? extends Action<JavaToolchainSpec>> javaToolChainSpec;
37-
private static String runtimeJavaDetails;
37+
private static Provider<String> runtimeJavaDetails;
3838
private static Boolean inFipsJvm;
3939
private static String gitRevision;
4040
private static String gitOrigin;
@@ -58,7 +58,7 @@ public static void init(Consumer<MutableBuildParams> initializer) {
5858
}
5959

6060
public static File getRuntimeJavaHome() {
61-
return value(runtimeJavaHome);
61+
return value(runtimeJavaHome).get();
6262
}
6363

6464
public static Boolean getIsRuntimeJavaHomeSet() {
@@ -82,11 +82,11 @@ public static JavaVersion getGradleJavaVersion() {
8282
}
8383

8484
public static JavaVersion getRuntimeJavaVersion() {
85-
return value(runtimeJavaVersion);
85+
return value(runtimeJavaVersion.get());
8686
}
8787

8888
public static String getRuntimeJavaDetails() {
89-
return value(runtimeJavaDetails);
89+
return value(runtimeJavaDetails.get());
9090
}
9191

9292
public static Boolean isInFipsJvm() {
@@ -126,7 +126,7 @@ public static Boolean isCi() {
126126
}
127127

128128
public static Boolean isGraalVmRuntime() {
129-
return value(runtimeJavaDetails.toLowerCase().contains("graalvm"));
129+
return value(runtimeJavaDetails.get().toLowerCase().contains("graalvm"));
130130
}
131131

132132
public static Integer getDefaultParallel() {
@@ -182,16 +182,18 @@ public void reset() {
182182
});
183183
}
184184

185-
public void setRuntimeJavaHome(File runtimeJavaHome) {
186-
try {
187-
BuildParams.runtimeJavaHome = requireNonNull(runtimeJavaHome).getCanonicalFile();
188-
} catch (IOException e) {
189-
throw new RuntimeException(e);
190-
}
185+
public void setRuntimeJavaHome(Provider<File> runtimeJavaHome) {
186+
BuildParams.runtimeJavaHome = runtimeJavaHome.map(javaHome -> {
187+
try {
188+
return javaHome.getCanonicalFile();
189+
} catch (IOException e) {
190+
throw new RuntimeException(e);
191+
}
192+
});
191193
}
192194

193-
public void setIsRuntimeJavaHomeSet(boolean isRutimeJavaHomeSet) {
194-
BuildParams.isRuntimeJavaHomeSet = isRutimeJavaHomeSet;
195+
public void setIsRuntimeJavaHomeSet(boolean isRuntimeJavaHomeSet) {
196+
BuildParams.isRuntimeJavaHomeSet = isRuntimeJavaHomeSet;
195197
}
196198

197199
public void setJavaVersions(List<JavaHome> javaVersions) {
@@ -210,11 +212,11 @@ public void setGradleJavaVersion(JavaVersion gradleJavaVersion) {
210212
BuildParams.gradleJavaVersion = requireNonNull(gradleJavaVersion);
211213
}
212214

213-
public void setRuntimeJavaVersion(JavaVersion runtimeJavaVersion) {
215+
public void setRuntimeJavaVersion(Provider<JavaVersion> runtimeJavaVersion) {
214216
BuildParams.runtimeJavaVersion = requireNonNull(runtimeJavaVersion);
215217
}
216218

217-
public void setRuntimeJavaDetails(String runtimeJavaDetails) {
219+
public void setRuntimeJavaDetails(Provider<String> runtimeJavaDetails) {
218220
BuildParams.runtimeJavaDetails = runtimeJavaDetails;
219221
}
220222

0 commit comments

Comments
 (0)