summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2017-01-06 18:05:55 -0600
committerSamuel Giddins <segiddins@segiddins.me>2017-01-06 18:05:55 -0600
commit86f25f472685658fc0f29489ea551fec89b469d7 (patch)
treeb38088d7767e7d1481d033fe10e9d2ba5eb898ba
parent084cbc72c7bb10977fe5826c299e662f8b0fd8b9 (diff)
downloadbundler-seg-molinillo-0.5.5.tar.gz
Update vendored Molinillo to 0.5.5seg-molinillo-0.5.5
-rw-r--r--lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb4
-rw-r--r--lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb11
-rw-r--r--lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb2
-rw-r--r--lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb2
-rw-r--r--lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb11
5 files changed, 20 insertions, 10 deletions
diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb
index 28d237482d..dc090097ca 100644
--- a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb
+++ b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb
@@ -119,6 +119,7 @@ module Bundler::Molinillo
# {Vertex#successors}
def ==(other)
return false unless other
+ return true if equal?(other)
vertices.each do |name, vertex|
other_vertex = other.vertex_named(name)
return false unless other_vertex
@@ -134,6 +135,7 @@ module Bundler::Molinillo
def add_child_vertex(name, payload, parent_names, requirement)
root = !parent_names.delete(nil) { true }
vertex = add_vertex(name, payload, root)
+ vertex.explicit_requirements << requirement if root
parent_names.each do |parent_name|
parent_node = vertex_named(parent_name)
add_edge(parent_node, vertex, requirement)
@@ -152,7 +154,7 @@ module Bundler::Molinillo
# Detaches the {#vertex_named} `name` {Vertex} from the graph, recursively
# removing any non-root vertices that were orphaned in the process
# @param [String] name
- # @return [void]
+ # @return [Array<Vertex>] the vertices which have been detached
def detach_vertex_named(name)
log.detach_vertex_named(self, name)
end
diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
index fdb6f102b3..d20b2cb0e0 100644
--- a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
+++ b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
@@ -14,16 +14,23 @@ module Bundler::Molinillo
# (see Action#up)
def up(graph)
- return unless @vertex = graph.vertices.delete(name)
+ return [] unless @vertex = graph.vertices.delete(name)
+
+ removed_vertices = [@vertex]
@vertex.outgoing_edges.each do |e|
v = e.destination
v.incoming_edges.delete(e)
- graph.detach_vertex_named(v.name) unless v.root? || v.predecessors.any?
+ if !v.root? && v.incoming_edges.empty?
+ removed_vertices.concat graph.detach_vertex_named(v.name)
+ end
end
+
@vertex.incoming_edges.each do |e|
v = e.origin
v.outgoing_edges.delete(e)
end
+
+ removed_vertices
end
# (see Action#down)
diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb
index 14d4957a91..7881c087c9 100644
--- a/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb
+++ b/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb
@@ -81,6 +81,7 @@ module Bundler::Molinillo
# @return [Boolean] whether the two vertices are equal, determined
# by a recursive traversal of each {Vertex#successors}
def ==(other)
+ return true if equal?(other)
shallow_eql?(other) &&
successors.to_set == other.successors.to_set
end
@@ -89,6 +90,7 @@ module Bundler::Molinillo
# @return [Boolean] whether the two vertices are equal, determined
# solely by {#name} and {#payload} equality
def shallow_eql?(other)
+ return true if equal?(other)
other &&
name == other.name &&
payload == other.payload
diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb b/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb
index 7b3065236b..4f5d450f59 100644
--- a/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb
+++ b/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb
@@ -1,5 +1,5 @@
# frozen_string_literal: true
module Bundler::Molinillo
# The version of Bundler::Molinillo.
- VERSION = '0.5.4'.freeze
+ VERSION = '0.5.5'.freeze
end
diff --git a/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb b/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb
index da1ac5aef0..9054a4ae14 100644
--- a/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb
+++ b/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb
@@ -366,13 +366,12 @@ module Bundler::Molinillo
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)
-
- requirements.delete_if do |requirement|
- requirement_name = name_for(requirement)
- (requirement_name == succ.name) || all_successor_names.include?(requirement_name)
+ removed_names = activated.detach_vertex_named(succ.name).map(&:name)
+ requirements.delete_if do |r|
+ # the only removed vertices are those with no other requirements,
+ # so it's safe to delete only based upon name here
+ removed_names.include?(name_for(r))
end
elsif !matching_deps.include?(outgoing_edge.requirement)
activated.delete_edge(outgoing_edge)