From a98747a3d4addde8b3c7670b1936951086a4f021 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Tue, 17 Apr 2018 09:50:01 -0700 Subject: [PATCH] iter --- .../elasticsearch/gradle/BuildPlugin.groovy | 29 ++++++++++++++----- .../gradle/test/ClusterFormationTasks.groovy | 2 +- distribution/bwc/build.gradle | 4 +-- qa/reindex-from-old/build.gradle | 2 +- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy index 00a99d41fc112..d0ae4fd470312 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy @@ -223,20 +223,33 @@ class BuildPlugin implements Plugin { } /** Add a check before gradle execution phase which ensures java home for the given java version is set. */ - static void requireJavaHome(Project project, Task task, int version) { - project.gradle.taskGraph.whenReady { TaskExecutionGraph taskGraph -> - if (taskGraph.hasTask(task)) { - if (project.javaVersions.get(version) == null) { - throw new GradleException("JAVA${version}_HOME required to run task ${task.path}") + static void requireJavaHome(Task task, int version) { + Project rootProject = task.project.rootProject // use root project for global accounting + if (rootProject.hasProperty('requiredJavaVersions') == false) { + rootProject.rootProject.ext.requiredJavaVersions = [:].withDefault{key -> return []} + rootProject.gradle.taskGraph.whenReady { TaskExecutionGraph taskGraph -> + List messages = [] + for (entry in rootProject.requiredJavaVersions) { + if (rootProject.javaVersions.get(entry.key) != null) { + continue + } + List tasks = entry.value.findAll { taskGraph.hasTask(it) }.collect { " ${it.path}" } + if (tasks.isEmpty() == false) { + messages.add("JAVA${entry.key}_HOME required to run tasks:\n${tasks.join('\n')}") + } + } + if (messages.isEmpty() == false) { + throw new GradleException(messages.join('\n')) } } } + rootProject.requiredJavaVersions.get(version).add(task) } /** A convenience method for getting java home for a version of java and requiring that version for the given task to execute */ - static String getJavaHome(final Project project, final Task task, final int version) { - requireJavaHome(project, task, version) - return project.javaVersions.get(version) + static String getJavaHome(final Task task, final int version) { + requireJavaHome(task, version) + return task.project.javaVersions.get(version) } private static String findRuntimeJavaHome(final String compilerJavaHome) { diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy index 7b1088a57fd3b..b26320b400cc9 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy @@ -609,7 +609,7 @@ class ClusterFormationTasks { Task start = project.tasks.create(name: name, type: DefaultTask, dependsOn: setup) if (node.javaVersion != null) { - BuildPlugin.requireJavaHome(project, start, node.javaVersion) + BuildPlugin.requireJavaHome(start, node.javaVersion) } start.doLast(elasticsearchRunner) return start diff --git a/distribution/bwc/build.gradle b/distribution/bwc/build.gradle index 3bad09f926f49..8e29ff6011006 100644 --- a/distribution/bwc/build.gradle +++ b/distribution/bwc/build.gradle @@ -147,9 +147,9 @@ subprojects { workingDir = checkoutDir if (["5.6", "6.0", "6.1"].contains(bwcBranch)) { // we are building branches that are officially built with JDK 8, push JAVA8_HOME to JAVA_HOME for these builds - environment('JAVA_HOME', getJavaHome(project, it, 8)) + environment('JAVA_HOME', getJavaHome(it, 8)) } else if ("6.2".equals(bwcBranch)) { - environment('JAVA_HOME', getJavaHome(project, it, 9)) + environment('JAVA_HOME', getJavaHome(it, 9)) } else { environment('JAVA_HOME', project.compilerJavaHome) } diff --git a/qa/reindex-from-old/build.gradle b/qa/reindex-from-old/build.gradle index 617a98f59c0cb..8da714dd6278a 100644 --- a/qa/reindex-from-old/build.gradle +++ b/qa/reindex-from-old/build.gradle @@ -77,7 +77,7 @@ if (Os.isFamily(Os.FAMILY_WINDOWS)) { dependsOn unzip executable = new File(project.runtimeJavaHome, 'bin/java') env 'CLASSPATH', "${ -> project.configurations.oldesFixture.asPath }" - env 'JAVA_HOME', getJavaHome(project, it, 7) + env 'JAVA_HOME', getJavaHome(it, 7) args 'oldes.OldElasticsearch', baseDir, unzip.temporaryDir,