rscons/build_tests/simple/user_dep_build_order.rb
Josh Holtrop b882f8de99 Rework builder interface to only use #run method - close #91
The builder's #run method will be called repeatedly until it returns
true or false. The Builder#wait_for method can be used to cause a
builder to wait for a Thread, Command, or another Builder.
2019-02-17 22:08:39 -05:00

24 lines
628 B
Ruby

class TestBuilder < Rscons::Builder
def run(options)
if @command
true
else
if @target == "two"
return false unless File.exists?("one")
end
wait_time = @env.expand_varref("${wait_time}", @vars)
@command = ["ruby", "-e", "require 'fileutils'; sleep #{wait_time}; FileUtils.touch('#{@target}');"]
register_command("TestBuilder", @command)
end
end
end
build do
Environment.new do |env|
env.add_builder(TestBuilder)
one = env.TestBuilder("one", [], "wait_time" => "3")
two = env.TestBuilder("two", [], "wait_time" => "0")
env.depends(two, one)
end
end