Skip to content

Commit fa3799f

Browse files
authored
[Build] Make JdkDownload Plugin configuration cache compatible (#117120)
Also Fix zulu 8 download that we still use for testing old es versions
1 parent 5500a5e commit fa3799f

File tree

4 files changed

+53
-37
lines changed

4 files changed

+53
-37
lines changed

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

Lines changed: 44 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
package org.elasticsearch.gradle.internal
1111

12-
1312
import spock.lang.Unroll
1413
import com.github.tomakehurst.wiremock.WireMockServer
1514

@@ -24,22 +23,19 @@ import java.nio.file.Paths
2423
import java.util.regex.Matcher
2524
import java.util.regex.Pattern
2625

27-
import static org.elasticsearch.gradle.internal.JdkDownloadPlugin.VENDOR_ADOPTIUM
28-
import static org.elasticsearch.gradle.internal.JdkDownloadPlugin.VENDOR_OPENJDK
26+
import static org.elasticsearch.gradle.internal.JdkDownloadPlugin.*
2927

3028
class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
3129

3230
private static final String OPENJDK_VERSION_OLD = "1+99"
3331
private static final String ADOPT_JDK_VERSION = "12.0.2+10"
3432
private static final String ADOPT_JDK_VERSION_11 = "11.0.10+9"
3533
private static final String ADOPT_JDK_VERSION_15 = "15.0.2+7"
34+
private static final String AZUL_JDK_VERSION_8 = "8u302+b08"
35+
private static final String AZUL_8_DISTRO_VERSION = "8.56.0.23"
3636
private static final String OPEN_JDK_VERSION = "12.0.1+99@123456789123456789123456789abcde"
3737
private static final Pattern JDK_HOME_LOGLINE = Pattern.compile("JDK HOME: (.*)")
3838

39-
def setup() {
40-
configurationCacheCompatible = false
41-
}
42-
4339
@Unroll
4440
def "jdk #jdkVendor for #platform#suffix are downloaded and extracted"() {
4541
given:
@@ -56,14 +52,16 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
5652
version = '$jdkVersion'
5753
platform = "$platform"
5854
architecture = '$arch'
55+
distributionVersion = '$distributionVersion'
5956
}
6057
}
6158
62-
def theJdks = jdks
59+
// def theJdks = jdks
6360
tasks.register("getJdk") {
6461
dependsOn jdks.myJdk
62+
def jdk = jdks.myJdk
6563
doLast {
66-
println "JDK HOME: " + theJdks.myJdk
64+
println "JDK HOME: " + jdk
6765
}
6866
}
6967
"""
@@ -78,22 +76,23 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
7876
assertExtraction(result.output, expectedJavaBin);
7977

8078
where:
81-
platform | arch | jdkVendor | jdkVersion | expectedJavaBin | suffix
82-
"linux" | "x64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | "bin/java" | ""
83-
"linux" | "x64" | VENDOR_OPENJDK | OPEN_JDK_VERSION | "bin/java" | ""
84-
"linux" | "x64" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | "bin/java" | "(old version)"
85-
"windows" | "x64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | "bin/java" | ""
86-
"windows" | "x64" | VENDOR_OPENJDK | OPEN_JDK_VERSION | "bin/java" | ""
87-
"windows" | "x64" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | "bin/java" | "(old version)"
88-
"darwin" | "x64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | "Contents/Home/bin/java" | ""
89-
"darwin" | "x64" | VENDOR_OPENJDK | OPEN_JDK_VERSION | "Contents/Home/bin/java" | ""
90-
"darwin" | "x64" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | "Contents/Home/bin/java" | "(old version)"
91-
"mac" | "x64" | VENDOR_OPENJDK | OPEN_JDK_VERSION | "Contents/Home/bin/java" | ""
92-
"mac" | "x64" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | "Contents/Home/bin/java" | "(old version)"
93-
"darwin" | "aarch64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | "Contents/Home/bin/java" | ""
94-
"linux" | "aarch64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | "bin/java" | ""
95-
"linux" | "aarch64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION_11 | "bin/java" | "(jdk 11)"
96-
"linux" | "aarch64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION_15 | "bin/java" | "(jdk 15)"
79+
platform | arch | jdkVendor | jdkVersion | distributionVersion | expectedJavaBin | suffix
80+
"linux" | "x64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "bin/java" | ""
81+
"linux" | "x64" | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "bin/java" | ""
82+
"linux" | "x64" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "bin/java" | "(old version)"
83+
"windows" | "x64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "bin/java" | ""
84+
"windows" | "x64" | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "bin/java" | ""
85+
"windows" | "x64" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "bin/java" | "(old version)"
86+
"darwin" | "x64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "Contents/Home/bin/java" | ""
87+
"darwin" | "x64" | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "Contents/Home/bin/java" | ""
88+
"darwin" | "x64" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "Contents/Home/bin/java" | "(old version)"
89+
"mac" | "x64" | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "Contents/Home/bin/java" | ""
90+
"mac" | "x64" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "Contents/Home/bin/java" | "(old version)"
91+
"darwin" | "aarch64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "Contents/Home/bin/java" | ""
92+
"linux" | "aarch64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "bin/java" | ""
93+
"linux" | "aarch64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION_11 | null | "bin/java" | "(jdk 11)"
94+
"linux" | "aarch64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION_15 | null | "bin/java" | "(jdk 15)"
95+
"darwin" | "aarch64" | VENDOR_ZULU | AZUL_JDK_VERSION_8 | AZUL_8_DISTRO_VERSION | "Contents/Home/bin/java" | "(jdk 8)"
9796
}
9897

9998
def "transforms are reused across projects"() {
@@ -118,9 +117,10 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
118117
}
119118
}
120119
tasks.register("getJdk") {
121-
dependsOn jdks.myJdk
120+
def jdk = jdks.myJdk
121+
dependsOn jdk
122122
doLast {
123-
println "JDK HOME: " + jdks.myJdk
123+
println "JDK HOME: " + jdk
124124
}
125125
}
126126
"""
@@ -137,7 +137,7 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
137137
result.output.count("Unpacking linux-12.0.2-x64.tar.gz using ${SymbolicLinkPreservingUntarTransform.simpleName}") == 1
138138

139139
where:
140-
platform | jdkVendor | jdkVersion | expectedJavaBin
140+
platform | jdkVendor | jdkVersion | expectedJavaBin
141141
"linux" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | "bin/java"
142142
}
143143

@@ -159,6 +159,7 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
159159
vendor = '$VENDOR_ADOPTIUM'
160160
version = '$ADOPT_JDK_VERSION'
161161
platform = "$platform"
162+
distributionVersion = '$ADOPT_JDK_VERSION'
162163
architecture = "x64"
163164
}
164165
}
@@ -204,6 +205,8 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
204205
assert matcher.find() == true;
205206
String jdkHome = matcher.group(1);
206207
Path javaPath = Paths.get(jdkHome, javaBin);
208+
println "canonical " + javaPath.toFile().getCanonicalPath()
209+
Paths.get(jdkHome).toFile().listFiles().each { println it }
207210
assert Files.exists(javaPath) == true;
208211
true
209212
}
@@ -221,15 +224,26 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
221224
final String versionPath = isOld ? "jdk1/99" : "jdk12.0.1/123456789123456789123456789abcde/99";
222225
final String filename = "openjdk-" + (isOld ? "1" : "12.0.1") + "_" + effectivePlatform + "-x64_bin." + extension(platform);
223226
return "/java/GA/" + versionPath + "/GPL/" + filename;
227+
} else if (vendor.equals(VENDOR_ZULU)) {
228+
// we only have a single version of zulu currently in the tests
229+
return "/zulu/bin/zulu8.56.0.23-ca-jdk8.0.302-macosx_aarch64.tar.gz"
224230
}
225231
}
226232

227233
private static byte[] filebytes(final String vendor, final String platform) throws IOException {
228234
final String effectivePlatform = getPlatform(vendor, platform);
229235
if (vendor.equals(VENDOR_ADOPTIUM)) {
230-
return JdkDownloadPluginFuncTest.class.getResourceAsStream("fake_adoptium_" + effectivePlatform + "." + extension(platform)).getBytes()
236+
return JdkDownloadPluginFuncTest.class.getResourceAsStream(
237+
"fake_adoptium_" + effectivePlatform + "." + extension(platform)
238+
).getBytes()
231239
} else if (vendor.equals(VENDOR_OPENJDK)) {
232-
JdkDownloadPluginFuncTest.class.getResourceAsStream("fake_openjdk_" + effectivePlatform + "." + extension(platform)).getBytes()
240+
return JdkDownloadPluginFuncTest.class.getResourceAsStream(
241+
"fake_openjdk_" + effectivePlatform + "." + extension(platform)
242+
).getBytes()
243+
} else {
244+
// zulu
245+
String resourcePath = "fake_zulu_" + effectivePlatform + "." + extension(platform)
246+
return JdkDownloadPluginFuncTest.class.getResourceAsStream(resourcePath).getBytes()
233247
}
234248
}
235249

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import org.gradle.api.Buildable;
1313
import org.gradle.api.artifacts.Configuration;
14+
import org.gradle.api.file.FileCollection;
1415
import org.gradle.api.model.ObjectFactory;
1516
import org.gradle.api.provider.Property;
1617
import org.gradle.api.tasks.TaskDependency;
@@ -33,20 +34,22 @@ public class Jdk implements Buildable, Iterable<File> {
3334
private static final Pattern LEGACY_VERSION_PATTERN = Pattern.compile("(\\d)(u\\d+)\\+(b\\d+?)(@([a-f0-9]{32}))?");
3435

3536
private final String name;
36-
private final Configuration configuration;
37+
private final FileCollection configuration;
3738

3839
private final Property<String> vendor;
3940
private final Property<String> version;
4041
private final Property<String> platform;
4142
private final Property<String> architecture;
4243
private final Property<String> distributionVersion;
44+
private final String configurationName;
4345
private String baseVersion;
4446
private String major;
4547
private String build;
4648
private String hash;
4749

4850
Jdk(String name, Configuration configuration, ObjectFactory objectFactory) {
4951
this.name = name;
52+
this.configurationName = configuration.getName();
5053
this.configuration = configuration;
5154
this.vendor = objectFactory.property(String.class);
5255
this.version = objectFactory.property(String.class);
@@ -137,7 +140,7 @@ public String getPath() {
137140
}
138141

139142
public String getConfigurationName() {
140-
return configuration.getName();
143+
return configurationName;
141144
}
142145

143146
@Override

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
import org.gradle.api.artifacts.type.ArtifactTypeDefinition;
2222
import org.gradle.api.attributes.Attribute;
2323

24-
import java.util.Arrays;
25-
2624
/**
2725
* @deprecated We wanna get rid from this and custom jdk downloads via this plugin and
2826
* make leverage the gradle toolchain resolver capabilities.
@@ -38,8 +36,8 @@ public class JdkDownloadPlugin implements Plugin<Project> {
3836

3937
private static final String REPO_NAME_PREFIX = "jdk_repo_";
4038
private static final String EXTENSION_NAME = "jdks";
41-
public static final String JDK_TRIMMED_PREFIX = "(jdk-?\\d.*)|(zulu-?\\d.+).jdk";
42-
public static final String ZULU_LINUX_AARCH_PATTERN = "zulu.*linux_aarch64";
39+
public static final String JDK_TRIMMED_PREFIX = "(jdk-?\\d.*)|(zulu-?\\d.*).jdk";
40+
public static final String ZULU_LINUX_AARCH_PATTERN = "zulu.*_aarch64";
4341

4442
@Override
4543
public void apply(Project project) {
@@ -66,7 +64,8 @@ public void apply(Project project) {
6664
.attribute(jdkAttribute, true);
6765
transformSpec.parameters(parameters -> {
6866
parameters.setTrimmedPrefixPattern(JDK_TRIMMED_PREFIX);
69-
parameters.setKeepStructureFor(Arrays.asList(ZULU_LINUX_AARCH_PATTERN));
67+
// parameters.setAsFiletreeOutput(true);
68+
// parameters.setKeepStructureFor(Arrays.asList(ZULU_LINUX_AARCH_PATTERN));
7069
});
7170
});
7271

0 commit comments

Comments
 (0)