【发布时间】:2018-01-22 18:21:05
【问题描述】:
我在waf 中有两个任务,它们需要以正确的顺序执行,第二个任务必须等到第一个任务完成。
为了表明它的行为方式符合我的预期,我在任务内等待,在第一个任务 (t_1) 4 秒和第二个任务 (t_2) 1 秒。第二个任务首先完成。这可以看出,因为我等待后创建的文件夹有时间戳t_2 < t_1。
在一个问题中:
如何告诉 waf,t_2 是在 t_1 成功完成后执行的?
-
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')
【问题讨论】: