mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* [Misc #13792] [ruby-core:82287] * Prefer test-spec over test-rubyspec in spec/README. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59980 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# -*- ruby -*-
 | 
						|
$VERBOSE = false
 | 
						|
if (opt = ENV["RUBYOPT"]) and (opt = opt.dup).sub!(/(?:\A|\s)-w(?=\z|\s)/, '')
 | 
						|
  ENV["RUBYOPT"] = opt
 | 
						|
end
 | 
						|
require "./rbconfig" unless defined?(RbConfig)
 | 
						|
load File.dirname(__FILE__) + '/ruby/default.mspec'
 | 
						|
OBJDIR = File.expand_path("spec/ruby/optional/capi/ext")
 | 
						|
class MSpecScript
 | 
						|
  builddir = Dir.pwd
 | 
						|
  srcdir = ENV['SRCDIR']
 | 
						|
  if !srcdir and File.exist?("#{builddir}/Makefile") then
 | 
						|
    File.open("#{builddir}/Makefile", "r:US-ASCII") {|f|
 | 
						|
      f.read[/^\s*srcdir\s*=\s*(.+)/i] and srcdir = $1
 | 
						|
    }
 | 
						|
  end
 | 
						|
  srcdir = File.expand_path(srcdir)
 | 
						|
  config = RbConfig::CONFIG
 | 
						|
 | 
						|
  # The default implementation to run the specs.
 | 
						|
  set :target, File.join(builddir, "miniruby#{config['exeext']}")
 | 
						|
  set :prefix, File.expand_path('ruby', File.dirname(__FILE__))
 | 
						|
  set :flags, %W[
 | 
						|
    -I#{srcdir}/lib
 | 
						|
    #{srcdir}/tool/runruby.rb --archdir=#{Dir.pwd} --extout=#{config['EXTOUT']}
 | 
						|
    --
 | 
						|
  ]
 | 
						|
end
 | 
						|
 | 
						|
module MSpecScript::JobServer
 | 
						|
  def cores(max = 1)
 | 
						|
    if max > 1 and /(?:\A|\s)--jobserver-(?:auth|fds)=(\d+),(\d+)/ =~ ENV["MAKEFLAGS"]
 | 
						|
      cores = 1
 | 
						|
      begin
 | 
						|
        r = IO.for_fd($1.to_i(10), "rb", autoclose: false)
 | 
						|
        w = IO.for_fd($2.to_i(10), "wb", autoclose: false)
 | 
						|
        jobtokens = r.read_nonblock(max - 1)
 | 
						|
        cores = jobtokens.size
 | 
						|
        if cores > 0
 | 
						|
          cores += 1
 | 
						|
          jobserver = w
 | 
						|
          w = nil
 | 
						|
          at_exit {
 | 
						|
            jobserver.print(jobtokens)
 | 
						|
            jobserver.close
 | 
						|
          }
 | 
						|
          MSpecScript::JobServer.module_eval do
 | 
						|
            remove_method :cores
 | 
						|
            define_method(:cores) do
 | 
						|
              cores
 | 
						|
            end
 | 
						|
          end
 | 
						|
          return cores
 | 
						|
        end
 | 
						|
      rescue Errno::EBADF
 | 
						|
      ensure
 | 
						|
        r&.close
 | 
						|
        w&.close
 | 
						|
      end
 | 
						|
    end
 | 
						|
    super
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
class MSpecScript
 | 
						|
  prepend JobServer
 | 
						|
end
 |