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'
}
// Import channel_properties
channelDir = string("${jalviewDir}/${channel_properties_dir}/${propertiesChannelName}")
channelGradleProperties = string("${channelDir}/channel_gradle.properties")
+ channelPropsFile = string("${channelDir}/${resource_dir}/${channel_props}")
overrideProperties(channelGradleProperties, false)
// local build environment properties
// can be "projectDir/local.properties"
}
*/
+ // datestamp
+ buildDate = new Date().format("yyyyMMdd")
+
// essentials
bareSourceDir = string(source_dir)
sourceDir = string("${jalviewDir}/${bareSourceDir}")
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
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"
install4jExtraScheme = "jalviewd"
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)
}
jalviewjsCoreClasslists = []
jalviewjsJalviewTemplateName = string(jalviewjs_name)
jalviewjsJ2sSettingsFileName = string("${jalviewDir}/${jalviewjs_j2s_settings}")
+ jalviewjsJ2sAltSettingsFileName = string("${jalviewDir}/${jalviewjs_j2s_alt_settings}")
jalviewjsJ2sProps = null
jalviewjsJ2sPlugin = jalviewjs_j2s_plugin
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)
}
copy {
from buildProperties
- rename(build_properties_file, getdown_build_properties)
+ rename(file(buildProperties).getName(), getdown_build_properties)
into getdownAppDir
}
getdownWebsiteResourceFilenames += "${getdownAppDistDir}/${getdown_build_properties}"
+ copy {
+ from channelPropsFile
+ into getdownWebsiteDir
+ }
+ getdownWebsiteResourceFilenames += file(channelPropsFile).getName()
+
// set some getdown_txt_ properties then go through all properties looking for getdown_txt_...
def props = project.properties.sort { it.key }
if (getdownAltJavaMinVersion != null && getdownAltJavaMinVersion.length() > 0) {
//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)
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) {
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
into getdownFilesDir
}
+ // and ./resources (not all downloaded by getdown)
copy {
from getdownResourceDir
into "${getdownFilesDir}/${getdown_resource_dir}"
}
}
- // remove the "Uninstall Old Jalview (optional)" symlink from DMG for non-release DS_Stores
- if (! (CHANNEL == "RELEASE" || CHANNEL == "TEST-RELEASE" ) ) {
- def symlink = install4jConfigXml.'**'.topLevelFiles.symlink.find { sl -> sl.'@name' == "Uninstall Old Jalview (optional).app" }
- symlink.parent().remove(symlink)
- }
-
// write install4j file
install4jConfFile.text = XmlUtil.serialize(install4jConfigXml)
}
'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,
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)
task sourceDist(type: Tar) {
group "distribution"
description "Create a source .tar.gz file for distribution"
-
+
+ dependsOn createBuildProperties
dependsOn convertMdFiles
def VERSION_UNDERSCORES = JALVIEW_VERSION.replaceAll("\\.", "_")
// exclude(EXCLUDE_FILES)
// exclude(PROCESS_FILES)
// }
+
+ from(file(buildProperties).getParent()) {
+ include(file(buildProperties).getName())
+ rename(file(buildProperties).getName(), "build_properties")
+ filter({ line ->
+ line.replaceAll("^INSTALLATION=.*\$","INSTALLATION=Source Release"+" git-commit\\\\:"+gitHash+" ["+gitBranch+"]")
+ })
+ }
+
}
}
+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
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"
property(siteDirProperty,"${jalviewDirRelativePath}/${jalviewjsTransferSiteJsDir}")
}
}
- outputFile = jalviewjsJ2sSettingsFileName
+ outputFile = jalviewjsJ2sAltSettingsFileName
if (! IN_ECLIPSE) {
inputs.properties(jalviewjsJ2sProps)
- outputs.file(jalviewjsJ2sSettingsFileName)
+ outputs.file(jalviewjsJ2sAltSettingsFileName)
}
}
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")
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
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
if (eclipseWorkspace != null && file(eclipseWorkspace.getAbsolutePath()+"/.metadata").exists()) {
delete file(eclipseWorkspace.getAbsolutePath()+"/.metadata")
}
- delete "${jalviewDir}/${jalviewjs_j2s_settings}"
+ delete jalviewjsJ2sAltSettingsFileName
}
outputs.upToDateWhen( { false } )