Warning: session_start(): open(/var/lib/php/sessions/sess_5a17uhokbhfruhtl3puhp4eflv, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
sbool javacOnly = true; // when ECJ bugs
sS defaultJavaTarget = "1.8";
sS standardCredentials() { ret ""; } // public snippets only
// (transpilation md5, snippetID) => jar file
//static new SerializeComputations computations;
// transpilation md5 => jar file
static new SerializeComputations computations;
html {
// lock lock; // now using SerializeComputations
uri = dropPrefixSlash(uri);
S snippetID = fsI(uri);
if (!isSnippetPublic(snippetID)) fail("Snippet not public: " + snippetID);
S transpiledSrc = getServerTranspiled2(snippetID);
// md5 check (if parameter supplied)
S md5 = params.get('md5);
S srcMD5 = md5(transpiledSrc);
if (md5 != null && !eq(md5, srcMD5)) ret "md5 mismatch";
File jar = computations.get(srcMD5/*, snippetID)*/, -> {
remutable transpiledSrc;
int i = transpiledSrc.indexOf('\n');
S libs = transpiledSrc.substring(0, Math.max(0, i));
printVars(+snippetID, +libs);
transpiledSrc = transpiledSrc.substring(i+1);
S javaTarget = or(params.get('javaTarget), defaultJavaTarget);
CompilerBot.verbose = true;
set(x30, +javacOnly);
ret CompilerBot.compile(transpiledSrc, libs, javaTarget, snippetID);
});
bool forceRepackage = eq("1", params.get("repackage"));
bool withLibs = eq("1", params.get("withLibs"));
bool noCompiler = eq("1", params.get("noCompiler"));
bool withX30 = eq("1", params.get("withX30"));
bool noSrc = eq("1", params.get("noSrc"));
bool dynamicObjectOnly = eq("dynamicObjectOnly", params.get("mode"));
File jar2 = jar;
if (withLibs) jar2 = appendToBaseFileName(jar2, ".with-libs");
if (noCompiler) jar2 = appendToBaseFileName(jar2, ".no-compiler");
if (dynamicObjectOnly) jar2 = appendToBaseFileName(jar2, ".dynamicObjectOnly");
if (noSrc) jar2 = appendToBaseFileName(jar2, ".noSrc");
if (!eq(jar, jar2)) {
if (fileLength(jar2) <= 22 || forceRepackage) {
temp var jarOut = zipOutputStream(jar2);
new Set entries;
text2zip(jarOut, "source.txt", f2s(jar2));
bool withSrc = !noSrc;
zip2zip_collectFiles(jar, jarOut, entries, name -> withSrc || !endsWith(name, ".java"));
if (withLibs) {
Pair srcAndLibs = extractLibsFromTranspilation(transpiledSrc);
fOr (S libID : srcAndLibs.b) {
zip2zip_collectFiles(loadLibraryOrSrcLib(libID), jarOut, entries);
if (withSrc && isSrcLib(libID))
text2zip("lib" + libID + ".java", jarOut, getServerTranspiledWithoutLibs(libID)); // TODO: use actual package and main class
}
}
if (withX30)
zip2zip_collectFiles(pathToJavaxJar(), jarOut, entries);
else if (noCompiler)
zip2zip_collectFiles(pathToJavaxJar(), jarOut, entries, name -> !
startsWithOneOf(name, "org/eclipse/", "META-INF/"));
else if (dynamicObjectOnly)
zip2zip_collectFiles(pathToJavaxJar(), jarOut, entries, name -> contains(name, "DynamicObject"));
}
jar = jar2;
}
print("Serving jar for " + snippetID + ": " + renderFileInfo(jar));
ret subBot_serveFileWithName(jar, psI(snippetID) + ".jar", "application/java-archive");
}