summaryrefslogtreecommitdiff
path: root/lib/bundler/definition.rb
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2022-07-13 12:56:36 +0900
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2022-07-13 14:11:55 +0900
commit437a5ae9d6d60bd1972641167a98204007bd1c0b (patch)
tree79b9ea49442fe896dbd8ef59a8622ea010fb3fb7 /lib/bundler/definition.rb
parente3a988a29c2cfa4a7e2e045d82989a7342955be8 (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.rb26
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