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
ext {
jalviewDirAbsolutePath = file(jalviewDir).getAbsolutePath()
+ jalviewDirRelativePath = jalviewDir
// local build environment properties
def localProps = "${jalviewDirAbsolutePath}/local.properties"
}
}
-
// this property set when running Eclipse headlessly
j2sHeadlessBuildProperty = string("net.sf.j2s.core.headlessbuild")
// this property set by Eclipse
} 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
+ }
*/
+ // essentials
+ bareSourceDir = string(source_dir)
+ sourceDir = string("${jalviewDir}/${bareSourceDir}")
+ resourceDir = string("${jalviewDir}/${resource_dir}")
+ bareTestSourceDir = string(test_source_dir)
+ testSourceDir = string("${jalviewDir}/${bareTestSourceDir}")
+
+ // clover
cloverInstrDir = file("${buildDir}/${cloverSourcesInstrDir}")
- classes = string("${jalviewDir}/${classesDir}")
+ classesDir = string("${jalviewDir}/${classes_dir}")
if (clover.equals("true")) {
use_clover = true
- classes = string("${buildDir}/${cloverClassesDir}")
+ classesDir = string("${buildDir}/${cloverClassesDir}")
} else {
use_clover = false
- classes = string("${jalviewDir}/${classesDir}")
+ classesDir = string("${jalviewDir}/${classes_dir}")
}
+ classes = classesDir
+
getdownWebsiteDir = string("${jalviewDir}/${getdown_website_dir}/${JAVA_VERSION}")
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("${jalviewDir}/${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("${jalviewDir}/${classesDir}/${build_properties_file}")
+ buildProperties = string("${resourceDir}/${build_properties_file}")
reportRsyncCommand = true
+ // Don't ignore transpile errors for release build
+ if (jalviewjs_ignore_transpile_errors.equals("true")) {
+ jalviewjs_ignore_transpile_errors = "false"
+ println("Setting jalviewjs_ignore_transpile_errors to 'false'")
+ }
break
case "ARCHIVE":
exit
} else {
packageDir = string("${ARCHIVEDIR}/${packageDir}")
- buildProperties = string("${ARCHIVEDIR}/${classesDir}/${build_properties_file}")
+ buildProperties = string("${ARCHIVEDIR}/${resource_dir}/${build_properties_file}")
buildDist = false
}
reportRsyncCommand = true
exit
} else {
packageDir = string("${ARCHIVEDIR}/${packageDir}")
- buildProperties = string("${ARCHIVEDIR}/${classesDir}/${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("${jalviewDir}/${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("${jalviewDir}/${classesDir}/${build_properties_file}")
+ buildProperties = string("${resourceDir}/${build_properties_file}")
reportRsyncCommand = true
+ // Don't ignore transpile errors for release build
+ if (jalviewjs_ignore_transpile_errors.equals("true")) {
+ jalviewjs_ignore_transpile_errors = "false"
+ println("Setting jalviewjs_ignore_transpile_errors to 'false'")
+ }
break
case ~/^SCRATCH(|-[-\w]*)$/:
getdownDir = string("${getdown_channel_name}/${JAVA_VERSION}")
getdown_app_base = string("${getdown_channel_base}/${getdownDir}")
getdown_app_dir = getdown_app_dir_alt
- buildProperties = string("${jalviewDir}/${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("${jalviewDir}/${classesDir}/${build_properties_file}")
+ buildProperties = string("${resourceDir}/${build_properties_file}")
getdownLauncher = string("${jalviewDir}/${getdown_lib_dir}/${getdown_launcher_local}")
break
buildingHTML = string("${jalviewDir}/${docDir}/building.html")
- helpFile = string("${classes}/${helpDir}/help.jhm")
+ helpFile = string("${classesDir}/${help_dir}/help.jhm")
+ helpParentDir = string("${jalviewDir}/${help_parent_dir}")
+ helpDir = string("${help_dir}")
+ helpSourceDir = string("${helpParentDir}/${helpDir}")
relativeBuildDir = file(jalviewDirAbsolutePath).toPath().relativize(buildDir.toPath())
jalviewjsTransferSiteCoreDir = string("${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_core")
jalviewjsJalviewCoreHtmlFile = string("")
jalviewjsJalviewCoreName = string(jalviewjs_core_name)
+ jalviewjsCoreClasslists = []
jalviewjsJalviewTemplateName = string(jalviewjs_name)
+ jalviewjsJ2sSettingsFileName = string("${jalviewDir}/${jalviewjs_j2s_settings}")
+ jalviewjsJ2sProps = null
+ eclipseJavaVersion = "55"
+ jalviewjsJ2sPlugin = jalviewjs_j2s_plugin
+ if (IN_ECLIPSE) {
+ //def eclipseJavaVersion = System.property["java.class.version"]
+ if (Float.parseFloat(eclipseJavaVersion) >= 55 && file(jalviewjs_j2s_plugin_j11).exists()) { // 55 is Java 11
+ jalviewjsJ2sPlugin = jalviewjs_j2s_plugin_j11
+ }
+ }
eclipseWorkspace = null
eclipseBinary = string("")
eclipseVersion = string("")
eclipseDebug = false
+ eclipseJavaVersion = string("")
// ENDEXT
}
sourceSets {
main {
java {
- srcDirs "${jalviewDir}/${sourceDir}"
- outputDir = file(project.classes)
+ srcDirs sourceDir
+ outputDir = file(classesDir)
}
resources {
- srcDirs "${jalviewDir}/${resourceDir}"
+ srcDirs resourceDir
}
jar.destinationDir = file("${jalviewDir}/${packageDir}")
test {
java {
- srcDirs "${jalviewDir}/${testSourceDir}"
+ srcDirs testSourceDir
outputDir = file("${jalviewDir}/${testOutputDir}")
}
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 == sourceDir || entry.path == testSourceDir)) {
+ if (alreadyAddedSrcPath.getAt(entry.path) || !(entry.path == bareSourceDir || entry.path == bareTestSourceDir)) {
removeTheseToo += entry
} else {
alreadyAddedSrcPath.putAt(entry.path, true)
}
}
+
}
cp.entries.removeAll(removeTheseToo)
- if (file("${jalviewDir}/${eclipse_bin_dir}/main").isDirectory()) {
- cp.entries += new Output("${eclipse_bin_dir}/main")
- }
- if (file(helpParentDir).isDirectory()) {
- cp.entries += new Library(fileReference(helpParentDir))
+ cp.entries += new Output("${eclipse_bin_dir}/main")
+ if (file(helpSourceDir).isDirectory()) {
+ cp.entries += new Library(fileReference(helpSourceDir))
}
if (file(resourceDir).isDirectory()) {
cp.entries += new Library(fileReference(resourceDir))
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}/")) {
javaRuntimeName = eclipse_java_runtime_name
// add in jalview project specific properties/preferences into eclipse core preferences
+ // and also the codestyle XML file
file {
withProperties { props ->
def jalview_prefs = new Properties()
props.putAt(t, v)
}
}
+ // codestyle file -- overrides previous formatter prefs
+ def csFile = file("${jalviewDirAbsolutePath}/${eclipse_codestyle_file}")
+ if (csFile.exists()) {
+ XmlParser parser = new XmlParser()
+ def profiles = parser.parse(csFile)
+ def profile = profiles.'profile'.find { p -> (p.'@kind' == "CodeFormatterProfile" && p.'@name' == "Jalview") }
+ if (profile != null) {
+ profile.'setting'.each { s ->
+ def id = s.'@id'
+ def value = s.'@value'
+ if (id != null && value != null) {
+ props.putAt(id, value)
+ }
+ }
+ }
+ }
}
}
if (IN_ECLIPSE) {
// Don't want these to be activated if in headless build
synchronizationTasks "eclipseSynchronizationTask"
- autoBuildTasks "eclipseAutoBuildTask"
+ //autoBuildTasks "eclipseAutoBuildTask"
+
}
}
task cloverInstr() {
// only instrument source, we build test classes as normal
- inputs.files files (sourceSets.main.allJava) // , fileTree(dir:"$jalviewDir/$testSourceDir", include: ["**/*.java"]))
+ inputs.files files (sourceSets.main.allJava) // , fileTree(dir: testSourceDir, include: ["**/*.java"]))
outputs.dir cloverInstrDir
doFirst {
task createBuildProperties(type: WriteProperties) {
+ group = "build"
+ description = "Create the ${buildProperties} file"
dependsOn setGitVals
- inputs.dir("${jalviewDir}/${sourceDir}")
- inputs.dir("${jalviewDir}/${resourceDir}")
+ inputs.dir(sourceDir)
+ inputs.dir(resourceDir)
file(buildProperties).getParentFile().mkdirs()
outputFile (buildProperties)
// taking time specific comment out to allow better incremental builds
}
+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 syncDocs(type: Sync) {
dependsOn convertBuildingMD
- def syncDir = "${classes}/${docDir}"
+ def syncDir = "${classesDir}/${docDir}"
from fileTree("${jalviewDir}/${docDir}")
into syncDir
task copyHelp(type: Copy) {
- def inputDir = "${jalviewDir}/${helpParentDir}/${helpDir}"
- def outputDir = "${classes}/${helpDir}"
+ def inputDir = helpSourceDir
+ def outputDir = "${classesDir}/${helpDir}"
from(inputDir) {
exclude '**/*.gif'
exclude '**/*.jpg'
task syncLib(type: Sync) {
- def syncDir = "${classes}/${libDistDir}"
+ def syncDir = "${classesDir}/${libDistDir}"
from fileTree("${jalviewDir}/${libDistDir}")
into syncDir
}
task syncResources(type: Sync) {
- from "${jalviewDir}/${resourceDir}"
+ dependsOn createBuildProperties
+ from resourceDir
include "**/*.*"
- into "${classes}"
+ into "${classesDir}"
preserve {
include "**"
}
dependsOn copyHelp
classpath = sourceSets.main.compileClasspath
main = "com.sun.java.help.search.Indexer"
- workingDir = "${classes}/${helpDir}"
+ workingDir = "${classesDir}/${helpDir}"
def argDir = "html"
args = [ argDir ]
inputs.dir("${workingDir}/${argDir}")
- outputs.dir("${classes}/doc")
- outputs.dir("${classes}/help")
+ outputs.dir("${classesDir}/doc")
+ outputs.dir("${classesDir}/help")
outputs.file("${workingDir}/JavaHelpSearch/DOCS")
outputs.file("${workingDir}/JavaHelpSearch/DOCS.TAB")
outputs.file("${workingDir}/JavaHelpSearch/OFFSETS")
classpath = files("${jalviewDir}/${utilsDir}")
main = "HelpLinksChecker"
workingDir = jalviewDir
- def help = "${classes}/${helpDir}"
- args = [ "${classes}/${helpDir}", "-nointernet" ]
+ def help = "${classesDir}/${helpDir}"
+ args = [ "${classesDir}/${helpDir}", "-nointernet" ]
def outFOS = new FileOutputStream(helpLinksCheckerOutFile, false) // false == don't append
def errFOS = outFOS
outFOS,
errorOutput)
- inputs.dir("${classes}/${helpDir}")
+ inputs.dir("${classesDir}/${helpDir}")
outputs.file(helpLinksCheckerOutFile)
}
// import the pubhtmlhelp target
ant.properties.basedir = "${jalviewDir}"
-ant.properties.helpBuildDir = "${jalviewDirAbsolutePath}/${classes}/${helpDir}"
+ant.properties.helpBuildDir = "${jalviewDirAbsolutePath}/${classes_dir}/${helpDir}"
ant.importBuild "${utilsDir}/publishHelp.xml"
}
}
+
jar {
dependsOn linkCheck
dependsOn buildIndices
exclude "**/*.jar"
exclude "**/*.jar.*"
- inputs.dir("${classes}")
+ inputs.dir(classesDir)
outputs.file("${jalviewDir}/${packageDir}/${archiveName}")
}
task copyJars(type: Copy) {
- from fileTree(dir: "${classes}", include: "**/*.jar").files
+ from fileTree(dir: classesDir, include: "**/*.jar").files
into "${jalviewDir}/${packageDir}"
}
}
-clean {
- doFirst {
- delete install4jConfFile
- }
-}
-
-
task sourceDist (type: Tar) {
def VERSION_UNDERSCORES = JALVIEW_VERSION.replaceAll("\\.", "_")
dependsOn copyHelp
dependsOn pubhtmlhelp
- inputs.dir("${classes}/${helpDir}")
- outputs.dir("${helpOutputDir}")
+ inputs.dir("${classesDir}/${helpDir}")
+ outputs.dir("${buildDir}/distributions/${helpDir}")
}
def eclipseWsDir = propVal
def props = new Properties()
+ def writeProps = true
if (( eclipseWsDir == null || !file(eclipseWsDir).exists() ) && propsFile.exists()) {
def ins = new FileInputStream(propsFileName)
props.load(ins)
ins.close()
if (props.getProperty(propKey, null) != null) {
eclipseWsDir = props.getProperty(propKey)
+ writeProps = false
}
}
- def writeProps = false
if (eclipseWsDir == null || !file(eclipseWsDir).exists()) {
def tempDir = File.createTempDir()
eclipseWsDir = tempDir.getAbsolutePath()
props.store(bytes, null)
def propertiesString = bytes.toString()
propsFile.text = propertiesString
+ print("NEW ")
+ } else {
+ print("EXISTING ")
}
println("ECLIPSE WORKSPACE: "+eclipseWorkspace.getPath())
//inputs.property(propKey, eclipseWsDir) // eclipseWsDir only gets set once this task runs, so will be out-of-date
outputs.file(propsFileName)
- outputs.upToDateWhen { eclipseWorkspace.exists() }
+ outputs.upToDateWhen { eclipseWorkspace.exists() && propsFile.exists() }
}
}
+task printProperties {
+ group "Debug"
+ description "Output to console all System.properties"
+ doFirst {
+ System.properties.each { key, val -> System.out.println("Property: ${key}=${val}") }
+ }
+}
+
+
task eclipseSetup {
dependsOn eclipseProject
dependsOn eclipseClasspath
dependsOn jalviewjsEclipsePaths
def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjs_eclipse_dropins_dir}", include: "*.jar")
- inputFiles += file("${jalviewDir}/${jalviewjs_j2s_plugin}")
+ inputFiles += file("${jalviewDir}/${jalviewjsJ2sPlugin}")
def outputDir = "${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_eclipse_tmp_dropins_dir}"
from inputFiles
group "JalviewJS"
description "Create the .j2s file from the j2s.* properties"
- outputFile ("${jalviewDir}/${jalviewjs_j2s_settings}")
- def j2s_props = project.properties.findAll { it.key.startsWith("j2s.") }.sort { it.key }
+ jalviewjsJ2sProps = project.properties.findAll { it.key.startsWith("j2s.") }.sort { it.key }
def siteDirProperty = "j2s.site.directory"
def setSiteDir = false
- j2s_props.each { prop, val ->
+ jalviewjsJ2sProps.each { prop, val ->
if (val != null) {
if (prop == siteDirProperty) {
if (!(val.startsWith('/') || val.startsWith("file://") )) {
property(prop,val)
}
if (!setSiteDir) { // default site location, don't override specifically set property
- property(siteDirProperty,"${jalviewDir}/${jalviewjsTransferSiteJsDir}")
+ property(siteDirProperty,"${jalviewDirRelativePath}/${jalviewjsTransferSiteJsDir}")
}
}
- inputs.properties(j2s_props)
- outputs.file(outputFile)
+ outputFile = jalviewjsJ2sSettingsFileName
+
+ if (! IN_ECLIPSE) {
+ inputs.properties(jalviewjsJ2sProps)
+ outputs.file(jalviewjsJ2sSettingsFileName)
+ }
}
task jalviewjsSyncResources (type: Sync) {
- def inputFiles = fileTree(dir: "${jalviewDir}/${resourceDir}")
+ def inputFiles = fileTree(dir: resourceDir)
def outputDir = "${jalviewDir}/${jalviewjsSiteDir}/${jalviewjs_j2s_subdir}"
from inputFiles
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}'")
+ }
}
}
}
-def jalviewjsCallCore(FileCollection list, String prefixFile, String suffixFile, String jsfile, String zjsfile, File logOutFile, Boolean logOutConsole) {
+def jalviewjsCallCore(String name, FileCollection list, String prefixFile, String suffixFile, String jsfile, String zjsfile, File logOutFile, Boolean logOutConsole) {
def stdout = new ByteArrayOutputStream()
def stderr = new ByteArrayOutputStream()
def coreFile = file(jsfile)
def msg = ""
- msg = "Generating ${jsfile}"
+ msg = "Creating core for ${name}...\nGenerating ${jsfile}"
println(msg)
logOutFile.createNewFile()
logOutFile.append(msg+"\n")
f ->
if (f.exists()) {
def t = f.text
- t.replaceAll("Clazz\\.","Clazz_")
- t.replaceAll("Class__","Clazz._")
+ t.replaceAll("Clazz\\.([^_])","Clazz_${1}")
coreFile.append( t )
} else {
msg = "...file '"+f.getPath()+"' does not exist, skipping"
javaexec {
classpath = files(["${jalviewDir}/tools/closure_compiler.jar"])
args = [ "--js", jsfile, "--js_output_file", zjsfile ]
+ maxHeapSize = "2g"
msg = "\nRunning '"+commandLine.join(' ')+"'\n"
println(msg)
dependsOn jalviewjsTransferUnzipSwingJs
def j2sDir = "${jalviewDir}/${jalviewjsTransferSiteJsDir}/${jalviewjs_j2s_subdir}"
+ def swingJ2sDir = "${jalviewDir}/${jalviewjsTransferSiteSwingJsDir}/${jalviewjs_j2s_subdir}"
+ def libJ2sDir = "${jalviewDir}/${jalviewjsTransferSiteLibDir}/${jalviewjs_j2s_subdir}"
def jsDir = "${jalviewDir}/${jalviewjsTransferSiteSwingJsDir}/${jalviewjs_js_subdir}"
def outputDir = "${jalviewDir}/${jalviewjsTransferSiteCoreDir}/${jalviewjs_j2s_subdir}/core"
def prefixFile = "${jsDir}/core/coretop2.js"
}
// _jmol and _jalview cores. Add any other peculiar classlist.txt files here
- classlistFiles += [ 'file': file("${jalviewDir}/${jalviewjs_classlist_jmol}"), 'name': "_jvjmol" ]
+ //classlistFiles += [ 'file': file("${jalviewDir}/${jalviewjs_classlist_jmol}"), 'name': "_jvjmol" ]
classlistFiles += [ 'file': file("${jalviewDir}/${jalviewjs_classlist_jalview}"), 'name': jalviewjsJalviewCoreName ]
- def classlists = []
+ jalviewjsCoreClasslists = []
classlistFiles.each {
hash ->
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']
def jsfile = "${outputDir}/core${name}.js"
def zjsfile = "${outputDir}/core${name}.z.js"
- classlists += [
- 'jsfile': jsfile,
- 'zjsfile': zjsfile,
- 'list': list
+ jalviewjsCoreClasslists += [
+ 'jsfile': jsfile,
+ 'zjsfile': zjsfile,
+ 'list': list,
+ 'name': name
]
inputs.file(file)
}
// _stevesoft core. add any cores without a classlist here (and the inputs and outputs)
+ def stevesoftClasslistName = "_stevesoft"
def stevesoftClasslist = [
- 'jsfile': "${outputDir}/core_stevesoft.js",
- 'zjsfile': "${outputDir}/core_stevesoft.z.js",
- 'list': fileTree(dir: j2sDir, include: "com/stevesoft/pat/**/*.js")
+ 'jsfile': "${outputDir}/core${stevesoftClasslistName}.js",
+ 'zjsfile': "${outputDir}/core${stevesoftClasslistName}.z.js",
+ 'list': fileTree(dir: j2sDir, include: "com/stevesoft/pat/**/*.js"),
+ 'name': stevesoftClasslistName
]
- classlists += stevesoftClasslist
+ jalviewjsCoreClasslists += stevesoftClasslist
inputs.files(stevesoftClasslist['list'])
outputs.file(stevesoftClasslist['jsfile'])
outputs.file(stevesoftClasslist['zjsfile'])
+ // _all core
+ def allClasslistName = "_all"
+ def allJsFiles = fileTree(dir: j2sDir, include: "**/*.js")
+ allJsFiles += fileTree(
+ dir: libJ2sDir,
+ include: "**/*.js",
+ excludes: [
+ // these exlusions are files that the closure-compiler produces errors for. Should fix them
+ "**/org/jmol/jvxl/readers/IsoIntersectFileReader.js",
+ "**/org/jmol/export/JSExporter.js"
+ ]
+ )
+ allJsFiles += fileTree(
+ dir: swingJ2sDir,
+ include: "**/*.js",
+ excludes: [
+ // these exlusions are files that the closure-compiler produces errors for. Should fix them
+ "**/sun/misc/Unsafe.js",
+ "**/swingjs/jquery/jquery-editable-select.js",
+ "**/swingjs/jquery/j2sComboBox.js",
+ "**/sun/misc/FloatingDecimal.js"
+ ]
+ )
+ def allClasslist = [
+ 'jsfile': "${outputDir}/core${allClasslistName}.js",
+ 'zjsfile': "${outputDir}/core${allClasslistName}.z.js",
+ 'list': allJsFiles,
+ 'name': allClasslistName
+ ]
+ // not including this version of "all" core at the moment
+ //jalviewjsCoreClasslists += allClasslist
+ inputs.files(allClasslist['list'])
+ outputs.file(allClasslist['jsfile'])
+ outputs.file(allClasslist['zjsfile'])
+
doFirst {
def logOutFile = file("${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_j2s_closure_stdout}")
logOutFile.getParentFile().mkdirs()
logOutFile.createNewFile()
logOutFile.write(getDate("yyyy-MM-dd HH:mm:ss")+" jalviewjsBuildAllCores\n----\n")
- classlists.each {
- jalviewjsCallCore(it.list, prefixFile, suffixFile, it.jsfile, it.zjsfile, logOutFile, jalviewjs_j2s_to_console.equals("true"))
+ jalviewjsCoreClasslists.each {
+ jalviewjsCallCore(it.name, it.list, prefixFile, suffixFile, it.jsfile, it.zjsfile, logOutFile, jalviewjs_j2s_to_console.equals("true"))
}
}
}
-task jalviewjsPublishCoreTemplate(type: Sync) {
- dependsOn jalviewjsBuildAllCores
+def jalviewjsPublishCoreTemplate(String coreName, String templateName, File inputFile, String outputFile) {
+ copy {
+ from inputFile
+ into file(outputFile).getParentFile()
+ rename { filename ->
+ if (filename.equals(inputFile.getName())) {
+ return file(outputFile).getName()
+ }
+ return null
+ }
+ filter(ReplaceTokens,
+ beginToken: '_',
+ endToken: '_',
+ tokens: [
+ 'MAIN': '"'+mainClass+'"',
+ 'CODE': "null",
+ 'NAME': jalviewjsJalviewTemplateName+" [core ${coreName}]",
+ 'COREKEY': jalviewjs_core_key,
+ 'CORENAME': coreName
+ ]
+ )
+ }
+}
- def inputFile = file("${jalviewDir}/${j2s_template_html}")
+
+task jalviewjsPublishCoreTemplates {
+ dependsOn jalviewjsBuildAllCores
+ def inputFileName = "${jalviewDir}/${j2s_coretemplate_html}"
+ def inputFile = file(inputFileName)
def outputDir = "${jalviewDir}/${jalviewjsTransferSiteCoreDir}"
- from inputFile
- into outputDir
def outputFiles = []
- jalviewjsJalviewCoreHtmlFile = "${jalviewjsJalviewTemplateName}_${jalviewjsJalviewCoreName}.html"
- rename { filename ->
- outputFiles += "${outputDir}/${filename}"
- if (filename.equals(inputFile.getName())) {
- return jalviewjsJalviewCoreHtmlFile
- }
- return null
- }
- filter(ReplaceTokens,
- beginToken: '_',
- endToken: '_',
- tokens: [
- 'MAIN': '"'+mainClass+'"',
- 'CODE': "null",
- 'NAME': jalviewjsJalviewTemplateName
- ]
- )
- filter(ReplaceTokens,
- beginToken: '',
- endToken: '',
- tokens: [
- 'NONE': jalviewjsJalviewCoreName
- ]
- )
- preserve {
- include "**"
+ jalviewjsCoreClasslists.each { cl ->
+ def outputFile = "${outputDir}/${jalviewjsJalviewTemplateName}_${cl.name}.html"
+ cl['outputfile'] = outputFile
+ outputFiles += outputFile
}
- outputs.files outputFiles
- inputs.files inputFile
+
+ doFirst {
+ jalviewjsCoreClasslists.each { cl ->
+ jalviewjsPublishCoreTemplate(cl.name, jalviewjsJalviewTemplateName, inputFile, cl.outputfile)
+ }
+ }
+ inputs.file(inputFile)
+ outputs.files(outputFiles)
}
task jalviewjsSyncCore (type: Sync) {
dependsOn jalviewjsBuildAllCores
- dependsOn jalviewjsPublishCoreTemplate
+ dependsOn jalviewjsPublishCoreTemplates
def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjsTransferSiteCoreDir}")
def outputDir = "${jalviewDir}/${jalviewjsSiteDir}"
}
-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}"
}
}
def start = port
def running = false
def url
- def urlcore
+ def jalviewjsServer
while(port < start+1000 && !running) {
try {
def doc_root = new File("${jalviewDirAbsolutePath}/${jalviewjsSiteDir}")
- def jalviewjsServer = factory.start(doc_root, port)
+ jalviewjsServer = factory.start(doc_root, port)
running = true
url = jalviewjsServer.getResourceUrl(jalviewjs_server_resource)
- urlcore = jalviewjsServer.getResourceUrl(jalviewjsJalviewCoreHtmlFile)
println("SERVER STARTED with document root ${doc_root}.")
println("Go to "+url+" . Run gradle --stop to stop (kills all gradle daemons).")
println("For debug: "+url+"?j2sdebug")
- println("For core: "+urlcore)
-
- file(htmlFile).text = """
- <p><a href="${url}">JalviewJS Test. <${url}></a></p>
- <p><a href="${url}?j2sdebug">JalviewJS Test with debug. <${url}?j2sdebug<</a></p>
- <p><a href="${urlcore}">${jalviewjsJalviewTemplateName} Core Test. <${urlcore}></a></p>
- """
-
+ println("For verbose: "+url+"?j2sverbose")
} catch (Exception e) {
port++;
}
}
+ def htmlText = """
+ <p><a href="${url}">JalviewJS Test. <${url}></a></p>
+ <p><a href="${url}?j2sdebug">JalviewJS Test with debug. <${url}?j2sdebug></a></p>
+ <p><a href="${url}?j2sverbose">JalviewJS Test with verbose. <${url}?j2sdebug></a></p>
+ """
+ jalviewjsCoreClasslists.each { cl ->
+ def urlcore = jalviewjsServer.getResourceUrl(file(cl.outputfile).getName())
+ htmlText += """
+ <p><a href="${urlcore}">${jalviewjsJalviewTemplateName} [core ${cl.name}]. <${urlcore}></a></p>
+ """
+ println("For core ${cl.name}: "+urlcore)
+ }
+ file(htmlFile).text = htmlText
}
outputs.file(htmlFile)
}
+task jalviewjsIDE_checkJ2sPlugin {
+ group "00 JalviewJS in Eclipse"
+ description "Compare the swingjs/net.sf.j2s.core(-j11)?.jar file with the Eclipse IDE's plugin version (found in the 'dropins' dir)"
-task jalviewjsIDE_CopyTransferSiteJs(type: Copy) {
- from "${jalviewDir}/${jalviewjsTransferSiteJsDir}"
- into "${jalviewDir}/${jalviewjsSiteDir}"
+ doFirst {
+ def j2sPlugin = string("${jalviewDir}/${jalviewjsJ2sPlugin}")
+ def j2sPluginFile = file(j2sPlugin)
+ def eclipseHome = System.properties["eclipse.home.location"]
+ 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}')\nTry running task jalviewjsIDE_copyJ2sPlugin"
+ System.err.println(msg)
+ throw new StopExecutionException(msg)
+ }
+
+ 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)
+ throw new StopExecutionException(msg)
+ } else {
+ def msg = "Eclipse J2S Plugin is the same as '${j2sPlugin}' (this is good)"
+ println(msg)
+ }
+ }
+}
+
+task jalviewjsIDE_copyJ2sPlugin {
+ group "00 JalviewJS in Eclipse"
+ description "Copy the swingjs/net.sf.j2s.core(-j11)?.jar file into the Eclipse IDE's 'dropins' dir"
+
+ doFirst {
+ def j2sPlugin = string("${jalviewDir}/${jalviewjsJ2sPlugin}")
+ def j2sPluginFile = file(j2sPlugin)
+ def eclipseHome = System.properties["eclipse.home.location"]
+ if (eclipseHome == null || ! IN_ECLIPSE) {
+ throw new StopExecutionException("Cannot find running Eclipse home from System.properties['eclipse.home.location']. NOT copying J2S Plugin.")
+ }
+ def eclipseJ2sPlugin = "${eclipseHome}/dropins/${j2sPluginFile.getName()}"
+ def eclipseJ2sPluginFile = file(eclipseJ2sPlugin)
+ def msg = "WARNING! Copying this commit's j2s plugin '${j2sPlugin}' to Eclipse J2S Plugin '${eclipseJ2sPlugin}'\n* May require an Eclipse restart"
+ System.err.println(msg)
+ copy {
+ from j2sPlugin
+ eclipseJ2sPluginFile.getParentFile().mkdirs()
+ into eclipseJ2sPluginFile.getParent()
+ }
+ }
}
}
-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 the Eclipse transpiled site and unzips supporting zipfiles"
- dependsOn jalviewjsIDE_CopyTransferSiteJs
+ description "Assembles unzipped supporting zipfiles, resources, site resources and closure cores into the Eclipse transpiled site"
dependsOn jalviewjsPrepareSite
}
}
-// buildship runs this at import
+// buildship runs this at import or gradle refresh
task eclipseSynchronizationTask {
- dependsOn eclipseSetup
- dependsOn jalviewjsIDE_j2sFile
+ //dependsOn eclipseSetup
+ 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
}