JAL-4059 Big improvements to jalviewjsProjectImport dependencies avoiding more unnece...
authorBen Soares <b.soares@dundee.ac.uk>
Tue, 16 Apr 2024 12:09:14 +0000 (13:09 +0100)
committerBen Soares <b.soares@dundee.ac.uk>
Tue, 16 Apr 2024 12:09:14 +0000 (13:09 +0100)
build.gradle

index 2ddf4db..e5d9584 100644 (file)
@@ -560,7 +560,7 @@ ext {
   if (IN_ECLIPSE) {
     jalviewjsTransferSiteJsDir = string(jalviewjsSiteDir)
   } else {
-    jalviewjsTransferSiteJsDir = string("${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}/js")
+    jalviewjsTransferSiteJsDir = string("${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}/sitejs")
   }
   jalviewjsTransferSiteLibDir = string("${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}/lib")
   jalviewjsTransferSiteSwingJsDir = string("${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}/swingjs")
@@ -3249,12 +3249,14 @@ task jalviewjsEnableAltFileProperty(type: WriteProperties) {
 task jalviewjsSetEclipseWorkspace {
   def propKey = "jalviewjs_eclipse_workspace"
   def propVal = null
+  // see if jalviewjs_eclipse_workspace is set by a property
   if (project.hasProperty(propKey)) {
     propVal = project.getProperty(propKey)
     if (propVal.startsWith("~/")) {
       propVal = System.getProperty("user.home") + propVal.substring(1)
     }
   }
+  // else look for an existing build/jalviewjs/eclipse_workspace_location file
   def propsFileName = "${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_eclipse_workspace_location_file}"
   def propsFile = file(propsFileName)
   def eclipseWsDir = propVal
@@ -3303,8 +3305,8 @@ task jalviewjsSetEclipseWorkspace {
   }
 
   //inputs.property(propKey, eclipseWsDir) // eclipseWsDir only gets set once this task runs, so will be out-of-date
-  outputs.file(propsFileName)
-  outputs.upToDateWhen { eclipseWorkspace.exists() && propsFile.exists() }
+  //outputs.file(propsFileName) // don't want this to be deleted because of falsely "stale" task
+  outputs.upToDateWhen { eclipseWorkspace.exists() && (propsFile.exists() || !writeProps) }
 }
 
 
@@ -3498,7 +3500,6 @@ task jalviewjsCreateJ2sSettings(type: WriteProperties) {
 
   if (! IN_ECLIPSE) {
     inputs.properties(jalviewjsJ2sProps)
-    outputs.file(jalviewjsJ2sAltSettingsFileName)
   }
 }
 
@@ -3668,16 +3669,16 @@ task jalviewjsProjectImport(type: Exec) {
     inputs.file("${jalviewjsJ2sAltSettingsFileName}")
   }
 
-  outputs.upToDateWhen({
+  outputs.upToDateWhen( {
     if (IN_ECLIPSE) {
       return true
     }
     def projDirExists = file(projdir).exists()
     return projDirExists
-  })
+  } )
 }
 
-
+// jalviewjs_eclipse_workspace_location_file
 task jalviewjsTranspile(type: Exec) {
   dependsOn jalviewjsProjectImport
 
@@ -3836,7 +3837,6 @@ ECLIPSE DEBUG: ${eclipseDebug}
 task jalviewjsTransferSiteMergeSiteJsDir (type: Copy) {
   dependsOn jalviewjsTranspile
 
-
   def inputDir = file("${jalviewDir}/${jalviewjsTransferSiteJsDir}")
   def outputDir = "${jalviewDir}/${jalviewjsTransferSiteMergeDir}"
   into outputDir
@@ -3876,58 +3876,54 @@ task jalviewjsTransferSiteMergeSiteJsDir (type: Copy) {
   inputs.files jalviewjsTranspile
 }
 
-task jalviewjsTransferSiteMergeSwingJsDir (type: Copy) {
-  dependsOn jalviewjsTransferUnzipSwingJs
-
-  mustRunAfter jalviewjsTransferSiteMergeSiteJsDir 
+task jalviewjsTransferSiteMergeLibDir (type: Copy) {
+  dependsOn jalviewjsTransferUnzipLib
 
   def outputDir = "${jalviewDir}/${jalviewjsTransferSiteMergeDir}"
 
-  // This takes the outputs of jalviewjsTransferUnzipSwingJs
-  from jalviewjsTransferUnzipSwingJs
+  // This takes the outputs of jalviewjsTransferUnzipLib
+  from jalviewjsTransferUnzipLib
   into outputDir
 
   includeEmptyDirs = false
   exclude "**/*.html"
   exclude "**/*.htm"
 
+  // don't overwrite files in the destination
+  // Note, this closure gets run at run stage not config stage
   eachFile {
     if (it.getRelativePath().getFile(file(outputDir)).exists()) {
       it.exclude()
     }
   }
 
-  // should this be exclude really ? No, swingjs dir should be transferred last (and overwrite)
   duplicatesStrategy "INCLUDE"
 }
 
-task jalviewjsTransferSiteMergeLibDir (type: Copy) {
-  dependsOn jalviewjsTransferUnzipLib
-  
-  mustRunAfter jalviewjsTransferSiteMergeSiteJsDir 
-  mustRunAfter jalviewjsTransferSiteMergeSwingJsDir 
+task jalviewjsTransferSiteMergeSwingJsDir (type: Copy) {
+  dependsOn jalviewjsTransferUnzipSwingJs
 
   def outputDir = "${jalviewDir}/${jalviewjsTransferSiteMergeDir}"
 
-  // This takes the outputs of jalviewjsTransferUnzipLib
-  from jalviewjsTransferUnzipLib
+  // This takes the outputs of jalviewjsTransferUnzipSwingJs
+  from jalviewjsTransferUnzipSwingJs
   into outputDir
 
   includeEmptyDirs = false
   exclude "**/*.html"
   exclude "**/*.htm"
 
-  // don't overwrite files in the destination
-  eachFile {
-    if (it.getRelativePath().getFile(file(outputDir)).exists()) {
-      it.exclude()
-    }
-  }
-
+  // DO overwrite files in the destination
+  
   // should this be exclude really ? No, swingjs dir should be transferred last (and overwrite)
   duplicatesStrategy "INCLUDE"
 }
 
+// we run after SiteJs and exclude overwriting files
+jalviewjsTransferSiteMergeLibDir.mustRunAfter jalviewjsTransferSiteMergeSiteJsDir
+jalviewjsTransferSiteMergeLibDir.mustRunAfter jalviewjsTransferSiteMergeSwingJsDir
+// we run this last, overwriting files from sitejs and lib, to ensure a consistent SwingJS
+jalviewjsTransferSiteMergeSwingJsDir.mustRunAfter jalviewjsTransferSiteMergeSiteJsDir
 
 task jalviewjsTransferSiteMergeDirs {
   dependsOn jalviewjsTransferSiteMergeLibDir