Revision: 3339 http://trac.macosforge.org/projects/ruby/changeset/3339 Author: eloy.de.enige@gmail.com Date: 2010-01-26 11:48:49 -0800 (Tue, 26 Jan 2010) Log Message: ----------- Moved the parallel_execute method to Builder and make it accept arrays of command arrays for dep. management. Modified Paths: -------------- MacRuby/trunk/rakelib/builder.rake MacRuby/trunk/rakelib/builder.rb Modified: MacRuby/trunk/rakelib/builder.rake =================================================================== --- MacRuby/trunk/rakelib/builder.rake 2010-01-26 14:18:47 UTC (rev 3338) +++ MacRuby/trunk/rakelib/builder.rake 2010-01-26 19:48:49 UTC (rev 3339) @@ -399,21 +399,6 @@ 'lib/yaml/rubytypes.rb', ] namespace :stdlib do - # Runs the given array of +commands+ in parallel. The amount of spawned - # simultaneous jobs is determined by the `j' env variable and defaults to 1. - def parallel_execute(commands) - @jobs ||= ENV['j'] ? ENV['j'].to_i : 1 - commands = commands.dup - - Array.new(@jobs) do - Thread.new do - while command = commands.shift - sh command - end - end - end.each { |t| t.join } - end - desc "AOT compile the stdlib" task :build => [:miniruby, 'macruby:dylib'] do archf = ARCHS.map { |x| "--arch #{x}" }.join(' ') @@ -425,7 +410,7 @@ end end end.flatten.compact - parallel_execute(commands) + Builder.parallel_execute(commands) end desc "Touch .rbo files to ignore their build" Modified: MacRuby/trunk/rakelib/builder.rb =================================================================== --- MacRuby/trunk/rakelib/builder.rb 2010-01-26 14:18:47 UTC (rev 3338) +++ MacRuby/trunk/rakelib/builder.rb 2010-01-26 19:48:49 UTC (rev 3339) @@ -124,6 +124,24 @@ } class Builder + # Runs the given array of +commands+ in parallel. The amount of spawned + # simultaneous jobs is determined by the `j' env variable and defaults to 1. + # + # When the members of the +commands+ array are in turn arrays of strings, + # then those commands will be executed in consecutive order. + def self.parallel_execute(commands) + @jobs ||= ENV['j'] ? ENV['j'].to_i : 1 + commands = commands.dup + + Array.new(@jobs) do |i| + Thread.new do + while c = commands.shift + Array(c).each { |command| sh(command) } + end + end + end.each { |t| t.join } + end + attr_reader :objs, :cflags, :cxxflags attr_accessor :objc_cflags, :ldflags, :dldflags
participants (1)
-
source_changes@macosforge.org