Ich habe zwei Aufgaben in waf
und sie müssen in der richtigen Reihenfolge ausgeführt werden, und die zweite Aufgabe muss warten, bis die erste Aufgabe beendet ist.Sag Waf, dass die Aufgabe beendet wird, bevor die nächste Aufgabe gestartet wird
Um zu zeigen, dass es die Art und Weise benimmt ich es erwartet zu arbeiten, ich warte in den Aufgaben in der ersten Aufgabe (t_1
) Sekunden und in der zweiten Aufgabe (t_2
) Sekunden. Und die zweite Aufgabe endet zuerst. Dies ist zu sehen, da die Ordner, die ich nach dem Warten erstellt habe, die Zeitstempel t_2 < t_1
haben.
In einer Frage: Wie kann ich sagen, waf, dass t_2
exectued nach t_1
erfolgreich abgeschlossen?
MWE: wscript
from waflib import Context, Options from waflib import Task, TaskGen from waflib.Tools.compiler_c import c_compiler def options(opt): opt.load('compiler_c') def configure(cnf): cnf.load('compiler_c') def build(bld): bld.program(features=['t_1', 't_2'], source='main.c', target='abc') class t_1(Task.Task): always_run = True run_str = 'echo start t_1 && python -c "import time; time.sleep(4)" && echo end t_1 && mkdir t_1' color = 'RED' @TaskGen.feature('t_1') @TaskGen.after('apply_link') @TaskGen.before('t_2') def add_t_1_task(self): self.create_task('t_1') class t_2(Task.Task): always_run = True run_str = 'echo start t_2 && python -c "import time; time.sleep(1)" && echo end t_2 && mkdir t_2' color = 'RED' @TaskGen.feature('t_2') @TaskGen.after('apply_link', 't_1') def add_t_2_task(self): self.create_task('t_2')
'@ TaskGen.before ('t_2')' ist falsch. Es sollte '@ TaskGen.before ('add_t_2_task')' sein. Außerdem ist es nicht notwendig. Die Aufgaben 't_1' und' t_2' können in Ihrem Beispiel in beliebiger Reihenfolge erstellt werden. Was wichtig ist, ist die Ausführungsreihenfolge. – neuro
Danke für den Kommentar. Wo finde ich die Dokumentation, die ich brauche, um die Aufgabengenerierungsmethoden und nicht Aufgaben als Einschränkung zu setzen? Aber meine Lösung für das Problem, 'after = ['t_1']' in 't_2 (Task.Task) zu verwenden:' ist richtig? – wafwafwaf
@neuro Entschuldigung für die Frage, aber wie Sie sehr erfahren mit Waf scheinen, würde ich sehr schätzen, wenn Sie mir sagen würden, wo in der Dokumentation zu finden? – wafwafwaf