X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=build.gradle;h=52c0385b6459302c6a85d1971d40debe3b003e26;hb=6f830d8a3d9347f9cf31b41f0b05a33ec74bc0b8;hp=535f3b9f4b6961c63a270958b813eb93cdc67e1c;hpb=915c9e36bbe05968b0b128667803387f322d9f29;p=jalview.git diff --git a/build.gradle b/build.gradle index 535f3b9..52c0385 100644 --- a/build.gradle +++ b/build.gradle @@ -1274,14 +1274,16 @@ task helppages { def jalviewjsBuildDir def jalviewjsSiteDir -def jalviewjsTransferSiteJSDir +def jalviewjsTransferSiteJsDir def jalviewjsTransferSiteLibDir +def jalviewjsTransferSiteCoreDir task jalviewjsSitePath { def relativeBuildDir = file(jalviewDirAbsolutePath).toPath().relativize(buildDir.toPath()) jalviewjsBuildDir = "${relativeBuildDir}/jalviewjs" jalviewjsSiteDir = "${jalviewjsBuildDir}/${jalviewjs_site_dir}" - jalviewjsTransferSiteJSDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_js" + jalviewjsTransferSiteJsDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_js" jalviewjsTransferSiteLibDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_lib" + jalviewjsTransferSiteCoreDir = "${jalviewjsBuildDir}/tmp/${jalviewjs_site_dir}_core" } def eclipseWorkspace @@ -1329,8 +1331,9 @@ task jalviewjsSetEclipseWorkspace { println("ECLIPSE WORKSPACE: "+eclipseWorkspace.getPath()) } - inputs.property(propKey, eclipseWsDir) + //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() } } @@ -1494,14 +1497,14 @@ task jalviewjsCreateJ2sSettings(type: WriteProperties) { if (val != null) { if (prop == siteDirProperty) { if (!(val.startsWith('/') || val.startsWith("file://") )) { - val = "${jalviewDir}/${jalviewjsTransferSiteJSDir}/${val}" + val = "${jalviewDir}/${jalviewjsTransferSiteJsDir}/${val}" } setSiteDir = true } property(prop,val) } if (!setSiteDir) { // default site location, don't override specifically set property - property(siteDirProperty,"${jalviewDir}/${jalviewjsTransferSiteJSDir}") + property(siteDirProperty,"${jalviewDir}/${jalviewjsTransferSiteJsDir}") } } inputs.properties(j2s_props) @@ -1534,6 +1537,26 @@ task jalviewjsSyncLib (type: Sync) { inputs.files inputFiles } +task jalviewjsSyncCore (type: Sync) { + dependsOn jalviewjsSitePath + dependsOn "jalviewjsBuildAllCores" + def inputFiles = fileTree(dir: "${jalviewDir}/${jalviewjsTransferSiteCoreDir}") + def outputDir = "${jalviewDir}/${jalviewjsSiteDir}" + + from inputFiles + into outputDir + def outputFiles = [] + rename { filename -> + outputFiles += "${outputDir}/${filename}" + null + } + preserve { + include "**" + } + outputs.files outputFiles + inputs.files inputFiles +} + task jalviewjsSyncResources (type: Sync) { dependsOn jalviewjsSitePath def inputFiles = fileTree(dir: "${jalviewDir}/${resourceDir}") @@ -1597,7 +1620,8 @@ task jalviewjsProjectImport(type: Exec) { dependsOn jalviewjsEclipsePaths dependsOn jalviewjsEclipseSetup - def projdir = eclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview/org.eclipse.jdt.core" + //def projdir = eclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview/org.eclipse.jdt.core" + def projdir = eclipseWorkspace.getPath()+"/.metadata/.plugins/org.eclipse.core.resources/.projects/jalview" executable(eclipseBinary) args(["-nosplash", "--launcher.suppressErrors", "-application", "com.seeq.eclipse.importprojects.headlessimport", "-data", eclipseWorkspace.getPath(), "-import", jalviewDirAbsolutePath]) if (eclipseDebug) { @@ -1606,7 +1630,9 @@ task jalviewjsProjectImport(type: Exec) { args += [ "--launcher.appendVmargs", "-vmargs", "-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_eclipse_tmp_dropins_dir}" ] inputs.file("${jalviewDir}/.project") - outputs.upToDateWhen { file(projdir).exists() } + outputs.upToDateWhen { + file(projdir).exists() + } } task jalviewjsTranspile(type: Exec) { @@ -1627,7 +1653,7 @@ task jalviewjsTranspile(type: Exec) { stdout = new ByteArrayOutputStream() stderr = new ByteArrayOutputStream() - def logOutFileName = "${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}" + def logOutFileName = "${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_j2s_transpile_stdout}" def logOutFile = file(logOutFileName) logOutFile.createNewFile() logOutFile.text = """ROOT: ${jalviewjs_eclipse_root} @@ -1669,25 +1695,25 @@ DEBUG: ${eclipseDebug} doLast { if (stdout.toString().contains("Error processing ")) { // j2s did not complete transpile - throw new GradleException("Error during transpilation:\n${stderr}\nSee eclipse transpile log file '${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_j2s_stdout}'") + throw new GradleException("Error during transpilation:\n${stderr}\nSee eclipse transpile log file '${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_j2s_transpile_stdout}'") } } inputs.dir("${jalviewDir}/${sourceDir}") - outputs.dir("${jalviewDir}/${jalviewjsTransferSiteJSDir}") - outputs.upToDateWhen( { file("${jalviewDir}/${jalviewjsTransferSiteJSDir}${jalviewjs_server_resource}").exists() } ) + outputs.dir("${jalviewDir}/${jalviewjsTransferSiteJsDir}") + outputs.upToDateWhen( { file("${jalviewDir}/${jalviewjsTransferSiteJsDir}${jalviewjs_server_resource}").exists() } ) } -// this Copy version of TransferSite will delete anything else in the target dir -task jalviewjsCopyTransferSite(type: Copy) { +// this Copy version of TransferSiteJs will delete anything else in the target dir +task jalviewjsCopyTransferSiteJs(type: Copy) { dependsOn jalviewjsTranspile - from "${jalviewDir}/${jalviewjsTransferSiteJSDir}" + from "${jalviewDir}/${jalviewjsTransferSiteJsDir}" into "${jalviewDir}/${jalviewjsSiteDir}" } // this Sync version of TransferSite is used by buildship to keep the website automatically up to date when a file changes -task jalviewjsSyncTransferSite(type: Sync) { - from "${jalviewDir}/${jalviewjsTransferSiteJSDir}" +task jalviewjsSyncTransferSiteJs(type: Sync) { + from "${jalviewDir}/${jalviewjsTransferSiteJsDir}" include "**/*.*" into "${jalviewDir}/${jalviewjsSiteDir}" preserve { @@ -1695,15 +1721,15 @@ task jalviewjsSyncTransferSite(type: Sync) { } } -jalviewjsSyncLib.mustRunAfter jalviewjsCopyTransferSite -jalviewjsSyncResources.mustRunAfter jalviewjsCopyTransferSite -jalviewjsSyncSiteResources.mustRunAfter jalviewjsCopyTransferSite -jalviewjsSyncBuildProperties.mustRunAfter jalviewjsCopyTransferSite +jalviewjsSyncLib.mustRunAfter jalviewjsCopyTransferSiteJs +jalviewjsSyncResources.mustRunAfter jalviewjsCopyTransferSiteJs +jalviewjsSyncSiteResources.mustRunAfter jalviewjsCopyTransferSiteJs +jalviewjsSyncBuildProperties.mustRunAfter jalviewjsCopyTransferSiteJs -jalviewjsSyncLib.mustRunAfter jalviewjsSyncTransferSite -jalviewjsSyncResources.mustRunAfter jalviewjsSyncTransferSite -jalviewjsSyncSiteResources.mustRunAfter jalviewjsSyncTransferSite -jalviewjsSyncBuildProperties.mustRunAfter jalviewjsSyncTransferSite +jalviewjsSyncLib.mustRunAfter jalviewjsSyncTransferSiteJs +jalviewjsSyncResources.mustRunAfter jalviewjsSyncTransferSiteJs +jalviewjsSyncSiteResources.mustRunAfter jalviewjsSyncTransferSiteJs +jalviewjsSyncBuildProperties.mustRunAfter jalviewjsSyncTransferSiteJs task jalviewjsPrepareSite { group "JalviewJS" @@ -1712,18 +1738,21 @@ task jalviewjsPrepareSite { dependsOn jalviewjsSyncResources dependsOn jalviewjsSyncSiteResources dependsOn jalviewjsSyncBuildProperties + dependsOn jalviewjsSyncCore } task jalviewjsBuildSite { group "JalviewJS" description "Builds the whole website including transpiled code" - dependsOn jalviewjsCopyTransferSite + dependsOn jalviewjsCopyTransferSiteJs dependsOn jalviewjsPrepareSite } task cleanJalviewjsSite { doFirst { - delete "${jalviewDir}/${jalviewjsTransferSiteJSDir}" + delete "${jalviewDir}/${jalviewjsTransferSiteJsDir}" + delete "${jalviewDir}/${jalviewjsTransferSiteLibDir}" + delete "${jalviewDir}/${jalviewjsTransferSiteCoreDir}" delete "${jalviewDir}/${jalviewjsSiteDir}" } } @@ -1811,12 +1840,12 @@ task jalviewjs { } -task jalviewjsIDE_CopyTransferSite(type: Copy) { - from "${jalviewDir}/${jalviewjsTransferSiteJSDir}" +task jalviewjsIDE_CopyTransferSiteJs(type: Copy) { + from "${jalviewDir}/${jalviewjsTransferSiteJsDir}" into "${jalviewDir}/${jalviewjsSiteDir}" } -task jalviewjsIDE_j2s { +task jalviewjsIDE_j2sFile { group "00 JalviewJS in Eclipse" description "Creates the .j2s file" dependsOn jalviewjsCreateJ2sSettings @@ -1825,7 +1854,7 @@ task jalviewjsIDE_j2s { task jalviewjsIDE_AssembleSite { group "00 JalviewJS in Eclipse" description "Assembles the Eclipse transpiled site and unzips supporting zipfiles" - dependsOn jalviewjsIDE_CopyTransferSite + dependsOn jalviewjsIDE_CopyTransferSiteJs dependsOn jalviewjsPrepareSite } @@ -1844,11 +1873,153 @@ task jalviewjsIDE_Server { // buildship runs this at import task eclipseSynchronizationTask { dependsOn eclipseSetup - dependsOn jalviewjsIDE_j2s + dependsOn jalviewjsIDE_j2sFile } // buildship runs this at build time task eclipseAutoBuildTask { - dependsOn jalviewjsSyncTransferSite + dependsOn jalviewjsSyncTransferSiteJs dependsOn jalviewjsPrepareSite } + + + + + + + + +// closure + +def jalviewjsCallCore(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}" + println(msg) + logOutFile.createNewFile() + logOutFile.append(msg+"\n") + + def coreTop = file(prefixFile) + def coreBottom = file(suffixFile) + coreFile.getParentFile().mkdirs() + coreFile.createNewFile() + coreFile.write( coreTop.text ) + list.each { + f -> + if (f.exists()) { + def t = f.text + t.replaceAll("Clazz\\.","Clazz_") + t.replaceAll("Class__","Clazz._") + coreFile.append( t ) + } else { + msg = "...file "+f.getPath()+" does not exist, skipping" + println(msg) + logOutFile.append(msg+"\n") + } + } + coreFile.append( coreBottom.text ) + + msg = "Generating ${zjsfile}" + println(msg) + logOutFile.append(msg+"\n") + def logOutFOS = new FileOutputStream(logOutFile, true) // true == append + def logErrFOS = logOutFOS + + javaexec { + classpath = files(["${jalviewDir}/tools/closure_compiler.jar"]) + args = [ "--js", jsfile, "--js_output_file", zjsfile ] + + msg = "\nRunning '"+commandLine.join(' ')+"'\n" + println(msg) + logOutFile.append(msg+"\n") + + if (logOutConsole) { + standardOutput = new org.apache.tools.ant.util.TeeOutputStream( + new org.apache.tools.ant.util.TeeOutputStream( + logOutFOS, + stdout), + standardOutput) + errorOutput = new org.apache.tools.ant.util.TeeOutputStream( + new org.apache.tools.ant.util.TeeOutputStream( + logErrFOS, + stderr), + errorOutput) + } else { + standardOutput = new org.apache.tools.ant.util.TeeOutputStream( + logOutFOS, + stdout) + errorOutput = new org.apache.tools.ant.util.TeeOutputStream( + logErrFOS, + stderr) + } + } + msg = "--" + println(msg) + logOutFile.append(msg+"\n") +} + + + +task jalviewjsBuildAllCores { + group "JalviewJS" + description "Build the core js lib closures" + + dependsOn jalviewjsSitePath + dependsOn jalviewjsTransferUnzipLib + dependsOn jalviewjsTranspile + + def j2sDir = "${jalviewDir}/${jalviewjsTransferSiteJsDir}/${jalviewjs_j2s_subdir}" + def jsDir = "${jalviewDir}/${jalviewjsTransferSiteLibDir}/${jalviewjs_js_subdir}" + def outputDir = "${jalviewDir}/${jalviewjsTransferSiteCoreDir}/${jalviewjs_j2s_subdir}/core" + def prefixFile = "${jsDir}/core/coretop2.js" + def suffixFile = "${jsDir}/core/corebottom2.js" + + inputs.file prefixFile + inputs.file suffixFile + + def classlists = [] + fileTree(dir: "${jalviewDir}/${jalviewjs_classlists_dir}", include: "*.txt").each { + file -> + def name = file.getName() - ".txt" + + def filelist = [] + file.eachLine { + line -> + filelist += line + } + def list = fileTree(dir: j2sDir, includes: filelist) + + def coreFileName = "core${name}.js" + def jsfile = "${outputDir}/${coreFileName}" + def coreZFileName = "core${name}.z.js" + def zjsfile = "${outputDir}/${coreZFileName}" + + classlists += [ + 'jsfile': jsfile, + 'zjsfile': zjsfile, + 'list': list + ] + + inputs.file(file) + inputs.files(list) + outputs.file(jsfile) + outputs.file(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")) + } + } + +}