|
1 | 1 | # frozen_string_literal: true |
2 | 2 |
|
3 | 3 | require_relative "lockfile_parser" |
4 | | -require "set" |
5 | 4 |
|
6 | 5 | module Bundler |
7 | 6 | class Definition |
@@ -259,23 +258,18 @@ def dependencies_for(groups) |
259 | 258 | def resolve |
260 | 259 | @resolve ||= begin |
261 | 260 | last_resolve = converge_locked_specs |
262 | | - resolve = |
263 | | - if Bundler.frozen_bundle? |
264 | | - Bundler.ui.debug "Frozen, using resolution from the lockfile" |
265 | | - last_resolve |
266 | | - elsif !unlocking? && nothing_changed? |
267 | | - Bundler.ui.debug("Found no changes, using resolution from the lockfile") |
268 | | - last_resolve |
269 | | - else |
270 | | - # Run a resolve against the locally available gems |
271 | | - Bundler.ui.debug("Found changes from the lockfile, re-resolving dependencies because #{change_reason}") |
272 | | - expanded_dependencies = expand_dependencies(dependencies + metadata_dependencies, @remote) |
273 | | - last_resolve.merge Resolver.resolve(expanded_dependencies, index, source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve, platforms) |
274 | | - end |
275 | | - |
276 | | - # filter out gems that _can_ be installed on multiple platforms, but don't need |
277 | | - # to be |
278 | | - resolve.for(expand_dependencies(dependencies, true), [], false, false, false) |
| 261 | + if Bundler.frozen_bundle? |
| 262 | + Bundler.ui.debug "Frozen, using resolution from the lockfile" |
| 263 | + last_resolve |
| 264 | + elsif !unlocking? && nothing_changed? |
| 265 | + Bundler.ui.debug("Found no changes, using resolution from the lockfile") |
| 266 | + last_resolve |
| 267 | + else |
| 268 | + # Run a resolve against the locally available gems |
| 269 | + Bundler.ui.debug("Found changes from the lockfile, re-resolving dependencies because #{change_reason}") |
| 270 | + expanded_dependencies = expand_dependencies(dependencies + metadata_dependencies, @remote) |
| 271 | + Resolver.resolve(expanded_dependencies, index, source_requirements, last_resolve, gem_version_promoter, additional_base_requirements_for_resolve, platforms) |
| 272 | + end |
279 | 273 | end |
280 | 274 | end |
281 | 275 |
|
@@ -604,7 +598,7 @@ def dependencies_for_source_changed?(source, locked_source = source) |
604 | 598 | deps_for_source = @dependencies.select {|s| s.source == source } |
605 | 599 | locked_deps_for_source = @locked_deps.values.select {|dep| dep.source == locked_source } |
606 | 600 |
|
607 | | - Set.new(deps_for_source) != Set.new(locked_deps_for_source) |
| 601 | + deps_for_source.sort != locked_deps_for_source.sort |
608 | 602 | end |
609 | 603 |
|
610 | 604 | def specs_for_source_changed?(source) |
@@ -884,7 +878,7 @@ def expand_dependencies(dependencies, remote = false) |
884 | 878 | dependencies.each do |dep| |
885 | 879 | dep = Dependency.new(dep, ">= 0") unless dep.respond_to?(:name) |
886 | 880 | next unless remote || dep.current_platform? |
887 | | - target_platforms = dep.gem_platforms(remote ? Resolver.sort_platforms(@platforms) : [generic_local_platform]) |
| 881 | + target_platforms = dep.gem_platforms(remote ? @platforms : [generic_local_platform]) |
888 | 882 | deps += expand_dependency_with_platforms(dep, target_platforms) |
889 | 883 | end |
890 | 884 | deps |
|
0 commit comments