diff --git a/ext/mini_racer_extension/extconf.rb b/ext/mini_racer_extension/extconf.rb index 66bb91d2..45fe32cf 100644 --- a/ext/mini_racer_extension/extconf.rb +++ b/ext/mini_racer_extension/extconf.rb @@ -77,13 +77,44 @@ def libv8_gem_name is_musl ? 'libv8-alpine' : 'libv8' end +# old rubygem versions prefer source gems to binary ones +# ... and their --platform switch is broken too, as it leaves the 'ruby' +# platform in Gem.platforms. +def force_platform_gem + gem_version = `gem --version` + return 'gem' unless $?.success? + + return 'gem' if gem_version.to_f.zero? || gem_version.to_f >= 2.3 + return 'gem' if RUBY_PLATFORM != 'x86_64-linux' + + gem_binary = `which gem` + return 'gem' unless $?.success? + + ruby = File.foreach(gem_binary.strip).first.sub(/^#!/, '').strip + unless File.file? ruby + warn "No valid ruby: #{ruby}" + return 'gem' + end + + require 'tempfile' + file = Tempfile.new('sq_mini_racer') + file << <