From db4157e9aa7b7f720ee06fb866b53ad11879c016 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Mon, 25 Jan 2021 15:40:26 +0100 Subject: [PATCH] Generate plugin wrappers with relative requires It shouldn't change behaviour and it fixes broken wrappers generated with `--build-root` flag is used. --- lib/rubygems/installer_uninstaller_utils.rb | 7 ++++++- test/rubygems/test_gem_installer.rb | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/rubygems/installer_uninstaller_utils.rb b/lib/rubygems/installer_uninstaller_utils.rb index e81ed4cba38..2c8b7c635e1 100644 --- a/lib/rubygems/installer_uninstaller_utils.rb +++ b/lib/rubygems/installer_uninstaller_utils.rb @@ -6,11 +6,16 @@ module Gem::InstallerUninstallerUtils def regenerate_plugins_for(spec, plugins_dir) + plugins = spec.plugins + return if plugins.empty? + + require 'pathname' + spec.plugins.each do |plugin| plugin_script_path = File.join plugins_dir, "#{spec.name}_plugin#{File.extname(plugin)}" File.open plugin_script_path, 'wb' do |file| - file.puts "require '#{plugin}'" + file.puts "require_relative '#{Pathname.new(plugin).relative_path_from(Pathname.new(plugins_dir))}'" end verbose plugin_script_path diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb index 4ce7e92442a..5652d863316 100644 --- a/test/rubygems/test_gem_installer.rb +++ b/test/rubygems/test_gem_installer.rb @@ -821,6 +821,8 @@ def test_generate_plugins_with_build_root assert !File.exist?(system_path), 'plugin written incorrect written to system plugins_dir' assert File.exist?(build_root_path), 'plugin not written to build_root' + + refute_includes File.read(build_root_path), build_root end def test_keeps_plugins_up_to_date