ruby-changes:68322
From: Masataka <ko1@a...>
Date: Sat, 9 Oct 2021 09:27:18 +0900 (JST)
Subject: [ruby-changes:68322] d03d122ba1 (master): [rubygems/rubygems] Improve performance of Specification#missing_extensions?
https://git.ruby-lang.org/ruby.git/commit/?id=d03d122ba1 From d03d122ba1851156c93ea21a9006a7d921ad073e Mon Sep 17 00:00:00 2001 From: Masataka Pocke Kuwabara <kuwabara@p...> Date: Sun, 3 Oct 2021 01:30:55 +0900 Subject: [rubygems/rubygems] Improve performance of Specification#missing_extensions? https://github.com/rubygems/rubygems/commit/90c1919f94 --- lib/rubygems/defaults.rb | 2 +- lib/rubygems/specification.rb | 4 ++-- spec/bundler/support/hax.rb | 5 ++++- test/rubygems/helper.rb | 2 ++ 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb index f29104a1b7..39b69ddb1c 100644 --- a/lib/rubygems/defaults.rb +++ b/lib/rubygems/defaults.rb @@ -59,7 +59,7 @@ module Gem https://github.com/ruby/ruby/blob/trunk/lib/rubygems/defaults.rb#L59 # Path to specification files of default gems. def self.default_specifications_dir - File.join(Gem.default_dir, "specifications", "default") + @default_specifications_dir ||= File.join(Gem.default_dir, "specifications", "default") end ## diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index 7ed963430f..bafc5e2619 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -1556,8 +1556,8 @@ class Gem::Specification < Gem::BasicSpecification https://github.com/ruby/ruby/blob/trunk/lib/rubygems/specification.rb#L1556 # the gem.build_complete file is missing. def build_extensions # :nodoc: - return if default_gem? return if extensions.empty? + return if default_gem? return if File.exist? gem_build_complete_path return if !File.writable?(base_dir) return if !File.exist?(File.join(base_dir, 'extensions')) @@ -2120,8 +2120,8 @@ class Gem::Specification < Gem::BasicSpecification https://github.com/ruby/ruby/blob/trunk/lib/rubygems/specification.rb#L2120 # probably want to build_extensions def missing_extensions? - return false if default_gem? return false if extensions.empty? + return false if default_gem? return false if File.exist? gem_build_complete_path true diff --git a/spec/bundler/support/hax.rb b/spec/bundler/support/hax.rb index aaf8c74894..0ad5239128 100644 --- a/spec/bundler/support/hax.rb +++ b/spec/bundler/support/hax.rb @@ -9,7 +9,10 @@ module Gem https://github.com/ruby/ruby/blob/trunk/spec/bundler/support/hax.rb#L9 Gem.ruby = ENV["RUBY"] end - @default_dir = ENV["BUNDLER_GEM_DEFAULT_DIR"] if ENV["BUNDLER_GEM_DEFAULT_DIR"] + if ENV["BUNDLER_GEM_DEFAULT_DIR"] + @default_dir = ENV["BUNDLER_GEM_DEFAULT_DIR"] + @default_specifications_dir = nil + end if ENV["BUNDLER_SPEC_PLATFORM"] class Platform diff --git a/test/rubygems/helper.rb b/test/rubygems/helper.rb index 812142f7d2..320f97e6c3 100644 --- a/test/rubygems/helper.rb +++ b/test/rubygems/helper.rb @@ -396,6 +396,7 @@ class Gem::TestCase < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/rubygems/helper.rb#L396 ENV['GEM_PRIVATE_KEY_PASSPHRASE'] = PRIVATE_KEY_PASSPHRASE + Gem.instance_variable_set(:@default_specifications_dir, nil) if Gem.java_platform? @orig_default_gem_home = RbConfig::CONFIG['default_gem_home'] RbConfig::CONFIG['default_gem_home'] = @gemhome @@ -479,6 +480,7 @@ class Gem::TestCase < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/rubygems/helper.rb#L480 RbConfig::CONFIG['bindir'] = @orig_bindir + Gem.instance_variable_set :@default_specifications_dir, nil if Gem.java_platform? RbConfig::CONFIG['default_gem_home'] = @orig_default_gem_home else -- cgit v1.2.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/