diff options
author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2022-07-13 12:56:36 +0900 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2022-07-13 14:11:55 +0900 |
commit | 437a5ae9d6d60bd1972641167a98204007bd1c0b (patch) | |
tree | 79b9ea49442fe896dbd8ef59a8622ea010fb3fb7 /lib/bundler/definition.rb | |
parent | e3a988a29c2cfa4a7e2e045d82989a7342955be8 (diff) |
Merge RubyGems and Bundler master
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/6124
Diffstat (limited to 'lib/bundler/definition.rb')
-rw-r--r-- | lib/bundler/definition.rb | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb index 2e0f23a402..0580860845 100644 --- a/lib/bundler/definition.rb +++ b/lib/bundler/definition.rb @@ -235,6 +235,14 @@ module Bundler @locked_deps.values end + def new_deps + @new_deps ||= @dependencies - locked_dependencies + end + + def deleted_deps + @deleted_deps ||= locked_dependencies - @dependencies + end + def specs_for(groups) return specs if groups.empty? deps = dependencies_for(groups) @@ -259,8 +267,17 @@ module Bundler Bundler.ui.debug "Frozen, using resolution from the lockfile" @locked_specs elsif !unlocking? && nothing_changed? - Bundler.ui.debug("Found no changes, using resolution from the lockfile") - SpecSet.new(filter_specs(@locked_specs, @dependencies.select {|dep| @locked_specs[dep].any? })) + if deleted_deps.any? + Bundler.ui.debug("Some dependencies were deleted, using a subset of the resolution from the lockfile") + SpecSet.new(filter_specs(@locked_specs, @dependencies - deleted_deps)) + else + Bundler.ui.debug("Found no changes, using resolution from the lockfile") + if @locked_gems.may_include_redundant_platform_specific_gems? + SpecSet.new(filter_specs(@locked_specs, @dependencies)) + else + @locked_specs + end + end else last_resolve = converge_locked_specs # Run a resolve against the locally available gems @@ -359,9 +376,6 @@ module Bundler added.concat new_platforms.map {|p| "* platform: #{p}" } deleted.concat deleted_platforms.map {|p| "* platform: #{p}" } - new_deps = @dependencies - locked_dependencies - deleted_deps = locked_dependencies - @dependencies - added.concat new_deps.map {|d| "* #{pretty_dep(d)}" } if new_deps.any? deleted.concat deleted_deps.map {|d| "* #{pretty_dep(d)}" } if deleted_deps.any? @@ -806,7 +820,7 @@ module Bundler return [] unless @locked_gems && unlocking? && !sources.expired_sources?(@locked_gems.sources) converge_specs(@originally_locked_specs).map do |locked_spec| name = locked_spec.name - dep = Gem::Dependency.new(name, ">= #{locked_spec.version}") + dep = Dependency.new(name, ">= #{locked_spec.version}") DepProxy.get_proxy(dep, locked_spec.platform) end end |