Warning: session_start(): open(/var/lib/php/sessions/sess_tvu8g2jp678gc7s8p3kmg9l84f, 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
static class CompilerBot {
static bool verbose;
static File compileSnippet(S snippetID) {
ret compileSnippet(snippetID, "");
}
static Pair compileSnippet2(S snippetID) {
ret compileSnippet2(snippetID, "");
}
// returns jar path
static File compileSnippet(S snippetID, S javaTarget) {
ret compileSnippet2(snippetID, javaTarget).a;
}
// returns jar path, Java source
static Pair compileSnippet2(S snippetID, S javaTarget) {
S transpiledSrc = getServerTranspiled2(snippetID);
if (transpiledSrc == null) fail("Snippet not found or not public: " + snippetID);
int i = transpiledSrc.indexOf('\n');
String libs = transpiledSrc.substring(0, Math.max(0, i));
if (verbose)
print("Compiling snippet: " + snippetID + ". Libs: " + libs);
transpiledSrc = transpiledSrc.substring(i+1);
return pair(compile(transpiledSrc, libs, javaTarget, snippetID), transpiledSrc);
}
static File compile(S src) {
ret compile(src, "");
}
static File compile(S src, S libs) {
ret compile(src, libs, null);
}
static File compile(S src, S dehlibs, S javaTarget) {
ret compile(src, dehlibs, javaTarget, null);
}
static File compile(S src, S dehlibs, S javaTarget, S progID) {
if (verbose)
print("Compiling " + l(src) + " chars");
// Note: This is different from the calculation in x30
// (might lead to programs being compiled twice)
S md5 = md5(dehlibs + "\n" + src + "\n" + fsIOpt(progID));
File jar = getJarFile(md5);
if (jar == null || jar.length() <= 22) {
// have to compile
//print("Have to compile: " + progID + " / " + md5);
LS mainClass = findMainClass(javaTok(src));
bool canRename = mainClass != null && useDummyMainClasses() && isSnippetID(progID) && !tok_classHasModifier(mainClass, "public");
if (verbose)
print("useRenaming: " + useDummyMainClasses() + ", canRename: " + canRename + ", progID: " + progID);
javaCompileToJar_optionalRename(src, dehlibs, jar, canRename ? progID : null, progID);
} else {
if (verbose)
print("Getting classes from cache (" + jar.getAbsolutePath() + ", " + jar.length() + " bytes)");
touchFile(jar); // so we can find the unused ones easier
}
ret jar;
}
// look in non-virtual JavaX-Caches first (important for packaged programs)
static File getJarFile(S md5) {
assertTrue(isMD5(md5));
S sub = "JavaX-Caches/#1002203/" + md5 + ".jar";
File f = actualUserDir(sub);
ret fileExists(f) ? f : userDir(sub);
}
}