cocoapods 1.6.0.beta.1 → 1.6.0.beta.2

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 +94 -4
  3. data/lib/cocoapods/command/cache/clean.rb +1 -1
  4. data/lib/cocoapods/command/init.rb +3 -1
  5. data/lib/cocoapods/command/outdated.rb +2 -2
  6. data/lib/cocoapods/executable.rb +1 -1
  7. data/lib/cocoapods/gem_version.rb +1 -1
  8. data/lib/cocoapods/generator/acknowledgements/plist.rb +3 -3
  9. data/lib/cocoapods/generator/app_target_helper.rb +2 -4
  10. data/lib/cocoapods/generator/copy_resources_script.rb +8 -3
  11. data/lib/cocoapods/generator/embed_frameworks_script.rb +24 -18
  12. data/lib/cocoapods/installer.rb +37 -21
  13. data/lib/cocoapods/installer/analyzer.rb +19 -13
  14. data/lib/cocoapods/installer/analyzer/locking_dependency_analyzer.rb +5 -0
  15. data/lib/cocoapods/installer/analyzer/target_inspection_result.rb +5 -0
  16. data/lib/cocoapods/installer/installation_options.rb +2 -0
  17. data/lib/cocoapods/installer/pod_source_installer.rb +1 -1
  18. data/lib/cocoapods/installer/post_install_hooks_context.rb +1 -1
  19. data/lib/cocoapods/installer/user_project_integrator.rb +6 -2
  20. data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +42 -12
  21. data/lib/cocoapods/installer/xcode/pods_project_generator.rb +2 -4
  22. data/lib/cocoapods/installer/xcode/pods_project_generator/app_host_installer.rb +14 -5
  23. data/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb +12 -6
  24. data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb +22 -11
  25. data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_integrator.rb +29 -18
  26. data/lib/cocoapods/installer/xcode/target_validator.rb +1 -1
  27. data/lib/cocoapods/project.rb +2 -0
  28. data/lib/cocoapods/resolver.rb +42 -49
  29. data/lib/cocoapods/resolver/resolver_specification.rb +41 -0
  30. data/lib/cocoapods/sandbox.rb +21 -17
  31. data/lib/cocoapods/target/aggregate_target.rb +3 -1
  32. data/lib/cocoapods/target/build_settings.rb +35 -12
  33. data/lib/cocoapods/target/framework_paths.rb +36 -0
  34. data/lib/cocoapods/target/pod_target.rb +16 -17
  35. data/lib/cocoapods/validator.rb +18 -5
  36. metadata +18 -10
@@ -0,0 +1,36 @@
1
+ module Pod
2
+ class Target
3
+ class FrameworkPaths
4
+ # @return [String] the path to the .framework
5
+ #
6
+ attr_reader :source_path
7
+
8
+ # @return [String, Nil] the dSYM path, if one exists
9
+ #
10
+ attr_reader :dsym_path
11
+
12
+ def initialize(source_path, dsym_path = nil)
13
+ @source_path = source_path
14
+ @dsym_path = dsym_path
15
+ end
16
+
17
+ def ==(other)
18
+ if other.class == self.class
19
+ other.source_path == @source_path && other.dsym_path == @dsym_path
20
+ else
21
+ false
22
+ end
23
+ end
24
+
25
+ alias eql? ==
26
+
27
+ def hash
28
+ if (dsym = dsym_path)
29
+ [source_path, dsym].hash
30
+ else
31
+ source_path.hash
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,3 +1,5 @@
1
+ require 'cocoapods/target/framework_paths'
2
+
1
3
  module Pod
2
4
  # Stores the information relative to the target used to compile a single Pod.
3
5
  # A pod can have one or more activated spec, subspecs and test specs.
@@ -244,34 +246,27 @@ module Pod
244
246
  !test_specs.empty?
245
247
  end
246
248
 
247
- # @return [Hash{String=>Array<Hash{Symbol=>String}>}] The vendored and non vendored framework paths this target
249
+ # @return [Hash{String=>Array<FrameworkPaths>}] The vendored and non vendored framework paths this target
248
250
  # depends upon keyed by spec name. For the root spec and subspecs the framework path of the target itself
249
251
  # is included.
250
252
  #
251
253
  def framework_paths
252
254
  @framework_paths ||= begin
253
255
  file_accessors.each_with_object({}) do |file_accessor, hash|
254
- frameworks = []
255
- file_accessor.vendored_dynamic_artifacts.map do |framework_path|
256
+ frameworks = file_accessor.vendored_dynamic_artifacts.map do |framework_path|
256
257
  relative_path_to_sandbox = framework_path.relative_path_from(sandbox.root)
257
- framework = { :name => framework_path.basename.to_s,
258
- :input_path => "${PODS_ROOT}/#{relative_path_to_sandbox}",
259
- :output_path => "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/#{framework_path.basename}" }
258
+ framework_source = "${PODS_ROOT}/#{relative_path_to_sandbox}"
260
259
  # Until this can be configured, assume the dSYM file uses the file name as the framework.
261
260
  # See https://github.com/CocoaPods/CocoaPods/issues/1698
262
261
  dsym_name = "#{framework_path.basename}.dSYM"
263
262
  dsym_path = Pathname.new("#{framework_path.dirname}/#{dsym_name}")
264
- if dsym_path.exist?
265
- framework[:dsym_name] = dsym_name
266
- framework[:dsym_input_path] = "${PODS_ROOT}/#{relative_path_to_sandbox}.dSYM"
267
- framework[:dsym_output_path] = "${DWARF_DSYM_FOLDER_PATH}/#{dsym_name}"
268
- end
269
- frameworks << framework
263
+ dsym_source = if dsym_path.exist?
264
+ "${PODS_ROOT}/#{relative_path_to_sandbox}.dSYM"
265
+ end
266
+ FrameworkPaths.new(framework_source, dsym_source)
270
267
  end
271
268
  if !file_accessor.spec.test_specification? && should_build? && requires_frameworks? && !static_framework?
272
- frameworks << { :name => product_name,
273
- :input_path => build_product_path('${BUILT_PRODUCTS_DIR}'),
274
- :output_path => "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/#{product_name}" }
269
+ frameworks << FrameworkPaths.new(build_product_path('${BUILT_PRODUCTS_DIR}'))
275
270
  end
276
271
  hash[file_accessor.spec.name] = frameworks
277
272
  end
@@ -517,11 +512,15 @@ module Pod
517
512
  # @param [Boolean] include_dependent_targets_for_test_spec
518
513
  # whether to include header search paths for test dependent targets
519
514
  #
515
+ # @param [Boolean] include_private_headers
516
+ # whether to include header search paths for private headers of this
517
+ # target
518
+ #
520
519
  # @return [Array<String>] The set of header search paths this target uses.
521
520
  #
522
- def header_search_paths(include_dependent_targets_for_test_spec: nil)
521
+ def header_search_paths(include_dependent_targets_for_test_spec: nil, include_private_headers: true)
523
522
  header_search_paths = []
524
- header_search_paths.concat(build_headers.search_paths(platform, nil, false))
523
+ header_search_paths.concat(build_headers.search_paths(platform, nil, false)) if include_private_headers
525
524
  header_search_paths.concat(sandbox.public_headers.search_paths(platform, pod_name, uses_modular_headers?))
526
525
  dependent_targets = recursive_dependent_targets
527
526
  dependent_targets += recursive_test_dependent_targets(include_dependent_targets_for_test_spec) if include_dependent_targets_for_test_spec
@@ -511,7 +511,8 @@ module Pod
511
511
  end
512
512
 
513
513
  def download_pod
514
- podfile = podfile_from_spec(consumer.platform_name, deployment_target, use_frameworks, consumer.spec.test_specs.map(&:name), use_modular_headers)
514
+ test_spec_names = consumer.spec.test_specs.select { |ts| ts.supported_on_platform?(consumer.platform_name) }.map(&:name)
515
+ podfile = podfile_from_spec(consumer.platform_name, deployment_target, use_frameworks, test_spec_names, use_modular_headers)
515
516
  sandbox = Sandbox.new(config.sandbox_root)
516
517
  @installer = Installer.new(sandbox, podfile)
517
518
  @installer.use_default_plugins = false
@@ -635,10 +636,14 @@ module Pod
635
636
  UI.message "\nTesting with `xcodebuild`.\n".yellow do
636
637
  pod_target = @installer.pod_targets.find { |pt| pt.pod_name == spec.root.name }
637
638
  consumer.spec.test_specs.each do |test_spec|
638
- scheme = @installer.target_installation_results.first[pod_target.name].native_target_for_spec(test_spec)
639
- output = xcodebuild('test', scheme, 'Debug')
640
- parsed_output = parse_xcodebuild_output(output)
641
- translate_output_to_linter_messages(parsed_output)
639
+ if !test_spec.supported_on_platform?(consumer.platform_name)
640
+ UI.warn "Skipping test spec `#{test_spec.name}` on platform `#{consumer.platform_name}` since it is not supported.\n".yellow
641
+ else
642
+ scheme = @installer.target_installation_results.first[pod_target.name].native_target_for_spec(test_spec)
643
+ output = xcodebuild('test', scheme, 'Debug')
644
+ parsed_output = parse_xcodebuild_output(output)
645
+ translate_output_to_linter_messages(parsed_output)
646
+ end
642
647
  end
643
648
  end
644
649
  end
@@ -916,6 +921,14 @@ module Pod
916
921
  when :ios
917
922
  command += %w(CODE_SIGN_IDENTITY=- -sdk iphonesimulator)
918
923
  command += Fourflusher::SimControl.new.destination(:oldest, 'iOS', deployment_target)
924
+ xcconfig = consumer.pod_target_xcconfig
925
+ if xcconfig
926
+ archs = xcconfig['VALID_ARCHS']
927
+ if archs && (archs.include? 'armv7') && !(archs.include? 'i386') && (archs.include? 'x86_64')
928
+ # Prevent Xcodebuild from testing the non-existent i386 simulator if armv7 is specified without i386
929
+ command += %w(ARCHS=x86_64)
930
+ end
931
+ end
919
932
  when :watchos
920
933
  command += %w(CODE_SIGN_IDENTITY=- -sdk watchsimulator)
921
934
  command += Fourflusher::SimControl.new.destination(:oldest, 'watchOS', deployment_target)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0.beta.1
4
+ version: 1.6.0.beta.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eloy Duran
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2018-08-16 00:00:00.000000000 Z
14
+ date: 2018-10-17 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: cocoapods-core
@@ -19,14 +19,14 @@ dependencies:
19
19
  requirements:
20
20
  - - '='
21
21
  - !ruby/object:Gem::Version
22
- version: 1.6.0.beta.1
22
+ version: 1.6.0.beta.2
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: 1.6.0.beta.1
29
+ version: 1.6.0.beta.2
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: claide
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -73,7 +73,7 @@ dependencies:
73
73
  requirements:
74
74
  - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: 1.2.1
76
+ version: 1.2.2
77
77
  - - "<"
78
78
  - !ruby/object:Gem::Version
79
79
  version: '2.0'
@@ -83,7 +83,7 @@ dependencies:
83
83
  requirements:
84
84
  - - ">="
85
85
  - !ruby/object:Gem::Version
86
- version: 1.2.1
86
+ version: 1.2.2
87
87
  - - "<"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '2.0'
@@ -207,7 +207,7 @@ dependencies:
207
207
  requirements:
208
208
  - - ">="
209
209
  - !ruby/object:Gem::Version
210
- version: 1.6.0
210
+ version: 1.7.0
211
211
  - - "<"
212
212
  - !ruby/object:Gem::Version
213
213
  version: '2.0'
@@ -217,7 +217,7 @@ dependencies:
217
217
  requirements:
218
218
  - - ">="
219
219
  - !ruby/object:Gem::Version
220
- version: 1.6.0
220
+ version: 1.7.0
221
221
  - - "<"
222
222
  - !ruby/object:Gem::Version
223
223
  version: '2.0'
@@ -317,14 +317,20 @@ dependencies:
317
317
  requirements:
318
318
  - - "~>"
319
319
  - !ruby/object:Gem::Version
320
- version: '1.2'
320
+ version: '1.3'
321
+ - - ">="
322
+ - !ruby/object:Gem::Version
323
+ version: 1.3.1
321
324
  type: :runtime
322
325
  prerelease: false
323
326
  version_requirements: !ruby/object:Gem::Requirement
324
327
  requirements:
325
328
  - - "~>"
326
329
  - !ruby/object:Gem::Version
327
- version: '1.2'
330
+ version: '1.3'
331
+ - - ">="
332
+ - !ruby/object:Gem::Version
333
+ version: 1.3.1
328
334
  - !ruby/object:Gem::Dependency
329
335
  name: bacon
330
336
  requirement: !ruby/object:Gem::Requirement
@@ -491,6 +497,7 @@ files:
491
497
  - lib/cocoapods/project.rb
492
498
  - lib/cocoapods/resolver.rb
493
499
  - lib/cocoapods/resolver/lazy_specification.rb
500
+ - lib/cocoapods/resolver/resolver_specification.rb
494
501
  - lib/cocoapods/sandbox.rb
495
502
  - lib/cocoapods/sandbox/file_accessor.rb
496
503
  - lib/cocoapods/sandbox/headers_store.rb
@@ -501,6 +508,7 @@ files:
501
508
  - lib/cocoapods/target.rb
502
509
  - lib/cocoapods/target/aggregate_target.rb
503
510
  - lib/cocoapods/target/build_settings.rb
511
+ - lib/cocoapods/target/framework_paths.rb
504
512
  - lib/cocoapods/target/pod_target.rb
505
513
  - lib/cocoapods/user_interface.rb
506
514
  - lib/cocoapods/user_interface/error_report.rb