summaryrefslogtreecommitdiff
path: root/lib/rubygems/ext/rake_builder.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/ext/rake_builder.rb')
-rw-r--r--lib/rubygems/ext/rake_builder.rb40
1 files changed, 20 insertions, 20 deletions
diff --git a/lib/rubygems/ext/rake_builder.rb b/lib/rubygems/ext/rake_builder.rb
index ec904e6c11..d702d7f339 100644
--- a/lib/rubygems/ext/rake_builder.rb
+++ b/lib/rubygems/ext/rake_builder.rb
@@ -1,4 +1,5 @@
# frozen_string_literal: true
+
#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
@@ -6,32 +7,31 @@
#++
class Gem::Ext::RakeBuilder < Gem::Ext::Builder
-
- def self.build(extension, directory, dest_path, results, args=[], lib_dir=nil)
- if File.basename(extension) =~ /mkrf_conf/i then
- cmd = "#{Gem.ruby} #{File.basename extension}".dup
- cmd << " #{args.join " "}" unless args.empty?
- run cmd, results
+ def self.build(extension, dest_path, results, args = [], lib_dir = nil, extension_dir = Dir.pwd,
+ target_rbconfig = Gem.target_rbconfig, n_jobs: nil)
+ if target_rbconfig.path
+ warn "--target-rbconfig is not yet supported for Rake extensions. Ignoring"
end
- # Deal with possible spaces in the path, e.g. C:/Program Files
- dest_path = '"' + dest_path.to_s + '"' if dest_path.to_s.include?(' ')
-
- rake = ENV['rake']
-
- rake ||= begin
- "#{Gem.ruby} -rubygems #{Gem.bin_path('rake', 'rake')}"
- rescue Gem::Exception
- end
+ if /mkrf_conf/i.match?(File.basename(extension))
+ run([Gem.ruby, File.basename(extension), *args], results, class_name, extension_dir)
+ end
- rake ||= Gem.default_exec_format % 'rake'
+ rake = ENV["rake"]
- cmd = "#{rake} RUBYARCHDIR=#{dest_path} RUBYLIBDIR=#{dest_path}" # ENV is frozen
+ if rake
+ rake = shellsplit(rake)
+ else
+ begin
+ rake = ruby << "-rrubygems" << Gem.bin_path("rake", "rake")
+ rescue Gem::Exception
+ rake = [Gem.default_exec_format % "rake"]
+ end
+ end
- run cmd, results
+ rake_args = ["RUBYARCHDIR=#{dest_path}", "RUBYLIBDIR=#{dest_path}", *args]
+ run(rake + rake_args, results, class_name, extension_dir)
results
end
-
end
-