Repository: incubator-edgent
Updated Branches:
  refs/heads/master 50df35804 -> fa16203b5


[WIP] Quarks-205 add "release" and "all" task

- add defaultTask "all"
- add "release" with tgz generation (depends on "all")
- add "all" assemble and populate target_dir with jars, javadoc, etc
- remove "build" dependsOn aggregateJavadoc, copyJar
- remove "aggregateJavadoc" dependsOn/runs tests
- remove "jacocoTestReport" dependsOn copyJar

with this commit, tgz is still missing:
- samples source
- oplet/core/mbeans javadoc
- svt jar
- console jars and war
- jars from project ext dirs and top-level ext jars



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

Branch: refs/heads/master
Commit: efaf22380329bacf26b89679183a07588eaf5ec6
Parents: 50df358
Author: Dale LaBossiere <dlab...@us.ibm.com>
Authored: Tue Aug 9 13:32:07 2016 -0400
Committer: Dale LaBossiere <dlab...@us.ibm.com>
Committed: Tue Aug 9 13:32:07 2016 -0400

----------------------------------------------------------------------
 build.gradle | 110 ++++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 95 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/efaf2238/build.gradle
----------------------------------------------------------------------
diff --git a/build.gradle b/build.gradle
index 65aba44..571b12a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -11,6 +11,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+ 
+defaultTasks 'all'
+ 
 /* Configure root project */
 allprojects {
   apply plugin: 'idea'
@@ -26,10 +29,12 @@ allprojects {
 }
 
 ext {
+  commithash_error = ''
   commithash = {
     try {
       return "git rev-parse --short HEAD".execute().text.trim()
     } catch (Exception e) {
+      ext.commithash_error = e
       return ''
     }
   }()
@@ -41,7 +46,10 @@ ext {
                    'io.dropwizard.metrics:metrics-core:3.1.2']
   target_dir = "$distsDir"
   target_java8_dir = "${ext.target_dir}/java8"
-  target_javadoc_dir = "${ext.target_dir}/docs/javadoc"
+  target_java7_dir = "${ext.target_dir}/java7"
+  target_android_dir = "${ext.target_dir}/android"
+  target_docs_dir = "${ext.target_dir}/docs"
+  target_javadoc_dir = "${ext.target_docs_dir}/javadoc"
   target_report_dir = "${ext.target_dir}/reports"
 }
 
@@ -127,6 +135,9 @@ subprojects {
     }
   }
   jar {
+    // TODO fix this - this dependency handling shouldn't occur here,
+    // rather :console:server should dependOn :console:servlets
+    // (really the server doesn't exist w/o the servlets)
     if(it.path == ":test:fvtiot" ||  it.path == ":providers:development") {
       dependsOn ":console:servlets"
     }
@@ -160,16 +171,14 @@ subprojects {
   }
 
   copyJar.dependsOn assemble
-  build.dependsOn copyJar
 }
 
-task copyScript {
-  copy {
-    includeEmptyDirs = false
-    from "scripts/"
-    into "${rootProject.ext.target_java8_dir}/scripts/"
-    include "**/*"
-  }
+task copyScripts(type: Copy) {
+  description = 'Copy scripts to target_java8_dir'
+  includeEmptyDirs = false
+  from "scripts/"
+  into "${rootProject.ext.target_java8_dir}/scripts/"
+  include "**/*"
 }
 
 //Create Junit Report
@@ -324,13 +333,12 @@ task jacocoTestReport << {
   }
 }
 build.finalizedBy jacocoTestReport
-jacocoTestReport.dependsOn subprojects*.test, subprojects*.copyJar
+// jacocoTestReport.dependsOn subprojects*.test, subprojects*.copyJar
+jacocoTestReport.dependsOn subprojects*.test
 
-//Create JavaDoc
 task aggregateJavadoc(type: Javadoc) {
-  description = 'Generates a Javadoc from all subprojects'
-
-  dependsOn(subprojects*.test, subprojects*.jar)
+  description = 'Create all javadoc into target_dir/docs/javadoc'
+  dependsOn(subprojects*.jar)    // why is this needed?
   destinationDir file("$rootProject.ext.target_javadoc_dir")
   options.addStringOption('Xdoclint:none', '-quiet')
   configure(options) {
@@ -372,7 +380,79 @@ task aggregateJavadoc(type: Javadoc) {
     }
   }
 }
-build.finalizedBy aggregateJavadoc
+
+task copyJars(dependsOn: subprojects*.copyJar) {
+  description = 'copyJar aggregator'
+}
+
+task addVersionDotTxt {
+  description = 'Add version.txt in target_dir'
+  doLast {
+    def map = [
+      DSTAMP: "$DSTAMP",
+      TSTAMP: "$TSTAMP",
+      commithash: "$commithash",
+      'commithash.error': "$commithash_error",
+      'edgent.version': "$build_version",
+      ]
+    def f = new File("${rootProject.ext.target_dir}/version.txt");
+    f.createNewFile()
+    map.forEach { k,v -> f.append "$k=$v\n" }
+  }
+}
+
+task mkTargetDir << {
+    def d = new File(rootProject.ext.target_dir);
+    if( !d.exists() ) { d.mkdirs() }
+}
+
+task addMiscDistFiles {
+  description = 'Add misc things to target_dir'
+  dependsOn 'mkTargetDir', 'addVersionDotTxt'
+  addVersionDotTxt.mustRunAfter mkTargetDir
+  doLast {
+    copy { from 'LICENSE'; into target_dir }
+    copy { from 'README.md'; into target_dir }
+  }
+}
+
+task releaseTarGz(type: Tar) {
+  description = 'Create tgz in target_dir'
+  archiveName = "${build_name}-v${build_version}-${DSTAMP}-${TSTAMP}.tgz"
+  compression = Compression.GZIP
+  destinationDir = new File("${target_dir}/../release-edgent")
+  duplicatesStrategy 'exclude'
+  into "${build_name}"
+  // make some things first in the tgz
+  from "${rootProject.ext.target_dir}/LICENSE"
+  from "${rootProject.ext.target_dir}/README.md"
+  from "${rootProject.ext.target_dir}/version.txt"
+  from rootProject.ext.target_dir
+  doLast {
+    ant.checksum algorithm: 'md5', file: archivePath
+    ant.checksum algorithm: 'sha1', file: archivePath
+    println "created $destinationDir/$archiveName"
+  }
+}  
+
+task all {
+  description = 'Assemble distribution artifacts and populate the target_dir 
with jars, doc, etc.'
+  dependsOn('copyJars', 'copyScripts', 'aggregateJavadoc')
+}
+
+task cleanAll {
+  description = 'clean aggregator'  // e.g., release dependsOn clean only does 
top-level clean
+  dependsOn 'clean'  // top-level clean too
+  dependsOn subprojects*.clean
+}
+
+task release {
+  description = 'Assemble distribution artifacts, populate target_dir, and 
create a release tgz'
+  dependsOn('cleanAll', 'addMiscDistFiles', 'all', 'releaseTarGz')
+  addMiscDistFiles.mustRunAfter cleanAll
+  all.mustRunAfter addMiscDistFiles
+  releaseTarGz.mustRunAfter all
+}
 
 task wrapper(type: Wrapper) {
   jarFile = rootProject.file('.gradle-wrapper/gradle-wrapper.jar')

Reply via email to