cocoapods 1.7.0.beta.3 → 1.7.0.rc.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ee8d12451f183094a65d40b6e47d8748aa0fa4eea250c41d9c7a5f482f955b1
4
- data.tar.gz: 53769ab0555e4c167f0157a9531d0218b920a005363ac53f838a6e0aba13f844
3
+ metadata.gz: 643fc24912e72d9f38aaf90853b155a6b5468d5a370e1f97fb31e89b248f200a
4
+ data.tar.gz: daee7ef9f7178e551ef6e585a7524752c26436e8f70cc98c2ba997786d67cc80
5
5
  SHA512:
6
- metadata.gz: 3b5533caea792d552f80b53b9003f1929e6ddb730ea85f53b46572fdc2077088df36ddf1d0e9673f7d8b9c647944ec04c025e2f4b3183930598230da1c8f0834
7
- data.tar.gz: 4741c555db345c178def609f871abd490ed023dc88c9ee18e32fa7a6fbb01b4d73a1ffd89e94bf9e98917281d3641dcaa7ff1fc614fc61e99ca946b45d451316
6
+ metadata.gz: 6830b2ef5e87f413426ec1b78cb87b182883c1e910173d9d630a6541f4d00d89e32c5a24ac0dc11ac5fdc63b8a50b7bd8cb8c15dd4bb86d2a671edc3a716995a
7
+ data.tar.gz: 6684ac7cf04ade56943495ed8f8b860b23340d572275768985b0aa2eca7ad877352bd334ed93981080eb2bf8b9f0ff45ef787af2581b3fd29f96f05d2b4546e2
@@ -4,6 +4,40 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
4
4
 
5
5
  To install release candidates run `[sudo] gem install cocoapods --pre`
6
6
 
7
+ ## 1.7.0.rc.1 (2019-05-02)
8
+
9
+ ##### Enhancements
10
+
11
+ * Replace Pods project `Dependencies` group with `Development Pods` and `Pods` groups.
12
+ [Sebastian Shanus](https://github.com/sebastianv1)
13
+ [#8659](https://github.com/CocoaPods/CocoaPods/issues/8659)
14
+
15
+ * Add an error message for :podspec pods not matching the version in Pods and on disk
16
+ [orta](https://github.com/orta)
17
+ [#8676](https://github.com/CocoaPods/CocoaPods/issues/8676)
18
+
19
+ ##### Bug Fixes
20
+
21
+ * Allow insecure loads in requires_app_host's Info.plist
22
+ [Paul Beusterien](https://github.com/paulb777)
23
+ [#8747](https://github.com/CocoaPods/CocoaPods/pull/8747)
24
+
25
+ * Fix a regression for static libraries with a custom module name
26
+ [Eric Amorde](https://github.com/amorde)
27
+ [#8695](https://github.com/CocoaPods/CocoaPods/issues/8695)
28
+
29
+ * Fix target cache key SPECS key ordering.
30
+ [Sebastian Shanus](https://github.com/sebastianv1)
31
+ [#8657](https://github.com/CocoaPods/CocoaPods/issues/8657)
32
+
33
+ * Fix regression not compiling xcdatamodeld files in static frameworks
34
+ [Paul Beusterien](https://github.com/paulb777)
35
+ [#8702](https://github.com/CocoaPods/CocoaPods/issues/8702)
36
+
37
+ * Fix: AppIcon not found when executing `pod lib lint`
38
+ [Itay Brenner](https://github.com/itaybre)
39
+ [#8648](https://github.com/CocoaPods/CocoaPods/issues/8648)
40
+
7
41
  ## 1.7.0.beta.3 (2019-03-28)
8
42
 
9
43
  ##### Enhancements
@@ -1,5 +1,5 @@
1
1
  module Pod
2
2
  # The version of the CocoaPods command line tool.
3
3
  #
4
- VERSION = '1.7.0.beta.3'.freeze unless defined? Pod::VERSION
4
+ VERSION = '1.7.0.rc.1'.freeze unless defined? Pod::VERSION
5
5
  end
@@ -94,6 +94,10 @@ module Pod
94
94
  output << indent << "</dict>\n"
95
95
  when String
96
96
  output << indent << "<string>#{value}</string>\n"
97
+ when true
98
+ output << indent << "<true/>\n"
99
+ when false
100
+ output << indent << "<false/>\n"
97
101
  end
98
102
  output
99
103
  end
@@ -74,7 +74,10 @@ module Pod
74
74
  def self.from_cache_hash(key_hash)
75
75
  cache_hash = key_hash.dup
76
76
  if files = cache_hash['FILES']
77
- cache_hash['FILES'] = files.sort
77
+ cache_hash['FILES'] = files.sort_by(&:downcase)
78
+ end
79
+ if specs = cache_hash['SPECS']
80
+ cache_hash['SPECS'] = specs.sort_by(&:downcase)
78
81
  end
79
82
  type = cache_hash['CHECKSUM'] ? :pod_target : :aggregate
80
83
  TargetCacheKey.new(type, cache_hash)
@@ -105,10 +108,10 @@ module Pod
105
108
 
106
109
  contents = {
107
110
  'CHECKSUM' => pod_target.root_spec.checksum,
108
- 'SPECS' => pod_target.specs.map(&:to_s).sort,
111
+ 'SPECS' => pod_target.specs.map(&:to_s).sort_by(&:downcase),
109
112
  'BUILD_SETTINGS_CHECKSUM' => build_settings,
110
113
  }
111
- contents['FILES'] = pod_target.all_files.sort if is_local_pod
114
+ contents['FILES'] = pod_target.all_files.sort_by(&:downcase) if is_local_pod
112
115
  contents['CHECKOUT_OPTIONS'] = checkout_options if checkout_options
113
116
  TargetCacheKey.new(:pod_target, contents)
114
117
  end
@@ -46,7 +46,9 @@ module Pod
46
46
  # the file reference can use so that we only have to call `save` once for all projects.
47
47
  project.path.mkpath
48
48
  if parent_project
49
- parent_project.add_subproject_reference(project, parent_project.dependencies_group)
49
+ pod_name = pod_name_from_grouping(pod_targets)
50
+ is_local = sandbox.local?(pod_name)
51
+ parent_project.add_pod_subproject(project, is_local)
50
52
  end
51
53
 
52
54
  install_file_references(project, pod_targets)
@@ -65,6 +67,13 @@ module Pod
65
67
  return {} unless project
66
68
  install_aggregate_targets(project, aggregate_targets)
67
69
  end
70
+
71
+ def pod_name_from_grouping(pod_targets)
72
+ # The presumption here for multi pods project is that we group by `pod_name`, thus the grouping of `pod_targets`
73
+ # should share the same `pod_name`.
74
+ raise '[BUG] Expected at least 1 pod target' if pod_targets.empty?
75
+ pod_targets.first.pod_name
76
+ end
68
77
  end
69
78
  end
70
79
  end
@@ -182,10 +182,10 @@ module Pod
182
182
  pod_target_installation_results_hash = target_installation_results.pod_target_installation_results
183
183
  aggregate_target_installation_results_hash = target_installation_results.aggregate_target_installation_results
184
184
 
185
- AggregateTargetDependencyInstaller.new(aggregate_target_installation_results_hash,
185
+ AggregateTargetDependencyInstaller.new(sandbox, aggregate_target_installation_results_hash,
186
186
  pod_target_installation_results_hash, metadata_cache).install!
187
187
 
188
- PodTargetDependencyInstaller.new(pod_target_installation_results_hash, metadata_cache).install!
188
+ PodTargetDependencyInstaller.new(sandbox, pod_target_installation_results_hash, metadata_cache).install!
189
189
  end
190
190
 
191
191
  # @param [String] pod The root name of the development pod.
@@ -18,13 +18,19 @@ module Pod
18
18
  #
19
19
  attr_reader :metadata_cache
20
20
 
21
+ # @return [Sandbox] The sandbox used for this installation.
22
+ #
23
+ attr_reader :sandbox
24
+
21
25
  # Initialize a new instance.
22
26
  #
27
+ # @param [Sandbox] sandbox @see #sandbox
23
28
  # @param [Hash{String => TargetInstallationResult}] aggregate_target_installation_results @see #aggregate_target_installation_results
24
29
  # @param [Hash{String => TargetInstallationResult}] pod_target_installation_results @see #pod_target_installation_results
25
30
  # @param [ProjectMetadataCache] metadata_cache @see #metadata_cache
26
31
  #
27
- def initialize(aggregate_target_installation_results, pod_target_installation_results, metadata_cache)
32
+ def initialize(sandbox, aggregate_target_installation_results, pod_target_installation_results, metadata_cache)
33
+ @sandbox = sandbox
28
34
  @aggregate_target_installation_results = aggregate_target_installation_results
29
35
  @pod_target_installation_results = pod_target_installation_results
30
36
  @metadata_cache = metadata_cache
@@ -51,8 +57,9 @@ module Pod
51
57
  configure_app_extension_api_only_to_native_target(pod_target_native_target) if is_app_extension
52
58
  else
53
59
  # Hit the cache
60
+ is_local = sandbox.local?(pod_target.pod_name)
54
61
  cached_dependency = metadata_cache.target_label_by_metadata[pod_target.label]
55
- project.add_cached_subproject_reference(cached_dependency, project.dependencies_group)
62
+ project.add_cached_pod_subproject(cached_dependency, is_local)
56
63
  Project.add_cached_dependency(aggregate_native_target, cached_dependency)
57
64
  end
58
65
  end
@@ -74,7 +74,7 @@ module Pod
74
74
 
75
75
  Pod::Generator::AppTargetHelper.add_app_host_main_file(project, app_host_target, platform_name, @group, app_target_label) if add_main
76
76
  Pod::Generator::AppTargetHelper.add_launchscreen_storyboard(project, app_host_target, @group, deployment_target, app_target_label) if platform == :ios
77
- additional_entries = platform == :ios ? ADDITIONAL_IOS_INFO_PLIST_ENTRIES : {}
77
+ additional_entries = ADDITIONAL_INFO_PLIST_ENTRIES.merge(platform == :ios ? ADDITIONAL_IOS_INFO_PLIST_ENTRIES : {})
78
78
  create_info_plist_file_with_sandbox(sandbox, app_host_info_plist_path, app_host_target, '1.0.0', platform,
79
79
  :appl, additional_entries)
80
80
  @group.new_file(app_host_info_plist_path)
@@ -83,6 +83,12 @@ module Pod
83
83
 
84
84
  private
85
85
 
86
+ ADDITIONAL_INFO_PLIST_ENTRIES = {
87
+ 'NSAppTransportSecurity' => {
88
+ 'NSAllowsArbitraryLoads' => true,
89
+ },
90
+ }.freeze
91
+
86
92
  ADDITIONAL_IOS_INFO_PLIST_ENTRIES = {
87
93
  'UILaunchStoryboardName' => 'LaunchScreen',
88
94
  'UISupportedInterfaceOrientations' => %w(
@@ -14,12 +14,18 @@ module Pod
14
14
  #
15
15
  attr_reader :metadata_cache
16
16
 
17
+ # @return [Sandbox] The sandbox used for this installation.
18
+ #
19
+ attr_reader :sandbox
20
+
17
21
  # Initialize a new instance.
18
22
  #
23
+ # @param [Sandbox] sandbox @see #sandbox
19
24
  # @param [TargetInstallationResults] pod_target_installation_results @see #pod_target_installation_results
20
25
  # @param [ProjectMetadataCache] metadata_cache @see #metadata_cache
21
26
  #
22
- def initialize(pod_target_installation_results, metadata_cache)
27
+ def initialize(sandbox, pod_target_installation_results, metadata_cache)
28
+ @sandbox = sandbox
23
29
  @pod_target_installation_results = pod_target_installation_results
24
30
  @metadata_cache = metadata_cache
25
31
  end
@@ -68,17 +74,18 @@ module Pod
68
74
  pod_target_installation_results, metadata_cache, frameworks_group)
69
75
  dependent_targets = pod_target.dependent_targets
70
76
  dependent_targets.each do |dependent_target|
77
+ is_local = sandbox.local?(dependent_target.pod_name)
71
78
  if installation_result = pod_target_installation_results[dependent_target.name]
72
79
  dependent_project = installation_result.native_target.project
73
80
  if dependent_project != project
74
- project.add_subproject_reference(dependent_project, project.dependencies_group)
81
+ project.add_pod_subproject(dependent_project, is_local)
75
82
  end
76
83
  native_target.add_dependency(installation_result.native_target)
77
84
  add_framework_file_reference_to_native_target(native_target, pod_target, dependent_target, frameworks_group)
78
85
  else
79
86
  # Hit the cache
80
87
  cached_dependency = metadata_cache.target_label_by_metadata[dependent_target.label]
81
- project.add_cached_subproject_reference(cached_dependency, project.dependencies_group)
88
+ project.add_cached_pod_subproject(cached_dependency, is_local)
82
89
  Project.add_cached_dependency(native_target, cached_dependency)
83
90
  end
84
91
  end
@@ -93,17 +100,18 @@ module Pod
93
100
 
94
101
  test_dependent_targets = pod_target.test_dependent_targets_by_spec_name.fetch(test_spec.name, []).unshift(pod_target).uniq
95
102
  test_dependent_targets.each do |test_dependent_target|
103
+ is_local = sandbox.local?(test_dependent_target.pod_name)
96
104
  if dependency_installation_result = pod_target_installation_results[test_dependent_target.name]
97
105
  dependent_test_project = dependency_installation_result.native_target.project
98
106
  if dependent_test_project != project
99
- project.add_subproject_reference(dependent_test_project, project.dependencies_group)
107
+ project.add_pod_subproject(dependent_test_project, is_local)
100
108
  end
101
109
  test_native_target.add_dependency(dependency_installation_result.native_target)
102
110
  add_framework_file_reference_to_native_target(test_native_target, pod_target, test_dependent_target, frameworks_group)
103
111
  else
104
112
  # Hit the cache
105
113
  cached_dependency = metadata_cache.target_label_by_metadata[test_dependent_target.label]
106
- project.add_cached_subproject_reference(cached_dependency, project.dependencies_group)
114
+ project.add_cached_pod_subproject(cached_dependency, is_local)
107
115
  Project.add_cached_dependency(test_native_target, cached_dependency)
108
116
  end
109
117
  end
@@ -119,6 +127,7 @@ module Pod
119
127
 
120
128
  app_dependent_targets = pod_target.app_dependent_targets_by_spec_name.fetch(app_spec.name, []).unshift(pod_target).uniq
121
129
  app_dependent_targets.each do |app_dependent_target|
130
+ is_local = sandbox.local?(app_dependent_target.pod_name)
122
131
  if dependency_installation_result = pod_target_installation_results[app_dependent_target.name]
123
132
  resource_bundle_native_targets = dependency_installation_result.app_resource_bundle_targets[app_spec.name]
124
133
  unless resource_bundle_native_targets.nil?
@@ -128,14 +137,14 @@ module Pod
128
137
  end
129
138
  dependency_project = dependency_installation_result.native_target.project
130
139
  if dependency_project != project
131
- project.add_subproject_reference(dependency_project, project.dependencies_group)
140
+ project.add_pod_subproject(dependency_project, is_local)
132
141
  end
133
142
  app_native_target.add_dependency(dependency_installation_result.native_target)
134
143
  add_framework_file_reference_to_native_target(app_native_target, pod_target, app_dependent_target, frameworks_group)
135
144
  else
136
145
  # Hit the cache
137
146
  cached_dependency = metadata_cache.target_label_by_metadata[app_dependent_target.label]
138
- project.add_cached_subproject_reference(cached_dependency, project.dependencies_group)
147
+ project.add_cached_pod_subproject(cached_dependency, is_local)
139
148
  Project.add_cached_dependency(native_target, cached_dependency)
140
149
  end
141
150
  end
@@ -303,7 +303,7 @@ module Pod
303
303
  other_file_refs = project_file_references_array(other_source_files, 'other source')
304
304
  native_target.add_file_references(other_file_refs, nil)
305
305
 
306
- next unless target.build_as_dynamic_framework?
306
+ next unless target.build_as_framework?
307
307
 
308
308
  filter_resource_file_references(file_accessor.resources.flatten) do |compile_phase_refs, resource_phase_refs|
309
309
  native_target.add_file_references(compile_phase_refs, nil)
@@ -130,6 +130,40 @@ module Pod
130
130
  group
131
131
  end
132
132
 
133
+ # Creates a new subproject reference for the given project and configures its
134
+ # group location.
135
+ #
136
+ # @param [Project] project
137
+ # The subproject to be added.
138
+ #
139
+ # @param [Bool] development
140
+ # Whether the project should be added to the Development Pods group.
141
+ # For projects where `pod_target_subproject` is enabled, all subprojects are added into the Dependencies group.
142
+ #
143
+ # @return [PBXFileReference] The new file reference.
144
+ #
145
+ def add_pod_subproject(project, development = false)
146
+ parent_group = group_for_subproject_reference(development)
147
+ add_subproject_reference(project, parent_group)
148
+ end
149
+
150
+ # Creates a new subproject reference for the given cached metadata and configures its
151
+ # group location.
152
+ #
153
+ # @param [TargetMetadata] metadata
154
+ # The project metadata to be added.
155
+ #
156
+ # @param [Bool] development
157
+ # Whether the project should be added to the Development Pods group.
158
+ # For projects where `pod_target_subproject` is enabled, all subprojects are added into the Dependencies group.
159
+ #
160
+ # @return [PBXFileReference] The new file reference.
161
+ #
162
+ def add_cached_pod_subproject(metadata, development = false)
163
+ parent_group = group_for_subproject_reference(development)
164
+ add_cached_subproject_reference(metadata, parent_group)
165
+ end
166
+
133
167
  # @return [Array<PBXGroup>] Returns all the group of the Pods.
134
168
  #
135
169
  def pod_groups
@@ -489,6 +523,16 @@ module Pod
489
523
  ref
490
524
  end
491
525
 
526
+ # Returns the parent group a new subproject reference should belong to.
527
+ #
528
+ def group_for_subproject_reference(development)
529
+ if pod_target_subproject
530
+ dependencies_group
531
+ else
532
+ development ? development_pods : pods
533
+ end
534
+ end
535
+
492
536
  #-------------------------------------------------------------------------#
493
537
  end
494
538
  end
@@ -439,8 +439,14 @@ module Pod
439
439
  # Conflict was caused by a requirement from a local dependency.
440
440
  # Tell user to use `pod update`.
441
441
  o << "\nIt seems like you've changed the constraints of dependency `#{name}` " \
442
- "inside your development pod `#{local_pod_parent.name}`.\nYou should run `pod update #{name}` to apply " \
442
+ "inside your development pod `#{local_pod_parent.name}`.\nYou should run `pod update #{name}` to apply "\
443
443
  "changes you've made."
444
+ elsif !conflict.possibility && conflict.locked_requirement && conflict.locked_requirement.external_source && conflict.locked_requirement.external_source[:podspec] &&
445
+ conflict.requirement && conflict.requirement.external_source && conflict.requirement.external_source[:podspec]
446
+ # The internal version of the Podspec doesn't match the external definition of a podspec
447
+ o << "\nIt seems like you've changed the version of the dependency `#{name}` " \
448
+ "and it differs from the version stored in `Pods/Local Podspecs`.\nYou should run `pod update #{name} --no-repo-update` to apply " \
449
+ 'changes made locally.'
444
450
  elsif (conflict.possibility && conflict.possibility.version.prerelease?) &&
445
451
  (conflict.requirement && !(
446
452
  conflict.requirement.prerelease? ||
@@ -150,7 +150,7 @@ module Pod
150
150
  # @return [Pathname] the pathname for headers in the sandbox.
151
151
  #
152
152
  def headers_sandbox
153
- Pathname.new(pod_name)
153
+ Pathname.new(product_module_name)
154
154
  end
155
155
 
156
156
  # @return [Hash{FileAccessor => Hash}] Hash of file accessors by header mappings.
@@ -555,6 +555,11 @@ module Pod
555
555
  app_project = Xcodeproj::Project.new(validation_dir + 'App.xcodeproj')
556
556
  app_target = Pod::Generator::AppTargetHelper.add_app_target(app_project, consumer.platform_name, deployment_target)
557
557
  Pod::Generator::AppTargetHelper.add_swift_version(app_target, derived_swift_version)
558
+ # Lint will fail if a AppIcon is set but no image is found with such name
559
+ # Happens only with Static Frameworks enabled but shouldn't be set anyway
560
+ app_target.build_configurations.each do |config|
561
+ config.build_settings.delete('ASSETCATALOG_COMPILER_APPICON_NAME')
562
+ end
558
563
  app_project.save
559
564
  app_project.recreate_user_schemes
560
565
  end
@@ -1,11 +1,13 @@
1
1
  module Pod
2
2
  module VersionMetadata
3
+ CACHE_VERSION = '001'.freeze
4
+
3
5
  def self.gem_version
4
6
  Pod::VERSION
5
7
  end
6
8
 
7
9
  def self.project_cache_version
8
- VersionMetadata.gem_version
10
+ "#{VersionMetadata.gem_version}.project-cache.#{CACHE_VERSION}"
9
11
  end
10
12
  end
11
13
  end
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.7.0.beta.3
4
+ version: 1.7.0.rc.1
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: 2019-03-27 00:00:00.000000000 Z
14
+ date: 2019-05-02 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.7.0.beta.3
22
+ version: 1.7.0.rc.1
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.7.0.beta.3
29
+ version: 1.7.0.rc.1
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: claide
32
32
  requirement: !ruby/object:Gem::Requirement