You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by th...@apache.org on 2020/09/14 16:38:47 UTC

[lucene-solr] 29/39: LUCENE-9505: add dummy outputs. (#1829)

This is an automated email from the ASF dual-hosted git repository.

thelabdude pushed a commit to branch reference_impl_gradle_updates
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit afb3379cc6bf27bd2aff8157fffab03576142fe5
Author: Dawid Weiss <dw...@apache.org>
AuthorDate: Fri Sep 4 11:11:57 2020 +0200

    LUCENE-9505: add dummy outputs. (#1829)
---
 gradle/defaults.gradle                           | 12 ++++++++++++
 gradle/validation/ecj-lint.gradle                |  7 ++++---
 gradle/validation/gradlew-scripts-tweaked.gradle |  6 ++++--
 gradle/validation/validate-log-calls.gradle      | 10 ++++------
 4 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/gradle/defaults.gradle b/gradle/defaults.gradle
index a011add..0ce26d1 100644
--- a/gradle/defaults.gradle
+++ b/gradle/defaults.gradle
@@ -63,5 +63,17 @@ allprojects {
     scriptResources = { buildscript ->
       return file(buildscript.sourceFile.absolutePath.replaceAll('.gradle$', ""))
     }
+
+    // LUCENE-9505: utility function that sets up dummy outputs for a task so that
+    // clean[TaskName] works and allows selective re-runs.
+    setupDummyOutputs = { Task task ->
+      File dummyOutput = file("${task.project.buildDir}/tasks/${task.name}/dummy-output.txt")
+      task.outputs.file(dummyOutput)
+      task.doLast {
+        if (!dummyOutput.exists()) {
+          dummyOutput.createNewFile()
+        }
+      }
+    }
   }
 }
diff --git a/gradle/validation/ecj-lint.gradle b/gradle/validation/ecj-lint.gradle
index 3dcb2c0..1e645d0 100644
--- a/gradle/validation/ecj-lint.gradle
+++ b/gradle/validation/ecj-lint.gradle
@@ -37,7 +37,7 @@ allprojects {
     def lintTasks = sourceSets.collect { sourceSet ->
       def srcDirs = sourceSet.java.srcDirs.findAll { dir -> dir.exists() }
 
-      tasks.create(sourceSet.getTaskName("ecjLint", null), JavaExec, {
+      tasks.create(sourceSet.getTaskName("ecjLint", null), JavaExec, {task ->
         // This dependency is on a configuration; technically it causes
         // all dependencies to be resolved before this task executes
         // (this includes scheduling tasks that compile the
@@ -46,8 +46,9 @@ allprojects {
 
         // The inputs are all source files from the sourceSet.
         inputs.files sourceSet.allSource.asFileTree
-        // The outputs are always up to date (we don't generate anything).
-        outputs.upToDateWhen { true }
+
+        // This task has no proper outputs.
+        setupDummyOutputs(task)
 
         // We create a task for all source sets but ignore those
         // that don't have any Java source directories.
diff --git a/gradle/validation/gradlew-scripts-tweaked.gradle b/gradle/validation/gradlew-scripts-tweaked.gradle
index c0bc647..fa3ba6d 100644
--- a/gradle/validation/gradlew-scripts-tweaked.gradle
+++ b/gradle/validation/gradlew-scripts-tweaked.gradle
@@ -21,14 +21,16 @@ import java.nio.charset.StandardCharsets
 // don't fork a daemon subprocess on the initial run.
 
 configure(rootProject) {
-  task gradlewScriptsTweaked() {
+  task gradlewScriptsTweaked() { task ->
     def scripts = [
         file("gradlew"),
         file("gradlew.bat")
     ]
 
     inputs.files(scripts)
-    outputs.upToDateWhen { true }
+
+    // This task has no proper outputs.
+    setupDummyOutputs(task)
 
     doFirst {
       scripts.each { file ->
diff --git a/gradle/validation/validate-log-calls.gradle b/gradle/validation/validate-log-calls.gradle
index 76fee5a..3d0566a 100644
--- a/gradle/validation/validate-log-calls.gradle
+++ b/gradle/validation/validate-log-calls.gradle
@@ -36,10 +36,13 @@ import org.apache.tools.ant.BuildException
 
 configure(subprojects.findAll { it.path.startsWith(':solr') }) {
   plugins.withType(JavaPlugin) {
-    task validateLogCalls(type: ValidateLogCallsTask) {
+    task validateLogCalls(type: ValidateLogCallsTask) { task ->
       description "Checks that log calls are either validated or conform to efficient patterns."
       group "verification"
 
+      // This task has no proper outputs.
+      setupDummyOutputs(task)
+
       sourceFiles = files(sourceSets*.java)
     }
   }
@@ -227,11 +230,6 @@ class ValidateLogCallsTask extends DefaultTask {
   @InputFiles
   FileCollection sourceFiles
 
-  ValidateLogCallsTask() {
-    // No explicit outputs (outputs always up to date).
-    outputs.upToDateWhen { true }
-  }
-
   @TaskAction
   def checkLogLines() {
     sourceFiles.each { checkFile(it) }