Commit f5f58876 authored by Samuel E. Giddins's avatar Samuel E. Giddins

[Analyzer] Dont create cycles when computing transitive dependencies

parent 5955c55f
...@@ -314,12 +314,15 @@ module Pod ...@@ -314,12 +314,15 @@ module Pod
end end
end end
else else
specs_by_target.flat_map do |target_definition, specs| pod_targets = specs_by_target.flat_map do |target_definition, specs|
grouped_specs = specs.group_by.group_by(&:root).values.uniq grouped_specs = specs.group_by.group_by(&:root).values.uniq
grouped_specs.flat_map do |pod_specs| grouped_specs.flat_map do |pod_specs|
generate_pod_target([target_definition], pod_specs, :scoped => true) generate_pod_target([target_definition], pod_specs, :scoped => true)
end end
end end
pod_targets.each do |target|
target.dependent_targets = transitive_dependencies_for_pod_target(target, pod_targets)
end
end end
end end
...@@ -340,12 +343,14 @@ module Pod ...@@ -340,12 +343,14 @@ module Pod
def transitive_dependencies_for_pod_target(pod_target, targets) def transitive_dependencies_for_pod_target(pod_target, targets)
if targets.any? if targets.any?
dependent_targets = pod_target.dependencies.flat_map do |dep| dependent_targets = pod_target.dependencies.flat_map do |dep|
next [] if pod_target.pod_name == dep
targets.select { |t| t.pod_name == dep } targets.select { |t| t.pod_name == dep }
end end
remaining_targets = targets - dependent_targets remaining_targets = targets - dependent_targets
dependent_targets + dependent_targets.flat_map do |target| dependent_targets += dependent_targets.flat_map do |target|
transitive_dependencies_for_pod_target(target, remaining_targets) transitive_dependencies_for_pod_target(target, remaining_targets)
end end
dependent_targets.uniq
else else
[] []
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment