diff --git a/common.mk b/common.mk index 711ef25b2f..b36e0b53f0 100644 --- a/common.mk +++ b/common.mk @@ -1377,7 +1377,7 @@ no-test-bundled-gems-prepare: no-test-bundled-gems-precheck yes-test-bundled-gems-prepare: yes-test-bundled-gems-precheck $(ACTIONS_GROUP) $(XRUBY) -C "$(srcdir)" bin/gem install --no-document \ - --install-dir .bundle --conservative "bundler" "minitest:~> 5" "test-unit" "rake" "hoe" "yard" "pry" "packnga" "rexml" "json-schema" + --install-dir .bundle --conservative "bundler" "minitest:~> 5" "test-unit" "rake" "hoe" "yard" "pry" "packnga" "rexml" "json-schema" "test-unit-rr" $(ACTIONS_ENDGROUP) PREPARE_BUNDLED_GEMS = test-bundled-gems-prepare diff --git a/gems/bundled_gems b/gems/bundled_gems index c6a4c77d14..275309de5a 100644 --- a/gems/bundled_gems +++ b/gems/bundled_gems @@ -13,3 +13,4 @@ matrix 0.4.2 https://github.com/ruby/matrix prime 0.1.2 https://github.com/ruby/prime rbs 1.6.2 https://github.com/ruby/rbs typeprof 0.15.3 https://github.com/ruby/typeprof +debug 1.2.2 https://github.com/ruby/debug 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)