JAL-3626 rescue automatic configuration of JALVIEW_VERSION from the RELEASE propertie...
[jalview.git] / build.gradle
index dbc2d42..4e50b77 100644 (file)
@@ -82,6 +82,26 @@ ext {
     }
   }
 
+  ////  
+  // Import releaseProps from the RELEASE file
+  // or a file specified via JALVIEW_RELEASE_FILE if defined
+  // Expect jalview.version and target release branch in jalview.release        
+  def releaseProps = new Properties();
+  def releasePropFile = findProperty("JALVIEW_RELEASE_FILE");
+  def defaultReleasePropFile = "${jalviewDirAbsolutePath}/RELEASE";
+  try {
+    (new File(releasePropFile!=null ? releasePropFile : defaultReleasePropFile)).withInputStream { 
+     releaseProps.load(it)
+    }
+  } catch (Exception fileLoadError) {
+    throw new Error("Couldn't load release properties file "+(releasePropFile==null ? defaultReleasePropFile : "from custom location: releasePropFile"),fileLoadError);
+  }
+  ////
+  // Set JALVIEW_VERSION if it is not already set
+  if (findProperty(JALVIEW_VERSION)==null || "".equals(JALVIEW_VERSION)) {
+    JALVIEW_VERSION = releaseProps.get("jalview.version")
+  }
+  
   // this property set when running Eclipse headlessly
   j2sHeadlessBuildProperty = string("net.sf.j2s.core.headlessbuild")
   // this property set by Eclipse
@@ -103,8 +123,7 @@ ext {
   J2S_ENABLED = (project.hasProperty('j2s.compiler.status') && project['j2s.compiler.status'] != null && project['j2s.compiler.status'] == "enable")
   if (J2S_ENABLED) {
     println("J2S ENABLED")
-  }
-  
+  } 
   /* *-/
   System.properties.sort { it.key }.each {
     key, val -> println("SYSTEM PROPERTY ${key}='${val}'")
@@ -217,6 +236,11 @@ ext {
 
     case "DEVELOP":
     reportRsyncCommand = true
+    
+    // DEVELOP-RELEASE is usually associated with a Jalview release series so set the version
+    JALVIEW_VERSION=JALVIEW_VERSION+"-develop"
+    
+    install4jSuffix = "Develop"
     install4jDSStore = "DS_Store-DEVELOP"
     install4jDMGBackgroundImage = "jalview_dmg_background-DEVELOP.png"
     install4jExtraScheme = "jalviewd"
@@ -230,7 +254,7 @@ ext {
       jalviewjs_ignore_transpile_errors = "false"
       println("Setting jalviewjs_ignore_transpile_errors to 'false'")
     }
-    JALVIEW_VERSION = "TEST"
+    JALVIEW_VERSION = JALVIEW_VERSION+"-test"
     install4jSuffix = "Test"
     install4jDSStore = "DS_Store-TEST-RELEASE"
     install4jDMGBackgroundImage = "jalview_dmg_background-TEST.png"
@@ -240,6 +264,8 @@ ext {
 
     case ~/^SCRATCH(|-[-\w]*)$/:
     getdownChannelName = CHANNEL
+    JALVIEW_VERSION = JALVIEW_VERSION+"-"+CHANNEL
+    
     getdownDir = string("${getdownChannelName}/${JAVA_VERSION}")
     getdownAppBase = string("${getdown_channel_base}/${getdownDir}")
     reportRsyncCommand = true
@@ -262,6 +288,7 @@ ext {
     break
 
     case "LOCAL":
+    JALVIEW_VERSION = "TEST"
     getdownAppBase = file(getdownWebsiteDir).toURI().toString()
     getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
     install4jExtraScheme = "jalviewl"
@@ -804,11 +831,12 @@ task cleanClover {
 
 
 compileJava {
-
+  // JBP->BS should the print statement in doFirst refer to compile_target_compatibility ?
+  sourceCompatibility = compile_source_compatibility
+  targetCompatibility = compile_target_compatibility
+  options.compilerArgs = additional_compiler_args
+  options.encoding = "UTF-8"
   doFirst {
-    sourceCompatibility = compile_source_compatibility
-    targetCompatibility = compile_target_compatibility
-    options.compilerArgs = additional_compiler_args
     print ("Setting target compatibility to "+targetCompatibility+"\n")
   }
 
@@ -1423,6 +1451,11 @@ task getdown() {
 }
 
 
+tasks.withType(JavaCompile) {
+       options.encoding = 'UTF-8'
+}
+
+
 clean {
   doFirst {
     delete getdownWebsiteDir
@@ -1493,7 +1526,8 @@ task copyInstall4jTemplate {
     // NB we're deleting the /other/ one!
     // Also remove the examples subdir from non-release versions
     def customizedIdToDelete = "PROGRAM_GROUP_RELEASE"
-    if (CHANNEL=="RELEASE") {
+    // 2.11.1.0 NOT releasing with the Examples folder in the Program Group
+    if (false && CHANNEL=="RELEASE") { // remove 'false && ' to include Examples folder in RELEASE channel
       customizedIdToDelete = "PROGRAM_GROUP_NON_RELEASE"
     } else {
       // remove the examples subdir from Full File Set
@@ -1575,8 +1609,6 @@ task installers(type: com.install4j.gradle.Install4jTask) {
     'WINDOWS_JAVA_VM_TGZ': windowsJavaVMTgz,
     'LINUX_JAVA_VM_TGZ': linuxJavaVMTgz,
     'COPYRIGHT_MESSAGE': install4j_copyright_message,
-    'MACOS_BUNDLE_ID': install4j_macOS_bundle_id,
-    'INSTALLER_NAME': install4j_installer_name,
     'BUNDLE_ID': install4jBundleId,
     'INTERNAL_ID': install4jInternalId,
     'WINDOWS_APPLICATION_ID': install4jWinApplicationId,
@@ -1820,13 +1852,14 @@ 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"
+    eclipseBinary = "${eclipseRoot}/eclipse.exe"
     eclipseProduct = "${eclipseRoot}/.eclipseproduct"
   } else { // linux or unix
     if (file("${eclipseRoot}/eclipse").isDirectory() && file("${eclipseRoot}/eclipse/.eclipseproduct").exists()) {
       eclipseRoot += "/eclipse"
+println("eclipseDir exists")
     }
     eclipseBinary = "${eclipseRoot}/eclipse"
     eclipseProduct = "${eclipseRoot}/.eclipseproduct"
@@ -2205,11 +2238,11 @@ def jalviewjsCallCore(String name, FileCollection list, String prefixFile, Strin
   def coreBottom = file(suffixFile)
   coreFile.getParentFile().mkdirs()
   coreFile.createNewFile()
-  coreFile.write( coreTop.text )
+  coreFile.write( coreTop.getText("UTF-8") )
   list.each {
     f ->
     if (f.exists()) {
-      def t = f.text
+      def t = f.getText("UTF-8")
       t.replaceAll("Clazz\\.([^_])","Clazz_${1}")
       coreFile.append( t )
     } else {
@@ -2218,7 +2251,7 @@ def jalviewjsCallCore(String name, FileCollection list, String prefixFile, Strin
       logOutFile.append(msg+"\n")
     }
   }
-  coreFile.append( coreBottom.text )
+  coreFile.append( coreBottom.getText("UTF-8") )
 
   msg = "Generating ${zjsfile}"
   println(msg)
@@ -2227,8 +2260,10 @@ def jalviewjsCallCore(String name, FileCollection list, String prefixFile, Strin
   def logErrFOS = logOutFOS
 
   javaexec {
-    classpath = files(["${jalviewDir}/tools/closure_compiler.jar"])
-    args = [ "--js", jsfile, "--js_output_file", zjsfile ]
+    classpath = files(["${jalviewDir}/${jalviewjs_closure_compiler}"])
+    main = "com.google.javascript.jscomp.CommandLineRunner"
+    jvmArgs = [ "-Dfile.encoding=UTF-8" ]
+    args = [ "--compilation_level", "SIMPLE_OPTIMIZATIONS", "--warning_level", "QUIET", "--charset", "UTF-8", "--js", jsfile, "--js_output_file", zjsfile ]
     maxHeapSize = "2g"
 
     msg = "\nRunning '"+commandLine.join(' ')+"'\n"