diff options
author | citrusmoose <[email protected]> | 2022-06-16 15:13:17 -0400 |
---|---|---|
committer | git <[email protected]> | 2022-06-20 16:04:47 +0900 |
commit | 8d689294d033d59f211a6d2c2da72b34ce53c4e5 (patch) | |
tree | a5b354d8a20e300e2d560001e504333de52142e5 | |
parent | ec5c56412f0b67845b42acec06cbd1d341896f25 (diff) |
[rubygems/rubygems] Fix extension paths in generated standalone script
The paths for extensions of gems would contain the hardcoded ruby
version on which the extension was built. This will replace it with
runtime ruby version like the parent version directory. It will make the
standalone script compatible between different ruby version installations.
https://github.com/rubygems/rubygems/commit/a9dae93d5d
-rw-r--r-- | lib/bundler/installer/standalone.rb | 8 | ||||
-rw-r--r-- | spec/bundler/install/gems/standalone_spec.rb | 3 |
2 files changed, 9 insertions, 2 deletions
diff --git a/lib/bundler/installer/standalone.rb b/lib/bundler/installer/standalone.rb index e8494b4bcd..2aba648e77 100644 --- a/lib/bundler/installer/standalone.rb +++ b/lib/bundler/installer/standalone.rb @@ -29,7 +29,9 @@ module Bundler @specs.map do |spec| next if spec.name == "bundler" Array(spec.require_paths).map do |path| - gem_path(path, spec).sub(version_dir, '#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}') + gem_path(path, spec). + sub(version_dir, '#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}'). + sub(extensions_dir, 'extensions/\k<platform>/#{RbConfig::CONFIG["ruby_version"]}') # This is a static string intentionally. It's interpolated at a later time. end end.flatten.compact @@ -39,6 +41,10 @@ module Bundler "#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}" end + def extensions_dir + %r{extensions/(?<platform>[^/]+)/#{RbConfig::CONFIG["ruby_version"]}} + end + def bundler_path Bundler.root.join(Bundler.settings[:path], "bundler") end diff --git a/spec/bundler/install/gems/standalone_spec.rb b/spec/bundler/install/gems/standalone_spec.rb index 0bbd829148..f856d6b51e 100644 --- a/spec/bundler/install/gems/standalone_spec.rb +++ b/spec/bundler/install/gems/standalone_spec.rb @@ -202,8 +202,9 @@ RSpec.shared_examples "bundle install --standalone" do it "generates a bundle/bundler/setup.rb with the proper paths" do expected_path = bundled_app("bundle/bundler/setup.rb") extension_line = File.read(expected_path).each_line.find {|line| line.include? "/extensions/" }.strip + platform = Gem::Platform.local expect(extension_line).to start_with '$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}/extensions/' - expect(extension_line).to end_with '/very_simple_binary-1.0")' + expect(extension_line).to end_with platform.to_s + '/#{RbConfig::CONFIG["ruby_version"]}/very_simple_binary-1.0")' end end |