aboutsummaryrefslogtreecommitdiffstats
path: root/tool
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2021-10-01 03:13:00 +0900
committerKoichi Sasada <ko1@atdot.net>2021-10-05 02:07:33 +0900
commitbc96a45f12503956e323e6c2a47aa550ca1da3dc (patch)
treec2bffe24d2e5d9ee80c42e00e34f9d437ccbd73b /tool
parentae1da7e1f76cabc6c2d9b45a6c56b1607200147a (diff)
downloadruby-bc96a45f12503956e323e6c2a47aa550ca1da3dc.tar.gz
introduce debug.gem
For the `test-bundled-gems`, make `debug.so` with extconf.rb and `make` command directly because `rake-compiler` assume ruby is installed (but `test-bundled-gems` can run without installation).
Diffstat (limited to 'tool')
-rwxr-xr-xtool/rbinstall.rb17
-rw-r--r--tool/test-bundled-gems.rb10
2 files changed, 26 insertions, 1 deletions
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index 0e88d93c8f..6629b4aa73 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -989,6 +989,20 @@ def install_default_gem(dir, srcdir, bindir)
end
install?(:ext, :comm, :gem, :'bundled-gems') do
+ if CONFIG['CROSS_COMPILING'] == 'yes'
+ # The following hacky steps set "$ruby = BASERUBY" in tool/fake.rb
+ $hdrdir = ''
+ $extmk = nil
+ $ruby = nil # ...
+ ruby_path = $ruby + " -I#{Dir.pwd}" # $baseruby + " -I#{Dir.pwd}"
+ else
+ # ruby_path = File.expand_path(with_destdir(File.join(bindir, ruby_install_name)))
+ ENV['RUBYLIB'] = nil
+ ENV['RUBYOPT'] = nil
+ ruby_path = File.expand_path(with_destdir(File.join(bindir, ruby_install_name))) + " --disable=gems -I#{with_destdir(archlibdir)}"
+ end
+ Gem.instance_variable_set(:@ruby, ruby_path) if Gem.ruby != ruby_path
+
gem_dir = Gem.default_dir
install_dir = with_destdir(gem_dir)
prepare "bundled gems", gem_dir
@@ -1009,7 +1023,8 @@ install?(:ext, :comm, :gem, :'bundled-gems') do
:format_executable => true,
}
gem_ext_dir = "#$extout/gems/#{CONFIG['arch']}"
- extensions_dir = Gem::StubSpecification.gemspec_stub("", gem_dir, gem_dir).extensions_dir
+ extensions_dir = with_destdir(Gem::StubSpecification.gemspec_stub("", gem_dir, gem_dir).extensions_dir)
+
File.foreach("#{srcdir}/gems/bundled_gems") do |name|
next if /^\s*(?:#|$)/ =~ name
next unless /^(\S+)\s+(\S+).*/ =~ name
diff --git a/tool/test-bundled-gems.rb b/tool/test-bundled-gems.rb
index 6419ffaa50..ef491f9db4 100644
--- a/tool/test-bundled-gems.rb
+++ b/tool/test-bundled-gems.rb
@@ -1,5 +1,6 @@
require 'rbconfig'
require 'timeout'
+require 'fileutils'
github_actions = ENV["GITHUB_ACTIONS"] == "true"
@@ -40,6 +41,15 @@ File.foreach("#{gem_dir}/bundled_gems") do |line|
test_command << " 'TESTOPTS=-e /test_stub_value_block_args_5__break_if_not_passed|test_no_method_error_on_unexpected_methods/'"
end
+ if gem == "debug"
+ build_dir = 'ext/-test-/gems/debug'
+ FileUtils.mkdir_p(build_dir)
+ extconf_path = File.expand_path('../../gems/src/debug/ext/debug/extconf.rb', __FILE__)
+ system("#{ruby} -C #{build_dir} #{extconf_path}") or raise
+ system("cd #{build_dir} && make extout=../../../../.ext libdir=../../../..") or raise
+ ENV["RUBYLIB"] = [File.expand_path(build_dir + "/.."), ENV.fetch("RUBYLIB", nil)].compact.join(":")
+ end
+
print "[command]" if github_actions
puts test_command
pid = Process.spawn(test_command, "#{/mingw|mswin/ =~ RUBY_PLATFORM ? 'new_' : ''}pgroup": true)