Merge branch 'alpha/origin_2022_JAL-3066_Jalview_212_slivka-integration' into spike...
[jalview.git] / build.gradle
index 0a27370..46f2226 100644 (file)
@@ -12,6 +12,7 @@ import java.security.MessageDigest
 import groovy.transform.ExternalizeMethods
 import groovy.util.XmlParser
 import groovy.xml.XmlUtil
+
 import com.vladsch.flexmark.util.ast.Node
 import com.vladsch.flexmark.html.HtmlRenderer
 import com.vladsch.flexmark.parser.Parser
@@ -57,6 +58,7 @@ def string(Object o) {
   return o == null ? "" : o.toString()
 }
 
+
 def overrideProperties(String propsFileName, boolean output = false) {
   if (propsFileName == null) {
     return
@@ -163,7 +165,6 @@ ext {
 
   // datestamp
   buildDate = new Date().format("yyyyMMdd")
-
   // essentials
   bareSourceDir = string(source_dir)
   sourceDir = string("${jalviewDir}/${bareSourceDir}")
@@ -184,6 +185,7 @@ ext {
   //cloverTestClassesDir = cloverClassesDir
   cloverDb = string("${cloverBuildDir}/clover.db")
 
+
   testSourceDir = useClover ? cloverTestInstrDir : testDir
   testClassesDir = useClover ? cloverTestClassesDir : "${jalviewDir}/${test_output_dir}"
 
@@ -204,7 +206,7 @@ ext {
   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()
+  install4jExecutableName = install4j_executable_name
   install4jExtraScheme = "jalviewx"
   install4jMacIconsFile = string("${install4j_images_dir}/${install4j_mac_icons_file}")
   install4jWindowsIconsFile = string("${install4j_images_dir}/${install4j_windows_icons_file}")
@@ -370,6 +372,7 @@ ext {
                                     .replaceAll("_*-_*", "-") // collapse _-_
                                     .toLowerCase()
 
+  getdownWrapperLink = install4jUnixApplicationFolder // e.g. "jalview_local"
   getdownAppDir = string("${getdownWebsiteDir}/${getdownAppDistDir}")
   //getdownJ11libDir = "${getdownWebsiteDir}/${getdown_j11lib_dir}"
   getdownResourceDir = string("${getdownWebsiteDir}/${getdown_resource_dir}")
@@ -418,16 +421,16 @@ ext {
     '--add-modules', j11modules
     ]
      */
-  } else if (JAVA_VERSION.equals("12") || JAVA_VERSION.equals("13")) {
-    JAVA_INTEGER_VERSION = JAVA_VERSION
-    libDir = j11libDir
-    libDistDir = j11libDir
-    compile_source_compatibility = JAVA_VERSION
-    compile_target_compatibility = JAVA_VERSION
+  } else if (JAVA_VERSION.equals("17")) {
+    JAVA_INTEGER_VERSION = string("17")
+    libDir = j17libDir
+    libDistDir = j17libDir
+    compile_source_compatibility = 17
+    compile_target_compatibility = 17
     getdownAltJavaMinVersion = string(findProperty("getdown_alt_java11_min_version"))
     getdownAltJavaMaxVersion = string(findProperty("getdown_alt_java11_max_version"))
     getdownAltMultiJavaLocation = string(findProperty("getdown_alt_java11_txt_multi_java_location"))
-    eclipseJavaRuntimeName = string("JavaSE-11")
+    eclipseJavaRuntimeName = string("JavaSE-17")
     /* compile without modules -- using classpath libraries
     additional_compiler_args += [
     '--module-path', modules_compileClasspath.asPath,
@@ -465,6 +468,7 @@ ext {
   helpBuildDir = string("${resourceBuildDir}/help_build")
   docBuildDir = string("${resourceBuildDir}/doc_build")
 
+
   if (buildProperties == null) {
     buildProperties = string("${resourcesBuildDir}/${build_properties_file}")
   }
@@ -513,6 +517,7 @@ sourceSets {
       srcDirs = [ resourcesBuildDir, docBuildDir, helpBuildDir ]
     }
 
+
     compileClasspath = files(sourceSets.main.java.outputDir)
     compileClasspath += fileTree(dir: "${jalviewDir}/${libDir}", include: ["*.jar"])
 
@@ -1156,6 +1161,7 @@ task convertMdFiles {
     def htmlFilePath = mdFile.getPath().replaceAll(/\..*?$/, ".html")
     htmlFiles.add(file(htmlFilePath))
   }
+
   outputs.files(htmlFiles)
 }
 
@@ -1262,7 +1268,6 @@ task createBuildProperties(type: WriteProperties) {
   outputs.file(outputFile)
 }
 
-
 task buildIndices(type: JavaExec) {
   dependsOn copyHelp
   classpath = sourceSets.main.compileClasspath
@@ -1288,6 +1293,7 @@ task buildResources {
   dependsOn createBuildProperties
 }
 
+
 task prepare {
   dependsOn buildResources
   dependsOn copyDocs
@@ -1300,8 +1306,6 @@ task prepare {
 compileJava.dependsOn prepare
 run.dependsOn compileJava
 //run.dependsOn prepare
-
-
 //testReportDirName = "test-reports" // note that test workingDir will be $jalviewDir
 test {
   dependsOn prepare
@@ -1344,6 +1348,8 @@ test {
 }
 
 
+
+
 task compileLinkCheck(type: JavaCompile) {
   options.fork = true
   classpath = files("${jalviewDir}/${utils_dir}")
@@ -1368,19 +1374,17 @@ task linkCheck(type: JavaExec) {
   args = [ "${helpBuildDir}/${help_dir}", "-nointernet" ]
 
   def outFOS = new FileOutputStream(helpLinksCheckerOutFile, false) // false == don't append
-  def errFOS = outFOS
   standardOutput = new org.apache.tools.ant.util.TeeOutputStream(
     outFOS,
-    standardOutput)
+    System.out)
   errorOutput = new org.apache.tools.ant.util.TeeOutputStream(
     outFOS,
-    errorOutput)
+    System.err)
 
   inputs.dir(helpBuildDir)
   outputs.file(helpLinksCheckerOutFile)
 }
 
-
 // import the pubhtmlhelp target
 ant.properties.basedir = "${jalviewDir}"
 ant.properties.helpBuildDir = "${helpBuildDir}/${help_dir}"
@@ -1409,6 +1413,7 @@ jar {
   def outputDir = "${jalviewDir}/${package_dir}"
   destinationDirectory = file(outputDir)
   archiveFileName = rootProject.name+".jar"
+  duplicatesStrategy "EXCLUDE"
 
   exclude "cache*/**"
   exclude "*.jar"
@@ -1460,7 +1465,6 @@ task cleanDist {
   dependsOn clean
 }
 
-
 shadowJar {
   group = "distribution"
   description = "Create a single jar file with all dependency libraries merged. Can be run with java -jar"
@@ -1474,6 +1478,7 @@ shadowJar {
     attributes "Implementation-Version": JALVIEW_VERSION,
     "Application-Name": install4jApplicationName
   }
+  duplicatesStrategy "INCLUDE"
   mainClassName = shadow_jar_main_class
   mergeServiceFiles()
   classifier = "all-"+JALVIEW_VERSION+"-j"+JAVA_VERSION
@@ -1573,15 +1578,15 @@ task getdownWebsite() {
       }
     }
     
-    def getdownWrapperScripts = [ getdown_mac_wrapper_script, getdown_unix_wrapper_script, getdown_windows_wrapper_script ]
+    def getdownWrapperScripts = [ getdown_bash_wrapper_script, getdown_powershell_wrapper_script, getdown_batch_wrapper_script ]
     getdownWrapperScripts.each{ script ->
-      def s = file( "${jalviewDir}/utils/getdown/${script}" )
+      def s = file( "${jalviewDir}/utils/getdown/${getdown_wrapper_script_dir}/${script}" )
       if (s.exists()) {
         copy {
           from s
-          into getdownWebsiteDir
+          into "${getdownWebsiteDir}/${getdown_wrapper_script_dir}"
         }
-        getdownTextString += "resource = ${script}\n"
+        getdownTextString += "resource = ${getdown_wrapper_script_dir}/${script}\n"
       }
     }
 
@@ -1849,6 +1854,7 @@ task copyInstall4jTemplate {
       }
     }
 
+
     // write install4j file
     install4jConfFile.text = XmlUtil.serialize(install4jConfigXml)
   }
@@ -1912,8 +1918,10 @@ task installers(type: com.install4j.gradle.Install4jTask) {
     'WINDOWS_APPLICATION_ID': install4jWinApplicationId,
     'MACOS_DMG_DS_STORE': install4jDMGDSStore,
     'MACOS_DMG_BG_IMAGE': install4jDMGBackgroundImage,
-    'MACOS_DMG_WRAPPER_LINK': install4j_dmg_wrapper_link,
-    'MACOS_WRAPPER_SCRIPT': getdown_mac_wrapper_script,
+    'WRAPPER_LINK': getdownWrapperLink,
+    'BASH_WRAPPER_SCRIPT': getdown_bash_wrapper_script,
+    'POWERSHELL_WRAPPER_SCRIPT': getdown_powershell_wrapper_script,
+    'WRAPPER_SCRIPT_BIN_DIR': getdown_wrapper_script_dir,
     'INSTALLER_NAME': install4jInstallerName,
     'INSTALL4J_UTILS_DIR': install4j_utils_dir,
     'GETDOWN_WEBSITE_DIR': getdown_website_dir,
@@ -1933,7 +1941,6 @@ task installers(type: com.install4j.gradle.Install4jTask) {
     'WINDOWS_ICONS_FILE': install4jWindowsIconsFile,
     'PNG_ICON_FILE': install4jPngIconFile,
     'BACKGROUND': install4jBackground,
-
   ]
 
   //println("INSTALL4J VARIABLES:")
@@ -1963,7 +1970,7 @@ task installers(type: com.install4j.gradle.Install4jTask) {
     println("Using projectFile "+projectFile)
     if (!disableNotarization) { println("Will notarize OSX App DMG") }
   }
-  verbose=true
+  //verbose=true
 
   inputs.dir(getdownWebsiteDir)
   inputs.file(install4jConfFile)
@@ -1987,7 +1994,6 @@ task sourceDist(type: Tar) {
 
   dependsOn createBuildProperties
   dependsOn convertMdFiles
-
   def VERSION_UNDERSCORES = JALVIEW_VERSION.replaceAll("\\.", "_")
   def outputFileName = "${project.name}_${VERSION_UNDERSCORES}.tar.gz"
   archiveFileName = outputFileName
@@ -2073,7 +2079,6 @@ task sourceDist(type: Tar) {
 //    exclude(EXCLUDE_FILES)
 //    exclude(PROCESS_FILES)
 //  }
-
   from(file(buildProperties).getParent()) {
     include(file(buildProperties).getName())
     rename(file(buildProperties).getName(), "build_properties")
@@ -2081,7 +2086,6 @@ task sourceDist(type: Tar) {
       line.replaceAll("^INSTALLATION=.*\$","INSTALLATION=Source Release"+" git-commit\\\\:"+gitHash+" ["+gitBranch+"]")
     })
   }
-
 }
 
 
@@ -2126,8 +2130,6 @@ task jalviewjsEnableAltFileProperty(type: WriteProperties) {
     property(jalviewjs_j2s_alt_file_property_config, jalviewjs_j2s_alt_file_property)
   }
 }
-
-
 task jalviewjsSetEclipseWorkspace {
   def propKey = "jalviewjs_eclipse_workspace"
   def propVal = null
@@ -2391,6 +2393,8 @@ task jalviewjsSyncAllLibs (type: Sync) {
   preserve {
     include "**"
   }
+  // should this be exclude really ?
+  duplicatesStrategy "INCLUDE"
   outputs.files outputFiles
   inputs.files inputFiles
 }
@@ -2545,12 +2549,12 @@ DEBUG: ${eclipseDebug}
         new org.apache.tools.ant.util.TeeOutputStream(
           logOutFOS,
           stdout),
-        standardOutput)
+        System.out)
       errorOutput = new org.apache.tools.ant.util.TeeOutputStream(
         new org.apache.tools.ant.util.TeeOutputStream(
           logErrFOS,
           stderr),
-        errorOutput)
+        System.err)
     } else {
       standardOutput = new org.apache.tools.ant.util.TeeOutputStream(
         logOutFOS,
@@ -2638,7 +2642,7 @@ def jalviewjsCallCore(String name, FileCollection list, String prefixFile, Strin
           new org.apache.tools.ant.util.TeeOutputStream(
             logErrFOS,
             stderr),
-          errorOutput)
+          System.err)
     } else {
       standardOutput = new org.apache.tools.ant.util.TeeOutputStream(
         logOutFOS,
@@ -2945,7 +2949,13 @@ task jalviewjsServer {
   def htmlFile = "${jalviewDirAbsolutePath}/${filename}"
   doLast {
 
-    SimpleHttpFileServerFactory factory = new SimpleHttpFileServerFactory()
+    def factory
+    try {
+      def f = Class.forName("org.gradle.plugins.javascript.envjs.http.simple.SimpleHttpFileServerFactory")
+      factory = f.newInstance()
+    } catch (ClassNotFoundException e) {
+      throw new GradleException("Unable to create SimpleHttpFileServerFactory")
+    }
     def port = Integer.valueOf(jalviewjs_server_port)
     def start = port
     def running = false