diff --git a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy index fc5d432a9ef9a..31a5050e885fe 100644 --- a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy @@ -9,18 +9,21 @@ package org.elasticsearch.gradle.internal + +import spock.lang.Unroll + import org.elasticsearch.gradle.Architecture import org.elasticsearch.gradle.VersionProperties import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest import org.gradle.testkit.runner.TaskOutcome - +@Unroll class InternalDistributionDownloadPluginFuncTest extends AbstractGradleFuncTest { - def "resolves current version from local build"() { + def "resolves current #arch version from local build"() { given: internalBuild() - localDistroSetup() + localDistroSetup(arch) def distroVersion = VersionProperties.getElasticsearch() buildFile << """ apply plugin: 'elasticsearch.internal-distribution-download' @@ -40,12 +43,14 @@ class InternalDistributionDownloadPluginFuncTest extends AbstractGradleFuncTest """ when: - def result = gradleRunner("setupDistro", '-g', gradleUserHome).build() + def result = gradleRunner("-Dos.arch=${arch.classifier}", "setupDistro", '-g', gradleUserHome).build() then: - result.task(":distribution:archives:${testArchiveProjectName}:buildExpanded").outcome == TaskOutcome.SUCCESS + result.task(":distribution:archives:${getTestArchiveProjectName(arch)}:buildExpanded").outcome == TaskOutcome.SUCCESS result.task(":setupDistro").outcome == TaskOutcome.SUCCESS assertExtractedDistroIsCreated("build/distro", 'current-marker.txt') + where: + arch << [Architecture.AARCH64, Architecture.AMD64] } def "resolves expanded bwc versions from source"() { @@ -74,8 +79,10 @@ class InternalDistributionDownloadPluginFuncTest extends AbstractGradleFuncTest then: result.task(":distribution:bwc:minor:buildBwcExpandedTask").outcome == TaskOutcome.SUCCESS result.task(":setupDistro").outcome == TaskOutcome.SUCCESS - assertExtractedDistroIsCreated("distribution/bwc/minor/build/install/elastic-distro", - 'bwc-marker.txt') + assertExtractedDistroIsCreated( + "distribution/bwc/minor/build/install/elastic-distro", + 'bwc-marker.txt' + ) } def "fails on resolving bwc versions with no bundled jdk"() { @@ -101,8 +108,10 @@ class InternalDistributionDownloadPluginFuncTest extends AbstractGradleFuncTest when: def result = gradleRunner("createExtractedTestDistro").buildAndFail() then: - assertOutputContains(result.output, "Configuring a snapshot bwc distribution ('test_distro') " + - "without a bundled JDK is not supported.") + assertOutputContains( + result.output, "Configuring a snapshot bwc distribution ('test_distro') " + + "without a bundled JDK is not supported." + ) } private void bwcMinorProjectSetup() { @@ -140,11 +149,12 @@ class InternalDistributionDownloadPluginFuncTest extends AbstractGradleFuncTest """ } - private void localDistroSetup() { + private void localDistroSetup(Architecture arch = Architecture.current()) { + def archiveProjectName = getTestArchiveProjectName(arch) settingsFile << """ - include ":distribution:archives:${testArchiveProjectName}" + include ":distribution:archives:${ archiveProjectName}" """ - def bwcSubProjectFolder = testProjectDir.newFolder("distribution", "archives", testArchiveProjectName) + def bwcSubProjectFolder = testProjectDir.newFolder("distribution", "archives", archiveProjectName) new File(bwcSubProjectFolder, 'current-marker.txt') << "current" new File(bwcSubProjectFolder, 'build.gradle') << """ import org.gradle.api.internal.artifacts.ArtifactAttributes; @@ -174,10 +184,11 @@ class InternalDistributionDownloadPluginFuncTest extends AbstractGradleFuncTest """ } - String getTestArchiveProjectName() { - def archSuffix = Architecture.current() == Architecture.AARCH64 ? '-aarch64' : '' + String getTestArchiveProjectName(Architecture architecture = Architecture.current()) { + def archSuffix = '-' + architecture.classifier return "linux${archSuffix}-tar" } + boolean assertExtractedDistroIsCreated(String relativeDistroPath, String markerFileName) { File extractedFolder = new File(testProjectDir.root, relativeDistroPath) assert extractedFolder.exists() diff --git a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy index a4635a7232754..345235874ce64 100644 --- a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy @@ -12,6 +12,7 @@ package org.elasticsearch.gradle.internal import spock.lang.Unroll import com.github.tomakehurst.wiremock.WireMockServer +import org.elasticsearch.gradle.Architecture import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest import org.elasticsearch.gradle.fixtures.WiremockFixture import org.elasticsearch.gradle.transform.SymbolicLinkPreservingUntarTransform @@ -23,6 +24,8 @@ import java.nio.file.Paths import java.util.regex.Matcher import java.util.regex.Pattern +import static org.elasticsearch.gradle.Architecture.AARCH64 +import static org.elasticsearch.gradle.Architecture.AMD64 import static org.elasticsearch.gradle.internal.JdkDownloadPlugin.* class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest { @@ -76,23 +79,23 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest { assertExtraction(result.output, expectedJavaBin); where: - platform | arch | jdkVendor | jdkVersion | distributionVersion | expectedJavaBin | suffix - "linux" | "x64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "bin/java" | "" - "linux" | "x64" | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "bin/java" | "" - "linux" | "x64" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "bin/java" | "(old version)" - "windows" | "x64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "bin/java" | "" - "windows" | "x64" | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "bin/java" | "" - "windows" | "x64" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "bin/java" | "(old version)" - "darwin" | "x64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "Contents/Home/bin/java" | "" - "darwin" | "x64" | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "Contents/Home/bin/java" | "" - "darwin" | "x64" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "Contents/Home/bin/java" | "(old version)" - "mac" | "x64" | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "Contents/Home/bin/java" | "" - "mac" | "x64" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "Contents/Home/bin/java" | "(old version)" - "darwin" | "aarch64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "Contents/Home/bin/java" | "" - "linux" | "aarch64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "bin/java" | "" - "linux" | "aarch64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION_11 | null | "bin/java" | "(jdk 11)" - "linux" | "aarch64" | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION_15 | null | "bin/java" | "(jdk 15)" - "darwin" | "aarch64" | VENDOR_ZULU | AZUL_JDK_VERSION_8 | AZUL_8_DISTRO_VERSION | "Contents/Home/bin/java" | "(jdk 8)" + platform | arch | jdkVendor | jdkVersion | distributionVersion | expectedJavaBin | suffix + "linux" | AMD64 | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "bin/java" | "" + "linux" | AMD64 | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "bin/java" | "" + "linux" | AMD64 | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "bin/java" | "(old version)" + "windows" | AMD64 | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "bin/java" | "" + "windows" | AMD64 | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "bin/java" | "" + "windows" | AMD64 | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "bin/java" | "(old version)" + "darwin" | AMD64 | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "Contents/Home/bin/java" | "" + "darwin" | AMD64 | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "Contents/Home/bin/java" | "" + "darwin" | AMD64 | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "Contents/Home/bin/java" | "(old version)" + "mac" | AMD64 | VENDOR_OPENJDK | OPEN_JDK_VERSION | null | "Contents/Home/bin/java" | "" + "mac" | AMD64 | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | null | "Contents/Home/bin/java" | "(old version)" + "darwin" | AARCH64 | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "Contents/Home/bin/java" | "" + "linux" | AARCH64 | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION | null | "bin/java" | "" + "linux" | AARCH64 | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION_11 | null | "bin/java" | "(jdk 11)" + "linux" | AARCH64 | VENDOR_ADOPTIUM | ADOPT_JDK_VERSION_15 | null | "bin/java" | "(jdk 15)" + "darwin" | AARCH64 | VENDOR_ZULU | AZUL_JDK_VERSION_8 | AZUL_8_DISTRO_VERSION | "Contents/Home/bin/java" | "(jdk 8)" } def "transforms are reused across projects"() { @@ -103,9 +106,13 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest { plugins { id 'elasticsearch.jdk-download' apply false } + + """ 3.times { subProject(':sub-' + it) << """ + import org.elasticsearch.gradle.Architecture + apply plugin: 'elasticsearch.jdk-download' jdks { @@ -113,7 +120,7 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest { vendor = '$jdkVendor' version = '$jdkVersion' platform = "$platform" - architecture = "x64" + architecture = Architecture.AMD64 } } tasks.register("getJdk") { @@ -151,6 +158,8 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest { id 'elasticsearch.jdk-download' } import org.elasticsearch.gradle.internal.Jdk + import org.elasticsearch.gradle.Architecture + apply plugin: 'base' apply plugin: 'elasticsearch.jdk-download' @@ -160,7 +169,7 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest { version = '$ADOPT_JDK_VERSION' platform = "$platform" distributionVersion = '$ADOPT_JDK_VERSION' - architecture = "x64" + architecture = Architecture.AMD64 } } @@ -214,10 +223,10 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest { private static String urlPath(final String vendor, final String version, final String platform, - final String arch = 'x64') { + final Architecture arch = AMD64) { if (vendor.equals(VENDOR_ADOPTIUM)) { final String module = isMac(platform) ? "mac" : platform; - return "/jdk-" + version + "/" + module + "/${arch}/jdk/hotspot/normal/adoptium"; + return "/jdk-" + version + "/" + module + "/${arch.jdkClassifier}/jdk/hotspot/normal/adoptium"; } else if (vendor.equals(VENDOR_OPENJDK)) { final String effectivePlatform = isMac(platform) ? "macos" : platform; final boolean isOld = version.equals(OPENJDK_VERSION_OLD); diff --git a/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle index cf74de2286583..8f1ea57fd590c 100644 --- a/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle +++ b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle @@ -15,7 +15,7 @@ subprojects { archiveBaseName.set("elasticsearch${project.name.startsWith('oss')?'-oss':''}") def versionFromBranch = calculateBranchVersion() archiveVersion.set("${versionFromBranch}-SNAPSHOT") - archiveClassifier.set("darwin-x86_64") + archiveClassifier.set("darwin-amd64") archiveExtension.set('tar.gz') } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java index 4c0c224aff3f3..3fed15a71cd00 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java @@ -179,9 +179,7 @@ private static String distributionProjectName(ElasticsearchDistribution distribu Architecture architecture = distribution.getArchitecture(); String projectName = ""; - final String archString = platform == ElasticsearchDistribution.Platform.WINDOWS || architecture == Architecture.X64 - ? "" - : "-" + architecture.toString().toLowerCase(); + final String archString = calculateArchString(distribution); if (distribution.getBundledJdk() == false) { projectName += "no-jdk-"; @@ -204,7 +202,21 @@ private static String distributionProjectName(ElasticsearchDistribution distribu if (distribution.getType() == InternalElasticsearchDistributionTypes.DOCKER_WOLFI) { return projectName + "wolfi-docker" + archString + "-export"; } - return projectName + distribution.getType().getName(); + return projectName + architecture.classifier + "-" + distribution.getType().getName(); + } + + private static String calculateArchString(ElasticsearchDistribution distribution) { + Architecture architecture = distribution.getArchitecture(); + ElasticsearchDistribution.Platform platform = distribution.getPlatform(); + Version version = Version.fromString(distribution.getVersion()); + + if (version.onOrAfter("9.2.0")) { + return platform == ElasticsearchDistribution.Platform.WINDOWS ? "" : "-" + architecture.toString().toLowerCase(); + } else { + return platform == ElasticsearchDistribution.Platform.WINDOWS || architecture == Architecture.AMD64 + ? "" + : "-" + architecture.toString().toLowerCase(); + } } public static class ProjectBasedDistributionDependency implements DistributionDependency { diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/Jdk.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/Jdk.java index 4396a18c205c1..3c5f925f07e6f 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/Jdk.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/Jdk.java @@ -9,6 +9,7 @@ package org.elasticsearch.gradle.internal; +import org.elasticsearch.gradle.Architecture; import org.gradle.api.Buildable; import org.gradle.api.artifacts.Configuration; import org.gradle.api.file.FileCollection; @@ -39,7 +40,7 @@ public class Jdk implements Buildable, Iterable { private final Property vendor; private final Property version; private final Property platform; - private final Property architecture; + private final Property architecture; private final Property distributionVersion; private final String configurationName; private String baseVersion; @@ -54,7 +55,7 @@ public class Jdk implements Buildable, Iterable { this.vendor = objectFactory.property(String.class); this.version = objectFactory.property(String.class); this.platform = objectFactory.property(String.class); - this.architecture = objectFactory.property(String.class); + this.architecture = objectFactory.property(Architecture.class); this.distributionVersion = objectFactory.property(String.class); } @@ -98,16 +99,11 @@ public void setPlatform(String platform) { this.platform.set(platform); } - public String getArchitecture() { + public Architecture getArchitecture() { return architecture.get(); } - public void setArchitecture(final String architecture) { - if (ALLOWED_ARCHITECTURES.contains(architecture) == false) { - throw new IllegalArgumentException( - "unknown architecture [" + architecture + "] for jdk [" + name + "], must be one of " + ALLOWED_ARCHITECTURES - ); - } + public void setArchitecture(final Architecture architecture) { this.architecture.set(architecture); } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/JdkDownloadPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/JdkDownloadPlugin.java index 3c278128e43f2..08005585fda50 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/JdkDownloadPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/JdkDownloadPlugin.java @@ -9,6 +9,7 @@ package org.elasticsearch.gradle.internal; +import org.elasticsearch.gradle.Architecture; import org.elasticsearch.gradle.transform.SymbolicLinkPreservingUntarTransform; import org.elasticsearch.gradle.transform.UnzipTransform; import org.gradle.api.GradleException; @@ -135,7 +136,7 @@ private void setupRepository(Project project, Jdk jdk) { } } else if (jdk.getVendor().equals(VENDOR_ZULU)) { repoUrl = "https://cdn.azul.com"; - if (jdk.getMajor().equals("8") && isJdkOnMacOsPlatform(jdk) && jdk.getArchitecture().equals("aarch64")) { + if (jdk.getMajor().equals("8") && isJdkOnMacOsPlatform(jdk) && jdk.getArchitecture().equals(Architecture.AARCH64)) { artifactPattern = "zulu/bin/zulu" + jdk.getDistributionVersion() + "-ca-jdk" @@ -168,7 +169,15 @@ public static NamedDomainObjectContainer getContainer(Project project) { private static String dependencyNotation(Jdk jdk) { String platformDep = isJdkOnMacOsPlatform(jdk) ? (jdk.getVendor().equals(VENDOR_ADOPTIUM) ? "mac" : "macos") : jdk.getPlatform(); String extension = jdk.getPlatform().equals("windows") ? "zip" : "tar.gz"; - return groupName(jdk) + ":" + platformDep + ":" + jdk.getBaseVersion() + ":" + jdk.getArchitecture() + "@" + extension; + return groupName(jdk) + + ":" + + platformDep + + ":" + + jdk.getBaseVersion() + + ":" + + jdk.getArchitecture().jdkClassifier + + "@" + + extension; } private static boolean isJdkOnMacOsPlatform(Jdk jdk) { diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DebElasticsearchDistributionType.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DebElasticsearchDistributionType.java index 09dfdb62e22ee..ef6df9b49d1df 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DebElasticsearchDistributionType.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DebElasticsearchDistributionType.java @@ -9,6 +9,7 @@ package org.elasticsearch.gradle.internal.distribution; +import org.elasticsearch.gradle.Architecture; import org.elasticsearch.gradle.ElasticsearchDistribution; import org.elasticsearch.gradle.ElasticsearchDistributionType; import org.elasticsearch.gradle.Version; @@ -24,7 +25,6 @@ public String getName() { @Override public String getClassifier(ElasticsearchDistribution.Platform platform, Version version) { - return ":amd64"; + return ":" + Architecture.current().debianClassifier; } - } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/RpmElasticsearchDistributionType.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/RpmElasticsearchDistributionType.java index e9a65d8c6e6c5..0047b29c39bb4 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/RpmElasticsearchDistributionType.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/RpmElasticsearchDistributionType.java @@ -9,7 +9,10 @@ package org.elasticsearch.gradle.internal.distribution; +import org.elasticsearch.gradle.Architecture; +import org.elasticsearch.gradle.ElasticsearchDistribution; import org.elasticsearch.gradle.ElasticsearchDistributionType; +import org.elasticsearch.gradle.Version; public class RpmElasticsearchDistributionType implements ElasticsearchDistributionType { @@ -29,4 +32,9 @@ public boolean shouldExtract() { public boolean isDocker() { return false; } + + @Override + public String getClassifier(ElasticsearchDistribution.Platform platform, Version version) { + return ":" + Architecture.current().bwcClassifier; + } } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerBuildTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerBuildTask.java index 728d6140ee019..30340853421fb 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerBuildTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerBuildTask.java @@ -222,11 +222,12 @@ public void execute() { } tags.forEach(tag -> spec.args("--tag", tag)); - parameters.getBuildArgs().get().forEach((k, v) -> spec.args("--build-arg", k + "=" + v)); if (parameters.getPush().getOrElse(false)) { spec.args("--push"); + } else { + spec.args("--load"); } }); diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java index 08e3c92307d72..8bac3ef593031 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java @@ -256,7 +256,8 @@ private static String distroId(ElasticsearchDistributionType type, Platform plat + (type == ARCHIVE ? platform + "-" : "") + type.getName() + (bundledJdk ? "" : "-no-jdk") - + (architecture == Architecture.X64 ? "" : "-" + architecture.toString().toLowerCase()); + + "-" + + architecture.toString().toLowerCase(); } private static String destructiveDistroTestTaskName(ElasticsearchDistribution distro) { diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/TestUtil.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/TestUtil.java index 56ae19af259e4..412fd3f4085fc 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/TestUtil.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/TestUtil.java @@ -17,7 +17,7 @@ public class TestUtil { public static String getTestLibraryPath(String nativeLibsDir) { - String arch = Architecture.current().toString().toLowerCase(Locale.ROOT); + String arch = Architecture.current().jdkClassifier; String platform = String.format(Locale.ROOT, "%s-%s", ElasticsearchDistribution.CURRENT_PLATFORM, arch); return String.format(Locale.ROOT, "%s/%s", nativeLibsDir, platform); diff --git a/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/JdkDownloadPluginTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/JdkDownloadPluginTests.java index 6462e249d6b03..c329edb4e6881 100644 --- a/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/JdkDownloadPluginTests.java +++ b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/JdkDownloadPluginTests.java @@ -9,11 +9,13 @@ package org.elasticsearch.gradle.internal; +import org.elasticsearch.gradle.Architecture; import org.gradle.api.NamedDomainObjectContainer; import org.gradle.api.Project; import org.gradle.testfixtures.ProjectBuilder; import org.junit.Test; +import static org.elasticsearch.gradle.Architecture.AMD64; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertThrows; @@ -22,7 +24,7 @@ public class JdkDownloadPluginTests { @Test public void testMissingVendor() { - assertJdkError(createProject(), "testjdk", null, "11.0.2+33", "linux", "x64", "vendor not specified for jdk [testjdk]"); + assertJdkError(createProject(), "testjdk", null, "11.0.2+33", "linux", AMD64, "vendor not specified for jdk [testjdk]"); } @Test @@ -33,14 +35,14 @@ public void testUnknownVendor() { "unknown", "11.0.2+33", "linux", - "x64", + AMD64, "unknown vendor [unknown] for jdk [testjdk], must be one of [adoptium, openjdk, zulu]" ); } @Test public void testMissingVersion() { - assertJdkError(createProject(), "testjdk", "openjdk", null, "linux", "x64", "version not specified for jdk [testjdk]"); + assertJdkError(createProject(), "testjdk", "openjdk", null, "linux", AMD64, "version not specified for jdk [testjdk]"); } @Test @@ -51,14 +53,14 @@ public void testBadVersionFormat() { "openjdk", "badversion", "linux", - "x64", + AMD64, "malformed version [badversion] for jdk [testjdk]" ); } @Test public void testMissingPlatform() { - assertJdkError(createProject(), "testjdk", "openjdk", "11.0.2+33", null, "x64", "platform not specified for jdk [testjdk]"); + assertJdkError(createProject(), "testjdk", "openjdk", "11.0.2+33", null, AMD64, "platform not specified for jdk [testjdk]"); } @Test @@ -69,7 +71,7 @@ public void testUnknownPlatform() { "openjdk", "11.0.2+33", "unknown", - "x64", + AMD64, "unknown platform [unknown] for jdk [testjdk], must be one of [darwin, linux, windows, mac]" ); } @@ -79,26 +81,13 @@ public void testMissingArchitecture() { assertJdkError(createProject(), "testjdk", "openjdk", "11.0.2+33", "linux", null, "architecture not specified for jdk [testjdk]"); } - @Test - public void testUnknownArchitecture() { - assertJdkError( - createProject(), - "testjdk", - "openjdk", - "11.0.2+33", - "linux", - "unknown", - "unknown architecture [unknown] for jdk [testjdk], must be one of [aarch64, x64]" - ); - } - private void assertJdkError( final Project project, final String name, final String vendor, final String version, final String platform, - final String architecture, + final Architecture architecture, final String message ) { IllegalArgumentException e = assertThrows( @@ -108,7 +97,7 @@ private void assertJdkError( assertThat(e.getMessage(), equalTo(message)); } - private void createJdk(Project project, String name, String vendor, String version, String platform, String architecture) { + private void createJdk(Project project, String name, String vendor, String version, String platform, Architecture architecture) { @SuppressWarnings("unchecked") NamedDomainObjectContainer jdks = (NamedDomainObjectContainer) project.getExtensions().getByName("jdks"); jdks.create(name, jdk -> { diff --git a/build-tools/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy b/build-tools/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy index 1332a2fdf241c..8f9e048bbbb8b 100644 --- a/build-tools/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy +++ b/build-tools/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy @@ -9,21 +9,27 @@ package org.elasticsearch.gradle +import spock.lang.Unroll + import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest import org.gradle.testkit.runner.TaskOutcome -import spock.lang.Unroll import static org.elasticsearch.gradle.fixtures.DistributionDownloadFixture.withMockedDistributionDownload class DistributionDownloadPluginFuncTest extends AbstractGradleFuncTest { @Unroll - def "extracted #distType version can be resolved"() { + def "extracted #distType #arch version can be resolved"() { given: buildFile << applyPluginAndSetupDistro(version, platform) when: - def result = withMockedDistributionDownload(version, platform, gradleRunner('setupDistro', '-i')) { + def result = withMockedDistributionDownload( + version, + platform, + arch, + gradleRunner("-Dos.arch=${arch.classifier}", 'setupDistro', '-i') + ) { build() } @@ -32,10 +38,13 @@ class DistributionDownloadPluginFuncTest extends AbstractGradleFuncTest { assertExtractedDistroCreated("build/distro") where: - version | platform | distType - VersionProperties.getElasticsearch() | ElasticsearchDistribution.Platform.LINUX | "current" - "8.1.0-SNAPSHOT" | ElasticsearchDistribution.Platform.LINUX | "bwc" - "7.0.0" | ElasticsearchDistribution.Platform.WINDOWS | "released" + version | platform | arch | distType + VersionProperties.getElasticsearch() | ElasticsearchDistribution.Platform.LINUX | Architecture.AMD64 | "current" + VersionProperties.getElasticsearch() | ElasticsearchDistribution.Platform.LINUX | Architecture.AARCH64 | "current" + "8.1.0-SNAPSHOT" | ElasticsearchDistribution.Platform.LINUX | Architecture.AMD64 | "bwc" + "8.1.0-SNAPSHOT" | ElasticsearchDistribution.Platform.LINUX | Architecture.AARCH64 | "bwc" + "7.0.0" | ElasticsearchDistribution.Platform.WINDOWS | Architecture.AMD64 | "released" + "7.0.0" | ElasticsearchDistribution.Platform.WINDOWS | Architecture.AARCH64 | "released" } @@ -52,7 +61,7 @@ class DistributionDownloadPluginFuncTest extends AbstractGradleFuncTest { when: def runner = gradleRunner('clean', 'setupDistro', '-i', '-g', gradleUserHome) def unpackingMessage = "Unpacking elasticsearch-${version}-linux-${Architecture.current().classifier}.tar.gz " + - "using SymbolicLinkPreservingUntarTransform" + "using SymbolicLinkPreservingUntarTransform" def result = withMockedDistributionDownload(version, platform, runner) { // initial run def firstRun = build() @@ -88,8 +97,10 @@ class DistributionDownloadPluginFuncTest extends AbstractGradleFuncTest { then: result.tasks.size() == 3 - result.output.count("Unpacking elasticsearch-${version}-linux-${Architecture.current().classifier}.tar.gz " + - "using SymbolicLinkPreservingUntarTransform") == 1 + result.output.count( + "Unpacking elasticsearch-${version}-linux-${Architecture.current().classifier}.tar.gz " + + "using SymbolicLinkPreservingUntarTransform" + ) == 1 } private boolean assertExtractedDistroCreated(String relativePath) { diff --git a/build-tools/src/main/java/org/elasticsearch/gradle/Architecture.java b/build-tools/src/main/java/org/elasticsearch/gradle/Architecture.java index c7e6546e66b9a..20ff2a27fad5a 100644 --- a/build-tools/src/main/java/org/elasticsearch/gradle/Architecture.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/Architecture.java @@ -9,24 +9,47 @@ package org.elasticsearch.gradle; +/** + * TODO We need to clean that up when other (binary) components have aligned on architecture namings + * I put all different names and nomenclatures here to have a central place to check when we adopt further + * ones ml and beats have been updated and bwc branches have been updated too. + * */ public enum Architecture { - X64("x86_64", "linux/amd64"), - AARCH64("aarch64", "linux/arm64"); + AMD64("amd64", "x86_64", "x64", "X86_64", "x86_64", "amd64", "linux/amd64"), + AARCH64("aarch64", "aarch64", "aarch64", "aarch64", "aarch64", "arm64", "linux/arm64"); public final String classifier; + public final String bwcClassifier; + public final String jdkClassifier; public final String dockerPlatform; + public final String mlClassifier; + public final String debianClassifier; + public final String rpmClassifier; - Architecture(String classifier, String dockerPlatform) { + Architecture( + String classifier, + String bwcClassifier, + String jdkClassifier, + String rpmClassifier, + String mlClassifier, + String debianClassifier, + String dockerPlatform + ) { this.classifier = classifier; + this.bwcClassifier = bwcClassifier; + this.jdkClassifier = jdkClassifier; + this.rpmClassifier = rpmClassifier; + this.mlClassifier = mlClassifier; + this.debianClassifier = debianClassifier; this.dockerPlatform = dockerPlatform; } public static Architecture current() { final String architecture = System.getProperty("os.arch", ""); return switch (architecture) { - case "amd64", "x86_64" -> X64; - case "aarch64" -> AARCH64; + case "amd64", "x86_64" -> AMD64; + case "aarch64", "arm64" -> AARCH64; default -> throw new IllegalArgumentException("can not determine architecture from [" + architecture + "]"); }; } diff --git a/build-tools/src/main/java/org/elasticsearch/gradle/ElasticsearchDistributionType.java b/build-tools/src/main/java/org/elasticsearch/gradle/ElasticsearchDistributionType.java index 94c00518b325f..9f7a439b4928c 100644 --- a/build-tools/src/main/java/org/elasticsearch/gradle/ElasticsearchDistributionType.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/ElasticsearchDistributionType.java @@ -26,6 +26,8 @@ default String getExtension(ElasticsearchDistribution.Platform platform) { } default String getClassifier(ElasticsearchDistribution.Platform platform, Version version) { - return ":" + Architecture.current().classifier; + return version.onOrAfter("9.2.0") + ? ":" + platform + "-" + Architecture.current().classifier + : ":" + Architecture.current().bwcClassifier; } } diff --git a/build-tools/src/main/java/org/elasticsearch/gradle/distribution/ArchiveElasticsearchDistributionType.java b/build-tools/src/main/java/org/elasticsearch/gradle/distribution/ArchiveElasticsearchDistributionType.java index f04390004a6d7..ec666c9e26ce6 100644 --- a/build-tools/src/main/java/org/elasticsearch/gradle/distribution/ArchiveElasticsearchDistributionType.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/distribution/ArchiveElasticsearchDistributionType.java @@ -30,7 +30,7 @@ public String getExtension(ElasticsearchDistribution.Platform platform) { @Override public String getClassifier(ElasticsearchDistribution.Platform platform, Version version) { - return version.onOrAfter("7.0.0") ? ":" + platform + "-" + Architecture.current().classifier : ""; + return version.onOrAfter("7.0.0") ? ":" + platform + "-" + Architecture.current().bwcClassifier : ""; } @Override diff --git a/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy b/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy index b23bad1697e0d..e204f9741d8c8 100644 --- a/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy +++ b/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy @@ -11,6 +11,7 @@ package org.elasticsearch.gradle.fixtures import org.elasticsearch.gradle.Architecture import org.elasticsearch.gradle.ElasticsearchDistribution +import org.elasticsearch.gradle.Version import org.elasticsearch.gradle.VersionProperties import org.gradle.testkit.runner.BuildResult import org.gradle.testkit.runner.GradleRunner @@ -20,33 +21,50 @@ class DistributionDownloadFixture { public static final String INIT_SCRIPT = "repositories-init.gradle" static BuildResult withMockedDistributionDownload(GradleRunner gradleRunner, Closure buildRunClosure) { - return withMockedDistributionDownload(VersionProperties.getElasticsearch(), ElasticsearchDistribution.CURRENT_PLATFORM, - gradleRunner, buildRunClosure) + return withMockedDistributionDownload( + VersionProperties.getElasticsearch(), ElasticsearchDistribution.CURRENT_PLATFORM, + gradleRunner, buildRunClosure + ) } static BuildResult withChangedClasspathMockedDistributionDownload(GradleRunner gradleRunner, Closure buildRunClosure) { - return doRunWithMockedDistributionDownload(VersionProperties.getElasticsearch(), ElasticsearchDistribution.CURRENT_PLATFORM, - gradleRunner, buildRunClosure, true, false) + return doRunWithMockedDistributionDownload( + VersionProperties.getElasticsearch(), ElasticsearchDistribution.CURRENT_PLATFORM, + Architecture.current(), gradleRunner, buildRunClosure, true, false + ) } + static BuildResult withChangedConfigMockedDistributionDownload(GradleRunner gradleRunner, Closure buildRunClosure) { - return doRunWithMockedDistributionDownload(VersionProperties.getElasticsearch(), ElasticsearchDistribution.CURRENT_PLATFORM, - gradleRunner, buildRunClosure, false, true) + return doRunWithMockedDistributionDownload( + VersionProperties.getElasticsearch(), ElasticsearchDistribution.CURRENT_PLATFORM, + Architecture.current(), gradleRunner, buildRunClosure, false, true + ) + } + + static BuildResult withMockedDistributionDownload(String version, + ElasticsearchDistribution.Platform platform, + Architecture architecture, + GradleRunner gradleRunner, + Closure buildRunClosure) { + return doRunWithMockedDistributionDownload(version, platform, architecture, gradleRunner, buildRunClosure, false, false) } static BuildResult withMockedDistributionDownload(String version, ElasticsearchDistribution.Platform platform, GradleRunner gradleRunner, Closure buildRunClosure) { - return doRunWithMockedDistributionDownload(version, platform, gradleRunner, buildRunClosure, false, false) + return withMockedDistributionDownload(version, platform, Architecture.current(), gradleRunner, buildRunClosure) } static BuildResult withChangedClasspathMockedDistributionDownload(String version, ElasticsearchDistribution.Platform platform, - GradleRunner gradleRunner, Closure buildRunClosure) { - return doRunWithMockedDistributionDownload(version, platform, gradleRunner, buildRunClosure, true, false) + GradleRunner gradleRunner, Closure buildRunClosure) { + return doRunWithMockedDistributionDownload(version, platform, Architecture.current(), gradleRunner, buildRunClosure, true, false) } - private static BuildResult doRunWithMockedDistributionDownload(String version, ElasticsearchDistribution.Platform platform, + private static BuildResult doRunWithMockedDistributionDownload(String version, + ElasticsearchDistribution.Platform platform, + Architecture architecture, GradleRunner gradleRunner, Closure buildRunClosure, boolean withAddedJar, boolean withAddedConfig) { - String urlPath = urlPath(version, platform); + String urlPath = urlPath(version, platform, architecture); return WiremockFixture.withWireMock(urlPath, filebytes(urlPath, withAddedJar, withAddedConfig)) { server -> File initFile = new File(gradleRunner.getProjectDir(), INIT_SCRIPT) initFile.text = """allprojects { p -> @@ -62,10 +80,14 @@ class DistributionDownloadFixture { } } - private static String urlPath(String version,ElasticsearchDistribution.Platform platform) { - String fileType = ((platform == ElasticsearchDistribution.Platform.LINUX || - platform == ElasticsearchDistribution.Platform.DARWIN)) ? "tar.gz" : "zip" - "/downloads/elasticsearch/elasticsearch-${version}-${platform}-${Architecture.current().classifier}.$fileType" + private static String urlPath(String version, ElasticsearchDistribution.Platform platform, Architecture architecture) { + String fileType = ((platform == ElasticsearchDistribution.Platform.LINUX || platform == + ElasticsearchDistribution.Platform.DARWIN)) ? "tar.gz" : "zip" + "/downloads/elasticsearch/elasticsearch-${version}-${platform}-${mapArchitectureToBwcClassifier(version, architecture)}.$fileType" + } + + private static String mapArchitectureToBwcClassifier(String version, Architecture architecture) { + return Version.fromString(version).onOrAfter("9.2.0") ? architecture.classifier : architecture.bwcClassifier } private static byte[] filebytes(String urlPath, boolean withAddedJar, boolean withAddedConfig) throws IOException { diff --git a/distribution/archives/build.gradle b/distribution/archives/build.gradle index ddfdaa69bb392..62aff027d35af 100644 --- a/distribution/archives/build.gradle +++ b/distribution/archives/build.gradle @@ -10,9 +10,13 @@ import java.nio.file.Files import java.nio.file.Path +import static org.elasticsearch.gradle.Architecture.AMD64 +import static org.elasticsearch.gradle.Architecture.AARCH64 +import org.elasticsearch.gradle.Architecture + apply plugin: 'elasticsearch.internal-distribution-archive-setup' -CopySpec archiveFiles(String distributionType, String os, String architecture, boolean isTestDistro) { +CopySpec archiveFiles(String distributionType, String os, Architecture architecture, boolean isTestDistro) { return copySpec { into("elasticsearch-${version}") { into('lib') { @@ -91,37 +95,37 @@ distribution_archives { } windowsZip { - archiveClassifier = 'windows-x86_64' + archiveClassifier = 'windows-amd64' content { - archiveFiles('zip', 'windows', 'x64', false) + archiveFiles('zip', 'windows', AMD64, false) } } - darwinTar { - archiveClassifier = 'darwin-x86_64' + darwinAmd64Tar { + archiveClassifier = 'darwin-amd64' content { - archiveFiles('tar', 'darwin', 'x64', false) + archiveFiles('tar', 'darwin', AMD64, false) } } darwinAarch64Tar { archiveClassifier = 'darwin-aarch64' content { - archiveFiles('tar', 'darwin', 'aarch64', false) + archiveFiles('tar', 'darwin', AARCH64, false) } } linuxAarch64Tar { archiveClassifier = 'linux-aarch64' content { - archiveFiles('tar', 'linux', 'aarch64', false) + archiveFiles('tar', 'linux', AARCH64, false) } } - linuxTar { - archiveClassifier = 'linux-x86_64' + linuxAmd64Tar { + archiveClassifier = 'linux-amd64' content { - archiveFiles('tar', 'linux', 'x64', false) + archiveFiles('tar', 'linux', AMD64, false) } } } diff --git a/distribution/archives/darwin-tar/build.gradle b/distribution/archives/darwin-amd64-tar/build.gradle similarity index 100% rename from distribution/archives/darwin-tar/build.gradle rename to distribution/archives/darwin-amd64-tar/build.gradle diff --git a/distribution/archives/linux-tar/build.gradle b/distribution/archives/linux-amd64-tar/build.gradle similarity index 100% rename from distribution/archives/linux-tar/build.gradle rename to distribution/archives/linux-amd64-tar/build.gradle diff --git a/distribution/build.gradle b/distribution/build.gradle index fa6223d30e63b..45751bb2d5c2e 100644 --- a/distribution/build.gradle +++ b/distribution/build.gradle @@ -16,10 +16,13 @@ import org.elasticsearch.gradle.internal.DependenciesInfoPlugin import org.elasticsearch.gradle.internal.NoticeTask import org.elasticsearch.gradle.internal.test.ClusterFeaturesMetadataPlugin import org.elasticsearch.gradle.transform.FilteringJarTransform - import java.nio.file.Files import java.nio.file.Path +import static org.elasticsearch.gradle.Architecture.AMD64 +import static org.elasticsearch.gradle.Architecture.AARCH64 +import org.elasticsearch.gradle.Architecture + plugins { id 'base' id 'elasticsearch.distro' @@ -249,7 +252,7 @@ configure(subprojects.findAll { ['archives', 'packages'].contains(it.name) }) { // Setup all required JDKs project.jdks { ['darwin', 'windows', 'linux'].each { platform -> - (platform == 'linux' || platform == 'darwin' ? ['x64', 'aarch64'] : ['x64']).each { architecture -> + (platform == 'linux' || platform == 'darwin' ? [AMD64, AARCH64] : [AMD64]).each { architecture -> "bundled_${platform}_${architecture}" { it.platform = platform it.version = VersionProperties.bundledJdkVersion @@ -354,7 +357,7 @@ configure(subprojects.findAll { ['archives', 'packages'].contains(it.name) }) { into('platform') { from(configurations.libsNative) if (os != null) { - include (os + '-' + architecture + '/*') + include (os + '-' + architecture.jdkClassifier + '/*') } } into('entitlement-agent') { @@ -379,11 +382,7 @@ configure(subprojects.findAll { ['archives', 'packages'].contains(it.name) }) { } List excludePlatforms = ['linux-x86_64', 'linux-aarch64', 'windows-x86_64', 'darwin-x86_64', 'darwin-aarch64'] if (os != null) { - String platform = os + '-' + architecture - if (architecture == 'x64') { - // ML platform dir uses the x86_64 nomenclature - platform = os + '-x86_64' - } + String platform = os + '-' + architecture.mlClassifier excludePlatforms.remove(excludePlatforms.indexOf(platform)) } else { excludePlatforms = [] @@ -475,7 +474,7 @@ configure(subprojects.findAll { ['archives', 'packages'].contains(it.name) }) { } } - jdkFiles = { Project project, String os, String architecture -> + jdkFiles = { Project project, String os, Architecture architecture -> return copySpec { from project.jdks."bundled_${os}_${architecture}" exclude "demo/**" @@ -630,12 +629,12 @@ subprojects { } ['archives:windows-zip', - 'archives:darwin-tar', + 'archives:darwin-amd64-tar', 'archives:darwin-aarch64-tar', 'archives:linux-aarch64-tar', - 'archives:linux-tar', + 'archives:linux-amd64-tar', 'archives:integ-test-zip', - 'packages:rpm', 'packages:deb', + 'packages:amd64-rpm', 'packages:amd64-deb', 'packages:aarch64-rpm', 'packages:aarch64-deb', ].forEach { subName -> Project subproject = project("${project.path}:${subName}") diff --git a/distribution/docker/build.gradle b/distribution/docker/build.gradle index e3f87117ea029..775502b31ab8e 100644 --- a/distribution/docker/build.gradle +++ b/distribution/docker/build.gradle @@ -98,12 +98,12 @@ configurations { allPlugins filebeat_aarch64 filebeat_fips_aarch64 - filebeat_x86_64 - filebeat_fips_x86_64 + filebeat_amd64 + filebeat_fips_amd64 metricbeat_aarch64 metricbeat_fips_aarch64 - metricbeat_x86_64 - metricbeat_fips_x86_64 + metricbeat_amd64 + metricbeat_fips_amd64 fips } @@ -112,22 +112,22 @@ String tiniArch = Architecture.current() == Architecture.AARCH64 ? 'arm64' : 'am dependencies { aarch64DockerSource project(":distribution:archives:linux-aarch64-tar") aarch64DockerSourceTar project(path: ":distribution:archives:linux-aarch64-tar", configuration: "default") - dockerSource project(":distribution:archives:linux-tar") - dockerSourceTar project(path: ":distribution:archives:linux-tar", configuration: "default") + dockerSource project(":distribution:archives:linux-amd64-tar") + dockerSourceTar project(path: ":distribution:archives:linux-amd64-tar", configuration: "default") log4jConfig project(path: ":distribution", configuration: 'log4jConfig') tini "krallin:tini:0.19.0:${tiniArch}" allPlugins project(path: ':plugins', configuration: 'allPlugins') allPlugins project(path: ':x-pack:extras:plugins', configuration: 'allPlugins') filebeat_aarch64 "beats:filebeat:${VersionProperties.elasticsearch}:linux-arm64@tar.gz" - filebeat_x86_64 "beats:filebeat:${VersionProperties.elasticsearch}:linux-x86_64@tar.gz" + filebeat_amd64 "beats:filebeat:${VersionProperties.elasticsearch}:linux-x86_64@tar.gz" filebeat_fips_aarch64 "beats:filebeat-fips:${VersionProperties.elasticsearch}:linux-arm64@tar.gz" - filebeat_fips_x86_64 "beats:filebeat-fips:${VersionProperties.elasticsearch}:linux-x86_64@tar.gz" + filebeat_fips_amd64 "beats:filebeat-fips:${VersionProperties.elasticsearch}:linux-x86_64@tar.gz" metricbeat_aarch64 "beats:metricbeat:${VersionProperties.elasticsearch}:linux-arm64@tar.gz" - metricbeat_x86_64 "beats:metricbeat:${VersionProperties.elasticsearch}:linux-x86_64@tar.gz" + metricbeat_amd64 "beats:metricbeat:${VersionProperties.elasticsearch}:linux-x86_64@tar.gz" metricbeat_fips_aarch64 "beats:metricbeat-fips:${VersionProperties.elasticsearch}:linux-arm64@tar.gz" - metricbeat_fips_x86_64 "beats:metricbeat-fips:${VersionProperties.elasticsearch}:linux-x86_64@tar.gz" + metricbeat_fips_amd64 "beats:metricbeat-fips:${VersionProperties.elasticsearch}:linux-x86_64@tar.gz" fips "org.bouncycastle:bc-fips:1.0.2.5" fips "org.bouncycastle:bctls-fips:1.0.19" @@ -607,7 +607,7 @@ subprojects { Project subProject -> if (subProject.name.endsWith('-export')) { apply plugin: 'distribution' - final Architecture architecture = subProject.name.contains('aarch64-') ? Architecture.AARCH64 : Architecture.X64 + final Architecture architecture = subProject.name.contains('aarch64-') ? Architecture.AARCH64 : Architecture.AMD64 DockerBase base = DockerBase.DEFAULT if (subProject.name.contains('ironbank-')) { base = DockerBase.IRON_BANK @@ -659,7 +659,7 @@ subprojects { Project subProject -> it.setCompression(Compression.GZIP) it.getArchiveBaseName().set("elasticsearch${base.suffix}-${VersionProperties.elasticsearch}-docker-image") it.getArchiveVersion().set("") - it.getArchiveClassifier().set(architecture == Architecture.AARCH64 ? 'aarch64' : '') + it.getArchiveClassifier().set(architecture.classifier) it.getDestinationDirectory().set(new File(project.parent.buildDir, 'distributions')) it.dependsOn(exportTask) } diff --git a/distribution/docker/cloud-ess-docker-export/build.gradle b/distribution/docker/cloud-ess-docker-amd64-export/build.gradle similarity index 100% rename from distribution/docker/cloud-ess-docker-export/build.gradle rename to distribution/docker/cloud-ess-docker-amd64-export/build.gradle diff --git a/distribution/docker/cloud-ess-fips-docker-export/build.gradle b/distribution/docker/cloud-ess-fips-docker-amd64-export/build.gradle similarity index 100% rename from distribution/docker/cloud-ess-fips-docker-export/build.gradle rename to distribution/docker/cloud-ess-fips-docker-amd64-export/build.gradle diff --git a/distribution/docker/docker-export/build.gradle b/distribution/docker/docker-amd64-export/build.gradle similarity index 100% rename from distribution/docker/docker-export/build.gradle rename to distribution/docker/docker-amd64-export/build.gradle diff --git a/distribution/docker/ironbank-docker-export/build.gradle b/distribution/docker/ironbank-docker-amd64-export/build.gradle similarity index 100% rename from distribution/docker/ironbank-docker-export/build.gradle rename to distribution/docker/ironbank-docker-amd64-export/build.gradle diff --git a/distribution/docker/wolfi-docker-export/build.gradle b/distribution/docker/wolfi-docker-amd64-export/build.gradle similarity index 100% rename from distribution/docker/wolfi-docker-export/build.gradle rename to distribution/docker/wolfi-docker-amd64-export/build.gradle diff --git a/distribution/packages/deb/build.gradle b/distribution/packages/amd64-deb/build.gradle similarity index 100% rename from distribution/packages/deb/build.gradle rename to distribution/packages/amd64-deb/build.gradle diff --git a/distribution/packages/rpm/build.gradle b/distribution/packages/amd64-rpm/build.gradle similarity index 100% rename from distribution/packages/rpm/build.gradle rename to distribution/packages/amd64-rpm/build.gradle diff --git a/distribution/packages/rpm/src/main/resources/logo/elastic.gif b/distribution/packages/amd64-rpm/src/main/resources/logo/elastic.gif similarity index 100% rename from distribution/packages/rpm/src/main/resources/logo/elastic.gif rename to distribution/packages/amd64-rpm/src/main/resources/logo/elastic.gif diff --git a/distribution/packages/build.gradle b/distribution/packages/build.gradle index 9129c9a12fc9e..836b95e40d443 100644 --- a/distribution/packages/build.gradle +++ b/distribution/packages/build.gradle @@ -11,6 +11,7 @@ import org.apache.tools.ant.filters.ReplaceTokens import org.elasticsearch.gradle.LoggedExec import org.elasticsearch.gradle.OS import org.redline_rpm.header.Flags +import org.elasticsearch.gradle.Architecture import java.nio.file.Files import java.nio.file.Path @@ -81,7 +82,7 @@ plugins { // Common configuration that is package dependent. This can't go in ospackage // since we have different templated files that need to be consumed, but the structure // is the same -def commonPackageConfig(String type, String architecture) { +def commonPackageConfig(String type, Architecture architecture) { return { onlyIf("not running on windows") { OS.current().equals(OS.WINDOWS) == false @@ -89,23 +90,13 @@ def commonPackageConfig(String type, String architecture) { dependsOn "process${type.capitalize()}Files" packageName = "elasticsearch" if (type == 'deb') { - if (architecture == 'x64') { - arch = 'amd64' - } else { - assert architecture == 'aarch64': architecture - arch = 'arm64' - } + arch = architecture.debianClassifier } else { assert type == 'rpm': type - if (architecture == 'x64') { - arch = 'X86_64' - } else { - assert architecture == 'aarch64': architecture - arch = 'aarch64' - } + arch = architecture.rpmClassifier } // Follow elasticsearch's file naming convention - String prefix = "${architecture == 'aarch64' ? 'aarch64-' : ''}${type}" + String prefix = "${architecture.classifier}${type}" destinationDirectory = file("${prefix}/build/distributions") archiveFileName.value(project.provider({ "${packageName}-${project.version}-${archString}.${type}" })) String packagingFiles = "build/packaging/${type}" @@ -121,7 +112,6 @@ def commonPackageConfig(String type, String architecture) { // top level "into" directive is not inherited from ospackage for some reason, so we must // specify it again explicitly for copying common files - String platform = 'linux-' + ((architecture == 'x64') ? 'x86_64' : architecture) into('/usr/share/elasticsearch') { into('bin') { with binFiles(type, false) @@ -286,7 +276,6 @@ def commonPackageConfig(String type, String architecture) { with noticeFile(false) } } - // this is package independent configuration ospackage { maintainer = 'Elasticsearch Team ' @@ -350,8 +339,8 @@ tasks.register('buildAarch64Deb', Deb) { configure(commonDebConfig('aarch64')) } -tasks.register('buildDeb', Deb) { - configure(commonDebConfig('x64')) +tasks.register('buildAmd64Deb', Deb) { + configure(commonDebConfig('amd64')) } Closure commonRpmConfig(String architecture) { @@ -383,8 +372,8 @@ tasks.register('buildAarch64Rpm', Rpm) { configure(commonRpmConfig('aarch64')) } -tasks.register('buildRpm', Rpm) { - configure(commonRpmConfig('x64')) +tasks.register('buildAmd64Rpm', Rpm) { + configure(commonRpmConfig('amd64')) } Closure dpkgExists = { it -> new File('/bin/dpkg-deb').exists() || new File('/usr/bin/dpkg-deb').exists() || new File('/usr/local/bin/dpkg-deb').exists() } diff --git a/modules/reindex/build.gradle b/modules/reindex/build.gradle index adfd6921445a4..40f14287491e4 100644 --- a/modules/reindex/build.gradle +++ b/modules/reindex/build.gradle @@ -104,7 +104,7 @@ jdks { vendor = 'adoptium' version = '8u302+b08' platform = OS.current().name().toLowerCase() - architecture = Architecture.current().name().toLowerCase() + architecture = Architecture.current() } } diff --git a/plugins/examples/settings.gradle b/plugins/examples/settings.gradle index bb2c0e7e7e96d..0c4d6a8588408 100644 --- a/plugins/examples/settings.gradle +++ b/plugins/examples/settings.gradle @@ -74,7 +74,7 @@ static def getDefaultDistroProjectName() { } else if (os.startsWith("Linux") || os.startsWith("LINUX")) { return isArm ? 'linux-aarch64-tar' : 'linux-tar' } else if (os.startsWith("Mac")) { - return isArm ? 'darwin-aarch64-tar' : 'darwin-tar' + return isArm ? 'darwin-aarch64-tar' : 'darwin-amd64-tar' } else { throw new GradleException("Unable to determine system platform type.") } diff --git a/settings.gradle b/settings.gradle index f3463efc5af38..30a335886cb33 100644 --- a/settings.gradle +++ b/settings.gradle @@ -57,25 +57,25 @@ List projects = [ 'benchmarks', 'distribution:archives:integ-test-zip', 'distribution:archives:windows-zip', - 'distribution:archives:darwin-tar', + 'distribution:archives:darwin-amd64-tar', 'distribution:archives:darwin-aarch64-tar', 'distribution:archives:linux-aarch64-tar', - 'distribution:archives:linux-tar', + 'distribution:archives:linux-amd64-tar', 'distribution:docker', - 'distribution:docker:cloud-ess-docker-export', + 'distribution:docker:cloud-ess-docker-amd64-export', 'distribution:docker:cloud-ess-docker-aarch64-export', 'distribution:docker:docker-aarch64-export', - 'distribution:docker:docker-export', + 'distribution:docker:docker-amd64-export', 'distribution:docker:ironbank-docker-aarch64-export', - 'distribution:docker:ironbank-docker-export', + 'distribution:docker:ironbank-docker-amd64-export', 'distribution:docker:wolfi-docker-aarch64-export', - 'distribution:docker:wolfi-docker-export', - 'distribution:docker:cloud-ess-fips-docker-export', + 'distribution:docker:wolfi-docker-amd64-export', + 'distribution:docker:cloud-ess-fips-docker-amd64-export', 'distribution:docker:cloud-ess-fips-docker-aarch64-export', 'distribution:packages:aarch64-deb', - 'distribution:packages:deb', + 'distribution:packages:amd64-deb', 'distribution:packages:aarch64-rpm', - 'distribution:packages:rpm', + 'distribution:packages:amd64-rpm', 'distribution:bwc:bugfix', 'distribution:bwc:bugfix2', 'distribution:bwc:bugfix3',