diff options
Diffstat (limited to 'lib/rake/compiler_config.rb')
-rw-r--r-- | lib/rake/compiler_config.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/rake/compiler_config.rb b/lib/rake/compiler_config.rb new file mode 100644 index 0000000..e9832dc --- /dev/null +++ b/lib/rake/compiler_config.rb @@ -0,0 +1,38 @@ +module Rake + class CompilerConfig + def initialize(config_path) + require "yaml" + @config = YAML.load_file(config_path) + end + + def find(ruby_version, gem_platform) + gem_platform = Gem::Platform.new(gem_platform) + + @config.each do |config_name, config_location| + # There are two variations we might find in the rake-compiler config.yml + # + # 1. config_name: rbconfig-x86_64-linux-3.0.0 + # runtime_platform_name: x86_64-linux + # runtime_version: 3.0.0 + # + # 2. config_name: rbconfig-x86_64-linux-gnu-3.0.0 + # runtime_platform_name: x86_64-linux-gnu + # runtime_version: 3.0.0 + # + # With rubygems < 3.3.21, both variations will be present (two entries pointing at the same + # installation). + # + # With rubygems >= 3.3.21, only the second variation will be present. + runtime_platform_name = config_name.split("-")[1..-2].join("-") + runtime_version = config_name.split("-").last + runtime_platform = Gem::Platform.new(runtime_platform_name) + + if (ruby_version == runtime_version) && (gem_platform =~ runtime_platform) + return config_location + end + end + + nil + end + end +end |