diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 79575897ca65a..6536c77e58726 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -96,23 +96,12 @@ dependencies { compile 'org.apache.rat:apache-rat:0.11' } -// Gradle version-specific options (allows build to run with Gradle 2.13 as well as 2.14+/3.+) -if (GradleVersion.current() == GradleVersion.version("2.13")) { - // ProgressLogger(-Factory) classes are part of the public Gradle API - sourceSets.main.groovy.srcDir 'src/main/gradle-2.13-groovy' +// Gradle 2.14+ removed ProgressLogger(-Factory) classes from the public APIs +// Use logging dependency instead - dependencies { - compile 'ru.vyarus:gradle-animalsniffer-plugin:1.0.1' // last version compatible with Gradle 2.13 - } -} else { - // Gradle 2.14+ removed ProgressLogger(-Factory) classes from the public APIs - // Use logging dependency instead - sourceSets.main.groovy.srcDir 'src/main/gradle-2.14-groovy' - - dependencies { - compileOnly "org.gradle:gradle-logging:${GradleVersion.current().getVersion()}" - compile 'ru.vyarus:gradle-animalsniffer-plugin:1.2.0' // Gradle 2.14 requires a version > 1.0.1 - } +dependencies { + compileOnly "org.gradle:gradle-logging:${GradleVersion.current().getVersion()}" + compile 'ru.vyarus:gradle-animalsniffer-plugin:1.2.0' // Gradle 2.14 requires a version > 1.0.1 } /***************************************************************************** diff --git a/buildSrc/src/main/gradle-2.13-groovy/org/elasticsearch/gradle/ProgressLogger.groovy b/buildSrc/src/main/gradle-2.13-groovy/org/elasticsearch/gradle/ProgressLogger.groovy deleted file mode 100644 index 5c02e255a1a8a..0000000000000 --- a/buildSrc/src/main/gradle-2.13-groovy/org/elasticsearch/gradle/ProgressLogger.groovy +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.elasticsearch.gradle - -/** - * Wraps a ProgressLogger so that code in src/main/groovy does not need to - * define imports on Gradle 2.13/2.14+ ProgressLoggers - */ -class ProgressLogger { - @Delegate org.gradle.logging.ProgressLogger progressLogger - - ProgressLogger(org.gradle.logging.ProgressLogger progressLogger) { - this.progressLogger = progressLogger - } -} diff --git a/buildSrc/src/main/gradle-2.13-groovy/org/elasticsearch/gradle/ProgressLoggerFactoryInjection.groovy b/buildSrc/src/main/gradle-2.13-groovy/org/elasticsearch/gradle/ProgressLoggerFactoryInjection.groovy deleted file mode 100644 index 290c4d581d635..0000000000000 --- a/buildSrc/src/main/gradle-2.13-groovy/org/elasticsearch/gradle/ProgressLoggerFactoryInjection.groovy +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.elasticsearch.gradle - -import org.gradle.logging.ProgressLoggerFactory - -import javax.inject.Inject - -/** - * Allows to inject a ProgressLoggerFactory to tasks in src/main/groovy - * without requiring the corresponding import of ProgressLoggerFactory, - * making it compatible with both Gradle 2.13 and 2.14+. - */ -trait ProgressLoggerFactoryInjection { - @Inject - ProgressLoggerFactory getProgressLoggerFactory() { - throw new UnsupportedOperationException() - } -} diff --git a/buildSrc/src/main/gradle-2.14-groovy/org/elasticsearch/gradle/ProgressLogger.groovy b/buildSrc/src/main/gradle-2.14-groovy/org/elasticsearch/gradle/ProgressLogger.groovy deleted file mode 100644 index 2c9fab78b4378..0000000000000 --- a/buildSrc/src/main/gradle-2.14-groovy/org/elasticsearch/gradle/ProgressLogger.groovy +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.elasticsearch.gradle - -/** - * Wraps a ProgressLogger so that code in src/main/groovy does not need to - * define imports on Gradle 2.13/2.14+ ProgressLoggers - */ -class ProgressLogger { - @Delegate org.gradle.internal.logging.progress.ProgressLogger progressLogger - - ProgressLogger(org.gradle.internal.logging.progress.ProgressLogger progressLogger) { - this.progressLogger = progressLogger - } -} diff --git a/buildSrc/src/main/gradle-2.14-groovy/org/elasticsearch/gradle/ProgressLoggerFactoryInjection.groovy b/buildSrc/src/main/gradle-2.14-groovy/org/elasticsearch/gradle/ProgressLoggerFactoryInjection.groovy deleted file mode 100644 index 8891d65611a6b..0000000000000 --- a/buildSrc/src/main/gradle-2.14-groovy/org/elasticsearch/gradle/ProgressLoggerFactoryInjection.groovy +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.elasticsearch.gradle - -import org.gradle.internal.logging.progress.ProgressLoggerFactory - -import javax.inject.Inject - -/** - * Allows to inject a ProgressLoggerFactory to tasks in src/main/groovy - * without requiring the corresponding import of ProgressLoggerFactory, - * making it compatible with both Gradle 2.13 and 2.14+. - */ -trait ProgressLoggerFactoryInjection { - @Inject - ProgressLoggerFactory getProgressLoggerFactory() { - throw new UnsupportedOperationException() - } -} diff --git a/buildSrc/src/main/groovy/com/carrotsearch/gradle/junit4/RandomizedTestingTask.groovy b/buildSrc/src/main/groovy/com/carrotsearch/gradle/junit4/RandomizedTestingTask.groovy index 8d93301e0c70e..e24c226837d26 100644 --- a/buildSrc/src/main/groovy/com/carrotsearch/gradle/junit4/RandomizedTestingTask.groovy +++ b/buildSrc/src/main/groovy/com/carrotsearch/gradle/junit4/RandomizedTestingTask.groovy @@ -8,7 +8,6 @@ import org.apache.tools.ant.BuildException import org.apache.tools.ant.DefaultLogger import org.apache.tools.ant.RuntimeConfigurable import org.apache.tools.ant.UnknownElement -import org.elasticsearch.gradle.ProgressLoggerFactoryInjection import org.gradle.api.DefaultTask import org.gradle.api.file.FileCollection import org.gradle.api.file.FileTreeElement @@ -20,9 +19,12 @@ import org.gradle.api.tasks.Optional import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.util.PatternFilterable import org.gradle.api.tasks.util.PatternSet +import org.gradle.internal.logging.progress.ProgressLoggerFactory import org.gradle.util.ConfigureUtil -class RandomizedTestingTask extends DefaultTask implements ProgressLoggerFactoryInjection { +import javax.inject.Inject + +class RandomizedTestingTask extends DefaultTask { // TODO: change to "executable" to match gradle test params? @Optional @@ -92,6 +94,11 @@ class RandomizedTestingTask extends DefaultTask implements ProgressLoggerFactory listenersConfig.listeners.add(new TestReportLogger(logger: logger, config: testLoggingConfig)) } + @Inject + ProgressLoggerFactory getProgressLoggerFactory() { + throw new UnsupportedOperationException() + } + void jvmArgs(Iterable arguments) { jvmArgs.addAll(arguments) } diff --git a/buildSrc/src/main/groovy/com/carrotsearch/gradle/junit4/TestProgressLogger.groovy b/buildSrc/src/main/groovy/com/carrotsearch/gradle/junit4/TestProgressLogger.groovy index a9786935c5651..da25afa938916 100644 --- a/buildSrc/src/main/groovy/com/carrotsearch/gradle/junit4/TestProgressLogger.groovy +++ b/buildSrc/src/main/groovy/com/carrotsearch/gradle/junit4/TestProgressLogger.groovy @@ -25,7 +25,8 @@ import com.carrotsearch.ant.tasks.junit4.events.aggregated.AggregatedStartEvent import com.carrotsearch.ant.tasks.junit4.events.aggregated.AggregatedSuiteResultEvent import com.carrotsearch.ant.tasks.junit4.events.aggregated.AggregatedTestResultEvent import com.carrotsearch.ant.tasks.junit4.listeners.AggregatedEventListener -import org.elasticsearch.gradle.ProgressLogger +import org.gradle.internal.logging.progress.ProgressLogger +import org.gradle.internal.logging.progress.ProgressLoggerFactory import static com.carrotsearch.ant.tasks.junit4.FormattingUtils.formatDurationInSeconds import static com.carrotsearch.ant.tasks.junit4.events.aggregated.TestStatus.ERROR @@ -51,6 +52,8 @@ import static java.lang.Math.max * quick. */ class TestProgressLogger implements AggregatedEventListener { + /** Factory to build a progress logger when testing starts */ + ProgressLoggerFactory factory ProgressLogger progressLogger int totalSuites int totalSlaves @@ -74,17 +77,14 @@ class TestProgressLogger implements AggregatedEventListener { /** Have we finished a whole suite yet? */ volatile boolean suiteFinished = false /* Note that we probably overuse volatile here but it isn't hurting us and - lets us move things around without worying about breaking things. */ - - TestProgressLogger(Map args) { - progressLogger = new ProgressLogger(args.factory.newOperation(TestProgressLogger)) - progressLogger.setDescription('Randomized test runner') - } + lets us move things around without worrying about breaking things. */ @Subscribe void onStart(AggregatedStartEvent e) throws IOException { totalSuites = e.suiteCount totalSlaves = e.slaveCount + progressLogger = factory.newOperation(TestProgressLogger) + progressLogger.setDescription('Randomized test runner') progressLogger.started() progressLogger.progress( "Starting JUnit4 for ${totalSuites} suites on ${totalSlaves} jvms") diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/TapLoggerOutputStream.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/TapLoggerOutputStream.groovy index 85fd433bc771f..e15759a1fe588 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/TapLoggerOutputStream.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/TapLoggerOutputStream.groovy @@ -19,10 +19,9 @@ package org.elasticsearch.gradle.vagrant import com.carrotsearch.gradle.junit4.LoggingOutputStream -import groovy.transform.PackageScope -import org.elasticsearch.gradle.ProgressLogger import org.gradle.api.GradleScriptException import org.gradle.api.logging.Logger +import org.gradle.internal.logging.progress.ProgressLogger import java.util.regex.Matcher @@ -48,7 +47,7 @@ public class TapLoggerOutputStream extends LoggingOutputStream { TapLoggerOutputStream(Map args) { logger = args.logger - progressLogger = new ProgressLogger(args.factory.newOperation(VagrantLoggerOutputStream)) + progressLogger = args.factory.newOperation(VagrantLoggerOutputStream) progressLogger.setDescription("TAP output for `${args.command}`") } diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/VagrantCommandTask.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/VagrantCommandTask.groovy index cd4d4bf87a568..abc6af9e09d97 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/VagrantCommandTask.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/VagrantCommandTask.groovy @@ -19,15 +19,17 @@ package org.elasticsearch.gradle.vagrant import org.apache.commons.io.output.TeeOutputStream -import org.elasticsearch.gradle.ProgressLoggerFactoryInjection import org.elasticsearch.gradle.LoggedExec import org.gradle.api.tasks.Input +import org.gradle.internal.logging.progress.ProgressLoggerFactory + +import javax.inject.Inject /** * Runs a vagrant command. Pretty much like Exec task but with a nicer output * formatter and defaults to `vagrant` as first part of commandLine. */ -public class VagrantCommandTask extends LoggedExec implements ProgressLoggerFactoryInjection { +public class VagrantCommandTask extends LoggedExec { @Input String boxName @@ -47,6 +49,11 @@ public class VagrantCommandTask extends LoggedExec implements ProgressLoggerFact } } + @Inject + ProgressLoggerFactory getProgressLoggerFactory() { + throw new UnsupportedOperationException() + } + protected OutputStream createLoggerOutputStream() { return new VagrantLoggerOutputStream( command: commandLine.join(' '), diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/VagrantLoggerOutputStream.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/VagrantLoggerOutputStream.groovy index de6c5a36db945..e899c0171298b 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/VagrantLoggerOutputStream.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/VagrantLoggerOutputStream.groovy @@ -19,7 +19,7 @@ package org.elasticsearch.gradle.vagrant import com.carrotsearch.gradle.junit4.LoggingOutputStream -import org.elasticsearch.gradle.ProgressLogger +import org.gradle.internal.logging.progress.ProgressLogger /** * Adapts an OutputStream being written to by vagrant into a ProcessLogger. It @@ -53,7 +53,7 @@ public class VagrantLoggerOutputStream extends LoggingOutputStream { private String heading = '' VagrantLoggerOutputStream(Map args) { - progressLogger = new ProgressLogger(args.factory.newOperation(VagrantLoggerOutputStream)) + progressLogger = args.factory.newOperation(VagrantLoggerOutputStream) progressLogger.setDescription("Vagrant output for `$args.command`") squashedPrefix = args.squashedPrefix }