Repository: bigtop
Updated Branches:
  refs/heads/master 724ddf1fc -> 3a257119d


BIGTOP-2055. Refactor packages.gradle to get rid of excessive data containers; 
make code cleaner


Project: http://git-wip-us.apache.org/repos/asf/bigtop/repo
Commit: http://git-wip-us.apache.org/repos/asf/bigtop/commit/fdd034a5
Tree: http://git-wip-us.apache.org/repos/asf/bigtop/tree/fdd034a5
Diff: http://git-wip-us.apache.org/repos/asf/bigtop/diff/fdd034a5

Branch: refs/heads/master
Commit: fdd034a5db4ae172a19caca1a8236e43fd503259
Parents: 724ddf1
Author: Konstantin Boudnik <[email protected]>
Authored: Fri Sep 18 12:47:31 2015 -0700
Committer: Konstantin Boudnik <[email protected]>
Committed: Sat Sep 19 12:19:07 2015 -0700

----------------------------------------------------------------------
 packages.gradle | 56 +++++++++++++++++++++-------------------------------
 1 file changed, 23 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bigtop/blob/fdd034a5/packages.gradle
----------------------------------------------------------------------
diff --git a/packages.gradle b/packages.gradle
index ad6b7ab..5f687b7 100644
--- a/packages.gradle
+++ b/packages.gradle
@@ -57,7 +57,8 @@ def final DIST_DIR = config.bigtop.distdir
 def final DL_DIR = config.bigtop.dldir
 def final BIGTOP_BUILD_STAMP = System.getenv('BIGTOP_BUILD_STAMP') ?: 
config.bigtop.buildstamp
 
-def components = []
+// List of tasks derived from the BOM file is used to preserve the natural 
order
+def bomTasks = []
 
 // Package building and logic around it
 
@@ -80,12 +81,12 @@ def toOldStyleName = { newname ->
   newname.toUpperCase().replaceAll("\\-", "_")
 }
 def setDefaults = { comp ->
-  // The closure parameer is a component in the config.bigtop.components
-  if (!comp.value.pkg) {
-    comp.value.pkg = comp.value.name
+  // The closure parameter is a component in the config.bigtop.components
+  if (!comp.pkg) {
+    comp.pkg = comp.name
   }
-  if (!comp.value.version.pkg) {
-    comp.value.version.pkg = comp.value.version.base
+  if (!comp.version.pkg) {
+    comp.version.pkg = comp.version.base
   }
 }
 def nativePackaging = {
@@ -104,14 +105,14 @@ def nativePackaging = {
 }.call()
 
 task "packages-help" (description: "All package build related tasks 
information", group: PACKAGES_GROUP) << {
-  components.each { target ->
-    println (target + "\n\t[" + tasks.findAll { alltask -> 
alltask.name.startsWith(target.toLowerCase())}*.name.join(", ") + "]")
+  config.bigtop.components.each { label, comp ->
+    println (comp.name + "\n\t[" + tasks.findAll { alltask -> 
alltask.name.startsWith(comp.name)}*.name.join(", ") + "]")
   }
 }
 
 task "bom-json" (description: "List the components of the stack in json 
format") << {
   def componentObjects = config.bigtop.components.sort().collect {
-    setDefaults(it)
+    setDefaults(it.value)
     [
       name: [
         project: it.value.name,
@@ -148,9 +149,8 @@ task "bom-json" (description: "List the components of the 
stack in json format")
 
 task "all-components" (description: "List the components of the stack") << {
   println "${project.name} ${config.bigtop.version} stack includes the 
following components"
-  components.sort().each { comp ->
-    def bVersion = config.bigtop.components[comp].version.base as String
-    println sprintf ('\t%1$s %2$s', comp.padRight(20), bVersion.padLeft(15))
+  config.bigtop.components.sort().each { label, comp ->
+    println sprintf ('\t%1$s %2$s', comp.name.padRight(20), 
comp.version.base.padLeft(15))
   }
 }
 
@@ -306,8 +306,8 @@ def genTasks = { target ->
     }
   // If dependencies aren't explicitly set, the default build order is defined
   // by the sequence of the components in the BOM file
-  if (!config.bigtop.dependencies && components.size() > 0)
-    tdeb.mustRunAfter "${components.get(components.size() - 
1)}-deb".toLowerCase()
+  if (!config.bigtop.dependencies && bomTasks.size() > 0)
+    tdeb.mustRunAfter "${bomTasks.get(bomTasks.size() - 1)}-deb".toLowerCase()
    task "$target-sdeb" (dependsOn: ["${target}_vardefines",  "${target}-tar"],
       description: "Building SDEB for $target artifacts",
       group: PACKAGES_GROUP
@@ -422,8 +422,8 @@ def genTasks = { target ->
     }
   // If dependencies aren't explicitly set, the default build order is defined
   // by the sequence of the components in the BOM file
-  if (!config.bigtop.dependencies && components.size() > 0)
-    trpm.mustRunAfter "${components.get(components.size() - 
1)}-rpm".toLowerCase()
+  if (!config.bigtop.dependencies && bomTasks.size() > 0)
+    trpm.mustRunAfter "${bomTasks.get(bomTasks.size() - 1)}-rpm".toLowerCase()
   task "$target-srpm" (dependsOn: ["${target}_vardefines" , "${target}-tar"],
       description: "Building SRPM for $target artifacts",
       group: PACKAGES_GROUP) << {
@@ -525,14 +525,7 @@ def genTasks = { target ->
     println "Base: ${config.bigtop.components[target].version.base}"
   }
   task "${target}_vardefines" << {
-    //TODO need to find out a way to set defaults in the same way for bom-json 
and here
-//    setDefaults(config.bigtop.components.target.value)
-    if (!config.bigtop.components[target].pkg) {
-      config.bigtop.components[target].pkg = 
config.bigtop.components[target].name
-    }
-    if (!config.bigtop.components[target].version.pkg) {
-      config.bigtop.components[target].version.pkg = 
config.bigtop.components[target].version.base
-    }
+    setDefaults(config.bigtop.components[target])
 
     config.bigtop.components[target].package.release = '1'
 
@@ -594,15 +587,8 @@ def genTasks = { target ->
   task "$target-help" (description: "List of available tasks for $target", 
group: PACKAGES_GROUP) << {
     println (target + "\n\t[" + tasks.findAll { alltask -> 
alltask.name.startsWith(target)}*.name.join(", ") + "]")
   }
-}
 
-def readBOM = {
-  doValidateBOM(config)
-  config.bigtop.components.each { component_label, comp ->
-    assert component_label == comp.name
-    genTasks(comp.name)
-    components.add(comp.name)
-  }
+  bomTasks.add(target)
 }
 
 // Let's enforce some of the configuration requirements
@@ -615,7 +601,11 @@ private void doValidateBOM(config) {
 
 // We need to make sure that all dynamic tasks are available for invocation
 project.afterEvaluate {
-  readBOM()
+  doValidateBOM(config)
+  config.bigtop.components.each { component_label, comp ->
+    assert component_label == comp.name
+    genTasks(comp.name)
+  }
   // Versions need to be preserved for more than just component:
   //  - there are JDK version requirement
   //  - possibly more in the future

Reply via email to