cocoapods 0.38.0 → 0.38.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38f1d0086c53abf7931b2e48826d9177640d79a8
4
- data.tar.gz: 33709e3b43453a8790b9ebfc578774d2528f73c3
3
+ metadata.gz: e2478b064fb73530c9c036e28c2c6606b42b7d3b
4
+ data.tar.gz: 4fac9de32fe421f5da6263aa83e0b3aa0e9c0198
5
5
  SHA512:
6
- metadata.gz: 51a5fa2e47335ad50c008a316edd3e5152649df3372a8221333166958de425c9d05993b603bf510b281ea413e1a4273adefc8dfe5f7113f10f44bea9f56e7f2c
7
- data.tar.gz: 6ebb339fb126a197528187117e970c990c09c6f66621f7e08840a3017cf36605e6e3fac9474522605eb079d8a67569b09e7d8682057e64ffe944325d5be56c06
6
+ metadata.gz: e0eef7db2285e17e364e71446df6c02636f15b58ff8dca4a8a6cf3d52fb0b7b024cac1e6bb5415102d603c1531b9aae61712f54d200eea385816acb1a595d0f0
7
+ data.tar.gz: 11e7765076e7af986feea1ce1b216c2342a57bca34292eb7844fcb2cf9ad9849fe16b74758c6c63549604da4c541a327cb5d49591ae50f6bfcc5429ad34a714e
@@ -4,6 +4,49 @@ 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
+ ## 0.38.1
8
+
9
+ ##### Enhancements
10
+
11
+ * Set project, dylib, and compatibility versions when building pods as
12
+ frameworks.
13
+ [Marius Rackwitz](https://github.com/mrackwitz)
14
+
15
+ * Pods integrated as static libraries can now be imported as modules.
16
+ [Tomas Linhart](https://github.com/TomasLinhart)
17
+ [#3874](https://github.com/CocoaPods/CocoaPods/issues/3874)
18
+
19
+ ##### Bug Fixes
20
+
21
+ * Ensure the aggregate `.xcconfig` file only has the settings for the
22
+ appropriate build configuration.
23
+ [Samuel Giddins](https://github.com/segiddins)
24
+ [#3842](https://github.com/CocoaPods/CocoaPods/issues/3842)
25
+
26
+ * Show the correct error when `pod spec lint` finds multiple podspecs, and at
27
+ least one of them fails linting.
28
+ [Samuel Giddins](https://github.com/segiddins)
29
+ [#3869](https://github.com/CocoaPods/CocoaPods/issues/3869)
30
+
31
+ * Set header search paths properly on the user target when `vendored_libraries`
32
+ Pods are used while integrating Pods as frameworks.
33
+ [Jonathan MacMillan](https://github.com/perotinus)
34
+ [#3857](https://github.com/CocoaPods/CocoaPods/issues/3857)
35
+
36
+ * Only link public headers in the sandbox for Pods that are not being built
37
+ into dynamic frameworks, when integrating Pods as frameworks.
38
+ [Jonathan MacMillan](https://github.com/perotinus)
39
+ [#3867](https://github.com/CocoaPods/CocoaPods/issues/3867)
40
+
41
+ * Don't lock resource files, only source files.
42
+ [Mason Glidden](https://github.com/mglidden)
43
+ [#3557](https://github.com/CocoaPods/CocoaPods/issues/3557)
44
+
45
+ * Fix copying frameworks when integrating with today extensions.
46
+ [Samuel Giddins](https://github.com/segiddins)
47
+ [#3819](https://github.com/CocoaPods/CocoaPods/issues/3819)
48
+
49
+
7
50
  ## 0.38.0
8
51
 
9
52
  ##### Enhancements
@@ -11,14 +54,14 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
11
54
  * Improve the message shown when trying to use Swift Pods without frameworks.
12
55
  Now it includes the offending Pods so that the user can take action to remove
13
56
  the Pods, if they don’t want to move to frameworks yet.
14
- [#3830](https://github.com/CocoaPods/CocoaPods/pull/3830)
15
57
  [Eloy Durán](https://github.com/alloy)
58
+ [#3830](https://github.com/CocoaPods/CocoaPods/pull/3830)
16
59
 
17
60
  ##### Bug Fixes
18
61
 
19
62
  * Properly merge the `user_target_xcconfig`s of multiple subspecs.
20
- [#3813](https://github.com/CocoaPods/CocoaPods/issues/3813)
21
63
  [Samuel Giddins](https://github.com/segiddins)
64
+ [#3813](https://github.com/CocoaPods/CocoaPods/issues/3813)
22
65
 
23
66
 
24
67
  ## 0.38.0.beta.2
@@ -72,7 +72,7 @@ module Pod
72
72
  raise Informative, if count == 1
73
73
  "The spec did not pass validation, due to #{failure_reasons.first}."
74
74
  else
75
- "#{invalid_count} out of #{count} specs failed validation."
75
+ "#{failure_reasons.count} out of #{count} specs failed validation."
76
76
  end
77
77
  end
78
78
  podspecs_tmp_dir.rmtree if podspecs_tmp_dir.exist?
@@ -1,5 +1,5 @@
1
1
  module Pod
2
2
  # The version of the cocoapods command line tool.
3
3
  #
4
- VERSION = '0.38.0' unless defined? Pod::VERSION
4
+ VERSION = '0.38.1' unless defined? Pod::VERSION
5
5
  end
@@ -106,7 +106,7 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
106
106
  XCASSET_FILES=()
107
107
 
108
108
  realpath() {
109
- DIRECTORY=$(cd "${1%/*}" && pwd)
109
+ DIRECTORY="$(cd "${1%/*}" && pwd)"
110
110
  FILENAME="${1##*/}"
111
111
  echo "$DIRECTORY/$FILENAME"
112
112
  }
@@ -119,7 +119,7 @@ install_resource()
119
119
  ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\"$1\\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}"
120
120
  ;;
121
121
  *\.xib)
122
- echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\"$1\\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}"
122
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\"$1\\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}"
123
123
  ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\"$1\\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}"
124
124
  ;;
125
125
  *.framework)
@@ -158,8 +158,10 @@ EOS
158
158
 
159
159
  RSYNC_CALL = <<EOS
160
160
 
161
+ mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
161
162
  rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
162
163
  if [[ "${ACTION}" == "install" ]]; then
164
+ mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
163
165
  rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
164
166
  fi
165
167
  rm -f "$RESOURCES_TO_COPY"
@@ -42,8 +42,9 @@ module Pod
42
42
  # @return [String]
43
43
  #
44
44
  def generate
45
+ module_declaration_qualifier = target.requires_frameworks? ? 'framework ' : ''
45
46
  result = <<-eos.strip_heredoc
46
- framework module #{target.product_module_name} {
47
+ #{module_declaration_qualifier}module #{target.product_module_name} {
47
48
  umbrella header "#{target.umbrella_header_path.basename}"
48
49
 
49
50
  export *
@@ -8,13 +8,16 @@ module Pod
8
8
  #
9
9
  attr_reader :target
10
10
 
11
+ # @return [String] the name of the build configuration to generate this
12
+ # xcconfig for.
13
+ #
14
+ attr_reader :configuration_name
15
+
11
16
  # Initialize a new instance
12
17
  #
13
18
  # @param [Target] target @see target
14
19
  #
15
- # @param [String] configuration_name
16
- # The name of the build configuration to generate this xcconfig
17
- # for.
20
+ # @param [String] configuration_name @see configuration_name
18
21
  #
19
22
  def initialize(target, configuration_name)
20
23
  @target = target
@@ -50,7 +53,7 @@ module Pod
50
53
  #
51
54
  def generate
52
55
  includes_static_libs = !target.requires_frameworks?
53
- includes_static_libs ||= target.pod_targets.flat_map(&:file_accessors).any? { |fa| !fa.vendored_libraries.empty? }
56
+ includes_static_libs ||= pod_targets.flat_map(&:file_accessors).any? { |fa| !fa.vendored_libraries.empty? }
54
57
  config = {
55
58
  'OTHER_LDFLAGS' => '$(inherited) ' + XCConfigHelper.default_ld_flags(target, includes_static_libs),
56
59
  'PODS_ROOT' => target.relative_pods_root,
@@ -90,8 +93,7 @@ module Pod
90
93
  #
91
94
  def generate_settings_to_import_pod_targets
92
95
  if target.requires_frameworks?
93
- # Framework headers are automatically discoverable by `#import <…>`.
94
- header_search_paths = target.pod_targets.map do |target|
96
+ framework_header_search_paths = pod_targets.select(&:should_build?).map do |target|
95
97
  if target.scoped?
96
98
  "$PODS_FRAMEWORK_BUILD_PATH/#{target.product_name}/Headers"
97
99
  else
@@ -100,10 +102,16 @@ module Pod
100
102
  end
101
103
  build_settings = {
102
104
  'PODS_FRAMEWORK_BUILD_PATH' => target.scoped_configuration_build_dir,
103
- # Make headers discoverable by `import "…"`
104
- 'OTHER_CFLAGS' => '$(inherited) ' + XCConfigHelper.quote(header_search_paths, '-iquote'),
105
+ # Make framework headers discoverable by `import "…"`
106
+ 'OTHER_CFLAGS' => '$(inherited) ' + XCConfigHelper.quote(framework_header_search_paths, '-iquote'),
105
107
  }
106
- if target.pod_targets.any? { |t| t.should_build? && t.scoped? }
108
+ if pod_targets.any? { |t| !t.should_build? }
109
+ # Make library headers discoverale by `#import "…"`
110
+ library_header_search_paths = target.sandbox.public_headers.search_paths(target.platform)
111
+ build_settings['HEADER_SEARCH_PATHS'] = XCConfigHelper.quote(library_header_search_paths)
112
+ build_settings['OTHER_CFLAGS'] += XCConfigHelper.quote(library_header_search_paths, '-isystem')
113
+ end
114
+ if pod_targets.any? { |t| t.should_build? && t.scoped? }
107
115
  build_settings['FRAMEWORK_SEARCH_PATHS'] = '$(inherited) "$PODS_FRAMEWORK_BUILD_PATH"'
108
116
  end
109
117
  @xcconfig.merge!(build_settings)
@@ -130,7 +138,7 @@ module Pod
130
138
  # user target.
131
139
  #
132
140
  def generate_vendored_build_settings
133
- target.pod_targets.each do |pod_target|
141
+ pod_targets.each do |pod_target|
134
142
  unless pod_target.should_build? && pod_target.requires_frameworks?
135
143
  XCConfigHelper.add_settings_for_file_accessors_of_target(pod_target, @xcconfig)
136
144
  end
@@ -141,7 +149,7 @@ module Pod
141
149
  # with the user’s project.
142
150
  #
143
151
  def generate_other_ld_flags
144
- other_ld_flags = target.pod_targets.select(&:should_build?).map do |pod_target|
152
+ other_ld_flags = pod_targets.select(&:should_build?).map do |pod_target|
145
153
  if pod_target.requires_frameworks?
146
154
  %(-framework "#{pod_target.product_basename}")
147
155
  else
@@ -191,7 +199,7 @@ module Pod
191
199
  # @return [Array<PodTarget>]
192
200
  #
193
201
  def pod_targets
194
- target.pod_targets_for_build_configuration(@configuration_name)
202
+ target.pod_targets_for_build_configuration(configuration_name)
195
203
  end
196
204
 
197
205
  # Returns the +user_target_xcconfig+ for all pod targets and their spec
@@ -346,7 +346,10 @@ module Pod
346
346
  def lock_pod_sources
347
347
  return unless config.lock_pod_source?
348
348
  return unless @pod_installers
349
- @pod_installers.each(&:lock_files!)
349
+ @pod_installers.each do |installer|
350
+ pod_target = pod_targets.find { |target| target.pod_name == installer.name }
351
+ installer.lock_files!(pod_target.file_accessors)
352
+ end
350
353
  end
351
354
 
352
355
  # Determines if the dependencies need to be built as dynamic frameworks or
@@ -118,14 +118,23 @@ module Pod
118
118
  framework_exp = /\.framework\//
119
119
  headers_sandbox = Pathname.new(file_accessor.spec.root.name)
120
120
  pod_target.build_headers.add_search_path(headers_sandbox, pod_target.platform)
121
- sandbox.public_headers.add_search_path(headers_sandbox, pod_target.platform)
121
+
122
+ # When integrating Pod as frameworks, built Pods are built into
123
+ # frameworks, whose headers are included inside the built
124
+ # framework. Those headers do not need to be linked from the
125
+ # sandbox.
126
+ unless pod_target.requires_frameworks? && pod_target.should_build?
127
+ sandbox.public_headers.add_search_path(headers_sandbox, pod_target.platform)
128
+ end
122
129
 
123
130
  header_mappings(headers_sandbox, file_accessor, file_accessor.headers).each do |namespaced_path, files|
124
131
  pod_target.build_headers.add_files(namespaced_path, files.reject { |f| f.to_path =~ framework_exp }, pod_target.platform)
125
132
  end
126
133
 
127
- header_mappings(headers_sandbox, file_accessor, file_accessor.public_headers).each do |namespaced_path, files|
128
- sandbox.public_headers.add_files(namespaced_path, files.reject { |f| f.to_path =~ framework_exp }, pod_target.platform)
134
+ unless pod_target.requires_frameworks? && pod_target.should_build?
135
+ header_mappings(headers_sandbox, file_accessor, file_accessor.public_headers).each do |namespaced_path, files|
136
+ sandbox.public_headers.add_files(namespaced_path, files.reject { |f| f.to_path =~ framework_exp }, pod_target.platform)
137
+ end
129
138
  end
130
139
 
131
140
  vendored_frameworks_header_mappings(headers_sandbox, file_accessor).each do |namespaced_path, files|
@@ -33,6 +33,12 @@ module Pod
33
33
  "<#{self.class} sandbox=#{sandbox.root} pod=#{root_spec.name}"
34
34
  end
35
35
 
36
+ # @return [String] The name of the pod this installer is installing.
37
+ #
38
+ def name
39
+ root_spec.name
40
+ end
41
+
36
42
  #-----------------------------------------------------------------------#
37
43
 
38
44
  public
@@ -66,8 +72,16 @@ module Pod
66
72
  #
67
73
  # @return [void]
68
74
  #
69
- def lock_files!
70
- lock_installation unless local?
75
+ def lock_files!(file_accessors)
76
+ return if local?
77
+
78
+ file_accessors.each do |file_accessor|
79
+ file_accessor.source_files.each do |source_file|
80
+ next unless source_file.exist?
81
+ new_permissions = source_file.stat.mode & ~0222
82
+ source_file.chmod(new_permissions)
83
+ end
84
+ end
71
85
  end
72
86
 
73
87
  # @return [Hash] @see Downloader#checkout_options
@@ -102,24 +116,6 @@ module Pod
102
116
  )
103
117
  end
104
118
 
105
- # Locks all of the files in this pod (source, license, etc). This will
106
- # cause Xcode to warn you if you try to accidently edit one of the files.
107
- #
108
- # @return [void]
109
- #
110
- def lock_installation
111
- # We don't want to lock diretories, as that forces you to override
112
- # those permissions if you decide to delete the Pods folder.
113
- Dir.glob(root + '**/*').each do |file|
114
- if File.file?(file)
115
- # Only remove write permission, since some pods (like Crashlytics)
116
- # have executable files.
117
- new_permissions = File.stat(file).mode & ~0222
118
- File.chmod(new_permissions, file)
119
- end
120
- end
121
- end
122
-
123
119
  # Removes all the files not needed for the installation according to the
124
120
  # specs by platform.
125
121
  #
@@ -22,13 +22,15 @@ module Pod
22
22
  create_xcconfig_file
23
23
  if target.requires_frameworks?
24
24
  create_info_plist_file
25
- create_module_map do |generator|
26
- generator.private_headers += target.file_accessors.flat_map(&:private_headers).map(&:basename)
27
- end
28
- create_umbrella_header do |generator|
29
- generator.imports += target.file_accessors.flat_map(&:public_headers).map(&:basename)
30
- end
31
25
  end
26
+ create_module_map do |generator|
27
+ generator.private_headers += target.file_accessors.flat_map(&:private_headers).map(&:basename)
28
+ end
29
+ create_umbrella_header do |generator|
30
+ generator.imports += target.file_accessors.flat_map(&:public_headers).map(&:basename)
31
+ end
32
+ link_module_map
33
+ link_umbrella_header
32
34
  create_prefix_header
33
35
  create_dummy_source
34
36
  end
@@ -36,6 +38,24 @@ module Pod
36
38
 
37
39
  private
38
40
 
41
+ # Adds the project/library and compatibility versions, which are only
42
+ # applicable to dynamic libraries.
43
+ #
44
+ # @return [Hash{String => String}]
45
+ #
46
+ def custom_build_settings
47
+ settings = super
48
+ if target.requires_frameworks?
49
+ version = target.root_spec.version
50
+ compatibility_version = version.segments.first
51
+ compatibility_version = version.version if compatibility_version < 1
52
+ settings['CURRENT_PROJECT_VERSION'] = version.version
53
+ settings['DYLIB_COMPATIBILITY_VERSION'] = compatibility_version.to_s
54
+ settings['DYLIB_CURRENT_VERSION'] = '$(CURRENT_PROJECT_VERSION)'
55
+ end
56
+ settings
57
+ end
58
+
39
59
  #-----------------------------------------------------------------------#
40
60
 
41
61
  SOURCE_FILE_EXTENSIONS = Sandbox::FileAccessor::SOURCE_FILE_EXTENSIONS
@@ -165,6 +185,27 @@ module Pod
165
185
  end
166
186
  end
167
187
 
188
+ # Links a module map to Public headers.
189
+ #
190
+ # @return [void]
191
+ #
192
+ def link_module_map
193
+ return if target.requires_frameworks? && target.should_build?
194
+
195
+ sandbox.public_headers.add_file(target.name, target.module_map_path, 'module.modulemap', target.platform)
196
+ end
197
+
198
+ # Links a an umbrella header to Public headers.
199
+ #
200
+ # @return [void]
201
+ #
202
+ def link_umbrella_header
203
+ return if custom_module_map
204
+ return if target.requires_frameworks? && target.should_build?
205
+
206
+ sandbox.public_headers.add_files(target.name, [target.umbrella_header_path], target.platform)
207
+ end
208
+
168
209
  # Creates a prefix header file which imports `UIKit` or `Cocoa` according
169
210
  # to the platform of the target. This file also include any prefix header
170
211
  # content reported by the specification of the pods.
@@ -262,6 +303,12 @@ module Pod
262
303
  FileUtils.cp(custom_module_map, path)
263
304
  add_file_to_support_group(path)
264
305
 
306
+ unless target.requires_frameworks?
307
+ contents = path.read
308
+ contents.gsub!(/^\s*framework\s+module/, 'module')
309
+ path.open('w') { |f| f.write(contents) }
310
+ end
311
+
265
312
  native_target.build_configurations.each do |c|
266
313
  relative_path = path.relative_path_from(sandbox.root)
267
314
  c.build_settings['MODULEMAP_FILE'] = relative_path.to_s
@@ -71,18 +71,40 @@ module Pod
71
71
  # @return [Array<Pathname>]
72
72
  #
73
73
  def add_files(namespace, relative_header_paths, platform)
74
+ relative_header_paths.map do |relative_header_path|
75
+ add_file(namespace, relative_header_path, relative_header_path.basename, platform)
76
+ end
77
+ end
78
+
79
+ # Adds a header to the directory under different name.
80
+ #
81
+ # @param [Pathname] namespace
82
+ # the path where the header file should be stored relative to the
83
+ # headers directory.
84
+ #
85
+ # @param [Pathname] relative_header_path
86
+ # the path of the header file relative to the Pods project
87
+ # (`PODS_ROOT` variable of the xcconfigs).
88
+ #
89
+ # @param [String] final_name
90
+ # the name under which the file should be available in the
91
+ # headers directory.
92
+ #
93
+ # @note This method adds the file to the search paths.
94
+ #
95
+ # @return [Pathname]
96
+ #
97
+ def add_file(namespace, relative_header_path, final_name, platform)
74
98
  add_search_path(namespace, platform)
75
99
  namespaced_path = root + namespace
76
100
  namespaced_path.mkpath unless File.exist?(namespaced_path)
77
101
 
78
- relative_header_paths.map do |relative_header_path|
79
- absolute_source = (sandbox.root + relative_header_path)
80
- source = absolute_source.relative_path_from(namespaced_path)
81
- Dir.chdir(namespaced_path) do
82
- FileUtils.ln_sf(source, relative_header_path.basename)
83
- end
84
- namespaced_path + relative_header_path.basename
102
+ absolute_source = (sandbox.root + relative_header_path)
103
+ source = absolute_source.relative_path_from(namespaced_path)
104
+ Dir.chdir(namespaced_path) do
105
+ FileUtils.ln_sf(source, final_name)
85
106
  end
107
+ namespaced_path + relative_header_path.basename
86
108
  end
87
109
 
88
110
  # Adds an header search path to the sandbox.
@@ -244,15 +244,19 @@ module Pod
244
244
  UI.message "\n\n#{spec} - Analyzing on #{platform} platform.".green.reversed
245
245
  @consumer = spec.consumer(platform)
246
246
  setup_validation_environment
247
+ download_pod
248
+ check_file_patterns
247
249
  install_pod
248
250
  validate_vendored_dynamic_frameworks
249
251
  build_pod
250
- check_file_patterns
251
252
  tear_down_validation_environment
252
253
  validated?
253
254
  end
254
255
  return false if fail_fast && !valid
255
256
  perform_extensive_subspec_analysis(spec) unless @no_subspecs
257
+ rescue => e
258
+ error('unknown', "Encountered an unknown error (#{e}) during validation.")
259
+ false
256
260
  end
257
261
 
258
262
  # Recursively perform the extensive analysis on all subspecs
@@ -334,29 +338,33 @@ module Pod
334
338
  Config.instance = @original_config
335
339
  end
336
340
 
341
+ def download_pod
342
+ deployment_target = spec.subspec_by_name(subspec_name).deployment_target(consumer.platform_name)
343
+ podfile = podfile_from_spec(consumer.platform_name, deployment_target, use_frameworks)
344
+ sandbox = Sandbox.new(config.sandbox_root)
345
+ @installer = Installer.new(sandbox, podfile)
346
+ @installer.use_default_plugins = false
347
+ %i(prepare resolve_dependencies download_dependencies).each { |m| @installer.send(m) }
348
+ @file_accessor = @installer.pod_targets.flat_map(&:file_accessors).find { |fa| fa.spec.name == consumer.spec.name }
349
+ end
350
+
337
351
  # It creates a podfile in memory and builds a library containing the pod
338
352
  # for all available platforms with xcodebuild.
339
353
  #
340
354
  def install_pod
341
- deployment_target = spec.subspec_by_name(subspec_name).deployment_target(consumer.platform_name)
342
- podfile = podfile_from_spec(consumer.platform_name, deployment_target, use_frameworks)
343
- sandbox = Sandbox.new(config.sandbox_root)
344
- installer = Installer.new(sandbox, podfile)
345
- installer.use_default_plugins = false
346
- installer.install!
355
+ %i(determine_dependency_product_types verify_no_duplicate_framework_names
356
+ verify_no_static_framework_transitive_dependencies
357
+ verify_framework_usage generate_pods_project
358
+ perform_post_install_actions).each { |m| @installer.send(m) }
347
359
 
348
- file_accessors = installer.aggregate_targets.map do |target|
360
+ deployment_target = spec.subspec_by_name(subspec_name).deployment_target(consumer.platform_name)
361
+ @installer.aggregate_targets.each do |target|
349
362
  if target.pod_targets.any?(&:uses_swift?) && consumer.platform_name == :ios &&
350
363
  (deployment_target.nil? || Version.new(deployment_target).major < 8)
351
364
  uses_xctest = target.spec_consumers.any? { |c| (c.frameworks + c.weak_frameworks).include? 'XCTest' }
352
365
  error('swift', 'Swift support uses dynamic frameworks and is therefore only supported on iOS > 8.') unless uses_xctest
353
366
  end
354
-
355
- target.pod_targets.map(&:file_accessors)
356
- end.flatten
357
-
358
- @file_accessor = file_accessors.find { |accessor| accessor.spec.root.name == spec.root.name }
359
- config.silent
367
+ end
360
368
  end
361
369
 
362
370
  def validate_vendored_dynamic_frameworks
@@ -546,11 +554,11 @@ module Pod
546
554
  # in local mode.
547
555
  #
548
556
  def podfile_from_spec(platform_name, deployment_target, use_frameworks = true)
549
- name = subspec_name ? subspec_name : spec.name
557
+ name = subspec_name || spec.name
550
558
  podspec = file.realpath
551
559
  local = local?
552
560
  urls = source_urls
553
- podfile = Pod::Podfile.new do
561
+ Pod::Podfile.new do
554
562
  urls.each { |u| source(u) }
555
563
  use_frameworks!(use_frameworks)
556
564
  platform(platform_name, deployment_target)
@@ -560,7 +568,6 @@ module Pod
560
568
  pod name, :podspec => podspec.to_s
561
569
  end
562
570
  end
563
- podfile
564
571
  end
565
572
 
566
573
  # Parse the xcode build output to identify the lines which are relevant
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: 0.38.0
4
+ version: 0.38.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: 2015-07-18 00:00:00.000000000 Z
14
+ date: 2015-07-23 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: 0.38.0
22
+ version: 0.38.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: 0.38.0
29
+ version: 0.38.1
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: claide
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -131,14 +131,14 @@ dependencies:
131
131
  requirements:
132
132
  - - ~>
133
133
  - !ruby/object:Gem::Version
134
- version: 0.3.0
134
+ version: 0.3.1
135
135
  type: :runtime
136
136
  prerelease: false
137
137
  version_requirements: !ruby/object:Gem::Requirement
138
138
  requirements:
139
139
  - - ~>
140
140
  - !ruby/object:Gem::Version
141
- version: 0.3.0
141
+ version: 0.3.1
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: colored
144
144
  requirement: !ruby/object:Gem::Requirement