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
sS standardCredentials() { ret ""; } // public snippets only
// (transpilation md5, snippetID) => jar file
//static new SerializeComputations computations;
// transpilation md5 => jar file
static new SerializeComputations computations;
static File compileSrcLib(S srcLibID) {
new CompilerBot2 subBot;
subBot.dontCompile = true;
ret assertFileExists(subBot.compileSnippet(srcLibID));
}
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";
bool forceCompilation = eq(params.get("forceCompilation"), "1");
File jar;
try {
jar = computations.get(srcMD5/*, snippetID)*/, -> {
print("Entering compilation (forceCompilation=" + forceCompilation + ")");
new CompilerBot2 bot;
bot.forceCompilation = forceCompilation;
bot.compileSrcLib = lambda1 compileSrcLib;
ret bot.compileSnippet(snippetID);
});
} catch print e {
// dexcompile.php can't handle code 500
ret /*subBot_serve500*/("Error. " + e);
}
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"));
bool uncompressed = eq("1", params.get("uncompressed"));
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 (uncompressed) jar2 = appendToBaseFileName(jar2, ".uncomp");
bool withSrc = !noSrc;
IPred generalFileFilter = f ->
(withSrc || !endsWith(f, ".java"))
&& !startsWith(f, "META-INF/versions/"); // see flatlaf jar
if (!eq(jar, jar2)) {
if (fileLength(jar2) <= 22 || forceRepackage) {
temp var jarOut = zipOutputStream(jar2);
new Set entries;
text2zip(jarOut, "source.txt",
renderColonProperties(
jar := f2s(jar2),
packagingDate := dateWithSecondsUTC()));
Zip2Zip_b z2z = new(jar, jarOut, entries);
z2z.predicate = generalFileFilter;
if (uncompressed) z2z.modifyZipEntry = e -> {
e.setMethod(ZipOutputStream.STORED);
e.setCompressedSize(e.getSize());
};
z2z.run();
if (withLibs) {
Pair srcAndLibs = extractLibsFromTranspilation(transpiledSrc);
fOr (S libID : srcAndLibs.b) {
File fixer = compilerBotDestDir("fixer" + psI(libID) + ".jar");
if (fileExists(fixer)) {
println("APPLYING FIXER: " + fixer);
z2z.inZip = fixer;
z2z.predicate = null;
z2z.run();
}
z2z.inZip = loadLibraryOrSrcLib(libID, lambda1 compileSrcLib);
z2z.run();
}
}
if (withX30) {
z2z.inZip = pathToJavaxJar();
z2z.predicate = null;
z2z.run();
} else if (noCompiler) {
z2z.inZip = pathToJavaxJar();
z2z.predicate = name -> !
startsWithOneOf(name, "org/eclipse/", "META-INF/", "ecj.", "about.html");
z2z.run();
} else if (dynamicObjectOnly) {
z2z.inZip = pathToJavaxJar();
z2z.predicate = name -> contains(name, "DynamicObject");
z2z.run();
}
}
jar = jar2;
}
print("Serving jar for " + snippetID + ": " + renderFileInfo(jar));
if (eq(params.get("makeJarOnly"), "1"))
ret "OK: " + f2s(jar);
else
ret subBot_serveFileWithName(jar, psI(snippetID) + ".jar", "application/java-archive");
}