diff options
author | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-10-30 06:32:48 +0000 |
---|---|---|
committer | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-10-30 06:32:48 +0000 |
commit | 9a21c28426e1021afd0f4d7314d707d578f60256 (patch) | |
tree | ad567ed7fe9d9cb24c9877070cad689a90cd8f15 /lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb | |
parent | f4b623f780b0688ebc4c99e8c27203d3e950f014 (diff) |
* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update
rubygems to 2.6.8.
Release note of 2.6.8: https://github.com/rubygems/rubygems/commit/9fb8880976f5ab998912898b091d88aa10eb1d4a
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb')
-rw-r--r-- | lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb b/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb index e6565119ef..54a6c3fc17 100644 --- a/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +++ b/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb @@ -356,10 +356,14 @@ module Gem::Resolver::Molinillo # @return [void] def fixup_swapped_children(vertex) payload = vertex.payload - dep_names = dependencies_for(payload).map(&method(:name_for)) - vertex.successors.each do |succ| - if !dep_names.include?(succ.name) && !succ.root? && succ.predecessors.to_a == [vertex] + deps = dependencies_for(payload).group_by(&method(:name_for)) + vertex.outgoing_edges.each do |outgoing_edge| + @parent_of[outgoing_edge.requirement] = states.size - 1 + succ = outgoing_edge.destination + matching_deps = Array(deps[succ.name]) + if matching_deps.empty? && !succ.root? && succ.predecessors.to_a == [vertex] debug(depth) { "Removing orphaned spec #{succ.name} after swapping #{name}" } + succ.requirements.each { |r| @parent_of.delete(r) } activated.detach_vertex_named(succ.name) all_successor_names = succ.recursive_successors.map(&:name) @@ -368,7 +372,11 @@ module Gem::Resolver::Molinillo requirement_name = name_for(requirement) (requirement_name == succ.name) || all_successor_names.include?(requirement_name) end + elsif !matching_deps.include?(outgoing_edge.requirement) + activated.delete_edge(outgoing_edge) + requirements.delete(outgoing_edge.requirement) end + matching_deps.delete(outgoing_edge.requirement) end end |