cocoapods 1.10.0 → 1.11.0

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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +261 -5
  3. data/README.md +11 -11
  4. data/lib/cocoapods/command/outdated.rb +12 -1
  5. data/lib/cocoapods/command/repo/push.rb +17 -0
  6. data/lib/cocoapods/command/spec/cat.rb +3 -1
  7. data/lib/cocoapods/command/spec/lint.rb +1 -1
  8. data/lib/cocoapods/command/spec/which.rb +3 -1
  9. data/lib/cocoapods/command/spec.rb +18 -9
  10. data/lib/cocoapods/config.rb +1 -1
  11. data/lib/cocoapods/downloader/cache.rb +95 -6
  12. data/lib/cocoapods/downloader.rb +4 -2
  13. data/lib/cocoapods/external_sources/podspec_source.rb +1 -1
  14. data/lib/cocoapods/gem_version.rb +1 -1
  15. data/lib/cocoapods/generator/acknowledgements.rb +1 -1
  16. data/lib/cocoapods/generator/app_target_helper.rb +7 -3
  17. data/lib/cocoapods/generator/copy_dsyms_script.rb +4 -4
  18. data/lib/cocoapods/generator/copy_xcframework_script.rb +4 -48
  19. data/lib/cocoapods/generator/embed_frameworks_script.rb +2 -1
  20. data/lib/cocoapods/generator/script_phase_constants.rb +1 -0
  21. data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +31 -4
  22. data/lib/cocoapods/installer/analyzer.rb +12 -8
  23. data/lib/cocoapods/installer/podfile_validator.rb +2 -2
  24. data/lib/cocoapods/installer/pre_integrate_hooks_context.rb +9 -0
  25. data/lib/cocoapods/installer/project_cache/project_cache_analyzer.rb +9 -2
  26. data/lib/cocoapods/installer/project_cache/project_installation_cache.rb +15 -2
  27. data/lib/cocoapods/installer/project_cache/target_cache_key.rb +7 -4
  28. data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +149 -9
  29. data/lib/cocoapods/installer/xcode/pods_project_generator/app_host_installer.rb +10 -3
  30. data/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb +25 -6
  31. data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_dependency_installer.rb +6 -19
  32. data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb +70 -58
  33. data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_integrator.rb +48 -6
  34. data/lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb +2 -2
  35. data/lib/cocoapods/installer/xcode/pods_project_generator/target_installer.rb +2 -5
  36. data/lib/cocoapods/installer/xcode/pods_project_generator.rb +1 -1
  37. data/lib/cocoapods/installer.rb +52 -4
  38. data/lib/cocoapods/resolver.rb +4 -4
  39. data/lib/cocoapods/sandbox/file_accessor.rb +57 -10
  40. data/lib/cocoapods/sandbox/headers_store.rb +3 -1
  41. data/lib/cocoapods/sandbox/path_list.rb +1 -1
  42. data/lib/cocoapods/sandbox/pod_dir_cleaner.rb +1 -1
  43. data/lib/cocoapods/sources_manager.rb +14 -8
  44. data/lib/cocoapods/target/aggregate_target.rb +23 -1
  45. data/lib/cocoapods/target/build_settings.rb +45 -20
  46. data/lib/cocoapods/target/pod_target.rb +47 -22
  47. data/lib/cocoapods/target.rb +1 -1
  48. data/lib/cocoapods/user_interface.rb +4 -0
  49. data/lib/cocoapods/validator.rb +25 -5
  50. data/lib/cocoapods/version_metadata.rb +1 -1
  51. data/lib/cocoapods/xcode/xcframework/xcframework_slice.rb +10 -1
  52. data/lib/cocoapods/xcode/xcframework.rb +8 -3
  53. metadata +26 -19
@@ -64,7 +64,7 @@ module Pod
64
64
  # specifications (according to their platform) of this Pod.
65
65
  #
66
66
  def used_files
67
- FileAccessor.all_files(file_accessors)
67
+ FileAccessor.all_files(file_accessors).map(&:to_s)
68
68
  end
69
69
  end
70
70
  end
@@ -1,4 +1,5 @@
1
1
  require 'cocoapods-core/source'
2
+ require 'cocoapods/open-uri'
2
3
  require 'netrc'
3
4
  require 'set'
4
5
  require 'rest'
@@ -70,15 +71,20 @@ module Pod
70
71
  # The URL of the source.
71
72
  #
72
73
  def cdn_url?(url)
73
- if url =~ %r{^https?:\/\/}
74
- require 'typhoeus'
74
+ return unless url =~ %r{^https?:\/\/}
75
75
 
76
- response = Typhoeus.get(url + '/CocoaPods-version.yml', :netrc_file => Netrc.default_path, :netrc => :optional)
77
- response.code == 200 && begin
78
- response_hash = YAML.load(response.body) # rubocop:disable Security/YAMLLoad
79
- response_hash.is_a?(Hash) && !Source::Metadata.new(response_hash).latest_cocoapods_version.nil?
80
- end
81
- end
76
+ uri_options = {}
77
+
78
+ netrc_info = Netrc.read
79
+ netrc_host = URI.parse(url).host
80
+ credentials = netrc_info[netrc_host]
81
+ uri_options[:http_basic_authentication] = credentials if credentials
82
+
83
+ response = OpenURI.open_uri(url.chomp('/') + '/CocoaPods-version.yml', uri_options)
84
+ response_hash = YAML.load(response.read) # rubocop:disable Security/YAMLLoad
85
+ response_hash.is_a?(Hash) && !Source::Metadata.new(response_hash).latest_cocoapods_version.nil?
86
+ rescue ::OpenURI::HTTPError, SocketError
87
+ return false
82
88
  rescue => e
83
89
  raise Informative, "Couldn't determine repo type for URL: `#{url}`: #{e}"
84
90
  end
@@ -225,6 +225,12 @@ module Pod
225
225
  !resource_paths_by_config.each_value.all?(&:empty?)
226
226
  end
227
227
 
228
+ # @return [Boolean] Whether the target contains any on demand resources
229
+ #
230
+ def includes_on_demand_resources?
231
+ !on_demand_resources.empty?
232
+ end
233
+
228
234
  # @return [Boolean] Whether the target contains frameworks to be embedded into
229
235
  # the user target
230
236
  #
@@ -273,6 +279,20 @@ module Pod
273
279
  end
274
280
  end
275
281
 
282
+ # @return [Array<Pathname>] Uniqued On Demand Resources for this target.
283
+ #
284
+ # @note On Demand Resources are not separated by config as they are integrated directly into the users target via
285
+ # the resources build phase.
286
+ #
287
+ def on_demand_resources
288
+ @on_demand_resources ||= begin
289
+ pod_targets.flat_map do |pod_target|
290
+ library_file_accessors = pod_target.file_accessors.select { |fa| fa.spec.library_specification? }
291
+ library_file_accessors.flat_map(&:on_demand_resources_files)
292
+ end.uniq
293
+ end
294
+ end
295
+
276
296
  # @return [Hash{String => Array<String>}] Uniqued Resources grouped by config
277
297
  #
278
298
  def resource_paths_by_config
@@ -292,7 +312,9 @@ module Pod
292
312
  extname = File.extname(resource_path)
293
313
  if self.class.resource_extension_compilable?(extname)
294
314
  output_extname = self.class.output_extension_for_resource(extname)
295
- built_product_dir.join(File.basename(resource_path, extname)).sub_ext(output_extname).to_s
315
+ output_path_components = Pathname(resource_path).each_filename.select { |component| File.extname(component) == '.lproj' }
316
+ output_path_components << File.basename(resource_path)
317
+ built_product_dir.join(*output_path_components).sub_ext(output_extname).to_s
296
318
  else
297
319
  resource_path
298
320
  end
@@ -140,12 +140,12 @@ module Pod
140
140
  end
141
141
  private_class_method :define_build_settings_method
142
142
 
143
- # @param [XCFramework] xcframework the xcframework thats slice will be copied to the intermediates dir
143
+ # @param [XCFramework] xcframework the xcframework slice that will be copied to the intermediates dir
144
144
  #
145
145
  # @return [String] the path to the directory containing the xcframework slice
146
146
  #
147
147
  def self.xcframework_intermediate_dir(xcframework)
148
- "#{XCFRAMEWORKS_BUILD_DIR_VARIABLE}/#{xcframework.name}"
148
+ "#{XCFRAMEWORKS_BUILD_DIR_VARIABLE}/#{xcframework.target_name}"
149
149
  end
150
150
 
151
151
  class << self
@@ -346,18 +346,26 @@ module Pod
346
346
  #
347
347
  # @param [Boolean] test_bundle
348
348
  #
349
- def _ld_runpath_search_paths(requires_host_target: false, test_bundle: false)
349
+ def _ld_runpath_search_paths(requires_host_target: false, test_bundle: false, uses_swift: false)
350
+ paths = []
351
+ if uses_swift
352
+ paths << '/usr/lib/swift'
353
+ paths << '$(PLATFORM_DIR)/Developer/Library/Frameworks' if test_bundle
354
+ end
350
355
  if target.platform.symbolic_name == :osx
351
- ["'@executable_path/../Frameworks'",
352
- test_bundle ? "'@loader_path/../Frameworks'" : "'@loader_path/Frameworks'"]
356
+ paths << "'@executable_path/../Frameworks'"
357
+ paths << if test_bundle
358
+ "'@loader_path/../Frameworks'"
359
+ else
360
+ "'@loader_path/Frameworks'"
361
+ end
362
+ paths << '${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}' if uses_swift
353
363
  else
354
- paths = [
355
- "'@executable_path/Frameworks'",
356
- "'@loader_path/Frameworks'",
357
- ]
364
+ paths << "'@executable_path/Frameworks'"
365
+ paths << "'@loader_path/Frameworks'"
358
366
  paths << "'@executable_path/../../Frameworks'" if requires_host_target
359
- paths
360
367
  end
368
+ paths
361
369
  end
362
370
  private :_ld_runpath_search_paths
363
371
 
@@ -500,12 +508,14 @@ module Pod
500
508
  pod_targets - subset_targets
501
509
  end
502
510
 
511
+ # @param [String] target_name the name of the target this xcframework belongs to
512
+ #
503
513
  # @param [Pathname,String] path the path to the xcframework bundle
504
514
  #
505
515
  # @return [Xcode::XCFramework] the xcframework at the given path
506
516
  #
507
- def load_xcframework(path)
508
- Xcode::XCFramework.new(path)
517
+ def load_xcframework(target_name, path)
518
+ Xcode::XCFramework.new(target_name, path)
509
519
  end
510
520
 
511
521
  # A subclass that generates build settings for a {PodTarget}
@@ -616,9 +626,15 @@ module Pod
616
626
  select { |xcf| xcf.build_type.static_framework? }.
617
627
  map(&:name).
618
628
  uniq
629
+
630
+ # Include direct dynamic dependencies to the linker flags. We used to add those in the 'Link Binary With Libraries'
631
+ # phase but we no longer do since we cannot differentiate between debug or release configurations within
632
+ # that phase.
633
+ frameworks.concat target.dependent_targets_by_config[@configuration].flat_map { |pt| pt.build_settings[@configuration].dynamic_frameworks_to_import }
634
+ else
635
+ # Also include any vendored dynamic frameworks of dependencies.
636
+ frameworks.concat dependent_targets.reject(&:should_build?).flat_map { |pt| pt.build_settings[@configuration].dynamic_frameworks_to_import }
619
637
  end
620
- # Also include any vendored dynamic frameworks of dependencies.
621
- frameworks.concat dependent_targets.reject(&:should_build?).flat_map { |pt| pt.build_settings[@configuration].dynamic_frameworks_to_import }
622
638
  else
623
639
  frameworks.concat dependent_targets_to_link.flat_map { |pt| pt.build_settings[@configuration].frameworks_to_import }
624
640
  end
@@ -721,7 +737,9 @@ module Pod
721
737
 
722
738
  # @return [Array<Xcode::XCFramework>]
723
739
  define_build_settings_method :vendored_xcframeworks, :memoized => true do
724
- file_accessors.flat_map(&:vendored_xcframeworks).map { |path| load_xcframework(path) }
740
+ file_accessors.flat_map do |file_accessor|
741
+ file_accessor.vendored_xcframeworks.map { |path| load_xcframework(file_accessor.spec.name, path) }
742
+ end
725
743
  end
726
744
 
727
745
  # @return [Array<String>]
@@ -840,10 +858,15 @@ module Pod
840
858
 
841
859
  # @return [Array<String>]
842
860
  define_build_settings_method :library_search_paths_to_import, :memoized => true do
843
- vendored_library_search_paths = vendored_static_library_search_paths + vendored_dynamic_library_search_paths
844
- return vendored_library_search_paths if target.build_as_framework? || !target.should_build?
861
+ search_paths = vendored_static_library_search_paths + vendored_dynamic_library_search_paths
862
+ if target.uses_swift? || other_swift_flags_without_swift?
863
+ search_paths << '/usr/lib/swift'
864
+ search_paths << '${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}'
865
+ search_paths << '$(PLATFORM_DIR)/Developer/Library/Frameworks' if test_xcconfig?
866
+ end
867
+ return search_paths if target.build_as_framework? || !target.should_build?
845
868
 
846
- vendored_library_search_paths << target.configuration_build_dir(CONFIGURATION_BUILD_DIR_VARIABLE)
869
+ search_paths << target.configuration_build_dir(CONFIGURATION_BUILD_DIR_VARIABLE)
847
870
  end
848
871
 
849
872
  #-------------------------------------------------------------------------#
@@ -948,7 +971,8 @@ module Pod
948
971
  # @return [Array<String>]
949
972
  define_build_settings_method :ld_runpath_search_paths, :build_setting => true, :memoized => true do
950
973
  return if library_xcconfig?
951
- _ld_runpath_search_paths(:test_bundle => test_xcconfig?)
974
+ _ld_runpath_search_paths(:test_bundle => test_xcconfig?,
975
+ :uses_swift => other_swift_flags_without_swift? || dependent_targets.any?(&:uses_swift?))
952
976
  end
953
977
 
954
978
  #-------------------------------------------------------------------------#
@@ -1251,7 +1275,8 @@ module Pod
1251
1275
  return unless pod_targets.any?(&:build_as_dynamic?) || any_vendored_dynamic_artifacts?
1252
1276
  symbol_type = target.user_targets.map(&:symbol_type).uniq.first
1253
1277
  test_bundle = symbol_type == :octest_bundle || symbol_type == :unit_test_bundle || symbol_type == :ui_test_bundle
1254
- _ld_runpath_search_paths(:requires_host_target => target.requires_host_target?, :test_bundle => test_bundle)
1278
+ _ld_runpath_search_paths(:requires_host_target => target.requires_host_target?, :test_bundle => test_bundle,
1279
+ :uses_swift => pod_targets.any?(&:uses_swift?))
1255
1280
  end
1256
1281
 
1257
1282
  # @return [Boolean]
@@ -203,7 +203,7 @@ module Pod
203
203
  end
204
204
  end
205
205
 
206
- # @return [Array<FileAccessor>] The list of all files tracked.
206
+ # @return [Array<Pathname>] The list of all files tracked.
207
207
  #
208
208
  def all_files
209
209
  Sandbox::FileAccessor.all_files(file_accessors)
@@ -268,6 +268,23 @@ module Pod
268
268
  root_spec.module_name
269
269
  end
270
270
 
271
+ # @param [Specification] spec the specification
272
+ #
273
+ # @return [String] the product basename of the specification's target
274
+ def product_basename_for_spec(spec)
275
+ user_specified = build_settings_by_config_for_spec(spec).
276
+ each_value.
277
+ map { |settings| settings.merged_pod_target_xcconfigs['PRODUCT_NAME'] }.
278
+ compact.
279
+ uniq
280
+
281
+ if user_specified.size == 1
282
+ user_specified.first
283
+ else
284
+ spec_label(spec)
285
+ end
286
+ end
287
+
271
288
  # @return [Bool] Whether or not this target should be built.
272
289
  #
273
290
  # A target should not be built if it has no source files.
@@ -294,22 +311,26 @@ module Pod
294
311
  test_specs.map { |test_spec| test_spec.consumer(platform) }
295
312
  end
296
313
 
297
- # @return [Array<Specification::Consumer>] the test specification consumers for
314
+ # @return [Array<Specification::Consumer>] the app specification consumers for
298
315
  # the target.
299
316
  #
300
317
  def app_spec_consumers
301
318
  app_specs.map { |app_spec| app_spec.consumer(platform) }
302
319
  end
303
320
 
304
- # @return [Boolean] Whether the target uses Swift code. This excludes source files from non library specs.
321
+ # Checks whether the target itself plus its specs uses Swift code.
322
+ # This check excludes source files from non library specs.
323
+ # Note that if a target does not need to be built (no source code),
324
+ # we fallback to check whether it indicates a swift version.
325
+ #
326
+ # @return [Boolean] Whether the target uses Swift code.
305
327
  #
306
328
  def uses_swift?
307
329
  return @uses_swift if defined? @uses_swift
308
- @uses_swift = begin
330
+ @uses_swift = (!should_build? && !spec_swift_versions.empty?) ||
309
331
  file_accessors.select { |a| a.spec.library_specification? }.any? do |file_accessor|
310
332
  uses_swift_for_spec?(file_accessor.spec)
311
333
  end
312
- end
313
334
  end
314
335
 
315
336
  # Checks whether a specification uses Swift or not.
@@ -373,7 +394,7 @@ module Pod
373
394
  !test_specs.empty?
374
395
  end
375
396
 
376
- # @return [Boolean] Whether the target has any tests specifications.
397
+ # @return [Boolean] Whether the target has any app specifications.
377
398
  #
378
399
  def contains_app_specifications?
379
400
  !app_specs.empty?
@@ -422,7 +443,7 @@ module Pod
422
443
  @xcframeworks ||= begin
423
444
  file_accessors.each_with_object({}) do |file_accessor, hash|
424
445
  frameworks = file_accessor.vendored_xcframeworks.map do |framework_path|
425
- Xcode::XCFramework.new(framework_path)
446
+ Xcode::XCFramework.new(file_accessor.spec.name, framework_path)
426
447
  end
427
448
  hash[file_accessor.spec.name] = frameworks
428
449
  end
@@ -455,7 +476,7 @@ module Pod
455
476
  prefix = Pod::Target::BuildSettings::CONFIGURATION_BUILD_DIR_VARIABLE
456
477
  prefix = configuration_build_dir unless file_accessor.spec.test_specification?
457
478
  resource_bundle_paths = file_accessor.resource_bundles.keys.map { |name| "#{prefix}/#{name.shellescape}.bundle" }
458
- hash[file_accessor.spec.name] = resource_paths + resource_bundle_paths
479
+ hash[file_accessor.spec.name] = (resource_paths + resource_bundle_paths).map(&:to_s)
459
480
  end
460
481
  end
461
482
  end
@@ -512,7 +533,7 @@ module Pod
512
533
  # @return [Specification] The root specification for the target.
513
534
  #
514
535
  def root_spec
515
- specs.first.root
536
+ @root_spec ||= specs.first.root
516
537
  end
517
538
 
518
539
  # @return [String] The name of the Pod that this target refers to.
@@ -619,13 +640,16 @@ module Pod
619
640
  end
620
641
  end
621
642
 
622
- def non_library_spec_label(spec)
643
+ def spec_label(spec)
623
644
  case spec.spec_type
645
+ when :library then label
624
646
  when :test then test_target_label(spec)
625
647
  when :app then app_target_label(spec)
626
648
  else raise ArgumentError, "Unhandled spec type #{spec.spec_type.inspect} for #{spec.inspect}"
627
649
  end
628
650
  end
651
+ # for backwards compatibility
652
+ alias non_library_spec_label spec_label
629
653
 
630
654
  # @param [Specification] spec
631
655
  # The spec to return scheme configuration for.
@@ -645,7 +669,7 @@ module Pod
645
669
  # @return [Pathname] The absolute path of the copy resources script for the given spec.
646
670
  #
647
671
  def copy_resources_script_path_for_spec(spec)
648
- support_files_dir + "#{non_library_spec_label(spec)}-resources.sh"
672
+ support_files_dir + "#{spec_label(spec)}-resources.sh"
649
673
  end
650
674
 
651
675
  # @param [Specification] spec
@@ -654,7 +678,7 @@ module Pod
654
678
  # @return [Pathname] The absolute path of the copy resources script input file list for the given spec.
655
679
  #
656
680
  def copy_resources_script_input_files_path_for_spec(spec)
657
- support_files_dir + "#{non_library_spec_label(spec)}-resources-input-files.xcfilelist"
681
+ support_files_dir + "#{spec_label(spec)}-resources-input-files.xcfilelist"
658
682
  end
659
683
 
660
684
  # @param [Specification] spec
@@ -663,7 +687,7 @@ module Pod
663
687
  # @return [Pathname] The absolute path of the copy resources script output file list for the given spec.
664
688
  #
665
689
  def copy_resources_script_output_files_path_for_spec(spec)
666
- support_files_dir + "#{non_library_spec_label(spec)}-resources-output-files.xcfilelist"
690
+ support_files_dir + "#{spec_label(spec)}-resources-output-files.xcfilelist"
667
691
  end
668
692
 
669
693
  # @param [Specification] spec
@@ -672,7 +696,7 @@ module Pod
672
696
  # @return [Pathname] The absolute path of the embed frameworks script for the given spec.
673
697
  #
674
698
  def embed_frameworks_script_path_for_spec(spec)
675
- support_files_dir + "#{non_library_spec_label(spec)}-frameworks.sh"
699
+ support_files_dir + "#{spec_label(spec)}-frameworks.sh"
676
700
  end
677
701
 
678
702
  # @param [Specification] spec
@@ -681,7 +705,7 @@ module Pod
681
705
  # @return [Pathname] The absolute path of the embed frameworks script input file list for the given spec.
682
706
  #
683
707
  def embed_frameworks_script_input_files_path_for_spec(spec)
684
- support_files_dir + "#{non_library_spec_label(spec)}-frameworks-input-files.xcfilelist"
708
+ support_files_dir + "#{spec_label(spec)}-frameworks-input-files.xcfilelist"
685
709
  end
686
710
 
687
711
  # @param [Specification] spec
@@ -690,7 +714,7 @@ module Pod
690
714
  # @return [Pathname] The absolute path of the embed frameworks script output file list for the given spec.
691
715
  #
692
716
  def embed_frameworks_script_output_files_path_for_spec(spec)
693
- support_files_dir + "#{non_library_spec_label(spec)}-frameworks-output-files.xcfilelist"
717
+ support_files_dir + "#{spec_label(spec)}-frameworks-output-files.xcfilelist"
694
718
  end
695
719
 
696
720
  # @return [Pathname] The absolute path of the copy xcframeworks script.
@@ -721,7 +745,7 @@ module Pod
721
745
  # @todo Remove in 2.0
722
746
  #
723
747
  def prepare_artifacts_script_path_for_spec(spec)
724
- support_files_dir + "#{non_library_spec_label(spec)}-artifacts.sh"
748
+ support_files_dir + "#{spec_label(spec)}-artifacts.sh"
725
749
  end
726
750
 
727
751
  # @param [Specification] spec
@@ -734,7 +758,7 @@ module Pod
734
758
  # @todo Remove in 2.0
735
759
  #
736
760
  def prepare_artifacts_script_input_files_path_for_spec(spec)
737
- support_files_dir + "#{non_library_spec_label(spec)}-artifacts-input-files.xcfilelist"
761
+ support_files_dir + "#{spec_label(spec)}-artifacts-input-files.xcfilelist"
738
762
  end
739
763
 
740
764
  # @param [Specification] spec
@@ -747,7 +771,7 @@ module Pod
747
771
  # @todo Remove in 2.0
748
772
  #
749
773
  def prepare_artifacts_script_output_files_path_for_spec(spec)
750
- support_files_dir + "#{non_library_spec_label(spec)}-artifacts-output-files.xcfilelist"
774
+ support_files_dir + "#{spec_label(spec)}-artifacts-output-files.xcfilelist"
751
775
  end
752
776
 
753
777
  # @return [Pathname] The absolute path of the copy dSYMs script.
@@ -774,7 +798,7 @@ module Pod
774
798
  # @return [Pathname] The absolute path of the Info.plist for the given spec.
775
799
  #
776
800
  def info_plist_path_for_spec(spec)
777
- support_files_dir + "#{non_library_spec_label(spec)}-Info.plist"
801
+ support_files_dir + "#{spec_label(spec)}-Info.plist"
778
802
  end
779
803
 
780
804
  # @param [Specification] spec
@@ -783,7 +807,7 @@ module Pod
783
807
  # @return [Pathname] the absolute path of the prefix header file for the given spec.
784
808
  #
785
809
  def prefix_header_path_for_spec(spec)
786
- support_files_dir + "#{non_library_spec_label(spec)}-prefix.pch"
810
+ support_files_dir + "#{spec_label(spec)}-prefix.pch"
787
811
  end
788
812
 
789
813
  # @return [Array<String>] The names of the Pods on which this target
@@ -1054,7 +1078,8 @@ module Pod
1054
1078
  #
1055
1079
  def uses_modular_headers?(only_if_defines_modules = true)
1056
1080
  return false if only_if_defines_modules && !defines_module?
1057
- spec_consumers.none?(&:header_mappings_dir) && spec_consumers.none?(&:header_dir)
1081
+ return @uses_modular_headers if defined? @uses_modular_headers
1082
+ @uses_modular_headers = spec_consumers.none?(&:header_mappings_dir) && spec_consumers.none?(&:header_dir)
1058
1083
  end
1059
1084
 
1060
1085
  private
@@ -350,7 +350,7 @@ module Pod
350
350
  end
351
351
 
352
352
  def self.resource_extension_compilable?(input_extension)
353
- output_extension_for_resource(input_extension) != input_extension
353
+ output_extension_for_resource(input_extension) != input_extension && input_extension != '.xcassets'
354
354
  end
355
355
 
356
356
  #-------------------------------------------------------------------------#