return o == null ? "" : o.toString()
}
-
-ext {
- jalviewDirAbsolutePath = file(jalviewDir).getAbsolutePath()
- jalviewDirRelativePath = jalviewDir
-
- // local build environment properties
- // can be "projectDir/local.properties"
- def localProps = "${projectDir}/local.properties"
- def propsFile = null;
- if (file(localProps).exists()) {
- propsFile = localProps
- }
- // or "../projectDir_local.properties"
- def dirLocalProps = projectDir.getParent() + "/" + projectDir.getName() + "_local.properties"
- if (file(dirLocalProps).exists()) {
- propsFile = dirLocalProps
+def overrideProperties(String propsFileName, boolean output = false) {
+ if (propsFileName == null) {
+ return
}
- if (propsFile != null) {
+ def propsFile = file(propsFileName)
+ if (propsFile != null && propsFile.exists()) {
+ println("Using properties from file '${propsFileName}'")
try {
def p = new Properties()
def localPropsFIS = new FileInputStream(propsFile)
localPropsFIS.close()
p.each {
key, val ->
- def oldval = findProperty(key)
- setProperty(key, val)
- if (oldval != null) {
- println("Overriding property '${key}' ('${oldval}') with ${file(propsFile).getName()} value '${val}'")
+ def oldval
+ if (project.hasProperty(key)) {
+ oldval = project.findProperty(key)
+ project.setProperty(key, val)
+ if (output) {
+ println("Overriding property '${key}' ('${oldval}') with ${file(propsFile).getName()} value '${val}'")
+ }
} else {
- println("Setting unknown property '${key}' with ${file(propsFile).getName()}s value '${val}'")
+ ext.setProperty(key, val)
+ if (output) {
+ println("Setting ext property '${key}' with ${file(propsFile).getName()}s value '${val}'")
+ }
}
}
} catch (Exception e) {
- System.out.println("Exception reading local.properties")
+ println("Exception reading local.properties")
+ e.printStackTrace()
}
}
+}
+
+ext {
+ jalviewDirAbsolutePath = file(jalviewDir).getAbsolutePath()
+ jalviewDirRelativePath = jalviewDir
+
+ getdownChannelName = CHANNEL.toLowerCase()
+ // default to "default". Currently only has different cosmetics for "develop", "release", "default"
+ propertiesChannelName = ["develop", "release", "test-release"].contains(getdownChannelName) ? getdownChannelName : "default"
+ // Import channel_properties
+ channelDir = string("${jalviewDir}/${channel_properties_dir}/${propertiesChannelName}")
+ channelGradleProperties = string("${channelDir}/channel_gradle.properties")
+ overrideProperties(channelGradleProperties, false)
+ // local build environment properties
+ // can be "projectDir/local.properties"
+ overrideProperties("${projectDir}/local.properties", true)
+ // or "../projectDir_local.properties"
+ overrideProperties(projectDir.getParent() + "/" + projectDir.getName() + "_local.properties", true)
////
// Import releaseProps from the RELEASE file
}
////
// Set JALVIEW_VERSION if it is not already set
- if (findProperty(JALVIEW_VERSION)==null || "".equals(JALVIEW_VERSION)) {
+ if (findProperty("JALVIEW_VERSION")==null || "".equals(JALVIEW_VERSION)) {
JALVIEW_VERSION = releaseProps.get("jalview.version")
}
getdownWebsiteDir = string("${jalviewDir}/${getdown_website_dir}/${JAVA_VERSION}")
buildDist = true
+ buildProperties = null
// the following values might be overridden by the CHANNEL switch
- getdownChannelName = CHANNEL.toLowerCase()
getdownDir = string("${getdownChannelName}/${JAVA_VERSION}")
getdownAppBase = string("${getdown_channel_base}/${getdownDir}")
getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher}")
getdownAppDistDir = getdown_app_dir_alt
+ getdownImagesDir = string("${jalviewDir}/${getdown_images_dir}")
reportRsyncCommand = false
jvlChannelName = CHANNEL.toLowerCase()
install4jSuffix = CHANNEL.substring(0, 1).toUpperCase() + CHANNEL.substring(1).toLowerCase(); // BUILD -> Build
- install4jDSStore = "DS_Store-NON-RELEASE"
- install4jDMGBackgroundImage = "jalview_dmg_background-NON-RELEASE.png"
+ 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()
install4jExtraScheme = "jalviewx"
+ 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}")
switch (CHANNEL) {
case "BUILD":
getdownAppDistDir = getdown_app_dir_release
reportRsyncCommand = true
install4jSuffix = ""
- install4jDSStore = "DS_Store"
- install4jDMGBackgroundImage = "jalview_dmg_background.png"
install4jInstallerName = "${jalview_name} Installer"
break
// DEVELOP-RELEASE is usually associated with a Jalview release series so set the version
JALVIEW_VERSION=JALVIEW_VERSION+"-develop"
- channelPropertiesFile = string("${channel_properties_dir}/develop_properties")
- getdownImagesDir = "${getdown_images_dir}/develop"
- getdownBgColour = "000000"
- getdownFgColour = "FFFFFF"
- getdownLightFgColour = "CCCCFF"
install4jSuffix = "Develop"
- install4jDSStore = "DS_Store-DEVELOP"
- install4jDMGBackgroundImage = "jalview_dmg_background-DEVELOP.png"
install4jExtraScheme = "jalviewd"
install4jInstallerName = "${jalview_name} Develop Installer"
- install4jMacIconsFile = string("${install4j_utils_dir}/develop/${install4j_mac_icons_file}")
- install4jWindowsIconsFile = string("${install4j_utils_dir}/develop/${install4j_windows_icons_file}")
- install4jPngIconFile = string("${install4j_utils_dir}/develop/${install4j_png_icon_file}")
break
case "TEST-RELEASE":
}
JALVIEW_VERSION = JALVIEW_VERSION+"-test"
install4jSuffix = "Test"
- install4jDSStore = "DS_Store-TEST-RELEASE"
- install4jDMGBackgroundImage = "jalview_dmg_background-TEST.png"
install4jExtraScheme = "jalviewt"
install4jInstallerName = "${jalview_name} Test Installer"
break
}
JALVIEW_VERSION = "TEST"
install4jSuffix = "Test-Local"
- install4jDSStore = "DS_Store-TEST-RELEASE"
- install4jDMGBackgroundImage = "jalview_dmg_background-TEST.png"
install4jExtraScheme = "jalviewt"
install4jInstallerName = "${jalview_name} Test Installer"
break
}
// override getdownAppBase if requested
if (findProperty("getdown_appbase_override") != null) {
- getdownAppBase = string(getProperty("getdown_appbase_override"))
+ // revert to LOCAL if empty string
+ if (string(getdown_appbase_override) == "") {
+ getdownAppBase = file(getdownWebsiteDir).toURI().toString()
+ getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
+ } else {
+ getdownAppBase = string(getdown_appbase_override)
+ }
println("Overriding getdown appbase with '${getdownAppBase}'")
}
// sanitise file name for jalview launcher file for this channel
helpBuildDir = string("${resourceBuildDir}/help_build")
docBuildDir = string("${resourceBuildDir}/doc_build")
- buildProperties = string("${resourcesBuildDir}/${build_properties_file}")
+ if (buildProperties == null) {
+ buildProperties = string("${resourcesBuildDir}/${build_properties_file}")
+ }
buildingHTML = string("${jalviewDir}/${doc_dir}/building.html")
helpParentDir = string("${jalviewDir}/${help_parent_dir}")
helpSourceDir = string("${helpParentDir}/${help_dir}")
def htmlFilePath = mdFile.getPath().replaceAll(/\..*?$/, ".html")
def htmlFile = file(htmlFilePath)
+ println("Creating ${htmlFilePath}")
htmlFile.text = htmlText
}
}
def inputDir = "${jalviewDir}/${doc_dir}"
def outputDir = "${docBuildDir}/${doc_dir}"
from(inputDir) {
- exclude '**/*.gif'
- exclude '**/*.jpg'
- exclude '**/*.png'
+ include('**/*.txt')
+ include('**/*.md')
+ include('**/*.html')
+ include('**/*.xml')
filter(ReplaceTokens,
beginToken: '$$',
endToken: '$$',
)
}
from(inputDir) {
- include '**/*.gif'
- include '**/*.jpg'
- include '**/*.png'
+ exclude('**/*.txt')
+ exclude('**/*.md')
+ exclude('**/*.html')
+ exclude('**/*.xml')
}
into outputDir
inputs.dir(inputDir)
- outputs.files(helpFile)
outputs.dir(outputDir)
}
task convertMdFiles {
dependsOn copyDocs
- def mdFiles = fileTree(dir: docBuildDir, include: "*.md")
+ def mdFiles = fileTree(dir: docBuildDir, include: "**/*.md")
def cssFile = file("${jalviewDir}/${flexmark_css}")
doLast {
def inputDir = helpSourceDir
def outputDir = "${helpBuildDir}/${help_dir}"
from(inputDir) {
- exclude '**/*.gif'
- exclude '**/*.jpg'
- exclude '**/*.png'
+ include('**/*.txt')
+ include('**/*.md')
+ include('**/*.html')
+ include('**/*.hs')
+ include('**/*.xml')
+ include('**/*.jhm')
filter(ReplaceTokens,
beginToken: '$$',
endToken: '$$',
)
}
from(inputDir) {
- include '**/*.gif'
- include '**/*.jpg'
- include '**/*.png'
+ exclude('**/*.txt')
+ exclude('**/*.md')
+ exclude('**/*.html')
+ exclude('**/*.hs')
+ exclude('**/*.xml')
+ exclude('**/*.jhm')
}
into outputDir
task copyResources(type: Copy) {
+ group = "build"
+ description = "Copy (and make text substitutions in) the resources dir to the build area"
+
def inputDir = resourceDir
def outputDir = resourcesBuildDir
from(inputDir) {
- exclude '**/*.gif'
- exclude '**/*.jpg'
- exclude '**/*.png'
+ include('**/*.txt')
+ include('**/*.md')
+ include('**/*.html')
+ include('**/*.xml')
filter(ReplaceTokens,
beginToken: '$$',
endToken: '$$',
)
}
from(inputDir) {
- include '**/*.gif'
- include '**/*.jpg'
- include '**/*.png'
+ exclude('**/*.txt')
+ exclude('**/*.md')
+ exclude('**/*.html')
+ exclude('**/*.xml')
}
into outputDir
outputs.dir(outputDir)
}
+task copyChannelResources(type: Copy) {
+ dependsOn copyResources
+ group = "build"
+ description = "Copy the channel resources dir to the build resources area"
+
+ def inputDir = "${channelDir}/${resource_dir}"
+ def outputDir = resourcesBuildDir
+ from inputDir
+ into outputDir
+
+ inputs.dir(inputDir)
+ outputs.dir(outputDir)
+}
task createBuildProperties(type: WriteProperties) {
dependsOn copyResources
}
+task buildIndices(type: JavaExec) {
+ dependsOn copyHelp
+ classpath = sourceSets.main.compileClasspath
+ main = "com.sun.java.help.search.Indexer"
+ workingDir = "${helpBuildDir}/${help_dir}"
+ def argDir = "html"
+ args = [ argDir ]
+ inputs.dir("${workingDir}/${argDir}")
+
+ outputs.dir("${classesDir}/doc")
+ outputs.dir("${classesDir}/help")
+ outputs.file("${workingDir}/JavaHelpSearch/DOCS")
+ outputs.file("${workingDir}/JavaHelpSearch/DOCS.TAB")
+ outputs.file("${workingDir}/JavaHelpSearch/OFFSETS")
+ outputs.file("${workingDir}/JavaHelpSearch/POSITIONS")
+ outputs.file("${workingDir}/JavaHelpSearch/SCHEMA")
+ outputs.file("${workingDir}/JavaHelpSearch/TMAP")
+}
+
task prepare {
dependsOn copyResources
dependsOn copyDocs
dependsOn copyHelp
dependsOn createBuildProperties
+ dependsOn copyChannelResources
dependsOn convertMdFiles
+ dependsOn buildIndices
}
println("Setting Test LaF to '${testLaf}'")
systemProperty "laf", testLaf
}
+ def testHiDPIScale = project.findProperty("test_HiDPIScale")
+ if (testHiDPIScale != null) {
+ println("Setting Test HiDPI Scale to '${testHiDPIScale}'")
+ systemProperty "sun.java2d.uiScale", testHiDPIScale
+ }
sourceCompatibility = compile_source_compatibility
targetCompatibility = compile_target_compatibility
jvmArgs += additional_compiler_args
}
-task buildIndices(type: JavaExec) {
- dependsOn copyHelp
- classpath = sourceSets.main.compileClasspath
- main = "com.sun.java.help.search.Indexer"
- workingDir = "${helpBuildDir}/${help_dir}"
- def argDir = "html"
- args = [ argDir ]
- inputs.dir("${workingDir}/${argDir}")
-
- outputs.dir("${classesDir}/doc")
- outputs.dir("${classesDir}/help")
- outputs.file("${workingDir}/JavaHelpSearch/DOCS")
- outputs.file("${workingDir}/JavaHelpSearch/DOCS.TAB")
- outputs.file("${workingDir}/JavaHelpSearch/OFFSETS")
- outputs.file("${workingDir}/JavaHelpSearch/POSITIONS")
- outputs.file("${workingDir}/JavaHelpSearch/SCHEMA")
- outputs.file("${workingDir}/JavaHelpSearch/TMAP")
-}
-
-
task compileLinkCheck(type: JavaCompile) {
options.fork = true
classpath = files("${jalviewDir}/${utils_dir}")
task linkCheck(type: JavaExec) {
- dependsOn prepare, compileLinkCheck
+ dependsOn prepare
+ dependsOn compileLinkCheck
def helpLinksCheckerOutFile = file("${jalviewDir}/${utils_dir}/HelpLinksChecker.out")
classpath = files("${jalviewDir}/${utils_dir}")
jar {
- dependsOn linkCheck
- dependsOn buildIndices
- dependsOn createBuildProperties
dependsOn prepare
+ dependsOn linkCheck
manifest {
attributes "Main-Class": main_class,
"Implementation-Version": JALVIEW_VERSION
}
- destinationDirectory = file("${jalviewDir}/${package_dir}")
+ def outputDir = "${jalviewDir}/${package_dir}"
+ destinationDirectory = file(outputDir)
archiveFileName = rootProject.name+".jar"
exclude "cache*/**"
sourceSets.main.resources.srcDirs.each{ dir ->
inputs.dir(dir)
}
- outputs.file("${destinationDirectory}/${archiveFileName}")
+ outputs.file("${outputDir}/${archiveFileName}")
}
if (getdownAltMultiJavaLocation != null && getdownAltMultiJavaLocation.length() > 0) {
props.put("getdown_txt_multi_java_location", getdownAltMultiJavaLocation)
}
+ if (getdownImagesDir != null && file(getdownImagesDir).exists()) {
+ props.put("getdown_txt_ui.background_image", "${getdownImagesDir}/${getdown_background_image}")
+ props.put("getdown_txt_ui.instant_background_image", "${getdownImagesDir}/${getdown_instant_background_image}")
+ props.put("getdown_txt_ui.error_background", "${getdownImagesDir}/${getdown_error_background}")
+ props.put("getdown_txt_ui.progress_image", "${getdownImagesDir}/${getdown_progress_image}")
+ props.put("getdown_txt_ui.icon", "${getdownImagesDir}/${getdown_icon}")
+ props.put("getdown_txt_ui.mac_dock_icon", "${getdownImagesDir}/${getdown_mac_dock_icon}")
+ }
props.put("getdown_txt_title", jalview_name)
props.put("getdown_txt_ui.name", install4jApplicationName)
'BUNDLE_ID': install4jBundleId,
'INTERNAL_ID': install4jInternalId,
'WINDOWS_APPLICATION_ID': install4jWinApplicationId,
- 'MACOS_DS_STORE': install4jDSStore,
+ 'MACOS_DMG_DS_STORE': install4jDMGDSStore,
'MACOS_DMG_BG_IMAGE': install4jDMGBackgroundImage,
'INSTALLER_NAME': install4jInstallerName,
'INSTALL4J_UTILS_DIR': install4j_utils_dir,
'UNIX_APPLICATION_FOLDER': install4jUnixApplicationFolder,
'EXECUTABLE_NAME': install4jExecutableName,
'EXTRA_SCHEME': install4jExtraScheme,
+ 'MAC_ICONS_FILE': install4jMacIconsFile,
+ 'WINDOWS_ICONS_FILE': install4jWindowsIconsFile,
+ 'PNG_ICON_FILE': install4jPngIconFile,
+ 'BACKGROUND': install4jBackground,
+
]
//println("INSTALL4J VARIABLES:")