diff options
| author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2023-07-19 14:13:32 +0900 |
|---|---|---|
| committer | nagachika <nagachika@ruby-lang.org> | 2023-08-29 23:25:18 +0900 |
| commit | a36c8364331d39dd7da6308c6ae99f5a810ac510 (patch) | |
| tree | 352fd81640a597cbe782b6d88754437ae099b16a /lib | |
| parent | 1b1a5b29843aba07e5a45f30ac1f23b1cb1e8173 (diff) | |
Merge RubyGems-3.4.14 and Bundler-2.4.14
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/bundler.rb | 7 | ||||
| -rw-r--r-- | lib/bundler/definition.rb | 10 | ||||
| -rw-r--r-- | lib/bundler/installer.rb | 2 | ||||
| -rw-r--r-- | lib/bundler/lockfile_parser.rb | 1 | ||||
| -rw-r--r-- | lib/bundler/settings.rb | 5 | ||||
| -rw-r--r-- | lib/bundler/source/rubygems.rb | 11 | ||||
| -rw-r--r-- | lib/bundler/templates/newgem/newgem.gemspec.tt | 3 | ||||
| -rw-r--r-- | lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb | 13 | ||||
| -rw-r--r-- | lib/bundler/version.rb | 2 | ||||
| -rw-r--r-- | lib/rubygems.rb | 2 | ||||
| -rw-r--r-- | lib/rubygems/installer.rb | 15 |
11 files changed, 49 insertions, 22 deletions
diff --git a/lib/bundler.rb b/lib/bundler.rb index 35848ca40b..a31eeebd61 100644 --- a/lib/bundler.rb +++ b/lib/bundler.rb @@ -210,9 +210,10 @@ module Bundler end def frozen_bundle? - frozen = settings[:deployment] - frozen ||= settings[:frozen] - frozen + frozen = settings[:frozen] + return frozen unless frozen.nil? + + settings[:deployment] end def locked_gems diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb index ecd91ae89d..bc461e8b00 100644 --- a/lib/bundler/definition.rb +++ b/lib/bundler/definition.rb @@ -217,6 +217,7 @@ module Bundler rescue BundlerError => e @resolve = nil @resolver = nil + @resolution_packages = nil @specs = nil @gem_version_promoter = nil @@ -361,10 +362,8 @@ module Bundler "updated #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} to version control." unless explicit_flag - suggested_command = if Bundler.settings.locations("frozen").keys.&([:global, :local]).any? - "bundle config unset frozen" - elsif Bundler.settings.locations("deployment").keys.&([:global, :local]).any? - "bundle config unset deployment" + suggested_command = unless Bundler.settings.locations("frozen").keys.include?(:env) + "bundle config set frozen false" end msg << "\n\nIf this is a development machine, remove the #{Bundler.default_gemfile} " \ "freeze \nby running `#{suggested_command}`." if suggested_command @@ -886,7 +885,8 @@ module Bundler if preserve_unknown_sections sections_to_ignore = LockfileParser.sections_to_ignore(@locked_bundler_version) sections_to_ignore += LockfileParser.unknown_sections_in_lockfile(current) - sections_to_ignore += LockfileParser::ENVIRONMENT_VERSION_SECTIONS + sections_to_ignore << LockfileParser::RUBY + sections_to_ignore << LockfileParser::BUNDLED unless @unlocking_bundler pattern = /#{Regexp.union(sections_to_ignore)}\n(\s{2,}.*\n)+/ whitespace_cleanup = /\n{2,}/ current = current.gsub(pattern, "\n").gsub(whitespace_cleanup, "\n\n").strip diff --git a/lib/bundler/installer.rb b/lib/bundler/installer.rb index 680e812ac8..59b6a6ad22 100644 --- a/lib/bundler/installer.rb +++ b/lib/bundler/installer.rb @@ -90,7 +90,7 @@ module Bundler Gem::Specification.reset # invalidate gem specification cache so that installed gems are immediately available - lock unless Bundler.frozen_bundle? + lock Standalone.new(options[:standalone], @definition).generate if options[:standalone] end end diff --git a/lib/bundler/lockfile_parser.rb b/lib/bundler/lockfile_parser.rb index 97cbf211ba..7360a36752 100644 --- a/lib/bundler/lockfile_parser.rb +++ b/lib/bundler/lockfile_parser.rb @@ -26,6 +26,7 @@ module Bundler KNOWN_SECTIONS = SECTIONS_BY_VERSION_INTRODUCED.values.flatten.freeze ENVIRONMENT_VERSION_SECTIONS = [BUNDLED, RUBY].freeze + deprecate_constant(:ENVIRONMENT_VERSION_SECTIONS) def self.sections_in_lockfile(lockfile_contents) lockfile_contents.scan(/^\w[\w ]*$/).uniq diff --git a/lib/bundler/settings.rb b/lib/bundler/settings.rb index 1139eab503..85d7917eed 100644 --- a/lib/bundler/settings.rb +++ b/lib/bundler/settings.rb @@ -219,7 +219,6 @@ module Bundler def path configs.each do |_level, settings| path = value_for("path", settings) - path = "vendor/bundle" if value_for("deployment", settings) && path.nil? path_system = value_for("path.system", settings) disabled_shared_gems = value_for("disable_shared_gems", settings) next if path.nil? && path_system.nil? && disabled_shared_gems.nil? @@ -227,7 +226,9 @@ module Bundler return Path.new(path, system_path) end - Path.new(nil, false) + path = "vendor/bundle" if self[:deployment] + + Path.new(path, false) end Path = Struct.new(:explicit_path, :system_path) do diff --git a/lib/bundler/source/rubygems.rb b/lib/bundler/source/rubygems.rb index a8d2e26324..af82ca6b6c 100644 --- a/lib/bundler/source/rubygems.rb +++ b/lib/bundler/source/rubygems.rb @@ -10,7 +10,7 @@ module Bundler # Ask for X gems per API request API_REQUEST_SIZE = 50 - attr_reader :remotes, :caches + attr_reader :remotes def initialize(options = {}) @options = options @@ -19,11 +19,14 @@ module Bundler @allow_remote = false @allow_cached = false @allow_local = options["allow_local"] || false - @caches = [cache_path, *Bundler.rubygems.gem_cache] Array(options["remotes"]).reverse_each {|r| add_remote(r) } end + def caches + @caches ||= [cache_path, *Bundler.rubygems.gem_cache] + end + def local_only! @specs = nil @allow_local = true @@ -324,9 +327,9 @@ module Bundler def cached_path(spec) global_cache_path = download_cache_path(spec) - @caches << global_cache_path if global_cache_path + caches << global_cache_path if global_cache_path - possibilities = @caches.map {|p| package_path(p, spec) } + possibilities = caches.map {|p| package_path(p, spec) } possibilities.find {|p| File.exist?(p) } end diff --git a/lib/bundler/templates/newgem/newgem.gemspec.tt b/lib/bundler/templates/newgem/newgem.gemspec.tt index da81f046d4..bb76680379 100644 --- a/lib/bundler/templates/newgem/newgem.gemspec.tt +++ b/lib/bundler/templates/newgem/newgem.gemspec.tt @@ -29,7 +29,8 @@ Gem::Specification.new do |spec| # The `git ls-files -z` loads the files in the RubyGem that have been added into git. spec.files = Dir.chdir(__dir__) do `git ls-files -z`.split("\x0").reject do |f| - (File.expand_path(f) == __FILE__) || f.start_with?(*%w[bin/ test/ spec/ features/ .git .circleci appveyor]) + (File.expand_path(f) == __FILE__) || + f.start_with?(*%w[bin/ test/ spec/ features/ .git .circleci appveyor Gemfile]) end end spec.bindir = "exe" diff --git a/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb b/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb index 2cb8412cf3..4caf6b355b 100644 --- a/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +++ b/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb @@ -162,7 +162,7 @@ module Bundler::PubGrub def resolve_conflict(incompatibility) logger.info { "conflict: #{incompatibility}" } - new_incompatibility = false + new_incompatibility = nil while !incompatibility.failure? most_recent_term = nil @@ -204,7 +204,7 @@ module Bundler::PubGrub solution.backtrack(previous_level) if new_incompatibility - add_incompatibility(incompatibility) + add_incompatibility(new_incompatibility) end return incompatibility @@ -219,9 +219,14 @@ module Bundler::PubGrub new_terms << difference.invert end - incompatibility = Incompatibility.new(new_terms, cause: Incompatibility::ConflictCause.new(incompatibility, most_recent_satisfier.cause)) + new_incompatibility = Incompatibility.new(new_terms, cause: Incompatibility::ConflictCause.new(incompatibility, most_recent_satisfier.cause)) - new_incompatibility = true + if incompatibility.to_s == new_incompatibility.to_s + logger.info { "!! failed to resolve conflicts, this shouldn't have happened" } + break + end + + incompatibility = new_incompatibility partially = difference ? " partially" : "" logger.info { "! #{most_recent_term} is#{partially} satisfied by #{most_recent_satisfier.term}" } diff --git a/lib/bundler/version.rb b/lib/bundler/version.rb index 853610eb0c..928fe8ad99 100644 --- a/lib/bundler/version.rb +++ b/lib/bundler/version.rb @@ -1,7 +1,7 @@ # frozen_string_literal: false module Bundler - VERSION = "2.4.13".freeze + VERSION = "2.4.14".freeze def self.bundler_major_version @bundler_major_version ||= VERSION.split(".").first.to_i diff --git a/lib/rubygems.rb b/lib/rubygems.rb index 237b94b43e..29552d9601 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -8,7 +8,7 @@ require "rbconfig" module Gem - VERSION = "3.4.13" + VERSION = "3.4.14" end # Must be first since it unloads the prelude from 1.9.2 diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb index 4f089d4dde..8fef455b74 100644 --- a/lib/rubygems/installer.rb +++ b/lib/rubygems/installer.rb @@ -342,6 +342,8 @@ class Gem::Installer Gem::Specification.add_spec(spec) + load_plugin + run_post_install_hooks spec @@ -1002,4 +1004,17 @@ TEXT "" end end + + def load_plugin + specs = Gem::Specification.find_all_by_name(spec.name) + # If old version already exists, this plugin isn't loaded + # immediately. It's for avoiding a case that multiple versions + # are loaded at the same time. + return unless specs.size == 1 + + plugin_files = spec.plugins.map do |plugin| + File.join(@plugins_dir, "#{spec.name}_plugin#{File.extname(plugin)}") + end + Gem.load_plugin_files(plugin_files) + end end |
