2016-03-29 6 views
0

Ich versuche, eine SCons basierte Build zu erstellen.Wie vermeiden SCons gemischten Ausgang mit -j Parameter?

Jeder Builder, den ich verwende, verfügt über mehr als eine Aktion, die in Konsole mit sys.stdout.write() schreiben kann.

Das Problem ist, dass die Konsolenausgabe zwischen verschiedenen Jobs gemischt ist.

Ist ein Fix verfügbar? Ich möchte die gesamte Konsolenausgabe für einen bestimmten Job an derselben Stelle nach der Ausführung haben.

Antwort

0

Sie versuchen, auf dieselbe Ressource (stdout) von mehreren Prozessen zuzugreifen, die parallel ausgeführt werden ... es gibt keine einfache Lösung dafür (siehe auch xargs: losing output when redirecting stdout to a file in parallel mode).

Sie könnten versuchen, die Ausgabe für jede Zwischenaktion in eine temporäre Datei zu schreiben und dann mit der letzten Aktion die vollständige und aggregierte Ausgabe aus der Datei schließlich in stdout zu schreiben. So haben Sie größere zusammenhängende Textblöcke in der Ausgabe ... aber Sie könnten auch einige Informationen verlieren, wenn eine Zwischenaktion den Build durch das Auslösen einer Ausnahme zum Beispiel beendet. Dann werden Sie möglicherweise überhaupt keine Ausgabe erhalten ... was das Debugging viel schwieriger macht.