You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by dw...@apache.org on 2021/03/24 15:21:58 UTC

[lucene] 01/06: LUCENE-9862: cleanup of all regenerate tasks; moved common code into shared bit. Added failOnError for ant.patch. Included jflexStandardTokenizerImpl.

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

dweiss pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 27510d5f2f37a4e889a77afc89d7f0bbe288e5db
Author: Dawid Weiss <da...@carrotsearch.com>
AuthorDate: Tue Mar 23 09:25:53 2021 +0100

    LUCENE-9862: cleanup of all regenerate tasks; moved common code into shared bit. Added failOnError for ant.patch. Included jflexStandardTokenizerImpl.
---
 build.gradle                        |  1 +
 gradle/generation/icu.gradle        |  8 +-------
 gradle/generation/javacc.gradle     | 18 ++--------------
 gradle/generation/jflex.gradle      | 28 +++++++------------------
 gradle/generation/kuromoji.gradle   |  3 +++
 gradle/generation/nori.gradle       |  2 ++
 gradle/generation/regenerate.gradle | 41 +++++++++++++++++++++++++++++++++++++
 gradle/generation/snowball.gradle   | 23 +++++++++------------
 gradle/generation/util.gradle       | 33 +++++++----------------------
 9 files changed, 74 insertions(+), 83 deletions(-)

diff --git a/build.gradle b/build.gradle
index 8a335a5..f56dd66 100644
--- a/build.gradle
+++ b/build.gradle
@@ -148,6 +148,7 @@ apply from: file('gradle/validation/check-broken-links.gradle')
 apply from: file('gradle/validation/spotless.gradle')
 
 // Source or data regeneration tasks
+apply from: file('gradle/generation/regenerate.gradle')
 apply from: file('gradle/generation/jflex.gradle')
 apply from: file('gradle/generation/util.gradle')
 apply from: file('gradle/generation/snowball.gradle')
diff --git a/gradle/generation/icu.gradle b/gradle/generation/icu.gradle
index 28585d0..fca3d8a 100644
--- a/gradle/generation/icu.gradle
+++ b/gradle/generation/icu.gradle
@@ -108,13 +108,7 @@ configure(project(":lucene:analysis:icu")) {
     }
   }
 
-  task regenerate() {
-    description "Regenerate ICU data files"
-    group "generation"
-
-    dependsOn genUtr30DataFiles
-    dependsOn genRbbi
-  }
+  regenerate.dependsOn genUtr30DataFiles, genRbbi
 
   task compileIcuWindows() {
     doFirst {
diff --git a/gradle/generation/javacc.gradle b/gradle/generation/javacc.gradle
index c60c1ce..c0c0e70 100644
--- a/gradle/generation/javacc.gradle
+++ b/gradle/generation/javacc.gradle
@@ -242,22 +242,6 @@ configure(project(":lucene:queryparser")) {
     }
   }
 
-  task regenerate() {
-    description "Regenerate any generated sources"
-    group "generation"
-
-    // Run regeneration tasks.
-    dependsOn javaccParserClassic, javaccParserSurround, javaccParserFlexible
-
-    // Clean up and reformat the generated sources after generation.
-    dependsOn "tidy"
-  }
-
-  // Make sure tidy runs after generation, if they're defined.
-  tasks.matching { it.name == "tidy" }.configureEach {
-    mustRunAfter javaccParserClassic, javaccParserSurround, javaccParserFlexible
-  }
-
   task javacc() {
     description "Regenerate query parsers (javacc syntax definitions)."
     group "generation"
@@ -266,6 +250,8 @@ configure(project(":lucene:queryparser")) {
     dependsOn javaccParserSurround
     dependsOn javaccParserFlexible
   }
+
+  regenerate.dependsOn javacc, tidy
 }
 
 // We always regenerate, no need to declare outputs.
diff --git a/gradle/generation/jflex.gradle b/gradle/generation/jflex.gradle
index 52bf08d..f08d340 100644
--- a/gradle/generation/jflex.gradle
+++ b/gradle/generation/jflex.gradle
@@ -103,6 +103,8 @@ configure(project(":lucene:core")) {
       )
     }
   }
+
+  regenerate.dependsOn jflexStandardTokenizerImpl, "tidy"
 }
 
 configure(project(":lucene:analysis:common")) {
@@ -175,25 +177,9 @@ configure(project(":lucene:analysis:common")) {
     }
   }
 
-  task regenerate() {
-    description "Regenerate any generated sources"
-    group "generation"
-
-    // Run regeneration tasks.
-    dependsOn jflexUAX29URLEmailTokenizerImpl
-    dependsOn jflexHTMLStripCharFilter
-    dependsOn jflexClassicTokenizerImpl
-    dependsOn jflexWikipediaTokenizerImpl
-
-    // Clean up and reformat the generated sources after generation.
-    dependsOn "tidy"
-  }
-
-  // Make sure tidy runs after generation, if they're defined.
-  tasks.matching { it.name == "tidy" }.configureEach {
-    mustRunAfter jflexUAX29URLEmailTokenizerImpl,
-        jflexHTMLStripCharFilter,
-        jflexClassicTokenizerImpl,
-        jflexWikipediaTokenizerImpl
-  }
+  regenerate.dependsOn jflexUAX29URLEmailTokenizerImpl,
+          jflexHTMLStripCharFilter,
+          jflexClassicTokenizerImpl,
+          jflexWikipediaTokenizerImpl,
+          "tidy"
 }
diff --git a/gradle/generation/kuromoji.gradle b/gradle/generation/kuromoji.gradle
index 8dc082b..a18cee7 100644
--- a/gradle/generation/kuromoji.gradle
+++ b/gradle/generation/kuromoji.gradle
@@ -128,5 +128,8 @@ configure(project(":lucene:analysis:kuromoji")) {
         })
       }
     }
+
+    // TODO: should we include this in default regeneration?
+    // regenerate.dependsOn compileMecab
   }
 }
diff --git a/gradle/generation/nori.gradle b/gradle/generation/nori.gradle
index 78da8cc..4fadb11 100644
--- a/gradle/generation/nori.gradle
+++ b/gradle/generation/nori.gradle
@@ -81,5 +81,7 @@ configure(project(":lucene:analysis:nori")) {
         })
       }
     }
+
+    regenerate.dependsOn compileMecabKo
   }
 }
diff --git a/gradle/generation/regenerate.gradle b/gradle/generation/regenerate.gradle
new file mode 100644
index 0000000..52197b4
--- /dev/null
+++ b/gradle/generation/regenerate.gradle
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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.
+ */
+
+// Create common 'regenerate' task sub-tasks can hook into.
+
+configure([
+        project(":lucene:analysis:common"),
+        project(":lucene:core"),
+        project(":lucene:analysis:icu"),
+        project(":lucene:queryparser"),
+        project(":lucene:analysis:kuromoji"),
+        project(":lucene:analysis:nori")
+]) {
+    task regenerate() {
+      description "Rerun any code or static data generation tasks."
+      group "generation"
+    }
+
+    // Make sure tidy dependency runs after any other generation task.
+    afterEvaluate {
+      Set<Task> deps = regenerate.getTaskDependencies().getDependencies(regenerate)
+      def tidy = deps.find { it.name == "tidy" }
+      if (tidy) {
+          tidy.dependsOn (deps - [tidy])
+      }
+    }
+}
\ No newline at end of file
diff --git a/gradle/generation/snowball.gradle b/gradle/generation/snowball.gradle
index db81a56..f975f44 100644
--- a/gradle/generation/snowball.gradle
+++ b/gradle/generation/snowball.gradle
@@ -19,15 +19,6 @@ import org.apache.tools.ant.taskdefs.condition.Os
 
 apply plugin: "de.undercouch.download"
 
-configure(rootProject) {
-  task snowball()  {
-    description "Regenerate snowball-based sources, stopwords, and tests for ...lucene/analysis."
-    group "generation"
-
-    dependsOn ":lucene:analysis:common:snowballGen"
-  }
-}
-
 configure(project(":lucene:analysis:common")) {
   ext {
     // git commit hash of source code https://github.com/snowballstem/snowball/
@@ -60,7 +51,7 @@ configure(project(":lucene:analysis:common")) {
       ant.unzip(src: snowballStemmerZip, dest: snowballStemmerDir, overwrite: "true") {
         ant.cutdirsmapper(dirs: "1")
       }
-      ant.patch(patchfile: snowballPatchFile, dir: snowballStemmerDir, strip: "1")
+      ant.patch(patchfile: snowballPatchFile, dir: snowballStemmerDir, strip: "1", failonerror: true)
     }
   }
 
@@ -95,14 +86,18 @@ configure(project(":lucene:analysis:common")) {
   }
 
   // runs shell script to regenerate stemmers, base stemming subclasses, test data, and stopwords.
-  task snowballGen() {
+  task snowball() {
+    description "Regenerates snowball stemmers."
+    group "generation"
+
     dependsOn downloadSnowballStemmers
     dependsOn downloadSnowballWebsite
     dependsOn downloadSnowballData
 
-    doLast {
+    doFirst {
       if (Os.isFamily(Os.FAMILY_WINDOWS)) {
-        throw GradleException("Snowball generation does not work on Windows, use a platform where bash is available.")
+        logger.warn("Snowball generation does not work on Windows, use a platform where bash is available.")
+        return
       }
 
       project.exec {
@@ -111,4 +106,6 @@ configure(project(":lucene:analysis:common")) {
       }
     }
   }
+
+  regenerate.dependsOn snowball, "tidy"
 }
diff --git a/gradle/generation/util.gradle b/gradle/generation/util.gradle
index 2ce7856..2484f44 100644
--- a/gradle/generation/util.gradle
+++ b/gradle/generation/util.gradle
@@ -14,22 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 apply plugin: "de.undercouch.download"
 
-configure(rootProject) {
+configure(project(":lucene:core")) {
   ext {
     momanDir = file("${buildDir}/moman")
   }
 
-  task moman()  {
-    description "Regenerate Moman-based sources for ...lucene/util/automaton and ...lucene/util/packed."
-    group "generation"
-
-    dependsOn ":lucene:core:utilGenPacked"
-    dependsOn ":lucene:core:utilGenLev"
-  }
-
   task installMoman(type: Download) {
     def momanZip = file("${momanDir}/moman.zip")
 
@@ -43,10 +34,8 @@ configure(rootProject) {
       }
     }
   }
-}
 
-configure(project(":lucene:core")) {
-  task utilGenPacked(dependsOn: rootProject.installMoman) {
+  task utilGenPacked(dependsOn: installMoman) {
     description "Regenerate util/PackedBulkOperationsPacked*.java and Packed64SingleBlock.java"
     group "generation"
 
@@ -71,7 +60,7 @@ configure(project(":lucene:core")) {
     }
   }
 
-  task utilGenLev(dependsOn: rootProject.installMoman) {
+  task utilGenLev(dependsOn: installMoman) {
     description "Regenerate util/automaton Lev*ParametricDescription.java"
     group "generation"
 
@@ -96,20 +85,12 @@ configure(project(":lucene:core")) {
     }
   }
 
-  task regenerate() {
-    description "Regenerate any generated sources"
+  task moman()  {
+    description "Regenerate Moman-based sources."
     group "generation"
 
-    // Run regeneration tasks.
-    dependsOn utilGenPacked
-    dependsOn utilGenLev
-
-    // Clean up and reformat the generated sources after generation.
-    dependsOn "tidy"
+    dependsOn utilGenLev, utilGenPacked
   }
 
-  // Make sure tidy runs after generation, if they're defined.
-  tasks.matching { it.name == "tidy" }.configureEach {
-    mustRunAfter utilGenPacked, utilGenLev
-  }
+  regenerate.dependsOn moman, "tidy"
 }