From e5532ef8869a7ff1c4ece55fda9532a17f6e3e40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Sun, 25 Jul 2021 16:11:18 +0200 Subject: [PATCH] Lazily load `shellwords` library --- lib/rubygems/ext/builder.rb | 1 + lib/rubygems/ext/ext_conf_builder.rb | 3 +-- lib/rubygems/ext/rake_builder.rb | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/rubygems/ext/builder.rb b/lib/rubygems/ext/builder.rb index 14d5dde41372..7934309901ca 100644 --- a/lib/rubygems/ext/builder.rb +++ b/lib/rubygems/ext/builder.rb @@ -57,6 +57,7 @@ def self.run(command, results, command_name = nil, dir = Dir.pwd) p(command) end results << "current directory: #{dir}" + require "shellwords" results << command.shelljoin require "open3" diff --git a/lib/rubygems/ext/ext_conf_builder.rb b/lib/rubygems/ext/ext_conf_builder.rb index 1f73796351a5..3ca3463615d8 100644 --- a/lib/rubygems/ext/ext_conf_builder.rb +++ b/lib/rubygems/ext/ext_conf_builder.rb @@ -5,8 +5,6 @@ # See LICENSE.txt for permissions. #++ -require 'shellwords' - class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_dir=Dir.pwd) require 'fileutils' @@ -40,6 +38,7 @@ def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_di begin # workaround for https://github.com/oracle/truffleruby/issues/2115 siteconf_path = RUBY_ENGINE == "truffleruby" ? siteconf.path.dup : siteconf.path + require "shellwords" cmd = Gem.ruby.shellsplit << "-I" << File.expand_path("../../..", __FILE__) << "-r" << get_relative_path(siteconf_path, extension_dir) << File.basename(extension) cmd.push(*args) diff --git a/lib/rubygems/ext/rake_builder.rb b/lib/rubygems/ext/rake_builder.rb index 64a6c0eb8081..fed98e741c08 100644 --- a/lib/rubygems/ext/rake_builder.rb +++ b/lib/rubygems/ext/rake_builder.rb @@ -5,8 +5,6 @@ # See LICENSE.txt for permissions. #++ -require "shellwords" - class Gem::Ext::RakeBuilder < Gem::Ext::Builder def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_dir=Dir.pwd) if File.basename(extension) =~ /mkrf_conf/i @@ -16,6 +14,7 @@ def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_di rake = ENV['rake'] if rake + require "shellwords" rake = rake.shellsplit else begin