mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 aaf07f7ad5
			
		
	
	
		aaf07f7ad5
		
	
	
	
	
		
			
			* [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
 |