Unverified Commit 4a4a8fe4 authored by Samuel Giddins's avatar Samuel Giddins Committed by GitHub

Merge pull request #7603 from jmkk/pods_proj_generator_perf

[Pods Project Generator] Improve performance by removing redundant processing for native target dependencies
parents 8e0f3b09 3207c69f
...@@ -11,6 +11,9 @@ To install release candidates run `[sudo] gem install cocoapods --pre` ...@@ -11,6 +11,9 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
* Improve performance of the dependency resolver by removing duplicates for dependency nodes. * Improve performance of the dependency resolver by removing duplicates for dependency nodes.
[Jacek Suliga](https://github.com/jmkk) [Jacek Suliga](https://github.com/jmkk)
* Improve performance of Pods project generator by skipping native targets for which dependent targets have already been added.
[Jacek Suliga](https://github.com/jmkk)
##### Bug Fixes ##### Bug Fixes
* Fix modular header access to header_dir's. * Fix modular header access to header_dir's.
......
...@@ -217,6 +217,8 @@ module Pod ...@@ -217,6 +217,8 @@ module Pod
def set_target_dependencies def set_target_dependencies
frameworks_group = project.frameworks_group frameworks_group = project.frameworks_group
test_only_pod_targets = pod_targets.dup test_only_pod_targets = pod_targets.dup
pod_targets_for_deps = Set.new
pod_extension_targets = Set.new
aggregate_targets.each do |aggregate_target| aggregate_targets.each do |aggregate_target|
is_app_extension = !(aggregate_target.user_targets.map(&:symbol_type) & is_app_extension = !(aggregate_target.user_targets.map(&:symbol_type) &
[:app_extension, :watch_extension, :watch2_extension, :tv_extension, :messages_extension]).empty? [:app_extension, :watch_extension, :watch2_extension, :tv_extension, :messages_extension]).empty?
...@@ -239,15 +241,18 @@ module Pod ...@@ -239,15 +241,18 @@ module Pod
aggregate_target.native_target.add_dependency(pod_target.native_target) aggregate_target.native_target.add_dependency(pod_target.native_target)
configure_app_extension_api_only_for_target(pod_target) if is_app_extension configure_app_extension_api_only_for_target(pod_target) if is_app_extension
add_dependent_targets_to_native_target(pod_target.dependent_targets, if is_app_extension
pod_target.native_target, is_app_extension, pod_extension_targets << pod_target
pod_target.requires_frameworks? && !pod_target.static_framework?, end
frameworks_group)
pod_targets_for_deps << pod_target
unless pod_target.static_framework? unless pod_target.static_framework?
add_pod_target_test_dependencies(pod_target, frameworks_group) add_pod_target_test_dependencies(pod_target, frameworks_group)
end end
end end
end end
# Wire up remaining pod targets used only by tests and are not used by any aggregate target. # Wire up remaining pod targets used only by tests and are not used by any aggregate target.
test_only_pod_targets.each do |pod_target| test_only_pod_targets.each do |pod_target|
unless pod_target.should_build? unless pod_target.should_build?
...@@ -255,12 +260,20 @@ module Pod ...@@ -255,12 +260,20 @@ module Pod
next next
end end
unless pod_target.static_framework? unless pod_target.static_framework?
add_dependent_targets_to_native_target(pod_target.dependent_targets, pod_targets_for_deps << pod_target
pod_target.native_target, false,
pod_target.requires_frameworks?, frameworks_group)
add_pod_target_test_dependencies(pod_target, frameworks_group) add_pod_target_test_dependencies(pod_target, frameworks_group)
end end
end end
# Actually add the dependent targets
pod_targets_for_deps.each do |pod_target|
is_app_extension = pod_extension_targets.include? pod_target
add_dependent_targets_to_native_target(pod_target.dependent_targets,
pod_target.native_target,
is_app_extension,
pod_target.requires_frameworks? && !pod_target.static_framework?,
frameworks_group)
end
end end
# @param [String] pod The root name of the development pod. # @param [String] pod The root name of the development pod.
......
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