JAL-3210 added absolute path for transpile log
[jalview.git] / build.gradle
index 07c744f..fc47cb6 100644 (file)
@@ -1262,19 +1262,9 @@ task helppages  {
   outputs.dir("$helpOutputDir")
 }
 
-def eclipseWorkspace
-task jalviewjsSetEclipseWorkspace {
-  def eclipseWsDir = jalviewjs_eclipse_workspace
-  eclipseWorkspace = file(eclipseWsDir)
-  if (!eclipseWorkspace.exists()) {
-    eclipseWorkspace = file("${buildDir}/../tmp/eclipse-workspace")
-    //eclipseWorkspace.deleteOnExit()
-  }
-  println("ECLIPSE WORKSPACE: "+eclipseWorkspace.getPath())
-}
-
 def jalviewjsBuildDir
 def jalviewjsSiteDir
+def jalviewjsTransferSiteDir
 task jalviewjsSitePath {
   if (jalviewjs_site_dir.startsWith("/")) {
     jalviewjsSiteDir = jalviewjs_site_dir
@@ -1283,8 +1273,48 @@ task jalviewjsSitePath {
     jalviewjsBuildDir = "${relativeBuildDir}/jalviewjs"
     jalviewjsSiteDir = jalviewjsBuildDir + "/" + jalviewjs_site_dir
   }
+  jalviewjsTransferSiteDir = jalviewjsBuildDir + "/tmp/site"
 }
 
+def eclipseWorkspace
+task jalviewjsSetEclipseWorkspace {
+  def propKey = "jalviewjs_eclipse_workspace"
+  def propsFileName = "${jalviewjsBuildDir}/${jalviewjs_eclipse_workspace_location_file}"
+  def props = new Properties()
+  def eclipseWsDir
+  def propVal = null
+  if (project.hasProperty(propKey)) {
+    propVal = project.getProperty(propKey)
+    eclipseWsDir = propVal
+  }
+  if (( eclipseWsDir == null || !file(eclipseWsDir).exists() ) && file(propsFileName).exists()) {
+    def ins = new FileInputStream(propsFileName)
+    props.load(ins)
+    ins.close()
+    if (props.getProperty(propKey, null) != null) {
+      eclipseWsDir = props.getProperty(propKey)
+    }
+  }
+
+  if (eclipseWsDir == null || !file(eclipseWsDir).exists()) {
+    def tempDir = File.createTempDir()
+    eclipseWsDir = tempDir.getAbsolutePath()
+    props.setProperty(propKey, eclipseWsDir)
+    def propsFile = file(propsFileName)
+    propsFile.parentFile.mkdirs()
+    propsFile.createNewFile() // doesn't affect existing file
+    def outs = new FileOutputStream(propsFile, false)
+    props.store(outs, null)
+    outs.close()
+  }
+
+  eclipseWorkspace = file(eclipseWsDir)
+    
+  println("ECLIPSE WORKSPACE: "+eclipseWorkspace.getPath())
+
+  inputs.property(propKey, propVal)
+  outputs.file(propsFileName)
+}
 
 
 task jalviewjsUnzipFiles {
@@ -1308,8 +1338,11 @@ task jalviewjsUnzipFiles {
 
 def eclipseDropinsDir
 def eclipseBinary
+def eclipseVersion
+def fromDropinsDir
 task jalviewjsEclipsePaths {
   def eclipseRoot
+  def eclipseProduct
   eclipseRoot = jalviewjs_eclipse_root
   if (eclipseRoot.startsWith("~")) {
     eclipseRoot = System.getProperty("user.home") + eclipseRoot.substring(1)
@@ -1318,18 +1351,36 @@ task jalviewjsEclipsePaths {
     eclipseRoot += "/Eclipse.app"
     eclipseDropinsDir = eclipseRoot+"/Contents/Eclipse/dropins"
     eclipseBinary = eclipseRoot+"/Contents/MacOS/eclipse"
+    eclipseProduct = eclipseRoot+"/Contents/Eclipse/.eclipseproduct"
   } else if (OperatingSystem.current().isWindows()) { // check these paths!!
     eclipseDropinsDir = eclipseRoot+"/dropins"
     eclipseBinary = eclipseRoot+"/eclipse"
+    eclipseProduct = eclipseRoot+"/.eclipseproduct"
   } else { // linux or unix
     eclipseDropinsDir = eclipseRoot+"/dropins"
     eclipseBinary = eclipseRoot+"/eclipse"
+    eclipseProduct = eclipseRoot+"/.eclipseproduct"
   }
+
+  def fis = new FileInputStream(eclipseProduct)
+  def props = new Properties()
+  props.load(fis)
+  eclipseVersion = props.getProperty("version")
+  fis.close()
+  println("ECLIPSE_VERSION=${eclipseVersion}")
+  String[] v = eclipseVersion.split("\\.")
+  def v0 = Integer.valueOf(v[0])
+  def v1 = Integer.valueOf(v[1])
+  if (v0 < 4 || ( v0 == 4 && v1 < 13 )) {
+    fromDropinsDir = "eclipse/dropins_4.12"
+  } else {
+    fromDropinsDir = "eclipse/dropins_4.13"
+  } 
 }
 
 task jalviewjsEclipseCopyDropins {
   dependsOn jalviewjsEclipsePaths
-  def inputFiles = fileTree(dir: jalviewjs_utils_dir+"/"+jalviewjs_eclipse_dropins_dir, include: "*.jar")
+  def inputFiles = fileTree(dir: jalviewjs_utils_dir+"/"+fromDropinsDir, include: "*.jar")
   def outputDir = eclipseDropinsDir
 
   inputs.files inputFiles
@@ -1358,14 +1409,14 @@ task jalviewjsCreateJ2sSettings(type: WriteProperties) {
     if (prop.startsWith("j2s.") && val != null) {
       if (prop == siteDirProperty) {
         if (!(val.startsWith("/") || val.startsWith("file://") )) {
-          val = jalviewjsSiteDir+"/"+val
+          val = jalviewjsTransferSiteDir+"/"+val
         }
         setSiteDir = true
       }
       property(prop,val)
     }
     if (!setSiteDir) {
-      property(siteDirProperty,"${jalviewjsSiteDir}")
+      property(siteDirProperty,jalviewjsTransferSiteDir)
     }
   }
   outputs.file(outputFile)
@@ -1445,54 +1496,58 @@ task jalviewjsTranspile(type: Exec) {
     stdout = new ByteArrayOutputStream()
     stderr = new ByteArrayOutputStream()
 
+    def logOutFileName = "${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}"
+    def logOutFile = file(logOutFileName)
+    logOutFile.createNewFile()
+    def logOutFOS = new FileOutputStream(logOutFile, false)
+    //def logErrFileName = "${jalviewjsBuildDir}/${jalviewjs_j2s_stderr}"
+    //def logErrFile = file(logFileName)
+    //logErrFile.createNewFile()
+    //def logErrFOS = new FileErrputStream(logErrFile, false)
+    // combine stdout and stderr
+    def logErrFOS = logOutFOS
     if (jalviewjs_j2s_to_console.equals("true")) {
       standardOutput = new org.apache.tools.ant.util.TeeOutputStream(
         new org.apache.tools.ant.util.TeeOutputStream(
-          new FileOutputStream("${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}"),
+          logOutFOS,
           stdout),
         standardOutput)
       errorOutput = new org.apache.tools.ant.util.TeeOutputStream(
         new org.apache.tools.ant.util.TeeOutputStream(
-          new FileOutputStream("${jalviewjsBuildDir}/${jalviewjs_j2s_stderr}"),
+          logErrFOS,
           stderr),
         errorOutput)
     } else {
       standardOutput = new org.apache.tools.ant.util.TeeOutputStream(
-        new FileOutputStream("${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}"),
+        logOutFOS,
         stdout)
       errorOutput = new org.apache.tools.ant.util.TeeOutputStream(
-        new FileOutputStream("${jalviewjsBuildDir}/${jalviewjs_j2s_stderr}"),
+        logErrFOS,
         stderr)
     }
   }
   doLast {
     if (stdout.toString().contains("Error processing ")) {
       // j2s did not complete transpile
-      throw new GradleException("Error during transpilation:\n${stderr}\nSee eclipse transpile log files '${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}' and '${jalviewjsBuildDir}/${jalviewjs_j2s_stderr}'\n")
+      throw new GradleException("Error during transpilation:\n${stderr}\nSee eclipse transpile log file '${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}'")
     }
   }
 
   inputs.dir(sourceDir)
   outputs.dir(eclipse_bin_dir+"/main")
-  outputs.files(
-    fileTree(
-      dir: jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir,
-      includes: [ "**/*.js" ],
-      excludes: [
-        //jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir+"/intervalstore/**",
-        //jalviewjsSiteDir+"/"+jalviewjs_j2s_subdir+"/org/json/**",
-        "intervalstore/**",
-        "org/json/**",
-      ]
-    ).files
-  )
-  outputs.file(jalviewjsSiteDir+jalviewjs_server_resource)
-
-}
-
-jalviewjsUnzipFiles.mustRunAfter jalviewjsTranspile
-jalviewjsTranspile.mustRunAfter jalviewjsCopyResources
-jalviewjsTranspile.mustRunAfter jalviewjsCopySiteResources
+  outputs.dir(jalviewjsTransferSiteDir)
+
+}
+
+task jalviewjsCopyTransferSite(type: Copy) {
+  dependsOn jalviewjsTranspile
+  from jalviewjsTransferSiteDir
+  into jalviewjsSiteDir
+}
+
+jalviewjsUnzipFiles.mustRunAfter jalviewjsCopyTransferSite
+jalviewjsCopyResources.mustRunAfter jalviewjsCopyTransferSite
+jalviewjsCopySiteResources.mustRunAfter jalviewjsCopyTransferSite
 
 task jalviewjsPrepareSite {
   group "JalviewJS"
@@ -1506,8 +1561,8 @@ task jalviewjsPrepareSite {
 task jalviewjsBuildSite {
   group "JalviewJS"
   description "Builds the whole website including transpiled code"
+  dependsOn jalviewjsCopyTransferSite
   dependsOn jalviewjsPrepareSite
-  dependsOn jalviewjsTranspile
 }
 
 task jalviewjsSiteTar(type: Tar) {
@@ -1557,6 +1612,8 @@ task jalviewjsServer {
 }
 
 task jalviewjs {
+  group "JalviewJS"
+  description "Build the site"
   dependsOn jalviewjsBuildSite
 }