[macruby-changes] [3340] MacRuby/trunk/rakelib/builder.rake

source_changes at macosforge.org source_changes at macosforge.org
Tue Jan 26 11:49:02 PST 2010


Revision: 3340
          http://trac.macosforge.org/projects/ruby/changeset/3340
Author:   eloy.de.enige at gmail.com
Date:     2010-01-26 11:48:59 -0800 (Tue, 26 Jan 2010)
Log Message:
-----------
Allow the extensions to be compiled parallel.

Modified Paths:
--------------
    MacRuby/trunk/rakelib/builder.rake

Modified: MacRuby/trunk/rakelib/builder.rake
===================================================================
--- MacRuby/trunk/rakelib/builder.rake	2010-01-26 19:48:49 UTC (rev 3339)
+++ MacRuby/trunk/rakelib/builder.rake	2010-01-26 19:48:59 UTC (rev 3340)
@@ -337,28 +337,31 @@
 
 EXTENSIONS = ['ripper', 'digest', 'etc', 'readline', 'libyaml', 'fcntl', 'socket', 'zlib', 'bigdecimal', 'openssl', 'json'].sort
 def perform_extensions_target(target)
+  commands = []
   EXTENSIONS.map { |x| File.join('ext', x) }.each do |ext_dir|
     Dir.glob(File.join(ext_dir, '**/extconf.rb')) do |p|
+      cmd = []
       dir = File.dirname(p)
       Dir.chdir(dir) do
-        $stderr.puts "cd #{dir}"
         srcdir = File.join(*dir.split(File::SEPARATOR).map { |x| '..' })
         next if target == :clean and !File.exist?('Makefile')
         if !File.exist?('Makefile') or File.mtime('extconf.rb') > File.mtime('Makefile')
-          sh "#{srcdir}/miniruby -I#{srcdir} -I#{srcdir}/lib -r rbconfig -e \"RbConfig::CONFIG['libdir'] = '#{srcdir}'; require './extconf.rb'\""
+          cmd <<  "cd #{dir} && #{srcdir}/miniruby -I#{srcdir} -I#{srcdir}/lib -r rbconfig -e \"RbConfig::CONFIG['libdir'] = '#{srcdir}'; require './extconf.rb'\""
         end
-        line = "/usr/bin/make top_srcdir=#{srcdir} ruby=\"#{srcdir}/miniruby -I#{srcdir} -I#{srcdir}/lib\" extout=#{srcdir}/.ext hdrdir=#{srcdir}/include arch_hdrdir=#{srcdir}/include"
+        line = "cd #{dir} && /usr/bin/make top_srcdir=#{srcdir} ruby=\"#{srcdir}/miniruby -I#{srcdir} -I#{srcdir}/lib\" extout=#{srcdir}/.ext hdrdir=#{srcdir}/include arch_hdrdir=#{srcdir}/include"
         case target
           when :all
             line << " libdir=#{srcdir}"
           else
             line << " #{target}"
         end
-        sh line
-        rm_f 'Makefile' if target == :clean
+        cmd << line
+        cmd << 'rm -f Makefile' if target == :clean
+        commands << cmd
       end
     end
   end
+  Builder.parallel_execute(commands)
 end
 
 desc "Build extensions"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100126/f633f6dc/attachment.html>


More information about the macruby-changes mailing list