Skip to content

Commit

Permalink
Merge branch 'main' into versions/node-metadata-take-3
Browse files Browse the repository at this point in the history
  • Loading branch information
williamrandolph committed Feb 9, 2024
2 parents bdbd3d2 + c6808d0 commit cc89615
Show file tree
Hide file tree
Showing 510 changed files with 13,882 additions and 5,171 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -119,29 +119,29 @@ public static SourceSetContainer getJavaSourceSets(Project project) {
return project.getExtensions().getByType(JavaPluginExtension.class).getSourceSets();
}

public static File locateElasticsearchWorkspace(Gradle gradle) {
if(gradle.getRootProject().getName().startsWith("build-tools")) {
File buildToolsParent = gradle.getRootProject().getRootDir().getParentFile();
if(versionFileExists(buildToolsParent)) {
return buildToolsParent;
}
public static File locateElasticsearchWorkspace(Gradle gradle) {
if (gradle.getRootProject().getName().startsWith("build-tools")) {
File buildToolsParent = gradle.getRootProject().getRootDir().getParentFile();
if (versionFileExists(buildToolsParent)) {
return buildToolsParent;
}
if (gradle.getParent() == null) {
// See if any of these included builds is the Elasticsearch gradle
for (IncludedBuild includedBuild : gradle.getIncludedBuilds()) {
if (versionFileExists(includedBuild.getProjectDir())) {
return includedBuild.getProjectDir();
}
return buildToolsParent;
}
if (gradle.getParent() == null) {
// See if any of these included builds is the Elasticsearch gradle
for (IncludedBuild includedBuild : gradle.getIncludedBuilds()) {
if (versionFileExists(includedBuild.getProjectDir())) {
return includedBuild.getProjectDir();
}

// Otherwise assume this gradle is the root elasticsearch workspace
return gradle.getRootProject().getRootDir();
} else {
// We're an included build, so keep looking
return locateElasticsearchWorkspace(gradle.getParent());
}

// Otherwise assume this gradle is the root elasticsearch workspace
return gradle.getRootProject().getRootDir();
} else {
// We're an included build, so keep looking
return locateElasticsearchWorkspace(gradle.getParent());
}
}

private static boolean versionFileExists(File rootDir) {
return new File(rootDir, "build-tools-internal/version.properties").exists();
Expand Down
15 changes: 13 additions & 2 deletions build-tools-internal/src/main/groovy/elasticsearch.ide.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
*/

import org.elasticsearch.gradle.util.Pair
import org.elasticsearch.gradle.util.GradleUtils
import org.elasticsearch.gradle.internal.info.BuildParams
import org.jetbrains.gradle.ext.JUnit

Expand Down Expand Up @@ -109,16 +110,26 @@ if (providers.systemProperty('idea.active').getOrNull() == 'true') {
}
}

// aggregate task so dependency artifacts below can can use one task name
tasks.register("generateProviderImpls").configure {
group = 'ide'
description = 'Builds all embedded provider impls'

dependsOn subprojects
.collect { GradleUtils.findByName(it.tasks, 'generateProviderImpls') }
.findAll { it != null }
}

tasks.register('buildDependencyArtifacts') {
group = 'ide'
description = 'Builds artifacts needed as dependency for IDE modules'
dependsOn([':client:rest-high-level:shadowJar',
':plugins:repository-hdfs:hadoop-client-api:shadowJar',
':libs:elasticsearch-x-content:generateImplProviderImpl',
':x-pack:plugin:esql:compute:ann:jar',
':x-pack:plugin:esql:compute:gen:jar',
':server:generateModulesList',
':server:generatePluginsList'].collect { elasticsearchProject.right()?.task(it) ?: it })
':server:generatePluginsList',
':generateProviderImpls'].collect { elasticsearchProject.right()?.task(it) ?: it })
}

idea {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ public void execute(Task t) {
// don't track these as inputs since they contain absolute paths and break cache relocatability
File gradleUserHome = project.getGradle().getGradleUserHomeDir();
nonInputProperties.systemProperty("gradle.user.home", gradleUserHome);
nonInputProperties.systemProperty("workspace.dir", Util.locateElasticsearchWorkspace(project.getGradle()));
// we use 'temp' relative to CWD since this is per JVM and tests are forbidden from writing to CWD
nonInputProperties.systemProperty("java.io.tmpdir", test.getWorkingDir().toPath().resolve("temp"));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@
package org.elasticsearch.gradle.internal;

import org.gradle.api.Project;
import org.gradle.api.Task;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.file.Directory;
import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.SourceSet;
import org.gradle.api.tasks.Sync;
import org.gradle.api.tasks.TaskProvider;

import static org.elasticsearch.gradle.internal.conventions.GUtils.capitalize;
import static org.elasticsearch.gradle.util.GradleUtils.getJavaSourceSets;
Expand All @@ -23,9 +25,11 @@
public class EmbeddedProviderExtension {

private final Project project;
private final TaskProvider<Task> metaTask;

public EmbeddedProviderExtension(Project project) {
public EmbeddedProviderExtension(Project project, TaskProvider<Task> metaTask) {
this.project = project;
this.metaTask = metaTask;
}

void impl(String implName, Project implProject) {
Expand Down Expand Up @@ -55,6 +59,7 @@ void impl(String implName, Project implProject) {
spec.from(generateProviderManifest);
});
});
metaTask.configure(t -> { t.dependsOn(generateProviderImpl); });

var mainSourceSet = getJavaSourceSets(project).findByName(SourceSet.MAIN_SOURCE_SET_NAME);
mainSourceSet.getOutput().dir(generateProviderImpl);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
import org.elasticsearch.gradle.transform.UnzipTransform;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.Task;
import org.gradle.api.attributes.Attribute;
import org.gradle.api.tasks.TaskProvider;

import static org.gradle.api.artifacts.type.ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE;
import static org.gradle.api.artifacts.type.ArtifactTypeDefinition.DIRECTORY_TYPE;
Expand All @@ -29,6 +31,7 @@ public void apply(Project project) {
transformSpec.parameters(parameters -> parameters.getIncludeArtifactName().set(true));
});

project.getExtensions().create("embeddedProviders", EmbeddedProviderExtension.class, project);
TaskProvider<Task> metaTask = project.getTasks().register("generateProviderImpls");
project.getExtensions().create("embeddedProviders", EmbeddedProviderExtension.class, project, metaTask);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public class InternalDistributionModuleCheckTaskProvider {
"org.elasticsearch.grok",
"org.elasticsearch.logging",
"org.elasticsearch.lz4",
"org.elasticsearch.nativeaccess",
"org.elasticsearch.plugin",
"org.elasticsearch.plugin.analysis",
"org.elasticsearch.pluginclassloader",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Collections;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
Expand Down Expand Up @@ -75,7 +75,7 @@ public DockerAvailability getDockerAvailability() {
Version version = null;
boolean isVersionHighEnough = false;
boolean isComposeAvailable = false;
Set<Architecture> supportedArchitectures = new HashSet<>();
Set<Architecture> supportedArchitectures = EnumSet.noneOf(Architecture.class);

// Check if the Docker binary exists
final Optional<String> dockerBinary = getDockerPath();
Expand Down
10 changes: 5 additions & 5 deletions build-tools/src/main/java/org/elasticsearch/gradle/OS.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
*/
package org.elasticsearch.gradle;

import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Map;
import java.util.Set;
import java.util.function.Supplier;

public enum OS {
Expand All @@ -34,7 +34,7 @@ public static OS current() {

public static class Conditional<T> {

private final Map<OS, Supplier<T>> conditions = new HashMap<>();
private final Map<OS, Supplier<T>> conditions = new EnumMap<>(OS.class);

public Conditional<T> onWindows(Supplier<T> supplier) {
conditions.put(WINDOWS, supplier);
Expand All @@ -58,7 +58,7 @@ public Conditional<T> onUnix(Supplier<T> supplier) {
}

public T supply() {
HashSet<OS> missingOS = new HashSet<>(Arrays.asList(OS.values()));
Set<OS> missingOS = EnumSet.allOf(OS.class);
missingOS.removeAll(conditions.keySet());
if (missingOS.isEmpty() == false) {
throw new IllegalArgumentException("No condition specified for " + missingOS);
Expand Down
Loading

0 comments on commit cc89615

Please sign in to comment.