@@ -69,7 +69,7 @@ module Pod
6969 class Installer
7070
7171 def prebuild_pod_targets
72-
72+ @prebuild_pod_targets ||= (
7373 all = [ ]
7474
7575 aggregate_targets = self . aggregate_targets
@@ -94,6 +94,7 @@ def prebuild_pod_targets
9494
9595 all = all . reject { |pod_target | sandbox . local? ( pod_target . pod_name ) }
9696 all . uniq
97+ )
9798 end
9899
99100 # the root names who needs prebuild, including dependency pods.
@@ -103,21 +104,22 @@ def prebuild_pod_names
103104
104105
105106 def validate_every_pod_only_have_one_form
106- prebuit = [ ]
107- not_prebuilt = [ ]
108- aggregate_targets = self . aggregate_targets
109- aggregate_targets . each do |aggregate_target |
110- target_definition = aggregate_target . target_definition
111- prebuit += target_definition . prebuild_framework_pod_names
112- not_prebuilt += aggregate_target . pod_targets . reject do |target |
113- target_definition . prebuild_framework_pod_names . include? target . pod_name
114- end . map ( &:pod_name )
107+
108+ multi_targets_pods = self . pod_targets . group_by do |t |
109+ t . pod_name
110+ end . select do |k , v |
111+ v . map { |t | t . platform . name } . count > 1
115112 end
116113
117- intersection = prebuit & not_prebuilt
118- if not intersection . empty?
119- raise Informative , "One pod can only be prebuilt or not prebuilt. These pod have different forms in multiple targets: #{ intersection . to_a } . Please fix that."
114+ multi_targets_pods = multi_targets_pods . reject do |name , targets |
115+ targets . all? { |t | self . prebuild_pod_targets . include? t }
120116 end
117+
118+ return if multi_targets_pods . empty?
119+
120+ warnings = "One pod can only be prebuilt or not prebuilt. These pod have different forms in multiple targets:\n "
121+ warnings += multi_targets_pods . map { |name , targets | " #{ name } : #{ targets . map { |t |t . platform . name } } " } . join ( "\n " )
122+ raise Informative , warnings
121123 end
122124
123125 end
0 commit comments