Skip to content

Commit 988a09f

Browse files
committed
fix validate_every_pod_only_have_one_form
1 parent 62af283 commit 988a09f

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

lib/cocoapods-binary/helper/podfile_options.rb

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)