cocoapods 0.34.4 → 0.35.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +108 -1
  3. data/bin/pod +20 -2
  4. data/lib/cocoapods.rb +1 -0
  5. data/lib/cocoapods/command.rb +17 -11
  6. data/lib/cocoapods/command/repo/push.rb +1 -1
  7. data/lib/cocoapods/command/search.rb +1 -0
  8. data/lib/cocoapods/gem_version.rb +1 -1
  9. data/lib/cocoapods/generator/acknowledgements/plist.rb +4 -10
  10. data/lib/cocoapods/generator/header.rb +75 -0
  11. data/lib/cocoapods/generator/prefix_header.rb +15 -34
  12. data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +2 -2
  13. data/lib/cocoapods/generator/xcconfig/private_pod_xcconfig.rb +4 -1
  14. data/lib/cocoapods/hooks/library_representation.rb +1 -1
  15. data/lib/cocoapods/installer.rb +3 -3
  16. data/lib/cocoapods/installer/analyzer.rb +35 -37
  17. data/lib/cocoapods/installer/analyzer/locking_dependency_analyzer.rb +72 -0
  18. data/lib/cocoapods/installer/file_references_installer.rb +10 -9
  19. data/lib/cocoapods/installer/target_installer.rb +21 -21
  20. data/lib/cocoapods/installer/target_installer/aggregate_target_installer.rb +17 -17
  21. data/lib/cocoapods/installer/target_installer/pod_target_installer.rb +19 -19
  22. data/lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb +7 -3
  23. data/lib/cocoapods/project.rb +1 -1
  24. data/lib/cocoapods/resolver.rb +235 -98
  25. data/lib/cocoapods/resolver/lazy_specification.rb +60 -0
  26. data/lib/cocoapods/sandbox.rb +2 -1
  27. data/lib/cocoapods/sandbox/file_accessor.rb +26 -19
  28. data/lib/cocoapods/sandbox/headers_store.rb +12 -7
  29. data/lib/cocoapods/sources_manager.rb +6 -6
  30. data/lib/cocoapods/target.rb +1 -1
  31. data/lib/cocoapods/target/pod_target.rb +2 -2
  32. data/lib/cocoapods/user_interface.rb +1 -1
  33. data/lib/cocoapods/user_interface/error_report.rb +3 -0
  34. data/lib/cocoapods/validator.rb +2 -2
  35. metadata +21 -26
  36. data/lib/cocoapods/command/push.rb +0 -21
@@ -47,11 +47,11 @@ module Pod
47
47
  # @return [Xcodeproj::Config]
48
48
  #
49
49
  def generate
50
- header_search_path_flags = target.sandbox.public_headers.search_paths
50
+ header_search_path_flags = target.sandbox.public_headers.search_paths(target.platform)
51
51
  @xcconfig = Xcodeproj::Config.new(
52
52
  'OTHER_LDFLAGS' => XCConfigHelper.default_ld_flags(target),
53
53
  'OTHER_LIBTOOLFLAGS' => '$(OTHER_LDFLAGS)',
54
- 'HEADER_SEARCH_PATHS' => XCConfigHelper.quote(target.sandbox.public_headers.search_paths),
54
+ 'HEADER_SEARCH_PATHS' => XCConfigHelper.quote(header_search_path_flags),
55
55
  'PODS_ROOT' => target.relative_pods_root,
56
56
  'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) COCOAPODS=1',
57
57
  'OTHER_CFLAGS' => '$(inherited) ' + XCConfigHelper.quote(header_search_path_flags, '-isystem')
@@ -45,7 +45,10 @@ module Pod
45
45
  # @return [Xcodeproj::Config]
46
46
  #
47
47
  def generate
48
- search_paths = target.build_headers.search_paths.concat(target.sandbox.public_headers.search_paths)
48
+ target_search_paths = target.build_headers.search_paths(target.platform)
49
+ sandbox_search_paths = target.sandbox.public_headers.search_paths(target.platform)
50
+ search_paths = target_search_paths.concat(sandbox_search_paths).uniq
51
+
49
52
  config = {
50
53
  'OTHER_LDFLAGS' => XCConfigHelper.default_ld_flags(target),
51
54
  'PODS_ROOT' => '${SRCROOT}',
@@ -69,7 +69,7 @@ module Pod
69
69
  # process.
70
70
  #
71
71
  def target
72
- library.target
72
+ library.native_target
73
73
  end
74
74
 
75
75
  #-----------------------------------------------------------------------#
@@ -418,7 +418,7 @@ module Pod
418
418
  pod_targets.sort_by(&:name).each do |pod_target|
419
419
  pod_target.file_accessors.each do |file_accessor|
420
420
  file_accessor.spec_consumer.frameworks.each do |framework|
421
- pod_target.target.add_system_framework(framework)
421
+ pod_target.native_target.add_system_framework(framework)
422
422
  end
423
423
  end
424
424
  end
@@ -428,7 +428,7 @@ module Pod
428
428
  def set_target_dependencies
429
429
  aggregate_targets.each do |aggregate_target|
430
430
  aggregate_target.pod_targets.each do |pod_target|
431
- aggregate_target.target.add_dependency(pod_target.target)
431
+ aggregate_target.native_target.add_dependency(pod_target.native_target)
432
432
  pod_target.dependencies.each do |dep|
433
433
 
434
434
  unless dep == pod_target.pod_name
@@ -437,7 +437,7 @@ module Pod
437
437
  unless pod_dependency_target
438
438
  puts "[BUG] DEP: #{dep}"
439
439
  end
440
- pod_target.target.add_dependency(pod_dependency_target.target)
440
+ pod_target.native_target.add_dependency(pod_dependency_target.native_target)
441
441
  end
442
442
  end
443
443
  end
@@ -8,6 +8,8 @@ module Pod
8
8
 
9
9
  autoload :SandboxAnalyzer, 'cocoapods/installer/analyzer/sandbox_analyzer'
10
10
 
11
+ autoload :LockingDependencyAnalyzer, 'cocoapods/installer/analyzer/locking_dependency_analyzer'
12
+
11
13
  # @return [Sandbox] The sandbox where the Pods should be installed.
12
14
  #
13
15
  attr_reader :sandbox
@@ -149,17 +151,13 @@ module Pod
149
151
  pods_state = nil
150
152
  UI.section 'Finding Podfile changes' do
151
153
  pods_by_state = lockfile.detect_changes_with_podfile(podfile)
152
- pods_by_state.dup.each do |state, full_names|
153
- pods = full_names.map { |fn| Specification.root_name(fn) }.uniq
154
- pods_by_state[state] = pods
155
- end
156
154
  pods_state = SpecsState.new(pods_by_state)
157
155
  pods_state.print
158
156
  end
159
157
  pods_state
160
158
  else
161
159
  state = SpecsState.new
162
- state.added.concat(podfile.dependencies.map(&:root_name).uniq)
160
+ state.added.concat(podfile.dependencies.map(&:name).uniq)
163
161
  state
164
162
  end
165
163
  end
@@ -231,21 +229,17 @@ module Pod
231
229
  # is in update mode, to prevent it from upgrading the Pods that weren't
232
230
  # changed in the {Podfile}.
233
231
  #
234
- # @return [Array<Dependency>] the dependencies generate by the lockfile
235
- # that prevent the resolver to update a Pod.
232
+ # @return [Molinillo::DependencyGraph<Dependency>] the dependencies
233
+ # generated by the lockfile that prevent the resolver to update
234
+ # a Pod.
236
235
  #
237
236
  def generate_version_locking_dependencies
238
- if update_mode == :all
239
- []
237
+ if update_mode == :all || !lockfile
238
+ LockingDependencyAnalyzer.unlocked_dependency_graph
240
239
  else
241
- locking_pods = result.podfile_state.unchanged
242
- if update_mode == :selected
243
- # If selected Pods should been updated, filter them out of the list
244
- locking_pods = locking_pods.select { |pod| !update[:pods].include?(pod) }
245
- end
246
- locking_pods.map do |pod|
247
- lockfile.dependencies_to_lock_pod_named(pod)
248
- end.flatten
240
+ pods_to_update = result.podfile_state.changed + result.podfile_state.deleted
241
+ pods_to_update += update[:pods] if update_mode == :selected
242
+ LockingDependencyAnalyzer.generate_version_locking_dependencies(lockfile, pods_to_update)
249
243
  end
250
244
  end
251
245
 
@@ -274,6 +268,11 @@ module Pod
274
268
  deps_to_fetch_if_needed = []
275
269
  deps_with_external_source = podfile.dependencies.select(&:external_source)
276
270
 
271
+ deps_with_different_sources = podfile.dependencies.group_by(&:root_name).select { |_root_name, dependencies| dependencies.map(&:external_source).uniq.count > 1 }
272
+ deps_with_different_sources.each do |root_name, dependencies|
273
+ raise Informative, "There are multiple dependencies with different sources for `#{root_name}` in #{UI.path podfile.defined_in_file}:\n\n- #{dependencies.map(&:to_s).join("\n- ")}"
274
+ end
275
+
277
276
  if update_mode == :all
278
277
  deps_to_fetch = deps_with_external_source
279
278
  else
@@ -281,14 +280,14 @@ module Pod
281
280
  if update_mode == :selected
282
281
  pods_to_fetch += update[:pods]
283
282
  end
284
- deps_to_fetch = deps_with_external_source.select { |dep| pods_to_fetch.include?(dep.root_name) }
285
- deps_to_fetch_if_needed = deps_with_external_source.select { |dep| result.podfile_state.unchanged.include?(dep.root_name) }
286
- deps_to_fetch += deps_to_fetch_if_needed.select { |dep| sandbox.specification(dep.root_name).nil? || !dep.external_source[:local].nil? || !dep.external_source[:path].nil? || !sandbox.pod_dir(dep.root_name).directory? }
283
+ deps_to_fetch = deps_with_external_source.select { |dep| pods_to_fetch.include?(dep.name) }
284
+ deps_to_fetch_if_needed = deps_with_external_source.select { |dep| result.podfile_state.unchanged.include?(dep.name) }
285
+ deps_to_fetch += deps_to_fetch_if_needed.select { |dep| sandbox.specification(dep.name).nil? || !dep.external_source[:local].nil? || !dep.external_source[:path].nil? || !sandbox.pod_dir(dep.name).directory? }
287
286
  end
288
287
 
289
288
  unless deps_to_fetch.empty?
290
289
  UI.section 'Fetching external sources' do
291
- deps_to_fetch.uniq.sort.each do |dependency|
290
+ deps_to_fetch.uniq(&:root_name).sort.each do |dependency|
292
291
  source = ExternalSources.from_dependency(dependency, podfile.defined_in_file)
293
292
  source.fetch(sandbox)
294
293
  end
@@ -316,6 +315,13 @@ module Pod
316
315
  # grouped by target.
317
316
  #
318
317
  def resolve_dependencies
318
+ duplicate_dependencies = podfile.dependencies.group_by(&:name).
319
+ select { |_name, dependencies| dependencies.count > 1 }
320
+ duplicate_dependencies.each do |name, dependencies|
321
+ UI.warn "There are duplicate dependencies on `#{name}` in #{UI.path podfile.defined_in_file}:\n\n" \
322
+ "- #{dependencies.map(&:to_s).join("\n- ")}"
323
+ end
324
+
319
325
  specs_by_target = nil
320
326
  UI.section "Resolving dependencies of #{UI.path podfile.defined_in_file}" do
321
327
  resolver = Resolver.new(sandbox, podfile, locked_dependencies, sources)
@@ -352,8 +358,9 @@ module Pod
352
358
 
353
359
  # @!group Analysis internal products
354
360
 
355
- # @return [Array<Dependency>] the dependencies generate by the lockfile
356
- # that prevent the resolver to update a Pod.
361
+ # @return [Molinillo::DependencyGraph<Dependency>] the dependencies
362
+ # generated by the lockfile that prevent the resolver to update a
363
+ # Pod.
357
364
  #
358
365
  attr_reader :locked_dependencies
359
366
 
@@ -363,23 +370,17 @@ module Pod
363
370
 
364
371
  # Returns the sources used to query for specifications
365
372
  #
366
- # @note Currently, this defaults to {SourcesManager.all} when no
367
- # Podfile sources are defined, but this implicit declaration of
368
- # sources is deprecated.
373
+ # When no explicit Podfile sources are defined, this defaults to all
374
+ # available sources ({SourcesManager.all}).
369
375
  #
370
376
  # @return [Array<Source>] the sources to be used in finding
371
- # specifications, as specified by the {#podfile}.
377
+ # specifications, as specified by the {#podfile} or all sources.
372
378
  #
373
379
  def sources
374
380
  @sources ||= begin
375
381
  sources = podfile.sources
376
382
  if sources.empty?
377
- SourcesManager.all.tap do |all|
378
- UI.warn all.reduce("The use of implicit sources has been " \
379
- "deprecated. To continue using all of the sources currently " \
380
- "on your machine, add the following to the top of your " \
381
- "Podfile:\n") { |w, s| w << "\n source '#{s.url}'" } + "\n"
382
- end
383
+ SourcesManager.all
383
384
  else
384
385
  sources.map do |url|
385
386
  SourcesManager.find_or_create_source_with_url(url)
@@ -604,7 +605,7 @@ module Pod
604
605
  #
605
606
  class SpecsState
606
607
  # @param [Hash{Symbol=>String}] pods_by_state
607
- # The **root** name of the pods grouped by their state
608
+ # The name of the pods grouped by their state
608
609
  # (`:added`, `:removed`, `:changed` or `:unchanged`).
609
610
  #
610
611
  def initialize(pods_by_state = nil)
@@ -656,12 +657,9 @@ module Pod
656
657
  # @param [Symbol]
657
658
  # the state of the Pod.
658
659
  #
659
- # @raise If there is an attempt to add the name of a subspec.
660
- #
661
660
  # @return [void]
662
661
  #
663
662
  def add_name(name, state)
664
- raise '[Bug] Attempt to add subspec to the pods state' if name.include?('/')
665
663
  send(state) << name
666
664
  end
667
665
  end
@@ -0,0 +1,72 @@
1
+ require 'molinillo/dependency_graph'
2
+
3
+ module Pod
4
+ class Installer
5
+ class Analyzer
6
+ # Generates dependencies that require the specific version of the Pods
7
+ # that haven't changed in the {Lockfile}.
8
+ module LockingDependencyAnalyzer
9
+ # Generates dependencies that require the specific version of the Pods
10
+ # that haven't changed in the {Lockfile}.
11
+ #
12
+ # These dependencies are passed to the {Resolver}, unless the installer
13
+ # is in update mode, to prevent it from upgrading the Pods that weren't
14
+ # changed in the {Podfile}.
15
+ #
16
+ # @return [Molinillo::DependencyGraph<Dependency>] the dependencies
17
+ # generated by the lockfile that prevent the resolver to update
18
+ # a Pod.
19
+ #
20
+ def self.generate_version_locking_dependencies(lockfile, pods_to_update)
21
+ dependency_graph = Molinillo::DependencyGraph.new
22
+
23
+ if lockfile
24
+ explicit_dependencies = lockfile.to_hash['DEPENDENCIES'] || []
25
+ explicit_dependencies.each do |string|
26
+ dependency = Dependency.new(string)
27
+ dependency_graph.add_root_vertex(dependency.name, nil)
28
+ end
29
+
30
+ pods = lockfile.to_hash['PODS'] || []
31
+ pods.each do |pod|
32
+ add_to_dependency_graph(pod, [], dependency_graph)
33
+ end
34
+
35
+ pods_to_update.each { |u| dependency_graph.detach_vertex_named(u) }
36
+ end
37
+
38
+ dependency_graph
39
+ end
40
+
41
+ # Generates a completely 'unlocked' dependency graph.
42
+ #
43
+ # @return [Molinillo::DependencyGraph<Dependency>] an empty dependency
44
+ # graph
45
+ #
46
+ def self.unlocked_dependency_graph
47
+ Molinillo::DependencyGraph.new
48
+ end
49
+
50
+ private
51
+
52
+ def self.add_child_vertex_to_graph(dependency_string, parents, dependency_graph)
53
+ dependency = Dependency.from_string(dependency_string)
54
+ dependency_graph.add_child_vertex(dependency.name, parents.empty? ? dependency : nil, parents, nil)
55
+ dependency
56
+ end
57
+
58
+ def self.add_to_dependency_graph(object, parents, dependency_graph)
59
+ case object
60
+ when String
61
+ add_child_vertex_to_graph(object, parents, dependency_graph)
62
+ when Hash
63
+ object.each do |key, value|
64
+ dependency = add_child_vertex_to_graph(key, parents, dependency_graph)
65
+ value.each { |v| add_to_dependency_graph(v, [dependency.name], dependency_graph) }
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -8,7 +8,7 @@ module Pod
8
8
  #
9
9
  attr_reader :sandbox
10
10
 
11
- # @return [Array<Library>] The libraries of the installation.
11
+ # @return [Array<PodTarget>] The libraries of the installation.
12
12
  #
13
13
  attr_reader :libraries
14
14
 
@@ -17,7 +17,7 @@ module Pod
17
17
  attr_reader :pods_project
18
18
 
19
19
  # @param [Sandbox] sandbox @see sandbox
20
- # @param [Array<Library>] libraries @see libraries
20
+ # @param [Array<PodTarget>] libraries @see libraries
21
21
  # @param [Project] libraries @see libraries
22
22
  #
23
23
  def initialize(sandbox, libraries, pods_project)
@@ -114,15 +114,15 @@ module Pod
114
114
  libraries.each do |library|
115
115
  library.file_accessors.each do |file_accessor|
116
116
  headers_sandbox = Pathname.new(file_accessor.spec.root.name)
117
- library.build_headers.add_search_path(headers_sandbox)
118
- sandbox.public_headers.add_search_path(headers_sandbox)
117
+ library.build_headers.add_search_path(headers_sandbox, library.platform)
118
+ sandbox.public_headers.add_search_path(headers_sandbox, library.platform)
119
119
 
120
120
  header_mappings(headers_sandbox, file_accessor, file_accessor.headers).each do |namespaced_path, files|
121
- library.build_headers.add_files(namespaced_path, files)
121
+ library.build_headers.add_files(namespaced_path, files, library.platform)
122
122
  end
123
123
 
124
124
  header_mappings(headers_sandbox, file_accessor, file_accessor.public_headers).each do |namespaced_path, files|
125
- sandbox.public_headers.add_files(namespaced_path, files)
125
+ sandbox.public_headers.add_files(namespaced_path, files, library.platform)
126
126
  end
127
127
  end
128
128
  end
@@ -167,11 +167,12 @@ module Pod
167
167
  # Computes the destination sub-directory in the sandbox
168
168
  #
169
169
  # @param [Pathname] headers_sandbox
170
- # The sandbox where the headers links should be stored for this
170
+ # The sandbox where the header links should be stored for this
171
171
  # Pod.
172
172
  #
173
- # @param [Specification::Consumer] consumer
174
- # The consumer for which the headers need to be linked.
173
+ # @param [Sandbox::FileAccessor] file_accessor
174
+ # The consumer file accessor for which the headers need to be
175
+ # linked.
175
176
  #
176
177
  # @param [Array<Pathname>] headers
177
178
  # The absolute paths of the headers which need to be mapped.
@@ -10,16 +10,16 @@ module Pod
10
10
  #
11
11
  attr_reader :sandbox
12
12
 
13
- # @return [Library] The library whose target needs to be generated.
13
+ # @return [Target] The library whose target needs to be generated.
14
14
  #
15
- attr_reader :library
15
+ attr_reader :target
16
16
 
17
17
  # @param [Project] project @see project
18
- # @param [Library] library @see library
18
+ # @param [Target] target @see target
19
19
  #
20
- def initialize(sandbox, library)
20
+ def initialize(sandbox, target)
21
21
  @sandbox = sandbox
22
- @library = library
22
+ @target = target
23
23
  end
24
24
 
25
25
  private
@@ -36,31 +36,31 @@ module Pod
36
36
  # @return [void]
37
37
  #
38
38
  def add_target
39
- name = library.label
40
- platform = library.platform.name
41
- deployment_target = library.platform.deployment_target.to_s
42
- @target = project.new_target(:static_library, name, platform, deployment_target)
39
+ name = target.label
40
+ platform = target.platform.name
41
+ deployment_target = target.platform.deployment_target.to_s
42
+ @native_target = project.new_target(:static_library, name, platform, deployment_target)
43
43
 
44
- library.user_build_configurations.each do |bc_name, type|
45
- configuration = @target.add_build_configuration(bc_name, type)
44
+ target.user_build_configurations.each do |bc_name, type|
45
+ configuration = @native_target.add_build_configuration(bc_name, type)
46
46
  end
47
47
 
48
48
  settings = { 'OTHER_LDFLAGS' => '', 'OTHER_LIBTOOLFLAGS' => '' }
49
- if library.archs
50
- settings['ARCHS'] = library.archs
49
+ if target.archs
50
+ settings['ARCHS'] = target.archs
51
51
  end
52
52
 
53
- @target.build_configurations.each do |configuration|
53
+ @native_target.build_configurations.each do |configuration|
54
54
  configuration.build_settings.merge!(settings)
55
55
  end
56
56
 
57
- library.target = @target
57
+ target.native_target = @native_target
58
58
  end
59
59
 
60
60
  # Creates the directory where to store the support files of the target.
61
61
  #
62
62
  def create_support_files_dir
63
- library.support_files_dir.mkdir
63
+ target.support_files_dir.mkdir
64
64
  end
65
65
 
66
66
  # Generates a dummy source file for each target so libraries that contain
@@ -69,11 +69,11 @@ module Pod
69
69
  # @return [void]
70
70
  #
71
71
  def create_dummy_source
72
- path = library.dummy_source_path
73
- generator = Generator::DummySource.new(library.label)
72
+ path = target.dummy_source_path
73
+ generator = Generator::DummySource.new(target.label)
74
74
  generator.save_as(path)
75
75
  file_reference = add_file_to_support_group(path)
76
- target.source_build_phase.add_file_reference(file_reference)
76
+ native_target.source_build_phase.add_file_reference(file_reference)
77
77
  end
78
78
 
79
79
  # @return [PBXNativeTarget] the target generated by the installation
@@ -81,7 +81,7 @@ module Pod
81
81
  #
82
82
  # @note Generated by the {#add_target} step.
83
83
  #
84
- attr_reader :target
84
+ attr_reader :native_target
85
85
 
86
86
  private
87
87
 
@@ -98,7 +98,7 @@ module Pod
98
98
  # @return [TargetDefinition] the target definition of the library.
99
99
  #
100
100
  def target_definition
101
- library.target_definition
101
+ target.target_definition
102
102
  end
103
103
 
104
104
  # @return [PBXGroup] the group where the file references to the support
@@ -9,7 +9,7 @@ module Pod
9
9
  # @return [void]
10
10
  #
11
11
  def install!
12
- UI.message "- Installing target `#{library.name}` #{library.platform}" do
12
+ UI.message "- Installing target `#{target.name}` #{target.platform}" do
13
13
  add_target
14
14
  create_support_files_dir
15
15
  create_suport_files_group
@@ -33,8 +33,8 @@ module Pod
33
33
  #
34
34
  def create_suport_files_group
35
35
  parent = project.support_files_group
36
- name = library.name
37
- dir = library.support_files_dir
36
+ name = target.name
37
+ dir = target.support_files_dir
38
38
  @support_files_group = parent.new_group(name, dir)
39
39
  end
40
40
 
@@ -43,11 +43,11 @@ module Pod
43
43
  # @return [void]
44
44
  #
45
45
  def create_xcconfig_file
46
- target.build_configurations.each do |configuration|
47
- path = library.xcconfig_path(configuration.name)
48
- gen = Generator::XCConfig::AggregateXCConfig.new(library, configuration.name)
46
+ native_target.build_configurations.each do |configuration|
47
+ path = target.xcconfig_path(configuration.name)
48
+ gen = Generator::XCConfig::AggregateXCConfig.new(target, configuration.name)
49
49
  gen.save_as(path)
50
- library.xcconfigs[configuration.name] = gen.xcconfig
50
+ target.xcconfigs[configuration.name] = gen.xcconfig
51
51
  xcconfig_file_ref = add_file_to_support_group(path)
52
52
  configuration.base_configuration_reference = xcconfig_file_ref
53
53
  end
@@ -57,8 +57,8 @@ module Pod
57
57
  # pods and the installed specifications of a pod.
58
58
  #
59
59
  def create_target_environment_header
60
- path = library.target_environment_header_path
61
- generator = Generator::TargetEnvironmentHeader.new(library.specs_by_build_configuration)
60
+ path = target.target_environment_header_path
61
+ generator = Generator::TargetEnvironmentHeader.new(target.specs_by_build_configuration)
62
62
  generator.save_as(path)
63
63
  add_file_to_support_group(path)
64
64
  end
@@ -66,15 +66,15 @@ module Pod
66
66
  # Generates the bridge support metadata if requested by the {Podfile}.
67
67
  #
68
68
  # @note The bridge support metadata is added to the resources of the
69
- # library because it is needed for environments interpreted at
69
+ # target because it is needed for environments interpreted at
70
70
  # runtime.
71
71
  #
72
72
  # @return [void]
73
73
  #
74
74
  def create_bridge_support_file
75
75
  if target_definition.podfile.generate_bridge_support?
76
- path = library.bridge_support_path
77
- headers = target.headers_build_phase.files.map { |bf| sandbox.root + bf.file_ref.path }
76
+ path = target.bridge_support_path
77
+ headers = native_target.headers_build_phase.files.map { |bf| sandbox.root + bf.file_ref.path }
78
78
  generator = Generator::BridgeSupport.new(headers)
79
79
  generator.save_as(path)
80
80
  add_file_to_support_group(path)
@@ -91,15 +91,15 @@ module Pod
91
91
  # @return [void]
92
92
  #
93
93
  def create_copy_resources_script
94
- path = library.copy_resources_script_path
95
- file_accessors = library.pod_targets.map(&:file_accessors).flatten
94
+ path = target.copy_resources_script_path
95
+ file_accessors = target.pod_targets.map(&:file_accessors).flatten
96
96
  resource_paths = file_accessors.map { |accessor| accessor.resources.flatten.map { |res| res.relative_path_from(project.path.dirname) } }.flatten
97
97
  resource_bundles = file_accessors.map { |accessor| accessor.resource_bundles.keys.map { |name| "${BUILT_PRODUCTS_DIR}/#{name}.bundle" } }.flatten
98
98
  resources = []
99
99
  resources.concat(resource_paths)
100
100
  resources.concat(resource_bundles)
101
101
  resources << bridge_support_file if bridge_support_file
102
- generator = Generator::CopyResourcesScript.new(resources, library.platform)
102
+ generator = Generator::CopyResourcesScript.new(resources, target.platform)
103
103
  generator.save_as(path)
104
104
  add_file_to_support_group(path)
105
105
  end
@@ -109,10 +109,10 @@ module Pod
109
109
  # @return [void]
110
110
  #
111
111
  def create_acknowledgements
112
- basepath = library.acknowledgements_basepath
112
+ basepath = target.acknowledgements_basepath
113
113
  Generator::Acknowledgements.generators.each do |generator_class|
114
114
  path = generator_class.path_from_basepath(basepath)
115
- file_accessors = library.pod_targets.map(&:file_accessors).flatten
115
+ file_accessors = target.pod_targets.map(&:file_accessors).flatten
116
116
  generator = generator_class.new(file_accessors)
117
117
  generator.save_as(path)
118
118
  add_file_to_support_group(path)