X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=build.gradle;h=a8d55dd71114494e354e07fc7e9b1163790e6b9b;hb=72e22d79767010318a6de03d9f30d9ec8768dc45;hp=3ed6c564622fd5c61b047cc33c29db7fe7187cf7;hpb=d6a4f39f26548ff14e96609b40e5ac4d35fc8448;p=jalview.git diff --git a/build.gradle b/build.gradle index 3ed6c56..a8d55dd 100644 --- a/build.gradle +++ b/build.gradle @@ -43,6 +43,7 @@ buildscript { 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' } } @@ -56,6 +57,7 @@ plugins { 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 { @@ -233,17 +235,21 @@ ext { 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}" @@ -268,7 +274,8 @@ ext { getdownSetAppBaseProperty = true reportRsyncCommand = true install4jSuffix = "" - install4jInstallerName = "${jalview_name} Installer" + install4jmacOSArchiveName = "Install ${jalview_name} ${JALVIEW_VERSION}" + install4jExtraScheme = (CHANNEL=="RELEASE")?"jalviewx":"jalviewjs" break case "ARCHIVE": @@ -310,7 +317,7 @@ ext { 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}") @@ -328,7 +335,7 @@ ext { install4jSuffix = "Develop" install4jExtraScheme = "jalviewd" - install4jInstallerName = "${jalview_name} Develop Installer" + install4jmacOSArchiveName = "Install ${jalview_name} Develop ${JALVIEW_VERSION}" backgroundImageText = true break @@ -343,7 +350,7 @@ ext { JALVIEW_VERSION = JALVIEW_VERSION+"-test" install4jSuffix = "Test" install4jExtraScheme = "jalviewt" - install4jInstallerName = "${jalview_name} Test Installer" + install4jmacOSArchiveName = "Install ${jalview_name} Test ${JALVIEW_VERSION}" backgroundImageText = true break @@ -367,7 +374,7 @@ ext { JALVIEW_VERSION = "TEST" install4jSuffix = "Test-Local" install4jExtraScheme = "jalviewt" - install4jInstallerName = "${jalview_name} Test Installer" + install4jmacOSArchiveName = "Install ${jalview_name} Test ${JALVIEW_VERSION}" backgroundImageText = true break @@ -433,6 +440,8 @@ ext { .replaceAll("_+", "_") // collapse __ .replaceAll("_*-_*", "-") // collapse _-_ .toLowerCase() + install4jmacOSArchiveX64Name = "${install4jmacOSArchiveName} (Intel)" + install4jmacOSArchiveAarch64Name = "${install4jmacOSArchiveName} (Apple Silicon)" getdownWrapperLink = install4jUnixApplicationFolder // e.g. "jalview_local" getdownAppDir = string("${getdownAppBaseDir}/${getdownAppDistDir}") @@ -530,6 +539,9 @@ ext { 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") @@ -1769,6 +1781,7 @@ task testTask0(type: Test) { preserveOrder true useDefaultListeners=true } + timeout = Duration.ofMinutes(15) } /* separated tests */ @@ -1781,6 +1794,7 @@ task testTask1(type: Test) { preserveOrder true useDefaultListeners=true } + timeout = Duration.ofMinutes(5) } task testTask2(type: Test) { @@ -1792,6 +1806,7 @@ task testTask2(type: Test) { preserveOrder true useDefaultListeners=true } + timeout = Duration.ofMinutes(5) } task testTask3(type: Test) { group = "Verification" @@ -1802,6 +1817,7 @@ task testTask3(type: Test) { preserveOrder true useDefaultListeners=true } + timeout = Duration.ofMinutes(5) } /* insert more testTaskNs here -- change N to next digit or other string */ @@ -1818,6 +1834,7 @@ task testTaskN(type: Test) { } */ + /* * adapted from https://medium.com/@wasyl/pretty-tests-summary-in-gradle-744804dd676c * to summarise test results from all Test tasks @@ -2603,6 +2620,14 @@ task getdownArchiveBuild() { } } + // the wrapper scripts dir + if ( file("${getdownAppBaseDir}/${getdown_wrapper_script_dir}").exists() ) { + copy { + from "${getdownAppBaseDir}/${getdown_wrapper_script_dir}" + into "${getdownFullArchiveDir}/${getdown_wrapper_script_dir}" + } + } + getdownArchiveTxt.write(getdownArchiveTextLines.join("\n")) def vLaunchJvl = file(getdownVersionLaunchJvl) @@ -2701,6 +2726,21 @@ task copyInstall4jTemplate { } } + // 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') @@ -2815,8 +2855,52 @@ task install4jDMGBackgroundImageProcess { } } -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) { @@ -2825,10 +2909,13 @@ 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( @@ -2861,14 +2948,17 @@ task installerFiles(type: com.install4j.gradle.Install4jTask) { '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, @@ -2887,6 +2977,9 @@ task installerFiles(type: com.install4j.gradle.Install4jTask) { '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 = [