JAL-3790 New getdown version and jar files
[jalview.git] / build.gradle
index bdc50d0..ebb8733 100644 (file)
@@ -57,12 +57,13 @@ def string(Object o) {
   return o == null ? "" : o.toString()
 }
 
-def overrideProperties(def propsFileName) {
+def overrideProperties(String propsFileName, boolean output = false) {
   if (propsFileName == null) {
     return
   }
   def propsFile = file(propsFileName)
   if (propsFile != null && propsFile.exists()) {
+    println("Using properties from file '${propsFileName}'")
     try {
       def p = new Properties()
       def localPropsFIS = new FileInputStream(propsFile)
@@ -74,12 +75,15 @@ def overrideProperties(def propsFileName) {
           if (project.hasProperty(key)) {
             oldval = project.findProperty(key)
             project.setProperty(key, val)
-            println("Overriding property '${key}' ('${oldval}') with ${file(propsFile).getName()} value '${val}'")
+            if (output) {
+              println("Overriding property '${key}' ('${oldval}') with ${file(propsFile).getName()} value '${val}'")
+            }
           } else {
             ext.setProperty(key, val)
-            println("Setting ext property '${key}' with ${file(propsFile).getName()}s value '${val}'")
+            if (output) {
+              println("Setting ext property '${key}' with ${file(propsFile).getName()}s value '${val}'")
+            }
           }
-          //true
       }
     } catch (Exception e) {
       println("Exception reading local.properties")
@@ -93,17 +97,17 @@ ext {
   jalviewDirRelativePath = jalviewDir
 
   getdownChannelName = CHANNEL.toLowerCase()
-  // default to "release". Currently only has different cosmetics for "develop", "release"
-  propertiesChannelName = getdownChannelName == "develop" ? getdownChannelName : "release"
+  // default to "default". Currently only has different cosmetics for "develop", "release", "default"
+  propertiesChannelName = ["develop", "release", "test-release", "jalviewjs", "jalviewjs-release" ].contains(getdownChannelName) ? getdownChannelName : "default"
   // Import channel_properties
   channelDir = string("${jalviewDir}/${channel_properties_dir}/${propertiesChannelName}")
   channelGradleProperties = string("${channelDir}/channel_gradle.properties")
-  overrideProperties(channelGradleProperties)
+  overrideProperties(channelGradleProperties, false)
   // local build environment properties
   // can be "projectDir/local.properties"
-  overrideProperties("${projectDir}/local.properties")
+  overrideProperties("${projectDir}/local.properties", true)
   // or "../projectDir_local.properties"
-  overrideProperties(projectDir.getParent() + "/" + projectDir.getName() + "_local.properties")
+  overrideProperties(projectDir.getParent() + "/" + projectDir.getName() + "_local.properties", true)
 
   ////  
   // Import releaseProps from the RELEASE file
@@ -157,6 +161,9 @@ ext {
   }
   */
 
+  // datestamp
+  buildDate = new Date().format("yyyyMMdd")
+
   // essentials
   bareSourceDir = string(source_dir)
   sourceDir = string("${jalviewDir}/${bareSourceDir}")
@@ -190,17 +197,19 @@ ext {
   getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher}")
   getdownAppDistDir = getdown_app_dir_alt
   getdownImagesDir = string("${jalviewDir}/${getdown_images_dir}")
+  getdownSetAppBaseProperty = false // whether to pass the appbase and appdistdir to the application
   reportRsyncCommand = false
   jvlChannelName = CHANNEL.toLowerCase()
   install4jSuffix = CHANNEL.substring(0, 1).toUpperCase() + CHANNEL.substring(1).toLowerCase(); // BUILD -> Build
-  install4jDSStore = "DS_Store-NON-RELEASE"
-  install4jDMGBackgroundImage = "jalview_dmg_background-NON-RELEASE.png"
+  install4jDMGDSStore = "${install4j_images_dir}/${install4j_dmg_ds_store}"
+  install4jDMGBackgroundImage = "${install4j_images_dir}/${install4j_dmg_background}"
   install4jInstallerName = "${jalview_name} Non-Release Installer"
   install4jExecutableName = jalview_name.replaceAll("[^\\w]+", "_").toLowerCase()
   install4jExtraScheme = "jalviewx"
   install4jMacIconsFile = string("${install4j_images_dir}/${install4j_mac_icons_file}")
   install4jWindowsIconsFile = string("${install4j_images_dir}/${install4j_windows_icons_file}")
   install4jPngIconFile = string("${install4j_images_dir}/${install4j_png_icon_file}")
+  install4jBackground = string("${install4j_images_dir}/${install4j_background}")
   switch (CHANNEL) {
 
     case "BUILD":
@@ -216,12 +225,10 @@ ext {
     install4jExtraScheme = "jalviewb"
     break
 
-    case "RELEASE":
+    case [ "RELEASE", "JALVIEWJS-RELEASE" ]:
     getdownAppDistDir = getdown_app_dir_release
     reportRsyncCommand = true
     install4jSuffix = ""
-    install4jDSStore = "DS_Store"
-    install4jDMGBackgroundImage = "jalview_dmg_background.png"
     install4jInstallerName = "${jalview_name} Installer"
     break
 
@@ -259,13 +266,11 @@ ext {
 
     case "DEVELOP":
     reportRsyncCommand = true
-    
+    getdownSetAppBaseProperty = true
     // DEVELOP-RELEASE is usually associated with a Jalview release series so set the version
-    JALVIEW_VERSION=JALVIEW_VERSION+"-develop"
+    JALVIEW_VERSION=JALVIEW_VERSION+"-d${buildDate}"
     
     install4jSuffix = "Develop"
-    install4jDSStore = "DS_Store-DEVELOP"
-    install4jDMGBackgroundImage = "jalview_dmg_background-DEVELOP.png"
     install4jExtraScheme = "jalviewd"
     install4jInstallerName = "${jalview_name} Develop Installer"
     break
@@ -279,8 +284,6 @@ ext {
     }
     JALVIEW_VERSION = JALVIEW_VERSION+"-test"
     install4jSuffix = "Test"
-    install4jDSStore = "DS_Store-TEST-RELEASE"
-    install4jDMGBackgroundImage = "jalview_dmg_background-TEST.png"
     install4jExtraScheme = "jalviewt"
     install4jInstallerName = "${jalview_name} Test Installer"
     break
@@ -304,13 +307,11 @@ ext {
     }
     JALVIEW_VERSION = "TEST"
     install4jSuffix = "Test-Local"
-    install4jDSStore = "DS_Store-TEST-RELEASE"
-    install4jDMGBackgroundImage = "jalview_dmg_background-TEST.png"
     install4jExtraScheme = "jalviewt"
     install4jInstallerName = "${jalview_name} Test Installer"
     break
 
-    case "LOCAL":
+    case [ "LOCAL", "JALVIEWJS" ]:
     JALVIEW_VERSION = "TEST"
     getdownAppBase = file(getdownWebsiteDir).toURI().toString()
     getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
@@ -328,6 +329,9 @@ ext {
     if (string(getdown_appbase_override) == "") {
       getdownAppBase = file(getdownWebsiteDir).toURI().toString()
       getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
+    } else if (string(getdown_appbase_override).startsWith("file://")) {
+      getdownAppBase = string(getdown_appbase_override)
+      getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
     } else {
       getdownAppBase = string(getdown_appbase_override)
     }
@@ -1250,6 +1254,10 @@ task createBuildProperties(type: WriteProperties) {
   property "BUILD_DATE", getDate("HH:mm:ss dd MMMM yyyy")
   property "VERSION", JALVIEW_VERSION
   property "INSTALLATION", INSTALLATION+" git-commit:"+gitHash+" ["+gitBranch+"]"
+  if (getdownSetAppBaseProperty) {
+    property "GETDOWNAPPBASE", getdownAppBase
+    property "GETDOWNAPPDISTDIR", getdownAppDistDir
+  }
   outputs.file(outputFile)
 }
 
@@ -1273,12 +1281,16 @@ task buildIndices(type: JavaExec) {
   outputs.file("${workingDir}/JavaHelpSearch/TMAP")
 }
 
-task prepare {
+task buildResources {
   dependsOn copyResources
+  dependsOn copyChannelResources
+  dependsOn createBuildProperties
+}
+
+task prepare {
+  dependsOn buildResources
   dependsOn copyDocs
   dependsOn copyHelp
-  dependsOn createBuildProperties
-  dependsOn copyChannelResources
   dependsOn convertMdFiles
   dependsOn buildIndices
 }
@@ -1314,6 +1326,11 @@ test {
     println("Setting Test LaF to '${testLaf}'")
     systemProperty "laf", testLaf
   }
+  def testHiDPIScale = project.findProperty("test_HiDPIScale")
+  if (testHiDPIScale != null) {
+    println("Setting Test HiDPI Scale to '${testHiDPIScale}'")
+    systemProperty "sun.java2d.uiScale", testHiDPIScale
+  }
   sourceCompatibility = compile_source_compatibility
   targetCompatibility = compile_target_compatibility
   jvmArgs += additional_compiler_args
@@ -1388,7 +1405,8 @@ jar {
     "Implementation-Version": JALVIEW_VERSION
   }
 
-  destinationDirectory = file("${jalviewDir}/${package_dir}")
+  def outputDir = "${jalviewDir}/${package_dir}"
+  destinationDirectory = file(outputDir)
   archiveFileName = rootProject.name+".jar"
 
   exclude "cache*/**"
@@ -1401,7 +1419,7 @@ jar {
   sourceSets.main.resources.srcDirs.each{ dir ->
     inputs.dir(dir)
   }
-  outputs.file("${destinationDirectory}/${archiveFileName}")
+  outputs.file("${outputDir}/${archiveFileName}")
 }
 
 
@@ -1481,7 +1499,7 @@ task getdownWebsite() {
 
     copy {
       from buildProperties
-      rename(build_properties_file, getdown_build_properties)
+      rename(file(buildProperties).getName(), getdown_build_properties)
       into getdownAppDir
     }
     getdownWebsiteResourceFilenames += "${getdownAppDistDir}/${getdown_build_properties}"
@@ -1593,6 +1611,11 @@ task getdownWebsite() {
     //getdownTextString += "class = " + file(getdownLauncher).getName() + "\n"
     getdownTextString += "resource = ${getdown_launcher_new}\n"
     getdownTextString += "class = ${main_class}\n"
+    // Not setting these properties in general so that getdownappbase and getdowndistdir will default to release version in jalview.bin.Cache
+    if (getdownSetAppBaseProperty) {
+      getdownTextString += "jvmarg = -Dgetdowndistdir=${getdownAppDistDir}\n"
+      getdownTextString += "jvmarg = -Dgetdownappbase=${getdownAppBase}\n"
+    }
 
     def getdown_txt = file("${getdownWebsiteDir}/getdown.txt")
     getdown_txt.write(getdownTextString)
@@ -1601,12 +1624,14 @@ task getdownWebsite() {
     def launchJvl = file("${getdownWebsiteDir}/${getdownLaunchJvl}")
     launchJvl.write("appbase=${getdownAppBase}")
 
+    // files going into the getdown website dir: getdown-launcher.jar
     copy {
       from getdownLauncher
       rename(file(getdownLauncher).getName(), getdown_launcher_new)
       into getdownWebsiteDir
     }
 
+    // files going into the getdown website dir: getdown-launcher(-local).jar
     copy {
       from getdownLauncher
       if (file(getdownLauncher).getName() != getdown_launcher) {
@@ -1615,23 +1640,26 @@ task getdownWebsite() {
       into getdownWebsiteDir
     }
 
+    // files going into the getdown website dir: ./install dir and files
     if (! (CHANNEL.startsWith("ARCHIVE") || CHANNEL.startsWith("DEVELOP"))) {
       copy {
         from getdown_txt
         from getdownLauncher
-        from "${getdownWebsiteDir}/${getdown_build_properties}"
+        from "${getdownAppDir}/${getdown_build_properties}"
         if (file(getdownLauncher).getName() != getdown_launcher) {
           rename(file(getdownLauncher).getName(), getdown_launcher)
         }
         into getdownInstallDir
       }
 
+      // and make a copy in the getdown files dir (these are not downloaded by getdown)
       copy {
         from getdownInstallDir
         into getdownFilesInstallDir
       }
     }
 
+    // files going into the getdown files dir: getdown.txt, getdown-launcher.jar, channel-launch.jvl, build_properties
     copy {
       from getdown_txt
       from launchJvl
@@ -1643,6 +1671,7 @@ task getdownWebsite() {
       into getdownFilesDir
     }
 
+    // and ./resources (not all downloaded by getdown)
     copy {
       from getdownResourceDir
       into "${getdownFilesDir}/${getdown_resource_dir}"
@@ -1872,7 +1901,7 @@ task installers(type: com.install4j.gradle.Install4jTask) {
     'BUNDLE_ID': install4jBundleId,
     'INTERNAL_ID': install4jInternalId,
     'WINDOWS_APPLICATION_ID': install4jWinApplicationId,
-    'MACOS_DS_STORE': install4jDSStore,
+    'MACOS_DMG_DS_STORE': install4jDMGDSStore,
     'MACOS_DMG_BG_IMAGE': install4jDMGBackgroundImage,
     'INSTALLER_NAME': install4jInstallerName,
     'INSTALL4J_UTILS_DIR': install4j_utils_dir,
@@ -1892,6 +1921,7 @@ task installers(type: com.install4j.gradle.Install4jTask) {
     'MAC_ICONS_FILE': install4jMacIconsFile,
     'WINDOWS_ICONS_FILE': install4jWindowsIconsFile,
     'PNG_ICON_FILE': install4jPngIconFile,
+    'BACKGROUND': install4jBackground,
 
   ]
 
@@ -2309,7 +2339,9 @@ task jalviewjsSyncAllLibs (type: Sync) {
 
 
 task jalviewjsSyncResources (type: Sync) {
-  def inputFiles = fileTree(dir: resourceDir)
+  dependsOn buildResources
+
+  def inputFiles = fileTree(dir: resourcesBuildDir)
   def outputDir = "${jalviewDir}/${jalviewjsSiteDir}/${jalviewjs_j2s_subdir}"
 
   from inputFiles