classpath "com.vladsch.flexmark:flexmark-all:0.62.0"
classpath "org.jsoup:jsoup:1.14.3"
classpath "com.eowise:gradle-imagemagick:0.5.1"
+ classpath 'ru.vyarus:gradle-use-python-plugin:4.0.0'
}
}
id 'com.install4j.gradle' version '10.0.3'
id 'com.dorongold.task-tree' version '2.1.1' // only needed to display task dependency tree with gradle task1 [task2 ...] taskTree
id 'com.palantir.git-version' version '0.13.0' apply false
+ id 'ru.vyarus.use-python' version '4.0.0'
}
repositories {
jvlChannelName = CHANNEL.toLowerCase()
install4jSuffix = CHANNEL.substring(0, 1).toUpperCase() + CHANNEL.substring(1).toLowerCase(); // BUILD -> Build
install4jDMGDSStore = "${install4j_images_dir}/${install4j_dmg_ds_store}"
+ install4jDMGDSStoreJSON = "${install4j_images_dir}/${install4j_dmg_ds_store_json}"
install4jDMGBackgroundImageDir = "${install4j_images_dir}"
install4jDMGBackgroundImageBuildDir = "build/imagemagick/install4j"
install4jDMGBackgroundImageFile = "${install4j_dmg_background}"
- install4jInstallerName = "${jalview_name} Non-Release Installer"
+ install4jmacOSArchiveName = "${jalview_name} Non-Release ${JALVIEW_VERSION} Installer"
install4jExecutableName = install4j_executable_name
- install4jExtraScheme = "jalviewx"
+ install4jExtraScheme = "jalviewextra"
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}")
install4jBuildDir = "${install4j_build_dir}/${JAVA_VERSION}"
+ install4jDMGFixedDSStoreX64 = "build/macos_dmg/${install4j_dmg_ds_store}-x64"
+ install4jDMGFixedDSStoreAarch64 = "build/macos_dmg/${install4j_dmg_ds_store}-aarch64"
+ install4jDMGVolumeIcon = string("${install4j_images_dir}/${install4j_dmg_volume_icon}")
install4jCheckSums = true
applicationName = "${jalview_name}"
getdownSetAppBaseProperty = true
reportRsyncCommand = true
install4jSuffix = ""
- install4jInstallerName = "${jalview_name} Installer"
+ install4jmacOSArchiveName = "Install ${jalview_name} ${JALVIEW_VERSION}"
+ install4jExtraScheme = (CHANNEL=="RELEASE")?"jalviewx":"jalviewjs"
break
case "ARCHIVE":
JALVIEW_VERSION=JALVIEW_VERSION+"-d${suffix}-${buildDate}"
install4jSuffix = "Develop ${suffix}"
install4jExtraScheme = "jalviewd"
- install4jInstallerName = "${jalview_name} Develop ${suffix} Installer"
+ install4jmacOSArchiveName = "Install ${jalview_name} Develop ${suffix} ${JALVIEW_VERSION}"
getdownChannelName = string("develop-${suffix}")
getdownChannelDir = string("${getdown_website_dir}/${getdownChannelName}")
getdownAppBaseDir = string("${jalviewDir}/${getdownChannelDir}/${JAVA_VERSION}")
install4jSuffix = "Develop"
install4jExtraScheme = "jalviewd"
- install4jInstallerName = "${jalview_name} Develop Installer"
+ install4jmacOSArchiveName = "Install ${jalview_name} Develop ${JALVIEW_VERSION}"
backgroundImageText = true
break
JALVIEW_VERSION = JALVIEW_VERSION+"-test"
install4jSuffix = "Test"
install4jExtraScheme = "jalviewt"
- install4jInstallerName = "${jalview_name} Test Installer"
+ install4jmacOSArchiveName = "Install ${jalview_name} Test ${JALVIEW_VERSION}"
backgroundImageText = true
break
JALVIEW_VERSION = "TEST"
install4jSuffix = "Test-Local"
install4jExtraScheme = "jalviewt"
- install4jInstallerName = "${jalview_name} Test Installer"
+ install4jmacOSArchiveName = "Install ${jalview_name} Test ${JALVIEW_VERSION}"
backgroundImageText = true
break
.replaceAll("_+", "_") // collapse __
.replaceAll("_*-_*", "-") // collapse _-_
.toLowerCase()
+ install4jmacOSArchiveX64Name = "${install4jmacOSArchiveName} (Intel)"
+ install4jmacOSArchiveAarch64Name = "${install4jmacOSArchiveName} (Apple Silicon)"
getdownWrapperLink = install4jUnixApplicationFolder // e.g. "jalview_local"
getdownAppDir = string("${getdownAppBaseDir}/${getdownAppDistDir}")
if (install4jHomeDir.startsWith("~/")) {
install4jHomeDir = System.getProperty("user.home") + install4jHomeDir.substring(1)
}
+ install4jmacOSArchiveX64DMGFilename = "${install4jApplicationFolder}-${JALVIEW_VERSION}-macos-x64-java_${JAVA_INTEGER_VERSION}"
+ install4jmacOSArchiveAarch64DMGFilename = "${install4jApplicationFolder}-${JALVIEW_VERSION}-macos-aarch64-java_${JAVA_INTEGER_VERSION}"
+
resourceBuildDir = string("${buildDir}/resources")
resourcesBuildDir = string("${resourceBuildDir}/resources_build")
}
}
+ // delete .VolumeIcon.icns in macos DMG if there isn't one
+ if (!file(install4jDMGVolumeIcon).exists()) {
+ println("No '.VolumeIcon.icns' file found. Removing from install4j file.")
+ install4jConfigXml.'**'.macosArchive.topLevelFiles.each { topLevelFiles ->
+ topLevelFiles.file.each() { file ->
+ if (file.attribute("name") && file.attribute("name").equals(".VolumeIcon.icns")) {
+ println("Removing "+file.toString())
+ topLevelFiles.remove(file)
+ }
+ }
+ }
+ } else {
+ println("Using '.VolumeIcon.icns' file '${install4jDMGVolumeIcon}'")
+ }
+
// disable install screen for OSX dmg (for 2.11.2.0)
install4jConfigXml.'**'.macosArchive.each { macosArchive ->
macosArchive.attributes().remove('executeSetupApp')
}
}
-task install4jDMGBackgroundImage {
+
+python {
+ pip 'ds_store:1.3.1'
+}
+
+task install4jCustomiseDS_StoreX64(type: PythonTask) {
+ inputs.file(install4jDMGDSStore)
+ outputs.file(install4jDMGFixedDSStoreX64)
+ def command_args = [ jalview_customise_ds_store, '--input', install4jDMGDSStore, '--output', install4jDMGFixedDSStoreX64, '--volumename', install4jmacOSArchiveX64Name, '--backgroundfile', install4j_dmg_background_filename, '--dmg', install4jmacOSArchiveX64DMGFilename + ".dmg" ]
+ if (file(install4jDMGDSStoreJSON).exists()) {
+ command_args += [ '--config', install4jDMGDSStoreJSON ]
+ inputs.file(install4jDMGDSStoreJSON)
+ }
+ command = command_args
+ doFirst {
+ println("Running command '${command_args.join(' ')}'")
+ }
+}
+
+task install4jCustomiseDS_StoreAarch64(type: PythonTask) {
+ inputs.file(install4jDMGDSStore)
+ outputs.file(install4jDMGFixedDSStoreAarch64)
+ def command_args = [ jalview_customise_ds_store, '--input', install4jDMGDSStore, '--output', install4jDMGFixedDSStoreAarch64, '--volumename', install4jmacOSArchiveAarch64Name, '--backgroundfile', install4j_dmg_background_filename, '--dmg', install4jmacOSArchiveAarch64DMGFilename + ".dmg" ]
+ if (file(install4jDMGDSStoreJSON).exists()) {
+ command_args += [ '--config', install4jDMGDSStoreJSON ]
+ inputs.file(install4jDMGDSStoreJSON)
+ }
+ command = command_args
+ doFirst {
+ def print_args = []
+ for (int i = 0; i < command_args.size(); i++) {
+ def arg = command_args[i]
+ print_args += (i > 0 && !arg.startsWith("-")) ? "\"${arg}\"" : arg
+ }
+ println("Running command '${print_args.join(' ')}'")
+ }
+}
+
+task install4jCustomiseDS_Store {
+ dependsOn install4jCustomiseDS_StoreX64
+ dependsOn install4jCustomiseDS_StoreAarch64
+}
+
+task install4jDMGProcesses {
dependsOn install4jDMGBackgroundImageProcess
+ dependsOn install4jCustomiseDS_Store
}
task installerFiles(type: com.install4j.gradle.Install4jTask) {
dependsOn getdown
dependsOn copyInstall4jTemplate
dependsOn cleanInstallersDataFiles
- dependsOn install4jDMGBackgroundImage
+ dependsOn install4jDMGProcesses
projectFile = install4jConfFile
+ // run install4j with 4g
+ vmParameters = ["-Xmx4294967296"]
+
// create an md5 for the input files to use as version for install4j conf file
def digest = MessageDigest.getInstance("MD5")
digest.update(
'BUNDLE_ID': install4jBundleId,
'INTERNAL_ID': install4jInternalId,
'WINDOWS_APPLICATION_ID': install4jWinApplicationId,
- 'MACOS_DMG_DS_STORE': install4jDMGDSStore,
+ 'MACOS_X64_DMG_DS_STORE': install4jDMGFixedDSStoreX64,
+ 'MACOS_AARCH64_DMG_DS_STORE': install4jDMGFixedDSStoreAarch64,
'MACOS_DMG_BG_IMAGE': "${install4jDMGBackgroundImageBuildDir}/${install4jDMGBackgroundImageFile}",
+ 'MACOS_DMG_BG_FILENAME': install4j_dmg_background_filename,
'WRAPPER_LINK': getdownWrapperLink,
'BASH_WRAPPER_SCRIPT': getdown_bash_wrapper_script,
'POWERSHELL_WRAPPER_SCRIPT': getdown_powershell_wrapper_script,
'BATCH_WRAPPER_SCRIPT': getdown_batch_wrapper_script,
'WRAPPER_SCRIPT_BIN_DIR': getdown_wrapper_script_dir,
- 'INSTALLER_NAME': install4jInstallerName,
+ 'MACOSARCHIVE_X64_NAME': install4jmacOSArchiveX64Name,
+ 'MACOSARCHIVE_AARCH64_NAME': install4jmacOSArchiveAarch64Name,
'INSTALL4J_UTILS_DIR': install4j_utils_dir,
'GETDOWN_CHANNEL_DIR': getdownChannelDir,
'GETDOWN_FILES_DIR': getdown_files_dir,
'WINDOWS_ICONS_FILE': install4jWindowsIconsFile,
'PNG_ICON_FILE': install4jPngIconFile,
'BACKGROUND': install4jBackground,
+ 'MACOSARCHIVE_X64_DMG_FILENAME': install4jmacOSArchiveX64DMGFilename,
+ 'MACOSARCHIVE_AARCH64_DMG_FILENAME': install4jmacOSArchiveAarch64DMGFilename,
+ 'MACOSARCHIVE_VOLUMEICON': install4jDMGVolumeIcon,
]
def varNameMap = [