cocoapods 1.7.5 → 1.8.0.beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +175 -11
- data/LICENSE +13 -8
- data/README.md +2 -1
- data/lib/cocoapods/command/init.rb +18 -16
- data/lib/cocoapods/command/install.rb +2 -1
- data/lib/cocoapods/command/lib/create.rb +1 -2
- data/lib/cocoapods/command/lib/lint.rb +12 -11
- data/lib/cocoapods/command/repo/add.rb +2 -2
- data/lib/cocoapods/command/repo/list.rb +7 -5
- data/lib/cocoapods/command/repo/push.rb +15 -12
- data/lib/cocoapods/command/setup.rb +2 -88
- data/lib/cocoapods/command/spec/lint.rb +10 -9
- data/lib/cocoapods/command/update.rb +5 -4
- data/lib/cocoapods/config.rb +9 -8
- data/lib/cocoapods/external_sources/path_source.rb +1 -1
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/embed_frameworks_script.rb +1 -1
- data/lib/cocoapods/generator/info_plist_file.rb +2 -2
- data/lib/cocoapods/installer.rb +32 -12
- data/lib/cocoapods/installer/analyzer.rb +132 -97
- data/lib/cocoapods/installer/analyzer/target_inspector.rb +6 -8
- data/lib/cocoapods/installer/installation_options.rb +4 -0
- data/lib/cocoapods/installer/pod_source_installer.rb +17 -1
- data/lib/cocoapods/installer/podfile_validator.rb +26 -6
- data/lib/cocoapods/installer/project_cache/project_cache_analyzer.rb +37 -27
- data/lib/cocoapods/installer/project_cache/project_cache_version.rb +1 -1
- data/lib/cocoapods/installer/project_cache/project_installation_cache.rb +3 -3
- data/lib/cocoapods/installer/project_cache/project_metadata_cache.rb +12 -6
- data/lib/cocoapods/installer/project_cache/target_cache_key.rb +32 -8
- data/lib/cocoapods/installer/project_cache/target_metadata.rb +6 -2
- data/lib/cocoapods/installer/sandbox_dir_cleaner.rb +12 -0
- data/lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb +1 -1
- data/lib/cocoapods/installer/xcode/multi_pods_project_generator.rb +3 -1
- data/lib/cocoapods/installer/xcode/pods_project_generator/aggregate_target_dependency_installer.rb +2 -2
- data/lib/cocoapods/installer/xcode/pods_project_generator/app_host_installer.rb +18 -3
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_dependency_installer.rb +53 -11
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb +92 -60
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_integrator.rb +66 -50
- data/lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb +12 -0
- data/lib/cocoapods/installer/xcode/pods_project_generator/target_installer.rb +6 -2
- data/lib/cocoapods/installer/xcode/pods_project_generator/target_installer_helper.rb +2 -2
- data/lib/cocoapods/installer/xcode/target_validator.rb +30 -14
- data/lib/cocoapods/native_target_extension.rb +11 -5
- data/lib/cocoapods/open-uri.rb +1 -1
- data/lib/cocoapods/project.rb +13 -7
- data/lib/cocoapods/resolver.rb +63 -53
- data/lib/cocoapods/resolver/lazy_specification.rb +14 -5
- data/lib/cocoapods/sandbox.rb +35 -2
- data/lib/cocoapods/sandbox/pod_dir_cleaner.rb +3 -4
- data/lib/cocoapods/sources_manager.rb +72 -43
- data/lib/cocoapods/target.rb +7 -1
- data/lib/cocoapods/target/aggregate_target.rb +13 -8
- data/lib/cocoapods/target/build_settings.rb +33 -10
- data/lib/cocoapods/target/pod_target.rb +114 -30
- data/lib/cocoapods/user_interface/error_report.rb +9 -5
- data/lib/cocoapods/validator.rb +55 -11
- data/lib/cocoapods/version_metadata.rb +14 -1
- metadata +6 -7
- data/lib/cocoapods/command/spec/env_spec.rb +0 -53
@@ -42,17 +42,26 @@ module Pod
|
|
42
42
|
end
|
43
43
|
|
44
44
|
class External
|
45
|
-
def all_specifications(_warn_for_multiple_pod_sources)
|
46
|
-
|
45
|
+
def all_specifications(_warn_for_multiple_pod_sources, requirement)
|
46
|
+
if requirement.satisfied_by? specification.version
|
47
|
+
[specification]
|
48
|
+
else
|
49
|
+
[]
|
50
|
+
end
|
47
51
|
end
|
48
52
|
end
|
49
53
|
|
50
54
|
# returns the highest versioned spec last
|
51
|
-
def all_specifications(warn_for_multiple_pod_sources)
|
52
|
-
@all_specifications ||=
|
55
|
+
def all_specifications(warn_for_multiple_pod_sources, requirement)
|
56
|
+
@all_specifications ||= {}
|
57
|
+
@all_specifications[requirement] ||= begin
|
53
58
|
sources_by_version = {}
|
54
59
|
versions_by_source.each do |source, versions|
|
55
|
-
versions.each
|
60
|
+
versions.each do |v|
|
61
|
+
next unless requirement.satisfied_by?(v)
|
62
|
+
|
63
|
+
(sources_by_version[v] ||= []) << source
|
64
|
+
end
|
56
65
|
end
|
57
66
|
|
58
67
|
if warn_for_multiple_pod_sources
|
data/lib/cocoapods/sandbox.rb
CHANGED
@@ -286,7 +286,7 @@ module Pod
|
|
286
286
|
spec =
|
287
287
|
case podspec
|
288
288
|
when String
|
289
|
-
|
289
|
+
Sandbox.update_changed_file(output_path, podspec)
|
290
290
|
Specification.from_file(output_path)
|
291
291
|
when Pathname
|
292
292
|
unless podspec.exist?
|
@@ -296,7 +296,7 @@ module Pod
|
|
296
296
|
Specification.from_file(podspec)
|
297
297
|
when Specification
|
298
298
|
raise ArgumentError, 'can only store Specification objects as json' unless json
|
299
|
-
|
299
|
+
Sandbox.update_changed_file(output_path, podspec.to_pretty_json)
|
300
300
|
podspec.dup
|
301
301
|
else
|
302
302
|
raise ArgumentError, "Unknown type for podspec: #{podspec.inspect}"
|
@@ -379,6 +379,18 @@ module Pod
|
|
379
379
|
checkout_sources.delete(root_name)
|
380
380
|
end
|
381
381
|
|
382
|
+
# Removes local podspec a Pod.
|
383
|
+
#
|
384
|
+
# @param [String] name
|
385
|
+
# The name of the Pod.
|
386
|
+
#
|
387
|
+
# @return [void]
|
388
|
+
#
|
389
|
+
def remove_local_podspec(name)
|
390
|
+
local_podspec = specification_path(name)
|
391
|
+
FileUtils.rm(local_podspec) if local_podspec
|
392
|
+
end
|
393
|
+
|
382
394
|
# @return [Hash{String=>Hash}] The options necessary to recreate the exact
|
383
395
|
# checkout of a given Pod grouped by its name.
|
384
396
|
#
|
@@ -432,6 +444,27 @@ module Pod
|
|
432
444
|
development_pods[root_name]
|
433
445
|
end
|
434
446
|
|
447
|
+
# @!group Convenience Methods
|
448
|
+
|
449
|
+
# Writes a file if it does not exist or if its contents have changed.
|
450
|
+
#
|
451
|
+
# @param [Pathname] path
|
452
|
+
# The path to read from and write to.
|
453
|
+
#
|
454
|
+
# @param [String] contents
|
455
|
+
# The contents to write if they do not match or the file does not exist.
|
456
|
+
#
|
457
|
+
# @return [void]
|
458
|
+
#
|
459
|
+
def self.update_changed_file(path, contents)
|
460
|
+
if path.exist?
|
461
|
+
content_stream = StringIO.new(contents)
|
462
|
+
identical = File.open(path, 'rb') { |f| FileUtils.compare_stream(f, content_stream) }
|
463
|
+
return if identical
|
464
|
+
end
|
465
|
+
File.open(path, 'w') { |f| f.write(contents) }
|
466
|
+
end
|
467
|
+
|
435
468
|
#-------------------------------------------------------------------------#
|
436
469
|
end
|
437
470
|
end
|
@@ -48,14 +48,13 @@ module Pod
|
|
48
48
|
# @return [Array<Strings>] The paths that can be deleted.
|
49
49
|
#
|
50
50
|
def clean_paths
|
51
|
-
cached_used = used_files
|
51
|
+
cached_used = used_files.map(&:downcase)
|
52
52
|
glob_options = File::FNM_DOTMATCH | File::FNM_CASEFOLD
|
53
53
|
files = Pathname.glob(root + '**/*', glob_options).map(&:to_s)
|
54
|
-
|
54
|
+
cached_used_set = cached_used.to_set
|
55
55
|
files.reject do |candidate|
|
56
56
|
candidate = candidate.downcase
|
57
|
-
candidate.end_with?('.', '..') || cached_used.any? do |path|
|
58
|
-
path = path.downcase
|
57
|
+
candidate.end_with?('.', '..') || cached_used_set.include?(candidate) || cached_used.any? do |path|
|
59
58
|
path.include?(candidate) || candidate.include?(path)
|
60
59
|
end
|
61
60
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'cocoapods-core/source'
|
2
2
|
require 'set'
|
3
|
+
require 'rest'
|
3
4
|
|
4
5
|
module Pod
|
5
6
|
class Source
|
@@ -15,40 +16,64 @@ module Pod
|
|
15
16
|
# The URL of the source.
|
16
17
|
#
|
17
18
|
def find_or_create_source_with_url(url)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
19
|
+
source_with_url(url) || create_source_with_url(url)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Adds the source whose {Source#url} is equal to `url`,
|
23
|
+
# in a manner similarly to `pod repo add` if it is not found.
|
24
|
+
#
|
25
|
+
# @raise If no source with the given `url` could be created,
|
26
|
+
#
|
27
|
+
# @return [Source] The source whose {Source#url} is equal to `url`,
|
28
|
+
#
|
29
|
+
# @param [String] url
|
30
|
+
# The URL of the source.
|
31
|
+
#
|
32
|
+
def create_source_with_url(url)
|
33
|
+
name = name_for_url(url)
|
34
|
+
is_cdn = cdn_url?(url)
|
35
|
+
|
36
|
+
# Hack to ensure that `repo add` output is shown.
|
37
|
+
previous_title_level = UI.title_level
|
38
|
+
UI.title_level = 0
|
39
|
+
|
40
|
+
begin
|
41
|
+
if is_cdn
|
42
|
+
Command::Repo::AddCDN.parse([name, url]).run
|
43
|
+
else
|
44
|
+
Command::Repo::Add.parse([name, url]).run
|
43
45
|
end
|
44
|
-
|
46
|
+
rescue Informative => e
|
47
|
+
message = "Unable to add a source with url `#{url}` " \
|
48
|
+
"named `#{name}`.\n"
|
49
|
+
message << "(#{e})\n" if Config.instance.verbose?
|
50
|
+
message << 'You can try adding it manually in ' \
|
51
|
+
"`#{Config.instance.repos_dir}` or via `pod repo add`."
|
52
|
+
raise Informative, message
|
53
|
+
ensure
|
54
|
+
UI.title_level = previous_title_level
|
45
55
|
end
|
56
|
+
source = source_with_url(url)
|
46
57
|
|
47
58
|
raise "Unable to create a source with URL #{url}" unless source
|
48
59
|
|
49
60
|
source
|
50
61
|
end
|
51
62
|
|
63
|
+
# Determines whether `url` is a CocoaPods CDN URL.
|
64
|
+
#
|
65
|
+
# @return [Boolean] whether `url` is a CocoaPods CDN URL,
|
66
|
+
#
|
67
|
+
# @param [String] url
|
68
|
+
# The URL of the source.
|
69
|
+
#
|
70
|
+
def cdn_url?(url)
|
71
|
+
url =~ %r{^https:\/\/} &&
|
72
|
+
REST.head(url + '/all_pods.txt').ok?
|
73
|
+
rescue => e
|
74
|
+
raise Informative, "Couldn't determine repo type for URL: `#{url}`: #{e}"
|
75
|
+
end
|
76
|
+
|
52
77
|
# Returns the source whose {Source#name} or {Source#url} is equal to the
|
53
78
|
# given `name_or_url`.
|
54
79
|
#
|
@@ -82,22 +107,35 @@ module Pod
|
|
82
107
|
#
|
83
108
|
def update(source_name = nil, show_output = false)
|
84
109
|
if source_name
|
85
|
-
sources = [
|
110
|
+
sources = [updateable_source_named(source_name)]
|
86
111
|
else
|
87
|
-
sources =
|
112
|
+
sources = updateable_sources
|
88
113
|
end
|
89
114
|
|
90
115
|
changed_spec_paths = {}
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
116
|
+
# Ceate the Spec_Lock file if needed and lock it so that concurrent
|
117
|
+
# repo updates do not cause each other to fail
|
118
|
+
File.open("#{Config.instance.repos_dir}/Spec_Lock", File::CREAT) do |f|
|
119
|
+
f.flock(File::LOCK_EX)
|
120
|
+
sources.each do |source|
|
121
|
+
UI.section "Updating spec repo `#{source.name}`" do
|
122
|
+
changed_source_paths = source.update(show_output)
|
123
|
+
changed_spec_paths[source] = changed_source_paths if changed_source_paths.count > 0
|
124
|
+
source.verify_compatibility!
|
125
|
+
end
|
96
126
|
end
|
97
127
|
end
|
98
128
|
# Perform search index update operation in background.
|
99
129
|
update_search_index_if_needed_in_background(changed_spec_paths)
|
100
130
|
end
|
131
|
+
|
132
|
+
# Adds the provided source to the list of sources
|
133
|
+
#
|
134
|
+
# @param [Source] source the source to add
|
135
|
+
#
|
136
|
+
def add_source(source)
|
137
|
+
all << source unless all.any? { |s| s.url == source || s.name == source.name }
|
138
|
+
end
|
101
139
|
end
|
102
140
|
|
103
141
|
extend Executable
|
@@ -131,16 +169,7 @@ module Pod
|
|
131
169
|
end
|
132
170
|
end
|
133
171
|
|
134
|
-
class
|
135
|
-
def update_git_repo(show_output = false)
|
136
|
-
if repo.join('.git', 'shallow').file?
|
137
|
-
UI.info "Performing a deep fetch of the `#{name}` specs repo to improve future performance" do
|
138
|
-
git!(%W(-C #{repo} fetch --unshallow))
|
139
|
-
end
|
140
|
-
end
|
141
|
-
super
|
142
|
-
end
|
143
|
-
|
172
|
+
class TrunkSource
|
144
173
|
def verify_compatibility!
|
145
174
|
super
|
146
175
|
latest_cocoapods_version = metadata.latest_cocoapods_version && Gem::Version.create(metadata.latest_cocoapods_version)
|
data/lib/cocoapods/target.rb
CHANGED
@@ -41,7 +41,7 @@ module Pod
|
|
41
41
|
#
|
42
42
|
attr_reader :build_settings
|
43
43
|
|
44
|
-
# @return [
|
44
|
+
# @return [Target::BuildType] the build type for this target.
|
45
45
|
#
|
46
46
|
attr_reader :build_type
|
47
47
|
private :build_type
|
@@ -290,6 +290,12 @@ module Pod
|
|
290
290
|
support_files_dir + "#{label}-Info.plist"
|
291
291
|
end
|
292
292
|
|
293
|
+
# @return [Hash] additional entries for the generated Info.plist
|
294
|
+
#
|
295
|
+
def info_plist_entries
|
296
|
+
{}
|
297
|
+
end
|
298
|
+
|
293
299
|
# @return [Pathname] the path of the dummy source generated by CocoaPods
|
294
300
|
#
|
295
301
|
def dummy_source_path
|
@@ -7,7 +7,8 @@ module Pod
|
|
7
7
|
class AggregateTarget < Target
|
8
8
|
# Product types where the product's frameworks must be embedded in a host target
|
9
9
|
#
|
10
|
-
EMBED_FRAMEWORKS_IN_HOST_TARGET_TYPES = [:app_extension, :framework, :static_library, :messages_extension,
|
10
|
+
EMBED_FRAMEWORKS_IN_HOST_TARGET_TYPES = [:app_extension, :framework, :static_library, :messages_extension,
|
11
|
+
:watch_extension, :xpc_service].freeze
|
11
12
|
|
12
13
|
# @return [TargetDefinition] the target definition of the Podfile that
|
13
14
|
# generated this target.
|
@@ -118,7 +119,9 @@ module Pod
|
|
118
119
|
# that this is a library
|
119
120
|
return false if user_project.nil?
|
120
121
|
symbol_types = user_targets.map(&:symbol_type).uniq
|
121
|
-
|
122
|
+
unless symbol_types.count == 1
|
123
|
+
raise ArgumentError, "Expected single kind of user_target for #{name}. Found #{symbol_types.join(', ')}."
|
124
|
+
end
|
122
125
|
[:framework, :dynamic_library, :static_library].include? symbol_types.first
|
123
126
|
end
|
124
127
|
|
@@ -134,7 +137,9 @@ module Pod
|
|
134
137
|
# target that would require a host target
|
135
138
|
return false if user_project.nil?
|
136
139
|
symbol_types = user_targets.map(&:symbol_type).uniq
|
137
|
-
|
140
|
+
unless symbol_types.count == 1
|
141
|
+
raise ArgumentError, "Expected single kind of user_target for #{name}. Found #{symbol_types.join(', ')}."
|
142
|
+
end
|
138
143
|
EMBED_FRAMEWORKS_IN_HOST_TARGET_TYPES.include?(symbol_types[0])
|
139
144
|
end
|
140
145
|
|
@@ -194,7 +199,7 @@ module Pod
|
|
194
199
|
#
|
195
200
|
def specs_by_build_configuration
|
196
201
|
result = {}
|
197
|
-
user_build_configurations.
|
202
|
+
user_build_configurations.each_key do |build_configuration|
|
198
203
|
result[build_configuration] = pod_targets_for_build_configuration(build_configuration).
|
199
204
|
flat_map(&:specs)
|
200
205
|
end
|
@@ -216,14 +221,14 @@ module Pod
|
|
216
221
|
# @return [Boolean] Whether the target contains any resources
|
217
222
|
#
|
218
223
|
def includes_resources?
|
219
|
-
!resource_paths_by_config.
|
224
|
+
!resource_paths_by_config.each_value.all?(&:empty?)
|
220
225
|
end
|
221
226
|
|
222
227
|
# @return [Boolean] Whether the target contains framework to be embedded into
|
223
228
|
# the user target
|
224
229
|
#
|
225
230
|
def includes_frameworks?
|
226
|
-
!framework_paths_by_config.
|
231
|
+
!framework_paths_by_config.each_value.all?(&:empty?)
|
227
232
|
end
|
228
233
|
|
229
234
|
# @return [Hash{String => Array<FrameworkPaths>}] The vendored dynamic artifacts and framework target
|
@@ -232,7 +237,7 @@ module Pod
|
|
232
237
|
def framework_paths_by_config
|
233
238
|
@framework_paths_by_config ||= begin
|
234
239
|
framework_paths_by_config = {}
|
235
|
-
user_build_configurations.
|
240
|
+
user_build_configurations.each_key do |config|
|
236
241
|
relevant_pod_targets = pod_targets_for_build_configuration(config)
|
237
242
|
framework_paths_by_config[config] = relevant_pod_targets.flat_map do |pod_target|
|
238
243
|
library_specs = pod_target.library_specs.map(&:name)
|
@@ -250,7 +255,7 @@ module Pod
|
|
250
255
|
relevant_pod_targets = pod_targets.reject do |pod_target|
|
251
256
|
pod_target.should_build? && pod_target.build_as_dynamic_framework?
|
252
257
|
end
|
253
|
-
user_build_configurations.
|
258
|
+
user_build_configurations.each_key.each_with_object({}) do |config, resources_by_config|
|
254
259
|
targets = relevant_pod_targets & pod_targets_for_build_configuration(config)
|
255
260
|
resources_by_config[config] = targets.flat_map do |pod_target|
|
256
261
|
library_specs = pod_target.library_specs.map(&:name)
|
@@ -402,8 +402,8 @@ module Pod
|
|
402
402
|
#
|
403
403
|
# @return [Hash<String, String>]
|
404
404
|
#
|
405
|
-
def merged_xcconfigs(xcconfig_values_by_consumer_by_key, attribute)
|
406
|
-
xcconfig_values_by_consumer_by_key.each_with_object(
|
405
|
+
def merged_xcconfigs(xcconfig_values_by_consumer_by_key, attribute, overriding: {})
|
406
|
+
xcconfig_values_by_consumer_by_key.each_with_object(overriding.dup) do |(key, values_by_consumer), xcconfig|
|
407
407
|
uniq_values = values_by_consumer.values.uniq
|
408
408
|
values_are_bools = uniq_values.all? { |v| v =~ /\A(yes|no)\z/i }
|
409
409
|
if values_are_bools
|
@@ -417,7 +417,11 @@ module Pod
|
|
417
417
|
end
|
418
418
|
elsif PLURAL_SETTINGS.include? key
|
419
419
|
# Plural build settings
|
420
|
-
xcconfig
|
420
|
+
if xcconfig.key?(key)
|
421
|
+
overridden = xcconfig[key]
|
422
|
+
uniq_values.prepend(overridden)
|
423
|
+
end
|
424
|
+
xcconfig[key] = uniq_values.uniq.join(' ')
|
421
425
|
elsif uniq_values.count > 1
|
422
426
|
# Singular build settings
|
423
427
|
UI.warn "Can't merge #{attribute} for pod targets: " \
|
@@ -555,12 +559,11 @@ module Pod
|
|
555
559
|
|
556
560
|
frameworks = []
|
557
561
|
frameworks.concat consumer_frameworks
|
558
|
-
if
|
562
|
+
if library_xcconfig? && (target.should_build? && target.build_as_dynamic?)
|
559
563
|
frameworks.concat vendored_static_frameworks.map { |l| File.basename(l, '.framework') }
|
560
564
|
end
|
561
565
|
if non_library_xcconfig?
|
562
|
-
frameworks.concat
|
563
|
-
frameworks.concat dependent_targets.flat_map { |pt| pt.build_settings.frameworks_to_import }
|
566
|
+
frameworks.concat dependent_targets_to_link.flat_map { |pt| pt.build_settings.frameworks_to_import }
|
564
567
|
end
|
565
568
|
frameworks
|
566
569
|
end
|
@@ -665,7 +668,7 @@ module Pod
|
|
665
668
|
end
|
666
669
|
if non_library_xcconfig?
|
667
670
|
libraries.concat dependent_targets.flat_map { |pt| pt.build_settings.dynamic_libraries_to_import }
|
668
|
-
libraries.concat
|
671
|
+
libraries.concat dependent_targets_to_link.flat_map { |pt| pt.build_settings.static_libraries_to_import }
|
669
672
|
end
|
670
673
|
libraries
|
671
674
|
end
|
@@ -865,6 +868,17 @@ module Pod
|
|
865
868
|
)
|
866
869
|
end
|
867
870
|
|
871
|
+
# @return [Array<PodTarget>]
|
872
|
+
define_build_settings_method :dependent_targets_to_link, :memoized => true do
|
873
|
+
if test_xcconfig?
|
874
|
+
# we're embedding into an app defined by an app spec
|
875
|
+
host_targets = target.app_host_dependent_targets_for_spec(non_library_spec)
|
876
|
+
dependent_targets - host_targets
|
877
|
+
else
|
878
|
+
dependent_targets
|
879
|
+
end
|
880
|
+
end
|
881
|
+
|
868
882
|
# Returns the +pod_target_xcconfig+ for the pod target and its spec
|
869
883
|
# consumers grouped by keys
|
870
884
|
#
|
@@ -884,17 +898,26 @@ module Pod
|
|
884
898
|
# @return [Hash{String, String}]
|
885
899
|
#
|
886
900
|
define_build_settings_method :merged_pod_target_xcconfigs, :memoized => true do
|
887
|
-
merged_xcconfigs(pod_target_xcconfig_values_by_consumer_by_key, :pod_target_xcconfig
|
901
|
+
merged_xcconfigs(pod_target_xcconfig_values_by_consumer_by_key, :pod_target_xcconfig,
|
902
|
+
:overriding => non_library_xcconfig? ? target.build_settings.merged_pod_target_xcconfigs : {})
|
888
903
|
end
|
889
904
|
|
890
905
|
# @return [Array<Sandbox::FileAccessor>]
|
891
906
|
define_build_settings_method :file_accessors, :memoized => true do
|
892
|
-
|
907
|
+
if non_library_xcconfig?
|
908
|
+
target.file_accessors.select { |fa| non_library_spec == fa.spec }
|
909
|
+
else
|
910
|
+
target.file_accessors.select { |fa| fa.spec.spec_type == @xcconfig_spec_type }
|
911
|
+
end
|
893
912
|
end
|
894
913
|
|
895
914
|
# @return [Array<Specification::Consumer>]
|
896
915
|
define_build_settings_method :spec_consumers, :memoized => true do
|
897
|
-
|
916
|
+
if non_library_xcconfig?
|
917
|
+
target.spec_consumers.select { |sc| non_library_spec == sc.spec }
|
918
|
+
else
|
919
|
+
target.spec_consumers.select { |sc| sc.spec.spec_type == @xcconfig_spec_type }
|
920
|
+
end
|
898
921
|
end
|
899
922
|
|
900
923
|
#-------------------------------------------------------------------------#
|