import org.gradle.internal.os.OperatingSystem
import org.gradle.plugins.ide.eclipse.model.Output
import org.gradle.plugins.ide.eclipse.model.Library
+import java.security.MessageDigest
import groovy.transform.ExternalizeMethods
} else {
println("HEADLESS BUILD")
}
- /*
+
+ J2S_ENABLED = (project.hasProperty('j2s.compiler.status') && project['j2s.compiler.status'] != null && project['j2s.compiler.status'] == "enable")
+ if (J2S_ENABLED) {
+ println("J2S ENABLED")
+ }
+
+ /* *-/
System.properties.sort { it.key }.each {
key, val -> println("SYSTEM PROPERTY ${key}='${val}'")
}
+ /-* *-/
if (false && IN_ECLIPSE) {
jalviewDir = jalviewDirAbsolutePath
}
getdownDir = string("")
reportRsyncCmd = false
buildDist = true
- buildProperties = build_properties_file
+ buildProperties = string("${resourceDir}/${build_properties_file}")
getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher}")
switch (CHANNEL) {
getdown_channel_name = string("${bamboo_planKey}/${JAVA_VERSION}")
getdown_app_base = string("${bamboo_channelbase}/${bamboo_planKey}${bamboo_getdown_channel_suffix}/${JAVA_VERSION}")
getdown_app_dir = getdown_app_dir_alt
- buildProperties = string("${classesDir}/${build_properties_file}")
+ buildProperties = string("${resourceDir}/${build_properties_file}")
break
case "RELEASE":
getdownDir = string("${getdown_channel_name}/${JAVA_VERSION}")
getdown_app_base = string("${getdown_channel_base}/${getdownDir}")
getdown_app_dir = getdown_app_dir_release
- buildProperties = string("${classesDir}/${build_properties_file}")
+ buildProperties = string("${resourceDir}/${build_properties_file}")
reportRsyncCommand = true
break
exit
} else {
packageDir = string("${ARCHIVEDIR}/${packageDir}")
- buildProperties = string("${ARCHIVEDIR}/${classes_dir}/${build_properties_file}")
+ buildProperties = string("${ARCHIVEDIR}/${resource_dir}/${build_properties_file}")
buildDist = false
}
reportRsyncCommand = true
exit
} else {
packageDir = string("${ARCHIVEDIR}/${packageDir}")
- buildProperties = string("${ARCHIVEDIR}/${classes_dir}/${build_properties_file}")
+ buildProperties = string("${ARCHIVEDIR}/${resource_dir}/${build_properties_file}")
buildDist = false
}
reportRsyncCommand = true
getdownDir = string("${getdown_channel_name}/${JAVA_VERSION}")
getdown_app_base = string("${getdown_channel_base}/${getdownDir}")
getdown_app_dir = getdown_app_dir_alt
- buildProperties = string("${classesDir}/${build_properties_file}")
+ buildProperties = string("${resourceDir}/${build_properties_file}")
reportRsyncCommand = true
break
getdownDir = string("${getdown_channel_name}/${JAVA_VERSION}")
getdown_app_base = string("${getdown_channel_base}/${getdownDir}")
getdown_app_dir = getdown_app_dir_alt
- buildProperties = string("${classesDir}/${build_properties_file}")
+ buildProperties = string("${resourceDir}/${build_properties_file}")
reportRsyncCommand = true
break
getdownDir = string("${getdown_channel_name}/${JAVA_VERSION}")
getdown_app_base = string("${getdown_channel_base}/${getdownDir}")
getdown_app_dir = getdown_app_dir_alt
- buildProperties = string("${classesDir}/${build_properties_file}")
+ buildProperties = string("${resourceDir}/${build_properties_file}")
reportRsyncCommand = true
break
case "LOCAL":
getdown_app_base = file(getdownWebsiteDir).toURI().toString()
getdown_app_dir = getdown_app_dir_alt
- buildProperties = string("${classesDir}/${build_properties_file}")
+ buildProperties = string("${resourceDir}/${build_properties_file}")
getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
break
def removeTheseToo = []
HashMap<String, Boolean> alreadyAddedSrcPath = new HashMap<>();
cp.entries.each { entry ->
+ // This conditional removes all src classpathentries that a) have already been added or b) aren't "src" or "test".
+ // e.g. this removes the resources dir being copied into bin/main, bin/test AND bin/clover
+ // we add the resources and help/help dirs in as libs afterwards (see below)
if (entry.kind == 'src') {
if (alreadyAddedSrcPath.getAt(entry.path) || !(entry.path == bareSourceDir || entry.path == bareTestSourceDir)) {
removeTheseToo += entry
alreadyAddedSrcPath.putAt(entry.path, true)
}
}
+
}
cp.entries.removeAll(removeTheseToo)
sourceSets.main.compileClasspath.findAll { it.name.endsWith(".jar") }.each {
//don't want to add outputDir as eclipse is using its own output dir in bin/main
if (it.isDirectory() || ! it.exists()) {
- // don't add dirs to classpath
- return
+ // don't add dirs to classpath, especially if they don't exist
+ return false // groovy "continue" in .any closure
}
def itPath = it.toString()
if (itPath.startsWith("${jalviewDirAbsolutePath}/")) {
if (IN_ECLIPSE) {
// Don't want these to be activated if in headless build
synchronizationTasks "eclipseSynchronizationTask"
- autoBuildTasks "eclipseAutoBuildTask"
+ //autoBuildTasks "eclipseAutoBuildTask"
+
}
}
task createBuildProperties(type: WriteProperties) {
+ group = "build"
+ description = "Create the ${buildProperties} file"
dependsOn setGitVals
inputs.dir(sourceDir)
inputs.dir(resourceDir)
}
+clean {
+ doFirst {
+ delete buildProperties
+ }
+}
+
+
task cleanBuildingHTML(type: Delete) {
doFirst {
delete buildingHTML
commandLine pandoc, '-s', '-o', buildingHTML, '--metadata', 'pagetitle="Building Jalview from Source"', '--toc', '-H', css, buildingMD
} else {
println("Cannot find pandoc. Skipping convert building.md to HTML")
- throw new StopExecutionException()
+ throw new StopExecutionException("Cannot find pandoc. Skipping convert building.md to HTML")
}
}
task syncResources(type: Sync) {
+ dependsOn createBuildProperties
from resourceDir
include "**/*.*"
into "${classesDir}"
}
}
+
jar {
dependsOn linkCheck
dependsOn buildIndices
if (stdout.toString().contains("Error processing ")) {
// j2s did not complete transpile
//throw new TaskExecutionException("Error during transpilation:\n${stderr}\nSee eclipse transpile log file '${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_j2s_transpile_stdout}'")
- throw new GradleException("Error during transpilation:\n${stderr}\nSee eclipse transpile log file '${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_j2s_transpile_stdout}'")
+ if (jalviewjs_ignore_transpile_errors.equals("true")) {
+ println("IGNORING TRANSPILE ERRORS")
+ println("See eclipse transpile log file '${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_j2s_transpile_stdout}'")
+ } else {
+ throw new GradleException("Error during transpilation:\n${stderr}\nSee eclipse transpile log file '${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_j2s_transpile_stdout}'")
+ }
}
}
javaexec {
classpath = files(["${jalviewDir}/tools/closure_compiler.jar"])
args = [ "--js", jsfile, "--js_output_file", zjsfile ]
+ maxHeapSize = "2g"
msg = "\nRunning '"+commandLine.join(' ')+"'\n"
println(msg)
def file = hash['file']
if (! file.exists()) {
- println("...classlist file '"+file.getPath()+"' does not exist, skipping")
+ //println("...classlist file '"+file.getPath()+"' does not exist, skipping")
return false // this is a "continue" in groovy .each closure
}
def name = hash['name']
'list': allJsFiles,
'name': allClasslistName
]
- jalviewjsCoreClasslists += allClasslist
+ // not including this version of "all" core at the moment
+ //jalviewjsCoreClasslists += allClasslist
inputs.files(allClasslist['list'])
outputs.file(allClasslist['jsfile'])
outputs.file(allClasslist['zjsfile'])
}
-task cleanJalviewjsSite {
+task cleanJalviewjsTransferSite {
doFirst {
delete "${jalviewDir}/${jalviewjsTransferSiteJsDir}"
delete "${jalviewDir}/${jalviewjsTransferSiteLibDir}"
delete "${jalviewDir}/${jalviewjsTransferSiteSwingJsDir}"
delete "${jalviewDir}/${jalviewjsTransferSiteCoreDir}"
+ }
+}
+
+
+task cleanJalviewjsSite {
+ dependsOn cleanJalviewjsTransferSite
+ doFirst {
delete "${jalviewDir}/${jalviewjsSiteDir}"
}
}
}
+task jalviewjsIDE_checkJ2sPlugin {
+ group "00 JalviewJS in Eclipse"
+ description "Compare the swingjs/net.sf.j2s.core.jar file with the Eclipse IDE's plugin version (found in the 'dropins' dir)"
+
+ doFirst {
+ def j2sPlugin = string("${jalviewDir}/${jalviewjs_j2s_plugin}")
+ def j2sPluginFile = file(j2sPlugin)
+ def copyPlugin = jalviewjs_eclipseIDE_auto_copy_j2s_plugin == "true"
+ def eclipseHome = System.properties["eclipse.home.location"]
+ def doCopy = false
+ if (eclipseHome == null || ! IN_ECLIPSE) {
+ throw new StopExecutionException("Cannot find running Eclipse home from System.properties['eclipse.home.location']. Skipping J2S Plugin Check.")
+ }
+ def eclipseJ2sPlugin = "${eclipseHome}/dropins/${j2sPluginFile.getName()}"
+ def eclipseJ2sPluginFile = file(eclipseJ2sPlugin)
+ if (!eclipseJ2sPluginFile.exists()) {
+ def msg = "Eclipse J2S Plugin is not installed (could not find '${eclipseJ2sPlugin}')"
+ System.err.println(msg)
+ if (! copyPlugin) {
+ throw new GradleException(msg)
+ }
+ doCopy = true
+ }
+
+ def digest = MessageDigest.getInstance("MD5")
+
+ digest.update(j2sPluginFile.text.bytes)
+ def j2sPluginMd5 = new BigInteger(1, digest.digest()).toString(16).padLeft(32, '0')
+
+ digest.update(eclipseJ2sPluginFile.text.bytes)
+ def eclipseJ2sPluginMd5 = new BigInteger(1, digest.digest()).toString(16).padLeft(32, '0')
+
+ if (j2sPluginMd5 != eclipseJ2sPluginMd5) {
+ def msg = "WARNING! Eclipse J2S Plugin '${eclipseJ2sPlugin}' is different to this commit's version '${j2sPlugin}'"
+ System.err.println(msg)
+ if (! copyPlugin) {
+ throw new StopExecutionException(msg)
+ }
+ doCopy = true
+ }
+
+ if (doCopy) {
+ def msg = "WARNING! Auto-copying this commit's j2s plugin version '${j2sPlugin}' to Eclipse J2S Plugin '${eclipseJ2sPlugin}'\n May require an Eclipse restart"
+ println(msg)
+ copy {
+ from j2sPlugin
+ eclipseJ2sPluginFile.getParentFile().mkdirs()
+ into eclipseJ2sPluginFile.getParent()
+ }
+ } else {
+ def msg = "Eclipse J2S Plugin is the same as '${j2sPlugin}' (this is good)"
+ println(msg)
+ }
+ }
+}
+
task jalviewjsIDE_j2sFile {
group "00 JalviewJS in Eclipse"
}
-task jalviewjsIDE_PrepareSite {
- group "00 JalviewJS in Eclipse"
- description "Sync libs and resources to site dir, but not closure cores"
+task jalviewjsIDE_SyncSiteAll {
dependsOn jalviewjsSyncAllLibs
dependsOn jalviewjsSyncResources
dependsOn jalviewjsSyncSiteResources
}
+cleanJalviewjsTransferSite.mustRunAfter jalviewjsIDE_SyncSiteAll
+
+
+task jalviewjsIDE_PrepareSite {
+ group "00 JalviewJS in Eclipse"
+ description "Sync libs and resources to site dir, but not closure cores"
+
+ dependsOn jalviewjsIDE_SyncSiteAll
+ dependsOn cleanJalviewjsTransferSite
+}
+
+
task jalviewjsIDE_AssembleSite {
group "00 JalviewJS in Eclipse"
description "Assembles unzipped supporting zipfiles, resources, site resources and closure cores into the Eclipse transpiled site"
}
-// buildship runs this at import
+// buildship runs this at import or gradle refresh
task eclipseSynchronizationTask {
//dependsOn eclipseSetup
- dependsOn jalviewjsIDE_j2sFile
+ dependsOn createBuildProperties
+ if (J2S_ENABLED) {
+ dependsOn jalviewjsIDE_j2sFile
+ dependsOn jalviewjsIDE_checkJ2sPlugin
+ dependsOn jalviewjsIDE_PrepareSite
+ }
}
-// buildship runs this at build time
+// buildship runs this at build time or project refresh
task eclipseAutoBuildTask {
- dependsOn jalviewjsIDE_PrepareSite
+ //dependsOn jalviewjsIDE_checkJ2sPlugin
+ //dependsOn jalviewjsIDE_PrepareSite
}