JAL-3210 Fixed local.properties setting. Some tidying.
[jalview.git] / build.gradle
index d259e13..b7f2162 100644 (file)
@@ -19,6 +19,23 @@ plugins {
   id 'com.install4j.gradle' version '7.0.9'
 }
 
+// local build environment properties
+def localProps = "${jalviewDir}/local.properties"
+if (file(localProps).exists()) {
+  def p = new Properties()
+  def localPropsFIS = new FileInputStream(localProps)
+  p.load(localPropsFIS)
+  localPropsFIS.close()
+  p.each {
+    key, val -> 
+      def over = getProperty(key) != null
+      setProperty(key, val)
+      if (over) {
+        println("Overriding property '${key}' with local.properties value '${val}'")
+      }
+  }
+}
+
 repositories {
   jcenter()
   mavenCentral()
@@ -33,15 +50,15 @@ dependencies {
 }
 
 mainClassName = launcherClass
-def cloverInstrDir = file("$buildDir/$cloverSourcesInstrDir")
-def classes = "$jalviewDir/$classesDir"
+def cloverInstrDir = file("${buildDir}/${cloverSourcesInstrDir}")
+def classes = "${jalviewDir}/${classesDir}"
 
 if (clover.equals("true")) {
   use_clover = true
-  classes = "$buildDir/$cloverClassesDir"
+  classes = "${buildDir}/${cloverClassesDir}"
 } else {
   use_clover = false
-  classes = "$jalviewDir/$classesDir"
+  classes = "${jalviewDir}/${classesDir}"
 }
 
 // configure classpath/args for j8/j11 compilation
@@ -166,7 +183,7 @@ ext {
   gitHash = ""
   gitBranch = ""
 
-  println("Using a ${CHANNEL} profile. appbase=${getdown_app_base}")
+  println("Using a ${CHANNEL} profile.")
 }
 
 def JAVA_INTEGER_VERSION
@@ -631,8 +648,8 @@ task copyHelp(type: Copy) {
   }
   from(inputDir) {
     include '**/*.gif'
-      include '**/*.jpg'
-      include '**/*.png'
+    include '**/*.jpg'
+    include '**/*.png'
   }
   into outputDir
 
@@ -650,7 +667,6 @@ task syncLib(type: Sync) {
 task syncResources(type: Sync) {
   from "${jalviewDir}/${resourceDir}"
   include "**/*.*"
-  exclude "install4j"
   into "${classes}"
   preserve {
     include "**"
@@ -1263,6 +1279,9 @@ task jalviewjsSetEclipseWorkspace {
   def propVal = null
   if (project.hasProperty(propKey)) {
     propVal = project.getProperty(propKey)
+    if (propVal.startsWith("~/")) {
+      propVal = System.getProperty("user.home") + propVal.substring(1)
+    }
   }
   def propsFileName = "${jalviewjsBuildDir}/${jalviewjs_eclipse_workspace_location_file}"
   def eclipseWsDir = propVal
@@ -1306,11 +1325,10 @@ def eclipseVersion
 def eclipseDebug = false
 def eclipseVersionSuffix = ""
 task jalviewjsEclipsePaths {
-  def eclipseRoot
   def eclipseProduct
 
-  eclipseRoot = jalviewjs_eclipse_root
-  if (eclipseRoot.startsWith("~")) {
+  def eclipseRoot = jalviewjs_eclipse_root
+  if (eclipseRoot.startsWith("~/")) {
     eclipseRoot = System.getProperty("user.home") + eclipseRoot.substring(1)
   }
   if (OperatingSystem.current().isMacOsX()) {
@@ -1344,6 +1362,7 @@ task jalviewjsEclipsePaths {
     fis.close()
     assumedVersion = false
   }
+  /*
   String[] v = eclipseVersion.split("\\.")
   def v0 = Integer.valueOf(v[0])
   def v1 = Integer.valueOf(v[1])
@@ -1352,8 +1371,10 @@ task jalviewjsEclipsePaths {
   } else {
     eclipseVersionSuffix = "_4.13"
   }
+  utilsDropinsDir = "${jalviewDir}/${jalviewjs_eclipse_dropins_dir}${eclipseVersionSuffix}"
+  */
 
-  utilsDropinsDir = "${jalviewjs_utils_dir}/${jalviewjs_eclipse_dropins_dir}${eclipseVersionSuffix}"
+  utilsDropinsDir = "${jalviewDir}/${jalviewjs_eclipse_dropins_dir}"
   def propKey = "eclipse_debug"
   eclipseDebug = (project.hasProperty(propKey) && project.getProperty(propKey).equals("true"))
 
@@ -1364,9 +1385,18 @@ task jalviewjsEclipsePaths {
   }
 }
 
-task jalviewjsEclipseCopyDropins {
+task eclipseSetup {
+  dependsOn eclipseProject
+  dependsOn eclipseClasspath
+  dependsOn eclipseJdt
+}
+
+/* using the Copy task below
+task OLDjalviewjsEclipseCopyDropins {
   dependsOn jalviewjsEclipsePaths
+  dependsOn jalviewjsCleanEclipse
   def inputFiles = fileTree(dir: utilsDropinsDir, include: "*.jar")
+  inputFiles += file(jalviewjs_j2s_plugin)
   def outputDir = eclipseDropinsDir
 
   inputs.files inputFiles
@@ -1383,31 +1413,67 @@ task jalviewjsEclipseCopyDropins {
     }
   }
 }
+*/
 
 // this version (type: Copy) will delete anything in the eclipse dropins folder that isn't in fromDropinsDir
-task NEWjalviewjsEclipseCopyDropins(type: Copy) {
+task jalviewjsEclipseCopyDropins(type: Copy) {
   dependsOn jalviewjsEclipsePaths
+
   from utilsDropinsDir
   into eclipseDropinsDir
+
+  doLast {
+    copy {
+      from jalviewjs_j2s_plugin
+      into eclipseDropinsDir
+    }
+  }
 }
 
+// this eclipse -clean doesn't actually work
+task jalviewjsCleanEclipse(type: Exec) {
+  dependsOn eclipseSetup
+  dependsOn jalviewjsEclipsePaths
+  dependsOn jalviewjsEclipseCopyDropins
+
+  executable(eclipseBinary)
+  args(["-nosplash", "--launcher.suppressErrors", "-data", eclipseWorkspace.getPath(), "-clean", "-console", "-consoleLog"])
+  if (eclipseDebug) {
+    args += "-debug"
+  }
+  args += "-l"
+
+  def inputString = """exit
+y
+"""
+  def inputByteStream = new ByteArrayInputStream(inputString.getBytes())
+  standardInput = inputByteStream
+
+  doFirst {
+    println("CLEAN ECLIPSE_DEBUG=${eclipseDebug}")
+  }
+}
+/* not really working yet
+jalviewjsEclipseCopyDropins.finalizedBy jalviewjsCleanEclipse
+*/
+
 task jalviewjsUnzipFiles {
   dependsOn jalviewjsSitePath
 
-  def zipFiles = fileTree(dir: "${jalviewjs_utils_dir}/${jalviewjs_libjs_dir}", include: "*.zip")
-  zipFiles += "${jalviewjs_utils_dir}/${jalviewjs_swingjs_zip}${eclipseVersionSuffix}"
+  def zipFiles = fileTree(dir: "${jalviewDir}/${jalviewjs_libjs_dir}", include: "*.zip")
+  zipFiles += "${jalviewDir}/${jalviewjs_swingjs_zip}"
 
   doLast {
     zipFiles.each { file_zip -> 
       copy {
         from zipTree(file_zip)
-        into jalviewjsSiteDir
+        into "${jalviewDir}/${jalviewjsSiteDir}"
       }
     }
   }
 
   inputs.files zipFiles
-  outputs.dir jalviewjsSiteDir
+  outputs.dir "${jalviewDir}/${jalviewjsSiteDir}"
 }
 
 task jalviewjsCreateJ2sSettings(type: WriteProperties) {
@@ -1440,10 +1506,10 @@ task jalviewjsEclipseSetup {
   dependsOn jalviewjsCreateJ2sSettings
 }
 
-task jalviewjsCopyResources (type: Copy) {
+task jalviewjsCopyResources (type: Sync) {
   dependsOn jalviewjsSitePath
-  def inputFiles = fileTree(dir: jalviewjs_resource_dir)
-  def outputDir = "${jalviewjsSiteDir}/${jalviewjs_j2s_subdir}"
+  def inputFiles = fileTree(dir: "${jalviewDir}/${resourceDir}")
+  def outputDir = "${jalviewDir}/${jalviewjsSiteDir}/${jalviewjs_j2s_subdir}"
 
   from inputFiles
   into outputDir
@@ -1452,14 +1518,17 @@ task jalviewjsCopyResources (type: Copy) {
     outputFiles += "${outputDir}/${filename}"
     null
   }
+  preserve {
+    include "**"
+  }
   outputs.files outputFiles
   inputs.files inputFiles
 }
 
-task jalviewjsCopySiteResources (type: Copy) {
+task jalviewjsCopySiteResources (type: Sync) {
   dependsOn jalviewjsSitePath
-  def inputFiles = fileTree(dir: "${jalviewjs_utils_dir}/${jalviewjs_site_resource_dir}")
-  def outputDir = jalviewjsSiteDir
+  def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjs_site_resource_dir}")
+  def outputDir = "${jalviewDir}/${jalviewjsSiteDir}"
 
   from inputFiles
   into outputDir
@@ -1468,14 +1537,15 @@ task jalviewjsCopySiteResources (type: Copy) {
     outputFiles += "${outputDir}/${filename}"
     null
   }
+  preserve {
+    include "**"
+  }
   outputs.files outputFiles
   inputs.files inputFiles
 }
 
 task jalviewjsProjectImport(type: Exec) {
-  dependsOn eclipseProject
-  dependsOn eclipseClasspath
-  dependsOn eclipseJdt
+  dependsOn eclipseSetup
   dependsOn jalviewjsEclipsePaths
   dependsOn jalviewjsEclipseSetup
 
@@ -1485,6 +1555,7 @@ task jalviewjsProjectImport(type: Exec) {
   if (eclipseDebug) {
     args += "-debug"
   }
+  // can we use args += ["--launcher.appendVmargs", "-vmargs", "-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=utils/jalviewjs/eclipse/dropins"] here? (instead of copying plugins to eclipse dropins dir)
 
   doFirst {
     println("IMPORT ECLIPSE_DEBUG=${eclipseDebug}")
@@ -1501,10 +1572,11 @@ task jalviewjsTranspile(type: Exec) {
   dependsOn jalviewjsEclipsePaths
 
   executable(eclipseBinary)
-  args(["-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-data", eclipseWorkspace, "-${jalviewjs_eclipseBuildArg}", eclipse_project_name ])
+  args(["-nosplash", "--launcher.suppressErrors", "-application", "org.eclipse.jdt.apt.core.aptBuild", "-data", eclipseWorkspace, "-${jalviewjs_eclipse_build_arg}", eclipse_project_name ])
   if (eclipseDebug) {
     args += "-debug"
   }
+  // can we use args += ["--launcher.appendVmargs", "-vmargs", "-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=swingjs"] here? (instead of copying plugins to eclipse dropins dir)
 
   def stdout
   def stderr
@@ -1514,13 +1586,21 @@ task jalviewjsTranspile(type: Exec) {
   def logOutFileName = "${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}"
   def logOutFile = file(logOutFileName)
   logOutFile.createNewFile()
-  def logOutFOS = new FileOutputStream(logOutFile, false)
+  logOutFile.text = """ROOT: ${jalviewjs_eclipse_root}
+BINARY: ${eclipseBinary}
+VERSION: ${eclipseVersion}
+WORKSPACE: ${eclipseWorkspace}
+DEBUG: ${eclipseDebug}
+----
+"""
+  def logOutFOS = new FileOutputStream(logOutFile, true) // true == append
   //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(
@@ -1552,17 +1632,17 @@ task jalviewjsTranspile(type: Exec) {
     println("TRANSPILE ECLIPSE_DEBUG=${eclipseDebug}")
   }
 
-  inputs.dir(sourceDir)
-  outputs.dir("${eclipse_bin_dir}/main")
-  outputs.dir(jalviewjsTransferSiteDir)
-  outputs.upToDateWhen { file("${jalviewjsTransferSiteDir}${jalviewjs_server_resource}").exists() }
+  inputs.dir("${jalviewDir}/${sourceDir}")
+  outputs.dir("${jalviewDir}/${eclipse_bin_dir}/main")
+  outputs.dir("${jalviewDir}/${jalviewjsTransferSiteDir}")
+  outputs.upToDateWhen { file("${jalviewDir}/${jalviewjsTransferSiteDir}${jalviewjs_server_resource}").exists() }
 
 }
 
 task jalviewjsCopyTransferSite(type: Copy) {
   dependsOn jalviewjsTranspile
-  from jalviewjsTransferSiteDir
-  into jalviewjsSiteDir
+  from "${jalviewDir}/${jalviewjsTransferSiteDir}"
+  into "${jalviewDir}/${jalviewjsSiteDir}"
 }
 
 jalviewjsUnzipFiles.mustRunAfter jalviewjsCopyTransferSite
@@ -1646,6 +1726,7 @@ task jalviewjsServer {
   }
 
   outputs.file(htmlFile)
+  outputs.upToDateWhen({false})
 }
 
 task cleanJalviewjsAll {