Fragen? Antworten! Siehe auch: Alternativlos
Das Problem, wenn man seinen ganzen Scheiß selber schreibt, ist, dass gelegentlich was nicht funktioniert, und dann muss man rumdebuggen. Heute habe ich mal wieder eine längliche Session hinter mir. Das Symptom war, dass libjava in gcc nicht baut. Das erste Problem war, dass gcc ein GNU cmp feature benutzt, nämlich --ignore-initial, welches mein cmp nicht implementiert. Meine Versionen der Utilities implementieren im Allgemeinen nur die Features, die von der Single Unix Specification verlangt werden.
gcc möchte dieses cmp-Feature haben, weil der Buildprozess Dateien vergleichen will, ohne die ersten 16 Bytes mitzuvergleichen. Daher guckt configure, ob cmp die Option kennt, und wenn nicht, dann gibt es einen Fallback auf tail +16c in Tempdateien. Ich habe zwar auch ein tail, aber das war nicht in meinem $PATH, da war das tail von coreutils. Und das kennt seit ein paar Versionen +16c nicht mehr. Tolle Wurst.
Stellt sich raus, dass mein eigenes tail das doch gekannt hätte. Das habe ich mal aus genau dem Grund implementiert. Gut, weiter im Text. Kompiliert immer noch nicht. Symptom sind irgendwelche Linkfehler im Java-Toolkit. Stellt sich raus, dass da in einem .zip-File irgendwelche Klassen fehlten. Hat auch nur einige Stunden gedauert, das rauszufinden. Stellt sich raus, dass die folgendes tun: cp -pR dir1 dir2. Problem 1: mein cp kannte nur -r, nicht -R. Mein Fehler, schnell gefixt. Problem 2: mein cp hat sich geweigert, die Kopie durchzuführen, wenn das Zielverzeichnis schon existierte. Problem 3: mein cp hat dann zwar eine Fehlermeldung rausgehauen, aber keinen nonzero-Exitcode gehabt, daher hat der gcc-Build nicht abgebrochen. Nachdem ich das gefixt hatte, läuft der gcc-Compile anscheinend durch. Ich sage anscheinend, weil ich das in meinem 3 GB Ramdisk zu kompilieren versucht habe, und die war voll. 3 GB ist zu wenig, um gcc zu kompilieren. O tempora, o mores. Ich habe hier noch eine 40 MB Platte rumliegen irgendwo. Ja, MB. Nicht GB.
Oh und warum wollte ich gcc kompilieren? Um Dragonegg auszuprobieren. Und: Es funktioniert! Coole Scheiße!