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

ishan pushed a commit to branch jira/solr-14688_poc
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/jira/solr-14688_poc by this 
push:
     new d94455d  Generate local_packages.json via gradle
d94455d is described below

commit d94455d0ec7bb7565ff23e6ea543ec0ca5d6e73c
Author: Ishan Chattopadhyaya <[email protected]>
AuthorDate: Wed Jan 26 18:46:24 2022 +0530

    Generate local_packages.json via gradle
---
 .gitignore                       |  3 +-
 solr/contrib/local_packages.json | 64 ----------------------------------------
 solr/packaging/build.gradle      | 39 +++++++++++++++++++-----
 3 files changed, 34 insertions(+), 72 deletions(-)

diff --git a/.gitignore b/.gitignore
index 0ae4764..3cbbda1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@
 /gradle.properties
 .gradle/
 build/
+solr/contrib/local_packages.json
 
 # IntelliJ IDEA
 /.idea/
@@ -34,4 +35,4 @@ __pycache__
 *~
 
 # Ignore lucene included build
-lucene/
\ No newline at end of file
+lucene/
diff --git a/solr/contrib/local_packages.json b/solr/contrib/local_packages.json
deleted file mode 100644
index e703bc6..0000000
--- a/solr/contrib/local_packages.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
-    "packages": {
-        "solr-scripting": [
-            {
-                "version": "10.0.0",
-                "files": [
-                    "/scripting/lib/solr-scripting-10.0.0-SNAPSHOT.jar"
-                ],
-                "manifest": "/scripting/manifest.json"
-            }
-        ],
-        "solr-extraction": [
-            {
-                "version": "10.0.0",
-                "files": [
-                    "/extraction/lib/solr-extraction-10.0.0-SNAPSHOT.jar",
-                    "/extraction/lib/apache-mime4j-core-0.8.3.jar",
-                    "/extraction/lib/fontbox-2.0.24.jar",
-                    "/extraction/lib/parso-2.0.11.jar",
-                    "/extraction/lib/tika-java7-1.27.jar",
-                    "/extraction/lib/apache-mime4j-dom-0.8.3.jar",
-                    "/extraction/lib/icu4j-68.2.jar",
-                    "/extraction/lib/pdfbox-2.0.24.jar",
-                    "/extraction/lib/tika-parsers-1.27.jar",
-                    "/extraction/lib/aspectjrt-1.8.0.jar",
-                    "/extraction/lib/isoparser-1.1.22.jar",
-                    "/extraction/lib/pdfbox-tools-2.0.24.jar",
-                    "/extraction/lib/tika-xmp-1.27.jar",
-                    "/extraction/lib/bcmail-jdk15on-1.69.jar",
-                    "/extraction/lib/jackcess-3.0.1.jar",
-                    "/extraction/lib/poi-4.1.1.jar",
-                    "/extraction/lib/vorbis-java-core-0.8.jar",
-                    "/extraction/lib/bcpkix-jdk15on-1.69.jar",
-                    "/extraction/lib/jackcess-encrypt-3.0.0.jar",
-                    "/extraction/lib/poi-ooxml-4.1.1.jar",
-                    "/extraction/lib/vorbis-java-tika-0.8.jar",
-                    "/extraction/lib/bcprov-jdk15on-1.69.jar",
-                    "/extraction/lib/java-libpst-0.8.1.jar",
-                    "/extraction/lib/poi-ooxml-schemas-4.1.1.jar",
-                    "/extraction/lib/xercesImpl-2.12.0.jar",
-                    "/extraction/lib/boilerpipe-1.1.0.jar",
-                    "/extraction/lib/jdom2-2.0.6.jar",
-                    "/extraction/lib/poi-scratchpad-4.1.1.jar",
-                    "/extraction/lib/xmlbeans-3.1.0.jar",
-                    "/extraction/lib/commons-compress-1.21.jar",
-                    "/extraction/lib/jempbox-1.8.16.jar",
-                    "/extraction/lib/rome-1.12.2.jar",
-                    "/extraction/lib/xmpcore-5.1.3.jar",
-                    "/extraction/lib/commons-csv-1.7.jar",
-                    "/extraction/lib/jmatio-1.5.jar",
-                    "/extraction/lib/rome-utils-1.12.2.jar",
-                    "/extraction/lib/xz-1.8.jar",
-                    "/extraction/lib/curvesapi-1.06.jar",
-                    "/extraction/lib/juniversalchardet-1.0.3.jar",
-                    "/extraction/lib/tagsoup-1.2.1.jar",
-                    "/extraction/lib/dec-0.1.2.jar",
-                    "/extraction/lib/metadata-extractor-2.11.0.jar",
-                    "/extraction/lib/tika-core-1.27.jar"
-                ],
-                "manifest": "/extraction/manifest.json"
-            }
-        ]
-    }
-}
diff --git a/solr/packaging/build.gradle b/solr/packaging/build.gradle
index 26a5e41..5be1c8a 100644
--- a/solr/packaging/build.gradle
+++ b/solr/packaging/build.gradle
@@ -18,6 +18,9 @@
 // This project puts together a "distribution", assembling dependencies from
 // various other projects.
 
+import groovy.json.JsonOutput;
+import groovy.json.JsonSlurper;
+
 plugins {
   id 'base'
   id 'distribution'
@@ -86,24 +89,42 @@ distributions {
         include "NOTICE.txt"
       })
 
-      from(project(":solr:contrib").projectDir, {
-        include "local_packages.json"
-        into "contrib"
-      })
-
-
       from(project(":solr").projectDir, {
         include "bin/**"
         include "licenses/**"
         exclude "licenses/README.committers.txt"
         include "CHANGES.txt"
         include "README.md"
-        include "local_packages.json"
         include "manifest.json"
       })
 
       from(configurations.contrib, {
         into "contrib"
+
+        // Generate a local_packages.json for first party packages
+        eachFile({ fcd ->
+          def entry = fcd.getPath().startsWith('contrib/') ? "/" + 
fcd.getPath().minus('contrib/'): fcd.getPath();
+          def firstPartyPackages = ["scripting", "extraction"];
+          firstPartyPackages.each { module ->
+            if (fcd.getPath().startsWith("contrib/" + module + "/")) {
+              def localPackagesFile = new 
File(project(":solr:contrib").projectDir, "local_packages.json");
+              def parsedJson = new 
groovy.json.JsonSlurper().parseText("{\"packages\": {}}");
+              if (localPackagesFile.exists()) {
+                parsedJson = new 
groovy.json.JsonSlurper().parseText(localPackagesFile.text);
+              }
+              def pkgs = parsedJson["packages"];
+              if (!pkgs.containsKey("solr-" + module)) {
+                pkgs["solr-" + module] = [["version": baseVersion, "files": 
[]]];
+              }
+              if (entry.endsWith("manifest.json")) {
+                pkgs["solr-" + module][0]["manifest"] = entry;  
+              } else if (entry.endsWith(".jar")) {
+                pkgs["solr-" + module][0]["files"].add(entry);
+              }
+              localPackagesFile.write(JsonOutput.toJson(parsedJson));          
    
+            }           
+          }
+        })
       })
 
       from(configurations.example, {
@@ -153,6 +174,10 @@ task dev(type: Copy) {
 
   from installDist.outputs
   into devDir
+
+  // Copy over the generated local_packages.json into the contrib/ directory.
+  from(new File(project(":solr:contrib").projectDir, "local_packages.json"));
+  rename("local_packages.json", "contrib/local_packages.json");
 }
 
 distTar {

Reply via email to