Revert "JAL-3210 Added jalviewjsBuildAllClosures. Improved incrementality of jalviewj...
[jalview.git] / build.gradle
index b03c883..a88c42f 100644 (file)
@@ -1331,9 +1331,8 @@ task jalviewjsSetEclipseWorkspace {
     println("ECLIPSE WORKSPACE: "+eclipseWorkspace.getPath())
   }
 
-  //inputs.property(propKey, eclipseWsDir) // eclipseWsDir only gets set once this task runs, so will be out-of-date
+  inputs.property(propKey, eclipseWsDir)
   outputs.file(propsFileName)
-  outputs.upToDateWhen { eclipseWorkspace.exists() }
 }
 
 
@@ -1354,7 +1353,7 @@ task jalviewjsEclipsePaths {
     eclipseProduct = "${eclipseRoot}/Contents/Eclipse/.eclipseproduct"
   } else if (OperatingSystem.current().isWindows()) { // check these paths!!
     if (file("${eclipseRoot}/eclipse").isDirectory() && file("${eclipseRoot}/eclipse/.eclipseproduct").exists()) {
-      eclipseRoot += "/eclipse.exe"
+      eclipseRoot += "/eclipse"
     }
     eclipseBinary = "${eclipseRoot}/eclipse"
     eclipseProduct = "${eclipseRoot}/.eclipseproduct"
@@ -1366,7 +1365,7 @@ task jalviewjsEclipsePaths {
     eclipseProduct = "${eclipseRoot}/.eclipseproduct"
   }
 
-  eclipseVersion = "4.13" // default
+  eclipseVersion = "4.12" // default
   def assumedVersion = true
   if (file(eclipseProduct).exists()) {
     def fis = new FileInputStream(eclipseProduct)
@@ -1376,6 +1375,17 @@ task jalviewjsEclipsePaths {
     fis.close()
     assumedVersion = false
   }
+  /*
+  String[] v = eclipseVersion.split("\\.")
+  def v0 = Integer.valueOf(v[0])
+  def v1 = Integer.valueOf(v[1])
+  if (v0 < 4 || ( v0 == 4 && v1 < 13 )) {
+    eclipseVersionSuffix = "_4.12"
+  } else {
+    eclipseVersionSuffix = "_4.13"
+  }
+  */
+
   
   def propKey = "eclipse_debug"
   eclipseDebug = (project.hasProperty(propKey) && project.getProperty(propKey).equals("true"))
@@ -1393,6 +1403,30 @@ task eclipseSetup {
   dependsOn eclipseJdt
 }
 
+/* using the Copy task below
+task OLDjalviewjsEclipseCopyDropins {
+  dependsOn jalviewjsEclipsePaths
+  dependsOn jalviewjsCleanEclipse
+  def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjs_eclipse_dropins_dir}", include: "*.jar")
+  inputFiles += file(jalviewjs_j2s_plugin)
+  def outputDir = "${buildDir}/jalviewjs
+
+  inputs.files inputFiles
+  inputFiles.each { file ->
+    outputs.file("${outputDir}/${file.name}")
+  }
+
+  doLast {
+    inputFiles.each { file ->
+      copy {
+        from file
+        into outputDir
+      }
+    }
+  }
+}
+*/
+
 // this version (type: Copy) will delete anything in the eclipse dropins folder that isn't in fromDropinsDir
 task jalviewjsEclipseCopyDropins(type: Copy) {
   dependsOn jalviewjsEclipsePaths
@@ -1585,8 +1619,7 @@ task jalviewjsProjectImport(type: Exec) {
   dependsOn jalviewjsEclipsePaths
   dependsOn jalviewjsEclipseSetup
 
-  //def projdir = eclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview/org.eclipse.jdt.core"
-  def projdir = eclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview"
+  def projdir = eclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview/org.eclipse.jdt.core"
   executable(eclipseBinary)
   args(["-nosplash", "--launcher.suppressErrors", "-application", "com.seeq.eclipse.importprojects.headlessimport", "-data", eclipseWorkspace.getPath(), "-import", jalviewDirAbsolutePath])
   if (eclipseDebug) {
@@ -1595,9 +1628,7 @@ task jalviewjsProjectImport(type: Exec) {
   args += [ "--launcher.appendVmargs", "-vmargs", "-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_eclipse_tmp_dropins_dir}" ]
 
   inputs.file("${jalviewDir}/.project")
-  outputs.upToDateWhen { 
-    file(projdir).exists()
-  }
+  outputs.upToDateWhen { file(projdir).exists() }
 }
 
 task jalviewjsTranspile(type: Exec) {
@@ -1618,7 +1649,7 @@ task jalviewjsTranspile(type: Exec) {
     stdout = new ByteArrayOutputStream()
     stderr = new ByteArrayOutputStream()
 
-    def logOutFileName = "${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_j2s_transpile_stdout}"
+    def logOutFileName = "${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}"
     def logOutFile = file(logOutFileName)
     logOutFile.createNewFile()
     logOutFile.text = """ROOT: ${jalviewjs_eclipse_root}
@@ -1660,7 +1691,7 @@ DEBUG: ${eclipseDebug}
   doLast {
     if (stdout.toString().contains("Error processing ")) {
       // j2s did not complete transpile
-      throw new GradleException("Error during transpilation:\n${stderr}\nSee eclipse transpile log file '${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_j2s_transpile_stdout}'")
+      throw new GradleException("Error during transpilation:\n${stderr}\nSee eclipse transpile log file '${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}'")
     }
   }
 
@@ -1669,15 +1700,15 @@ DEBUG: ${eclipseDebug}
   outputs.upToDateWhen( { file("${jalviewDir}/${jalviewjsTransferSiteJsDir}${jalviewjs_server_resource}").exists() } )
 }
 
-// this Copy version of TransferSiteJs will delete anything else in the target dir
-task jalviewjsCopyTransferSiteJs(type: Copy) {
+// this Copy version of TransferSite will delete anything else in the target dir
+task jalviewjsCopyTransferSite(type: Copy) {
   dependsOn jalviewjsTranspile
   from "${jalviewDir}/${jalviewjsTransferSiteJsDir}"
   into "${jalviewDir}/${jalviewjsSiteDir}"
 }
 
 // this Sync version of TransferSite is used by buildship to keep the website automatically up to date when a file changes
-task jalviewjsSyncTransferSiteJs(type: Sync) {
+task jalviewjsSyncTransferSite(type: Sync) {
   from "${jalviewDir}/${jalviewjsTransferSiteJsDir}"
   include "**/*.*"
   into "${jalviewDir}/${jalviewjsSiteDir}"
@@ -1686,15 +1717,15 @@ task jalviewjsSyncTransferSiteJs(type: Sync) {
   }
 }
 
-jalviewjsSyncLib.mustRunAfter jalviewjsCopyTransferSiteJs
-jalviewjsSyncResources.mustRunAfter jalviewjsCopyTransferSiteJs
-jalviewjsSyncSiteResources.mustRunAfter jalviewjsCopyTransferSiteJs
-jalviewjsSyncBuildProperties.mustRunAfter jalviewjsCopyTransferSiteJs
+jalviewjsSyncLib.mustRunAfter jalviewjsCopyTransferSite
+jalviewjsSyncResources.mustRunAfter jalviewjsCopyTransferSite
+jalviewjsSyncSiteResources.mustRunAfter jalviewjsCopyTransferSite
+jalviewjsSyncBuildProperties.mustRunAfter jalviewjsCopyTransferSite
 
-jalviewjsSyncLib.mustRunAfter jalviewjsSyncTransferSiteJs
-jalviewjsSyncResources.mustRunAfter jalviewjsSyncTransferSiteJs
-jalviewjsSyncSiteResources.mustRunAfter jalviewjsSyncTransferSiteJs
-jalviewjsSyncBuildProperties.mustRunAfter jalviewjsSyncTransferSiteJs
+jalviewjsSyncLib.mustRunAfter jalviewjsSyncTransferSite
+jalviewjsSyncResources.mustRunAfter jalviewjsSyncTransferSite
+jalviewjsSyncSiteResources.mustRunAfter jalviewjsSyncTransferSite
+jalviewjsSyncBuildProperties.mustRunAfter jalviewjsSyncTransferSite
 
 task jalviewjsPrepareSite {
   group "JalviewJS"
@@ -1703,21 +1734,18 @@ task jalviewjsPrepareSite {
   dependsOn jalviewjsSyncResources
   dependsOn jalviewjsSyncSiteResources
   dependsOn jalviewjsSyncBuildProperties
-  dependsOn jalviewjsSyncCore
 }
 
 task jalviewjsBuildSite {
   group "JalviewJS"
   description "Builds the whole website including transpiled code"
-  dependsOn jalviewjsCopyTransferSiteJs
+  dependsOn jalviewjsCopyTransferSite
   dependsOn jalviewjsPrepareSite
 }
 
 task cleanJalviewjsSite {
   doFirst {
     delete "${jalviewDir}/${jalviewjsTransferSiteJsDir}"
-    delete "${jalviewDir}/${jalviewjsTransferSiteLibDir}"
-    delete "${jalviewDir}/${jalviewjsTransferSiteCoreDir}"
     delete "${jalviewDir}/${jalviewjsSiteDir}"
   }
 }
@@ -1805,12 +1833,12 @@ task jalviewjs {
 }
 
 
-task jalviewjsIDE_CopyTransferSiteJs(type: Copy) {
+task jalviewjsIDE_CopyTransferSite(type: Copy) {
   from "${jalviewDir}/${jalviewjsTransferSiteJsDir}"
   into "${jalviewDir}/${jalviewjsSiteDir}"
 }
 
-task jalviewjsIDE_j2sFile {
+task jalviewjsIDE_j2s {
   group "00 JalviewJS in Eclipse"
   description "Creates the .j2s file"
   dependsOn jalviewjsCreateJ2sSettings
@@ -1819,7 +1847,7 @@ task jalviewjsIDE_j2sFile {
 task jalviewjsIDE_AssembleSite {
   group "00 JalviewJS in Eclipse"
   description "Assembles the Eclipse transpiled site and unzips supporting zipfiles"
-  dependsOn jalviewjsIDE_CopyTransferSiteJs
+  dependsOn jalviewjsIDE_CopyTransferSite
   dependsOn jalviewjsPrepareSite
 }
 
@@ -1838,12 +1866,12 @@ task jalviewjsIDE_Server {
 // buildship runs this at import
 task eclipseSynchronizationTask {
   dependsOn eclipseSetup
-  dependsOn jalviewjsIDE_j2sFile
+  dependsOn jalviewjsIDE_j2s
 }
 
 // buildship runs this at build time
 task eclipseAutoBuildTask {
-  dependsOn jalviewjsSyncTransferSiteJs
+  dependsOn jalviewjsSyncTransferSite
   dependsOn jalviewjsPrepareSite
 }
 
@@ -1855,21 +1883,14 @@ task eclipseAutoBuildTask {
 
 
 // closure
-
-def jalviewjsCallCore(FileCollection list, String prefixFile, String suffixFile, String jsfile, String zjsfile, File logOutFile, Boolean logOutConsole) {
-
-  def stdout = new ByteArrayOutputStream()
-  def stderr = new ByteArrayOutputStream()
-
-  def coreFile = file(jsfile)
-  def msg = ""
-  msg = "Generating ${jsfile}"
-  println(msg)
-  logOutFile.createNewFile()
-  logOutFile.append(msg+"\n")
-
-  def coreTop = file(prefixFile)
-  def coreBottom = file(suffixFile)
+def jalviewjsCallCore(String name, FileCollection list, String jsDir, String outputDir) {
+  def coreFileName = "core${name}.js"
+  def coreFilePath = "${outputDir}/${coreFileName}"
+  def coreFile = file(coreFilePath)
+  println("...Generating ${coreFilePath}")
+
+  def coreTop = file("${jsDir}/core/coretop2.js")
+  def coreBottom = file("${jsDir}/core/corebottom2.js")
   coreFile.getParentFile().mkdirs()
   coreFile.createNewFile()
   coreFile.write( coreTop.text )
@@ -1881,53 +1902,43 @@ def jalviewjsCallCore(FileCollection list, String prefixFile, String suffixFile,
       t.replaceAll("Class__","Clazz._")
       coreFile.append( t )
     } else {
-      msg = "...file "+f.getPath()+" does not exist, skipping"
-      println(msg)
-      logOutFile.append(msg+"\n")
+      println("...file ${line} does not exist, skipping")
     }
   }
   coreFile.append( coreBottom.text )
 
-  msg = "Generating ${zjsfile}"
-  println(msg)
-  logOutFile.append(msg+"\n")
-  def logOutFOS = new FileOutputStream(logOutFile, true) // true == append
-  def logErrFOS = logOutFOS
+  def coreZFileName = "core${name}.z.js"
+  def coreZFilePath = "${outputDir}/${coreZFileName}"
+  def coreZFile = file(coreZFilePath)
+  println("...Generating ${coreZFilePath}")
 
   javaexec {
     classpath = files(["${jalviewDir}/tools/closure_compiler.jar"])
-    args = [ "--js", jsfile, "--js_output_file", zjsfile ]
-
-    msg = "\nRunning '"+commandLine.join(' ')+"'\n"
-    println(msg)
-    logOutFile.append(msg+"\n")
-
-    if (logOutConsole) {
-      standardOutput = new org.apache.tools.ant.util.TeeOutputStream(
-        new org.apache.tools.ant.util.TeeOutputStream(
-          logOutFOS,
-          stdout),
-        standardOutput)
-        errorOutput = new org.apache.tools.ant.util.TeeOutputStream(
-          new org.apache.tools.ant.util.TeeOutputStream(
-            logErrFOS,
-            stderr),
-          errorOutput)
-    } else {
-      standardOutput = new org.apache.tools.ant.util.TeeOutputStream(
-        logOutFOS,
-        stdout)
-        errorOutput = new org.apache.tools.ant.util.TeeOutputStream(
-          logErrFOS,
-          stderr)
-    }
+    args = [ "--js", coreFileName, "--js_output_file", coreZFileName ]
+    workingDir = outputDir
   }
-  msg = "--"
-  println(msg)
-  logOutFile.append(msg+"\n")
+
+  return [ coreFile, coreZFile ]
 }
 
+def jalviewjsToJs(String name, String classlist, String jsDir, String j2sDir, String outputDir) {
+  def filelist = []
+  file(classlist).eachLine {
+    line ->
+    filelist += line
+  }
+  def list = fileTree(dir: j2sDir, includes: filelist)
+  /*
+  def list = files()
+  file(classlist).eachLine {
+    line ->
+    list += file("${j2sDir}/${line}")
+  }
+  */
 
+  return jalviewjsCallCore(name, list, jsDir, outputDir)
+// publish-core-template ... here?
+}
 
 task jalviewjsBuildAllCores {
   group "JalviewJS"
@@ -1937,54 +1948,10 @@ task jalviewjsBuildAllCores {
   dependsOn jalviewjsTransferUnzipLib
   dependsOn jalviewjsTranspile
 
-  def j2sDir = "${jalviewDir}/${jalviewjsTransferSiteJsDir}/${jalviewjs_j2s_subdir}"
-  def jsDir = "${jalviewDir}/${jalviewjsTransferSiteLibDir}/${jalviewjs_js_subdir}"
-  def outputDir = "${jalviewDir}/${jalviewjsTransferSiteCoreDir}/${jalviewjs_j2s_subdir}/core"
-  def prefixFile = "${jsDir}/core/coretop2.js"
-  def suffixFile = "${jsDir}/core/corebottom2.js"
-
-  inputs.file prefixFile
-  inputs.file suffixFile
-
-  def classlists = []
   fileTree(dir: "${jalviewDir}/${jalviewjs_classlists_dir}", include: "*.txt").each {
     file ->
     def name = file.getName() - ".txt"
 
-    def filelist = []
-    file.eachLine {
-      line ->
-      filelist += line
-    }
-    def list = fileTree(dir: j2sDir, includes: filelist)
-
-    def coreFileName = "core${name}.js"
-    def jsfile = "${outputDir}/${coreFileName}"
-    def coreZFileName = "core${name}.z.js"
-    def zjsfile = "${outputDir}/${coreZFileName}"
-
-    classlists += [
-      'jsfile': jsfile,
-      'zjsfile': zjsfile,
-      'list': list
-    ]
-
-    inputs.file(file)
-    inputs.files(list)
-    outputs.file(jsfile)
-    outputs.file(zjsfile)
-  } 
-
-
-  doFirst {
-    def logOutFile = file("${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_j2s_closure_stdout}")
-    logOutFile.getParentFile().mkdirs()
-    logOutFile.createNewFile()
-    logOutFile.write(getDate("yyyy-MM-dd HH:mm:ss")+" jalviewjsBuildAllCores\n----\n")
-
-    classlists.each {
-      jalviewjsCallCore(it.list, prefixFile, suffixFile, it.jsfile, it.zjsfile, logOutFile, jalviewjs_j2s_to_console.equals("true"))
-    }
+    jalviewjsToJs(name, file.getAbsolutePath(), "${jalviewDir}/${jalviewjsTransferSiteLibDir}/${jalviewjs_js_subdir}", "${jalviewDir}/${jalviewjsTransferSiteJsDir}/${jalviewjs_j2s_subdir}", "${jalviewDir}/${jalviewjsTransferSiteCoreDir}/${jalviewjs_j2s_subdir}/core")
   }
-
 }