Skip to content

Commit 287d036

Browse files
committed
Rely on /org/elasticsearch/gradle/Architecture at more places
1 parent 0697918 commit 287d036

File tree

10 files changed

+88
-92
lines changed

10 files changed

+88
-92
lines changed

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

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ package org.elasticsearch.gradle.internal
1212
import spock.lang.Unroll
1313
import com.github.tomakehurst.wiremock.WireMockServer
1414

15+
import org.elasticsearch.gradle.Architecture
1516
import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest
1617
import org.elasticsearch.gradle.fixtures.WiremockFixture
1718
import org.elasticsearch.gradle.transform.SymbolicLinkPreservingUntarTransform
@@ -23,6 +24,8 @@ import java.nio.file.Paths
2324
import java.util.regex.Matcher
2425
import java.util.regex.Pattern
2526

27+
import static org.elasticsearch.gradle.Architecture.AARCH64
28+
import static org.elasticsearch.gradle.Architecture.AMD64
2629
import static org.elasticsearch.gradle.internal.JdkDownloadPlugin.*
2730

2831
class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
@@ -76,23 +79,23 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
7679
assertExtraction(result.output, expectedJavaBin);
7780

7881
where:
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)"
82+
platform | arch | jdkVendor | jdkVersion | distributionVersion | expectedJavaBin | suffix
83+
"linux" | AMD64 | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "bin/java" | ""
84+
"linux" | AMD64 | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "bin/java" | ""
85+
"linux" | AMD64 | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "bin/java" | "(old version)"
86+
"windows" | AMD64 | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "bin/java" | ""
87+
"windows" | AMD64 | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "bin/java" | ""
88+
"windows" | AMD64 | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "bin/java" | "(old version)"
89+
"darwin" | AMD64 | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "Contents/Home/bin/java" | ""
90+
"darwin" | AMD64 | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "Contents/Home/bin/java" | ""
91+
"darwin" | AMD64 | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "Contents/Home/bin/java" | "(old version)"
92+
"mac" | AMD64 | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "Contents/Home/bin/java" | ""
93+
"mac" | AMD64 | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "Contents/Home/bin/java" | "(old version)"
94+
"darwin" | AARCH64 | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "Contents/Home/bin/java" | ""
95+
"linux" | AARCH64 | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "bin/java" | ""
96+
"linux" | AARCH64 | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION_11 | null | "bin/java" | "(jdk 11)"
97+
"linux" | AARCH64 | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION_15 | null | "bin/java" | "(jdk 15)"
98+
"darwin" | AARCH64 | VENDOR_ZULU | AZUL_JDK_VERSION_8 | AZUL_8_DISTRO_VERSION | "Contents/Home/bin/java" | "(jdk 8)"
9699
}
97100

98101
def "transforms are reused across projects"() {
@@ -103,17 +106,21 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
103106
plugins {
104107
id 'elasticsearch.jdk-download' apply false
105108
}
109+
110+
106111
"""
107112
3.times {
108113
subProject(':sub-' + it) << """
114+
import org.elasticsearch.gradle.Architecture
115+
109116
apply plugin: 'elasticsearch.jdk-download'
110117
111118
jdks {
112119
myJdk {
113120
vendor = '$jdkVendor'
114121
version = '$jdkVersion'
115122
platform = "$platform"
116-
architecture = "x64"
123+
architecture = Architecture.AMD64
117124
}
118125
}
119126
tasks.register("getJdk") {
@@ -151,6 +158,8 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
151158
id 'elasticsearch.jdk-download'
152159
}
153160
import org.elasticsearch.gradle.internal.Jdk
161+
import org.elasticsearch.gradle.Architecture
162+
154163
apply plugin: 'base'
155164
apply plugin: 'elasticsearch.jdk-download'
156165
@@ -160,7 +169,7 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
160169
version = '$ADOPT_JDK_VERSION'
161170
platform = "$platform"
162171
distributionVersion = '$ADOPT_JDK_VERSION'
163-
architecture = "x64"
172+
architecture = Architecture.AMD64
164173
}
165174
}
166175
@@ -214,10 +223,10 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
214223
private static String urlPath(final String vendor,
215224
final String version,
216225
final String platform,
217-
final String arch = 'x64') {
226+
final Architecture arch = AMD64) {
218227
if (vendor.equals(VENDOR_ADOPTIUM)) {
219228
final String module = isMac(platform) ? "mac" : platform;
220-
return "/jdk-" + version + "/" + module + "/${arch}/jdk/hotspot/normal/adoptium";
229+
return "/jdk-" + version + "/" + module + "/${arch.jdkClassifier}/jdk/hotspot/normal/adoptium";
221230
} else if (vendor.equals(VENDOR_OPENJDK)) {
222231
final String effectivePlatform = isMac(platform) ? "macos" : platform;
223232
final boolean isOld = version.equals(OPENJDK_VERSION_OLD);

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,7 @@ private static String distributionProjectName(ElasticsearchDistribution distribu
179179
Architecture architecture = distribution.getArchitecture();
180180
String projectName = "";
181181

182-
final String archString = platform == ElasticsearchDistribution.Platform.WINDOWS
183-
? ""
184-
: "-" + architecture.toString().toLowerCase();
182+
final String archString = platform == ElasticsearchDistribution.Platform.WINDOWS ? "" : "-" + architecture.toString().toLowerCase();
185183

186184
if (distribution.getBundledJdk() == false) {
187185
projectName += "no-jdk-";

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

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

1010
package org.elasticsearch.gradle.internal;
1111

12+
import org.elasticsearch.gradle.Architecture;
1213
import org.gradle.api.Buildable;
1314
import org.gradle.api.artifacts.Configuration;
1415
import org.gradle.api.file.FileCollection;
@@ -39,7 +40,7 @@ public class Jdk implements Buildable, Iterable<File> {
3940
private final Property<String> vendor;
4041
private final Property<String> version;
4142
private final Property<String> platform;
42-
private final Property<String> architecture;
43+
private final Property<Architecture> architecture;
4344
private final Property<String> distributionVersion;
4445
private final String configurationName;
4546
private String baseVersion;
@@ -54,7 +55,7 @@ public class Jdk implements Buildable, Iterable<File> {
5455
this.vendor = objectFactory.property(String.class);
5556
this.version = objectFactory.property(String.class);
5657
this.platform = objectFactory.property(String.class);
57-
this.architecture = objectFactory.property(String.class);
58+
this.architecture = objectFactory.property(Architecture.class);
5859
this.distributionVersion = objectFactory.property(String.class);
5960
}
6061

@@ -98,16 +99,11 @@ public void setPlatform(String platform) {
9899
this.platform.set(platform);
99100
}
100101

101-
public String getArchitecture() {
102+
public Architecture getArchitecture() {
102103
return architecture.get();
103104
}
104105

105-
public void setArchitecture(final String architecture) {
106-
if (ALLOWED_ARCHITECTURES.contains(architecture) == false) {
107-
throw new IllegalArgumentException(
108-
"unknown architecture [" + architecture + "] for jdk [" + name + "], must be one of " + ALLOWED_ARCHITECTURES
109-
);
110-
}
106+
public void setArchitecture(final Architecture architecture) {
111107
this.architecture.set(architecture);
112108
}
113109

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

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

1010
package org.elasticsearch.gradle.internal;
1111

12+
import org.elasticsearch.gradle.Architecture;
1213
import org.elasticsearch.gradle.transform.SymbolicLinkPreservingUntarTransform;
1314
import org.elasticsearch.gradle.transform.UnzipTransform;
1415
import org.gradle.api.GradleException;
@@ -135,7 +136,7 @@ private void setupRepository(Project project, Jdk jdk) {
135136
}
136137
} else if (jdk.getVendor().equals(VENDOR_ZULU)) {
137138
repoUrl = "https://cdn.azul.com";
138-
if (jdk.getMajor().equals("8") && isJdkOnMacOsPlatform(jdk) && jdk.getArchitecture().equals("aarch64")) {
139+
if (jdk.getMajor().equals("8") && isJdkOnMacOsPlatform(jdk) && jdk.getArchitecture().equals(Architecture.AARCH64)) {
139140
artifactPattern = "zulu/bin/zulu"
140141
+ jdk.getDistributionVersion()
141142
+ "-ca-jdk"
@@ -168,7 +169,15 @@ public static NamedDomainObjectContainer<Jdk> getContainer(Project project) {
168169
private static String dependencyNotation(Jdk jdk) {
169170
String platformDep = isJdkOnMacOsPlatform(jdk) ? (jdk.getVendor().equals(VENDOR_ADOPTIUM) ? "mac" : "macos") : jdk.getPlatform();
170171
String extension = jdk.getPlatform().equals("windows") ? "zip" : "tar.gz";
171-
return groupName(jdk) + ":" + platformDep + ":" + jdk.getBaseVersion() + ":" + jdk.getArchitecture() + "@" + extension;
172+
return groupName(jdk)
173+
+ ":"
174+
+ platformDep
175+
+ ":"
176+
+ jdk.getBaseVersion()
177+
+ ":"
178+
+ jdk.getArchitecture().jdkClassifier
179+
+ "@"
180+
+ extension;
172181
}
173182

174183
private static boolean isJdkOnMacOsPlatform(Jdk jdk) {

build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/JdkDownloadPluginTests.java

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@
99

1010
package org.elasticsearch.gradle.internal;
1111

12+
import org.elasticsearch.gradle.Architecture;
1213
import org.gradle.api.NamedDomainObjectContainer;
1314
import org.gradle.api.Project;
1415
import org.gradle.testfixtures.ProjectBuilder;
1516
import org.junit.Test;
1617

18+
import static org.elasticsearch.gradle.Architecture.AMD64;
1719
import static org.hamcrest.CoreMatchers.equalTo;
1820
import static org.hamcrest.MatcherAssert.assertThat;
1921
import static org.junit.Assert.assertThrows;
@@ -22,7 +24,7 @@ public class JdkDownloadPluginTests {
2224

2325
@Test
2426
public void testMissingVendor() {
25-
assertJdkError(createProject(), "testjdk", null, "11.0.2+33", "linux", "x64", "vendor not specified for jdk [testjdk]");
27+
assertJdkError(createProject(), "testjdk", null, "11.0.2+33", "linux", AMD64, "vendor not specified for jdk [testjdk]");
2628
}
2729

2830
@Test
@@ -33,14 +35,14 @@ public void testUnknownVendor() {
3335
"unknown",
3436
"11.0.2+33",
3537
"linux",
36-
"x64",
38+
AMD64,
3739
"unknown vendor [unknown] for jdk [testjdk], must be one of [adoptium, openjdk, zulu]"
3840
);
3941
}
4042

4143
@Test
4244
public void testMissingVersion() {
43-
assertJdkError(createProject(), "testjdk", "openjdk", null, "linux", "x64", "version not specified for jdk [testjdk]");
45+
assertJdkError(createProject(), "testjdk", "openjdk", null, "linux", AMD64, "version not specified for jdk [testjdk]");
4446
}
4547

4648
@Test
@@ -51,14 +53,14 @@ public void testBadVersionFormat() {
5153
"openjdk",
5254
"badversion",
5355
"linux",
54-
"x64",
56+
AMD64,
5557
"malformed version [badversion] for jdk [testjdk]"
5658
);
5759
}
5860

5961
@Test
6062
public void testMissingPlatform() {
61-
assertJdkError(createProject(), "testjdk", "openjdk", "11.0.2+33", null, "x64", "platform not specified for jdk [testjdk]");
63+
assertJdkError(createProject(), "testjdk", "openjdk", "11.0.2+33", null, AMD64, "platform not specified for jdk [testjdk]");
6264
}
6365

6466
@Test
@@ -69,7 +71,7 @@ public void testUnknownPlatform() {
6971
"openjdk",
7072
"11.0.2+33",
7173
"unknown",
72-
"x64",
74+
AMD64,
7375
"unknown platform [unknown] for jdk [testjdk], must be one of [darwin, linux, windows, mac]"
7476
);
7577
}
@@ -79,26 +81,13 @@ public void testMissingArchitecture() {
7981
assertJdkError(createProject(), "testjdk", "openjdk", "11.0.2+33", "linux", null, "architecture not specified for jdk [testjdk]");
8082
}
8183

82-
@Test
83-
public void testUnknownArchitecture() {
84-
assertJdkError(
85-
createProject(),
86-
"testjdk",
87-
"openjdk",
88-
"11.0.2+33",
89-
"linux",
90-
"unknown",
91-
"unknown architecture [unknown] for jdk [testjdk], must be one of [aarch64, x64]"
92-
);
93-
}
94-
9584
private void assertJdkError(
9685
final Project project,
9786
final String name,
9887
final String vendor,
9988
final String version,
10089
final String platform,
101-
final String architecture,
90+
final Architecture architecture,
10291
final String message
10392
) {
10493
IllegalArgumentException e = assertThrows(
@@ -108,7 +97,7 @@ private void assertJdkError(
10897
assertThat(e.getMessage(), equalTo(message));
10998
}
11099

111-
private void createJdk(Project project, String name, String vendor, String version, String platform, String architecture) {
100+
private void createJdk(Project project, String name, String vendor, String version, String platform, Architecture architecture) {
112101
@SuppressWarnings("unchecked")
113102
NamedDomainObjectContainer<Jdk> jdks = (NamedDomainObjectContainer<Jdk>) project.getExtensions().getByName("jdks");
114103
jdks.create(name, jdk -> {

build-tools/src/main/java/org/elasticsearch/gradle/Architecture.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,28 @@
1111

1212
public enum Architecture {
1313

14-
AMD64("amd64", "linux/amd64"),
15-
AARCH64("aarch64", "linux/arm64");
14+
AMD64("amd64", "x64", "x86_64", "amd64", "linux/amd64"),
15+
AARCH64("aarch64", "aarch64", "aarch64", "arm64", "linux/arm64");
1616

1717
public final String classifier;
1818
public final String dockerPlatform;
19+
public final String jdkClassifier;
20+
public final String mlClassifier;
21+
public final String debianClassifier;
1922

20-
Architecture(String classifier, String dockerPlatform) {
23+
Architecture(String classifier, String jdkClassifier, String mlClassifier, String debianClassifier, String dockerPlatform) {
2124
this.classifier = classifier;
25+
this.jdkClassifier = jdkClassifier;
26+
this.mlClassifier = mlClassifier;
27+
this.debianClassifier = debianClassifier;
2228
this.dockerPlatform = dockerPlatform;
2329
}
2430

2531
public static Architecture current() {
2632
final String architecture = System.getProperty("os.arch", "");
2733
return switch (architecture) {
2834
case "amd64", "x86_64" -> AMD64;
29-
case "aarch64" -> AARCH64;
35+
case "aarch64", "arm64" -> AARCH64;
3036
default -> throw new IllegalArgumentException("can not determine architecture from [" + architecture + "]");
3137
};
3238
}

distribution/archives/build.gradle

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@
1010
import java.nio.file.Files
1111
import java.nio.file.Path
1212

13+
import static org.elasticsearch.gradle.Architecture.AMD64
14+
import static org.elasticsearch.gradle.Architecture.AARCH64
15+
1316
apply plugin: 'elasticsearch.internal-distribution-archive-setup'
1417

15-
CopySpec archiveFiles(String distributionType, String os, String architecture, boolean isTestDistro) {
18+
CopySpec archiveFiles(String distributionType, String os, Architecture architecture, boolean isTestDistro) {
1619
return copySpec {
1720
into("elasticsearch-${version}") {
1821
into('lib') {
@@ -93,35 +96,35 @@ distribution_archives {
9396
windowsZip {
9497
archiveClassifier = 'windows-amd64'
9598
content {
96-
archiveFiles('zip', 'windows', 'x64', false)
99+
archiveFiles('zip', 'windows', AMD64, false)
97100
}
98101
}
99102

100103
darwinAmd64Tar {
101104
archiveClassifier = 'darwin-amd64'
102105
content {
103-
archiveFiles('tar', 'darwin', 'x64', false)
106+
archiveFiles('tar', 'darwin', AMD64, false)
104107
}
105108
}
106109

107110
darwinAarch64Tar {
108111
archiveClassifier = 'darwin-aarch64'
109112
content {
110-
archiveFiles('tar', 'darwin', 'aarch64', false)
113+
archiveFiles('tar', 'darwin', AARCH64, false)
111114
}
112115
}
113116

114117
linuxAarch64Tar {
115118
archiveClassifier = 'linux-aarch64'
116119
content {
117-
archiveFiles('tar', 'linux', 'aarch64', false)
120+
archiveFiles('tar', 'linux', AARCH64, false)
118121
}
119122
}
120123

121124
linuxAmd64Tar {
122125
archiveClassifier = 'linux-amd64'
123126
content {
124-
archiveFiles('tar', 'linux', 'x64', false)
127+
archiveFiles('tar', 'linux', AMD64, false)
125128
}
126129
}
127130
}

0 commit comments

Comments
 (0)