Merge branch 'develop' into task/JAL-3796_notarization
[jalview.git] / build.gradle
index ebb8733..e030ec8 100644 (file)
@@ -40,7 +40,7 @@ plugins {
   id 'eclipse'
   id "com.diffplug.gradle.spotless" version "3.28.0"
   id 'com.github.johnrengelman.shadow' version '4.0.3'
-  id 'com.install4j.gradle' version '8.0.4'
+  id 'com.install4j.gradle' version '8.0.10'
   id 'com.dorongold.task-tree' version '1.5' // only needed to display task dependency tree with  gradle task1 [task2 ...] taskTree
   id 'com.palantir.git-version' version '0.12.3'
 }
@@ -490,6 +490,7 @@ ext {
   jalviewjsCoreClasslists = []
   jalviewjsJalviewTemplateName = string(jalviewjs_name)
   jalviewjsJ2sSettingsFileName = string("${jalviewDir}/${jalviewjs_j2s_settings}")
+  jalviewjsJ2sAltSettingsFileName = string("${jalviewDir}/${jalviewjs_j2s_alt_settings}")
   jalviewjsJ2sProps = null
   jalviewjsJ2sPlugin = jalviewjs_j2s_plugin
 
@@ -1882,6 +1883,8 @@ task installers(type: com.install4j.gradle.Install4jTask) {
     'JALVIEW_APPLICATION_NAME': install4jApplicationName,
     'JALVIEW_DIR': "../..",
     'OSX_KEYSTORE': OSX_KEYSTORE,
+    'OSX_APPLEID': OSX_APPLEID,
+    'OSX_ALTOOLPASS': OSX_ALTOOLPASS,
     'JSIGN_SH': JSIGN_SH,
     'JRE_DIR': getdown_app_dir_java,
     'INSTALLER_TEMPLATE_VERSION': install4jTemplateVersion,
@@ -1934,15 +1937,25 @@ task installers(type: com.install4j.gradle.Install4jTask) {
   if (install4j_faster.equals("true") || CHANNEL.startsWith("LOCAL")) {
     faster = true
     disableSigning = true
+    disableNotarization = true
   }
 
   if (OSX_KEYPASS) {
     macKeystorePassword = OSX_KEYPASS
+  } 
+  
+  if (OSX_ALTOOLPASS) {
+    appleIdPassword = OSX_ALTOOLPASS
+    disableNotarization = false
+  } else {
+    disableNotarization = true
   }
 
   doFirst {
     println("Using projectFile "+projectFile)
+    if (!disableNotarization) { println("Will notarize OSX App DMG") }
   }
+  verbose=true
 
   inputs.dir(getdownWebsiteDir)
   inputs.file(install4jConfFile)
@@ -2070,6 +2083,33 @@ task j2sSetHeadlessBuild {
 }
 
 
+task jalviewjsEnableAltFileProperty(type: WriteProperties) {
+  group "jalviewjs"
+  description "Enable the alternative J2S Config file for headless build"
+
+  outputFile = jalviewjsJ2sSettingsFileName
+  def j2sPropsFile = file(jalviewjsJ2sSettingsFileName)
+  def j2sProps = new Properties()
+  if (j2sPropsFile.exists()) {
+    try {
+      def j2sPropsFileFIS = new FileInputStream(j2sPropsFile)
+      j2sProps.load(j2sPropsFileFIS)
+      j2sPropsFileFIS.close()
+
+      j2sProps.each { prop, val ->
+        property(prop, val)
+      }
+    } catch (Exception e) {
+      println("Exception reading ${jalviewjsJ2sSettingsFileName}")
+      e.printStackTrace()
+    }
+  }
+  if (! j2sProps.stringPropertyNames().contains(jalviewjs_j2s_alt_file_property_config)) {
+    property(jalviewjs_j2s_alt_file_property_config, jalviewjs_j2s_alt_file_property)
+  }
+}
+
+
 task jalviewjsSetEclipseWorkspace {
   def propKey = "jalviewjs_eclipse_workspace"
   def propVal = null
@@ -2282,7 +2322,7 @@ task jalviewjsTransferUnzipAllLibs {
 
 task jalviewjsCreateJ2sSettings(type: WriteProperties) {
   group "JalviewJS"
-  description "Create the .j2s file from the j2s.* properties"
+  description "Create the alternative j2s file from the j2s.* properties"
 
   jalviewjsJ2sProps = project.properties.findAll { it.key.startsWith("j2s.") }.sort { it.key }
   def siteDirProperty = "j2s.site.directory"
@@ -2301,11 +2341,11 @@ task jalviewjsCreateJ2sSettings(type: WriteProperties) {
       property(siteDirProperty,"${jalviewDirRelativePath}/${jalviewjsTransferSiteJsDir}")
     }
   }
-  outputFile = jalviewjsJ2sSettingsFileName
+  outputFile = jalviewjsJ2sAltSettingsFileName
 
   if (! IN_ECLIPSE) {
     inputs.properties(jalviewjsJ2sProps)
-    outputs.file(jalviewjsJ2sSettingsFileName)
+    outputs.file(jalviewjsJ2sAltSettingsFileName)
   }
 }
 
@@ -2423,6 +2463,7 @@ task jalviewjsProjectImport(type: Exec) {
   args += [ "--launcher.appendVmargs", "-vmargs", "-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_eclipse_tmp_dropins_dir}" ]
   if (!IN_ECLIPSE) {
     args += [ "-D${j2sHeadlessBuildProperty}=true" ]
+    args += [ "-D${jalviewjs_j2s_alt_file_property}=${jalviewjsJ2sAltSettingsFileName}" ]
   }
 
   inputs.file("${jalviewDir}/.project")
@@ -2436,6 +2477,9 @@ task jalviewjsTranspile(type: Exec) {
   dependsOn jalviewjsEclipseSetup 
   dependsOn jalviewjsProjectImport
   dependsOn jalviewjsEclipsePaths
+  if (!IN_ECLIPSE) {
+    dependsOn jalviewjsEnableAltFileProperty
+  }
 
   doFirst {
     // do not run a headless transpile when we claim to be in Eclipse
@@ -2455,6 +2499,7 @@ task jalviewjsTranspile(type: Exec) {
   args += [ "--launcher.appendVmargs", "-vmargs", "-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_eclipse_tmp_dropins_dir}" ]
   if (!IN_ECLIPSE) {
     args += [ "-D${j2sHeadlessBuildProperty}=true" ]
+    args += [ "-D${jalviewjs_j2s_alt_file_property}=${jalviewjsJ2sAltSettingsFileName}" ]
   }
 
   def stdout
@@ -2935,7 +2980,7 @@ task cleanJalviewjsAll {
     if (eclipseWorkspace != null && file(eclipseWorkspace.getAbsolutePath()+"/.metadata").exists()) {
       delete file(eclipseWorkspace.getAbsolutePath()+"/.metadata")
     }
-    delete "${jalviewDir}/${jalviewjs_j2s_settings}"
+    delete jalviewjsJ2sAltSettingsFileName
   }
 
   outputs.upToDateWhen( { false } )