cocoapods 1.2.1.beta.1 → 1.2.1.rc.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: eb9eda85e1b9046c779bb13ac2cd2b16d794ac5d
4
- data.tar.gz: 4aa4fbfc96bd441f9dc9b89e3f86438842e66b89
3
+ metadata.gz: 666655faba4b49391d62a9f10e7f3b4a427d925b
4
+ data.tar.gz: ac8cc0d14bb90c79d42a2d4f80ae301f65d69897
5
5
  SHA512:
6
- metadata.gz: 2cbe8cde671b565a37d727b7df2d58092d8d91769f5150e7f27653d837d5a3ae3392ac37d94ebfa671dfdf6f4d7f374a8c6e78a008148a99e30e3b4d40d77ad7
7
- data.tar.gz: 57abe56a456b33abfe8a9eddb473c7d6d9490db167bdee833d391e0c0c5dd758444abcab93403e44d9c12e23fe3758f64099ed6f1a1ff866997c560448dd210f
6
+ metadata.gz: b210990c83e1c54887ed8ac795923e936c8dc5cbe94015f9f4d53671705eb19075074c19cbfbc7d13d95efeba3eee8cb7329162da4016107865f742345711171
7
+ data.tar.gz: 12256a5266085c5d411f4205420dd443438989a280c6a7d0d903625f8d2240c38d7bfa6370cb2ce219195eab1e89318a02d10b995e4332860cc137aa93b9db78
@@ -4,6 +4,52 @@ 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.2.1.rc.1 (2017-04-05)
8
+
9
+ ##### Enhancements
10
+
11
+ * None.
12
+
13
+ ##### Bug Fixes
14
+
15
+ * Fix generating `LD_RUNPATH_SEARCH_PATHS` without `use_frameworks!` but consuming a vendored dynamic artifact.
16
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
17
+ [#6596](https://github.com/CocoaPods/CocoaPods/issues/6596)
18
+
19
+ * Fix building with static lib subprojects (previously only supported framework subprojects).
20
+ [Ben Asher](https://github.com/benasher44)
21
+ [#5830](https://github.com/CocoaPods/CocoaPods/issues/5830)
22
+ [#6306](https://github.com/CocoaPods/CocoaPods/issues/6306)
23
+
24
+ * Fix regression from #6457 to ensure a correct error message is given when a spec is not found.
25
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
26
+ [#6457](https://github.com/CocoaPods/CocoaPods/issues/6457)
27
+
28
+ * Provide a better error message if a podspec is found but cannot be parsed.
29
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
30
+ [#6457](https://github.com/CocoaPods/CocoaPods/issues/6457)
31
+
32
+ * Only share pod target xcscheme if present during validation.
33
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
34
+ [#6558](https://github.com/CocoaPods/CocoaPods/pull/6558)
35
+
36
+ * Properly compile storyboard for watch device family.
37
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
38
+ [#6516](https://github.com/CocoaPods/CocoaPods/issues/6516)
39
+
40
+ * Support git progress for `pod repo update` and `pod install --repo-update`
41
+ [Alfredo Delli Bovi](https://github.com/adellibovi)
42
+ [#6525](https://github.com/CocoaPods/CocoaPods/issues/6525)
43
+
44
+ * Return new exit code (31) when spec not found
45
+ [Alfredo Delli Bovi](https://github.com/adellibovi)
46
+ [#6033](https://github.com/CocoaPods/CocoaPods/issues/6033)
47
+
48
+ * Provide better error message when spec not found
49
+ [Alfredo Delli Bovi](https://github.com/adellibovi)
50
+ [#6033](https://github.com/CocoaPods/CocoaPods/issues/6033)
51
+
52
+
7
53
  ## 1.2.1.beta.1 (2017-03-08)
8
54
 
9
55
  ##### Enhancements
@@ -12,6 +58,10 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
12
58
  [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
13
59
  [#6534](https://github.com/CocoaPods/CocoaPods/issues/6534)
14
60
 
61
+ * Provide installation option to disable multiple pod sources warnings.
62
+ [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
63
+ [#6497](https://github.com/CocoaPods/CocoaPods/pull/6497)
64
+
15
65
  * Use the colored2 gem instead of colored.
16
66
  [Orta Therox](https://github.com/orta)
17
67
  [xcodeproj#463](https://github.com/CocoaPods/Xcodeproj/pull/463)
@@ -20,8 +70,16 @@ To install release candidates run `[sudo] gem install cocoapods --pre`
20
70
  [Ken Wigginton](https://github.com/hailstorm350)
21
71
  [#6434](https://github.com/CocoaPods/CocoaPods/pull/6434)
22
72
 
73
+ * Created `NOMENCLATURE.md` to keep a glossary of the most common terms used in cocoapods.
74
+ [Rob Contreras](https://github.com/robcontreras)
75
+ [#2379](https://github.com/CocoaPods/CocoaPods/pull/2379)
76
+
23
77
  ##### Bug Fixes
24
78
 
79
+ * Ensure Core Data models get added to the compile sources phase for header generation.
80
+ [Ben Asher](https://github.com/benasher44)
81
+ [#6259](https://github.com/CocoaPods/CocoaPods/issues/6259)
82
+
25
83
  * Do not crash when attempting to install pod with no supported targets.
26
84
  [Dimitris Koutsogiorgas](https://github.com/dnkoutso)
27
85
  [#6465](https://github.com/CocoaPods/CocoaPods/issues/6465)
@@ -21,6 +21,10 @@ module Pod
21
21
  This will configure the project to reference the Pods static library,
22
22
  add a build configuration file, and add a post build script to copy
23
23
  Pod resources.
24
+
25
+ This may return one of several error codes if it encounters problems.
26
+ * `1` Generic error code
27
+ * `31` Spec not found (i.e out-of-date source repos, mistyped Pod name etc...)
24
28
  DESC
25
29
 
26
30
  def self.options
@@ -111,7 +111,13 @@ module Pod
111
111
  title = "Pre-downloading: `#{name}` #{description}"
112
112
  UI.titled_section(title, :verbose_prefix => '-> ') do
113
113
  target = sandbox.pod_dir(name)
114
- download_result = Downloader.download(download_request, target, :can_cache => can_cache)
114
+ begin
115
+ download_result = Downloader.download(download_request, target, :can_cache => can_cache)
116
+ rescue Pod::DSLError => e
117
+ raise Informative, "Failed to load '#{name}' podspec: #{e.message}"
118
+ rescue => _
119
+ raise Informative, "Failed to download '#{name}'."
120
+ end
115
121
  spec = download_result.spec
116
122
 
117
123
  raise Informative, "Unable to find a specification for '#{name}'." unless spec
@@ -147,17 +153,21 @@ module Pod
147
153
  # @return [void]
148
154
  #
149
155
  def store_podspec(sandbox, spec, json = false)
150
- spec = case spec
151
- when Pathname
152
- Specification.from_file(spec)
153
- when String
154
- path = "#{name}.podspec"
155
- path << '.json' if json
156
- Specification.from_string(spec, path)
157
- when Specification
158
- spec.dup
159
- else
160
- raise "Unknown spec type: #{spec}"
156
+ begin
157
+ spec = case spec
158
+ when Pathname
159
+ Specification.from_file(spec)
160
+ when String
161
+ path = "#{name}.podspec"
162
+ path << '.json' if json
163
+ Specification.from_string(spec, path)
164
+ when Specification
165
+ spec.dup
166
+ else
167
+ raise "Unknown spec type: #{spec}"
168
+ end
169
+ rescue Pod::DSLError => e
170
+ raise Informative, "Failed to load '#{name}' podspec: #{e.message}"
161
171
  end
162
172
  spec.defined_in_file = nil
163
173
  validate_podspec(spec)
@@ -1,5 +1,5 @@
1
1
  module Pod
2
2
  # The version of the CocoaPods command line tool.
3
3
  #
4
- VERSION = '1.2.1.beta.1'.freeze unless defined? Pod::VERSION
4
+ VERSION = '1.2.1.rc.1'.freeze unless defined? Pod::VERSION
5
5
  end
@@ -117,6 +117,9 @@ case "${TARGETED_DEVICE_FAMILY}" in
117
117
  3)
118
118
  TARGET_DEVICE_ARGS="--target-device tv"
119
119
  ;;
120
+ 4)
121
+ TARGET_DEVICE_ARGS="--target-device watch"
122
+ ;;
120
123
  *)
121
124
  TARGET_DEVICE_ARGS="--target-device mac"
122
125
  ;;
@@ -80,7 +80,11 @@ module Pod
80
80
  # See https://github.com/CocoaPods/CocoaPods/issues/1216
81
81
  @xcconfig.attributes.delete('USE_HEADERMAP')
82
82
 
83
- generate_ld_runpath_search_paths if target.requires_frameworks?
83
+ # If any of the aggregate target dependencies bring in any vendored dynamic artifacts we should ensure to
84
+ # update the runpath search paths.
85
+ vendored_dynamic_artifacts = pod_targets.flat_map(&:file_accessors).flat_map(&:vendored_dynamic_artifacts)
86
+
87
+ generate_ld_runpath_search_paths if target.requires_frameworks? || vendored_dynamic_artifacts.count > 0
84
88
 
85
89
  @xcconfig
86
90
  end
@@ -156,6 +156,11 @@ module Pod
156
156
 
157
157
  private
158
158
 
159
+ # @return [Bool] Whether the analysis has updated sources repositories.
160
+ #
161
+ attr_accessor :specs_updated
162
+ alias_method :specs_updated?, :specs_updated
163
+
159
164
  def validate_podfile!
160
165
  validator = Installer::PodfileValidator.new(podfile)
161
166
  validator.validate
@@ -217,11 +222,12 @@ module Pod
217
222
  def update_repositories
218
223
  sources.each do |source|
219
224
  if source.git?
220
- config.sources_manager.update(source.name)
225
+ config.sources_manager.update(source.name, true)
221
226
  else
222
227
  UI.message "Skipping `#{source.name}` update because the repository is not a git source repository."
223
228
  end
224
229
  end
230
+ @specs_updated = true
225
231
  end
226
232
 
227
233
  private
@@ -236,11 +242,17 @@ module Pod
236
242
  # @param [Array<AggregateTarget>] embedded_aggregate_targets the aggregate targets
237
243
  # representing the embedded targets to be integrated
238
244
  #
239
- def copy_embedded_target_pod_targets_to_host(aggregate_target, embedded_aggregate_targets)
245
+ # @param [Boolean] libraries_only if true, only library-type embedded
246
+ # targets are considered, otherwise, all other types are have
247
+ # their pods copied to their host targets as well (extensions, etc.)
248
+ #
249
+ def copy_embedded_target_pod_targets_to_host(aggregate_target, embedded_aggregate_targets, libraries_only)
240
250
  return if aggregate_target.requires_host_target?
241
251
  pod_target_names = Set.new(aggregate_target.pod_targets.map(&:name))
242
252
  aggregate_user_target_uuids = Set.new(aggregate_target.user_targets.map(&:uuid))
243
253
  embedded_aggregate_targets.each do |embedded_aggregate_target|
254
+ # Skip non libraries in library-only mode
255
+ next if libraries_only && !embedded_aggregate_target.library?
244
256
  next unless embedded_aggregate_target.user_targets.any? do |embedded_user_target|
245
257
  # You have to ask the host target's project for the host targets of
246
258
  # the embedded target, as opposed to asking user_project for the
@@ -351,11 +363,21 @@ module Pod
351
363
  generate_target(target_definition, pod_targets)
352
364
  end
353
365
  if installation_options.integrate_targets?
354
- # Copy embedded target pods that cannot have their pods embedded as frameworks to their host targets
355
- embedded_targets = aggregate_targets.select(&:requires_host_target?).select(&:requires_frameworks?)
366
+ # Copy embedded target pods that cannot have their pods embedded as frameworks to
367
+ # their host targets, and ensure we properly link library pods to their host targets
368
+ embedded_targets = aggregate_targets.select(&:requires_host_target?)
356
369
  analyze_host_targets_in_podfile(aggregate_targets, embedded_targets)
370
+
371
+ use_frameworks_embedded_targets = embedded_targets.select(&:requires_frameworks?)
372
+ non_use_frameworks_embedded_targets = embedded_targets.reject(&:requires_frameworks?)
357
373
  aggregate_targets.each do |target|
358
- copy_embedded_target_pod_targets_to_host(target, embedded_targets)
374
+ # For targets that require frameworks, we always have to copy their pods to their
375
+ # host targets because those frameworks will all be loaded from the host target's bundle
376
+ copy_embedded_target_pod_targets_to_host(target, use_frameworks_embedded_targets, false)
377
+
378
+ # For targets that don't require frameworks, we only have to consider library-type
379
+ # targets because their host targets will still need to link their pods
380
+ copy_embedded_target_pod_targets_to_host(target, non_use_frameworks_embedded_targets, true)
359
381
  end
360
382
  end
361
383
  aggregate_targets.each do |target|
@@ -716,6 +738,7 @@ module Pod
716
738
  specs_by_target = nil
717
739
  UI.section "Resolving dependencies of #{UI.path(podfile.defined_in_file) || 'Podfile'}" do
718
740
  resolver = Resolver.new(sandbox, podfile, locked_dependencies, sources)
741
+ resolver.specs_updated = specs_updated?
719
742
  specs_by_target = resolver.resolve
720
743
  specs_by_target.values.flatten(1).each(&:validate_cocoapods_version)
721
744
  end
@@ -106,6 +106,7 @@ module Pod
106
106
  option :deterministic_uuids, true
107
107
  option :integrate_targets, true
108
108
  option :lock_pod_sources, true
109
+ option :warn_for_multiple_pod_sources, true
109
110
  option :share_schemes_for_development_pods, false
110
111
 
111
112
  module Mixin
@@ -69,13 +69,26 @@ module Pod
69
69
  # added by their parent directory. This will also include references to the parent [PBXVariantGroup]
70
70
  # for all resources underneath it.
71
71
  #
72
- # @param Array[<Pathname>] resource_file_references
72
+ # @param [Array<Pathname>] resource_file_references
73
73
  # The array of all resource file references to filter.
74
-
75
- # @return [Array<Pathname>] The filtered resource file references.
74
+ #
75
+ # @yield_param [Array<PBXFileReference>} The filtered resource file references to be installed
76
+ # in the copy resources phase.
77
+ #
78
+ # @yield_param [Array<PBXFileReference>} The filtered resource file references to be installed
79
+ # in the compile sources phase.
80
+ #
81
+ # @note Core Data model directories (.xcdatamodeld) used to be added to the
82
+ # `Copy Resources` build phase like all other resources, since they would
83
+ # compile correctly in either the resources or compile phase. In recent
84
+ # versions of xcode, there's an exception for data models that generate
85
+ # headers. These need to be added to the compile sources phase of a real
86
+ # target for the headers to be built in time for code in the target to
87
+ # use them. These kinds of models generally break when added to resource
88
+ # bundles.
76
89
  #
77
90
  def filter_resource_file_references(resource_file_references)
78
- resource_file_references.map do |resource_file_reference|
91
+ file_references = resource_file_references.map do |resource_file_reference|
79
92
  ref = project.reference_for_path(resource_file_reference)
80
93
 
81
94
  # Some nested files are not directly present in the Xcode project, such as the contents
@@ -87,7 +100,11 @@ module Pod
87
100
  next ref.parent if ref.parent.is_a?(Xcodeproj::Project::Object::PBXVariantGroup)
88
101
 
89
102
  ref
90
- end
103
+ end.compact.uniq
104
+ compile_phase_matcher = lambda { |ref| !(ref.path =~ /.*\.xcdatamodeld/i).nil? }
105
+ resources_phase_refs = file_references.reject(&compile_phase_matcher)
106
+ compile_phase_refs = file_references.select(&compile_phase_matcher)
107
+ yield resources_phase_refs, compile_phase_refs
91
108
  end
92
109
 
93
110
  #-----------------------------------------------------------------------#
@@ -136,9 +153,10 @@ module Pod
136
153
 
137
154
  next unless target.requires_frameworks?
138
155
 
139
- resource_refs = filter_resource_file_references(file_accessor.resources.flatten).compact
140
-
141
- native_target.add_resources(resource_refs)
156
+ filter_resource_file_references(file_accessor.resources.flatten) do |resource_phase_refs, compile_phase_refs|
157
+ native_target.add_file_references(compile_phase_refs, nil)
158
+ native_target.add_resources(resource_phase_refs)
159
+ end
142
160
  end
143
161
  end
144
162
 
@@ -147,19 +165,11 @@ module Pod
147
165
  # @note The source files are grouped by Pod and in turn by subspec
148
166
  # (recursively) in the resources group.
149
167
  #
150
- # @note Core Data model directories (.xcdatamodeld) are currently added to the
151
- # `Copy Resources` build phase like all other resources. The Xcode UI adds
152
- # these to the `Compile Sources` build phase, but they will compile
153
- # correctly either way.
154
- #
155
168
  # @return [void]
156
169
  #
157
170
  def add_resources_bundle_targets
158
171
  target.file_accessors.each do |file_accessor|
159
172
  file_accessor.resource_bundles.each do |bundle_name, paths|
160
- file_references = filter_resource_file_references(paths)
161
- file_references = file_references.uniq.compact
162
-
163
173
  label = target.resources_bundle_target_label(bundle_name)
164
174
  bundle_target = project.new_resources_bundle(label, file_accessor.spec_consumer.platform_name)
165
175
  bundle_target.product_reference.tap do |bundle_product|
@@ -167,7 +177,12 @@ module Pod
167
177
  bundle_product.name = bundle_file_name
168
178
  bundle_product.path = bundle_file_name
169
179
  end
170
- bundle_target.add_resources(file_references)
180
+
181
+ filter_resource_file_references(paths) do |resource_phase_refs, compile_phase_refs|
182
+ # Resource bundles are only meant to have resources, so install everything
183
+ # into the resources phase. See note in filter_resource_file_references.
184
+ bundle_target.add_resources(resource_phase_refs + compile_phase_refs)
185
+ end
171
186
 
172
187
  target.user_build_configurations.each do |bc_name, type|
173
188
  bundle_target.add_build_configuration(bc_name, type)
@@ -2,10 +2,20 @@ require 'molinillo'
2
2
  require 'cocoapods/resolver/lazy_specification'
3
3
 
4
4
  module Pod
5
+ class NoSpecFoundError < Informative
6
+ def exit_status
7
+ @exit_status ||= 31
8
+ end
9
+ end
10
+
5
11
  # The resolver is responsible of generating a list of specifications grouped
6
12
  # by target for a given Podfile.
7
13
  #
8
14
  class Resolver
15
+ include Pod::Installer::InstallationOptions::Mixin
16
+
17
+ delegate_installation_options { podfile }
18
+
9
19
  # @return [Sandbox] the Sandbox used by the resolver to find external
10
20
  # dependencies.
11
21
  #
@@ -25,6 +35,11 @@ module Pod
25
35
  #
26
36
  attr_accessor :sources
27
37
 
38
+ # @return [Bool] Whether the resolver has sources repositories up-to-date.
39
+ #
40
+ attr_accessor :specs_updated
41
+ alias specs_updated? specs_updated
42
+
28
43
  # Init a new Resolver
29
44
  #
30
45
  # @param [Sandbox] sandbox @see sandbox
@@ -288,7 +303,7 @@ module Pod
288
303
  def specifications_for_dependency(dependency, additional_requirements = [])
289
304
  requirement = Requirement.new(dependency.requirement.as_list + additional_requirements)
290
305
  find_cached_set(dependency).
291
- all_specifications.
306
+ all_specifications(installation_options.warn_for_multiple_pod_sources).
292
307
  select { |s| requirement.satisfied_by? s.version }.
293
308
  map { |s| s.subspec_by_name(dependency.name, false) }.
294
309
  compact.
@@ -385,6 +400,7 @@ module Pod
385
400
  #
386
401
  def handle_resolver_error(error)
387
402
  message = error.message.dup
403
+ type = Informative
388
404
  case error
389
405
  when Molinillo::VersionConflict
390
406
  error.conflicts.each do |name, conflict|
@@ -423,12 +439,15 @@ module Pod
423
439
  found_conflicted_specs = conflicts.reject { |c| search_for(c).empty? }
424
440
  if found_conflicted_specs.empty?
425
441
  # There are no existing specification inside any of the spec repos with given requirements.
442
+ type = NoSpecFoundError
426
443
  dependencies = conflicts.count == 1 ? 'dependency' : 'dependencies'
427
444
  message << "\n\nNone of your spec sources contain a spec satisfying "\
428
445
  "the #{dependencies}: `#{conflicts.join(', ')}`." \
429
- "\n\nYou have either:" \
430
- "\n * out-of-date source repos which you can update with `pod repo update`." \
431
- "\n * mistyped the name or version." \
446
+ "\n\nYou have either:"
447
+ unless specs_updated?
448
+ message << "\n * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`."
449
+ end
450
+ message << "\n * mistyped the name or version." \
432
451
  "\n * not added the source repo that hosts the Podspec to your Podfile." \
433
452
  "\n\nNote: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by default."
434
453
 
@@ -439,7 +458,7 @@ module Pod
439
458
  end
440
459
  end
441
460
  end
442
- raise Informative, message
461
+ raise type, message
443
462
  end
444
463
 
445
464
  # Returns whether the given spec is platform-compatible with the dependency
@@ -32,12 +32,12 @@ module Pod
32
32
  end
33
33
 
34
34
  class External
35
- def all_specifications
35
+ def all_specifications(_warn_for_multiple_pod_sources)
36
36
  [specification]
37
37
  end
38
38
  end
39
39
 
40
- def all_specifications
40
+ def all_specifications(warn_for_multiple_pod_sources)
41
41
  @all_specifications ||= begin
42
42
  sources_by_version = {}
43
43
  versions_by_source.each do |source, versions|
@@ -45,13 +45,15 @@ module Pod
45
45
  sources_by_version
46
46
  end
47
47
 
48
- duplicate_versions = sources_by_version.select { |_version, sources| sources.count > 1 }
48
+ if warn_for_multiple_pod_sources
49
+ duplicate_versions = sources_by_version.select { |_version, sources| sources.count > 1 }
49
50
 
50
- duplicate_versions.each do |version, sources|
51
- UI.warn "Found multiple specifications for `#{name} (#{version})`:\n" +
52
- sources.
53
- map { |s| s.specification_path(name, version) }.
54
- map { |v| "- #{v}" }.join("\n")
51
+ duplicate_versions.each do |version, sources|
52
+ UI.warn "Found multiple specifications for `#{name} (#{version})`:\n" +
53
+ sources.
54
+ map { |s| s.specification_path(name, version) }.
55
+ map { |v| "- #{v}" }.join("\n")
56
+ end
55
57
  end
56
58
 
57
59
  versions_by_source.flat_map do |source, versions|
@@ -12,13 +12,9 @@ module Pod
12
12
  @specs_by_name = {}
13
13
  spec_files = Pathname.glob(root + '{,*}.podspec{,.json}')
14
14
  spec_files.sort_by { |p| -p.to_path.split(File::SEPARATOR).size }.each do |file|
15
- begin
16
- spec = Specification.from_file(file)
17
- spec.validate_cocoapods_version
18
- @specs_by_name[spec.name] = spec
19
- rescue => e
20
- UI.warn "Unable to load a podspec from `#{file.basename}`, skipping:\n\n#{e}"
21
- end
15
+ spec = Specification.from_file(file)
16
+ spec.validate_cocoapods_version
17
+ @specs_by_name[spec.name] = spec
22
18
  end
23
19
  @specs_by_name
24
20
  end
@@ -104,7 +104,7 @@ module Pod
104
104
 
105
105
  def update_git_repo(show_output = false)
106
106
  Config.instance.with_changes(:verbose => show_output) do
107
- git!(%W(-C #{repo} fetch origin))
107
+ git!(%W(-C #{repo} fetch origin #{show_output ? '--progress' : ''}))
108
108
  current_branch = git!(%W(-C #{repo} rev-parse --abbrev-ref HEAD)).strip
109
109
  git!(%W(-C #{repo} reset --hard origin/#{current_branch}))
110
110
  end
@@ -9,7 +9,7 @@ module Pod
9
9
 
10
10
  # Product types where the product's frameworks must be embedded in a host target
11
11
  #
12
- EMBED_FRAMEWORKS_IN_HOST_TARGET_TYPES = [:app_extension, :framework, :messages_extension, :watch_extension, :xpc_service].freeze
12
+ EMBED_FRAMEWORKS_IN_HOST_TARGET_TYPES = [:app_extension, :framework, :static_library, :messages_extension, :watch_extension, :xpc_service].freeze
13
13
 
14
14
  # Initialize a new instance
15
15
  #
@@ -27,6 +27,18 @@ module Pod
27
27
  @xcconfigs = {}
28
28
  end
29
29
 
30
+ # @return [Boolean] True if the user_target refers to a
31
+ # library (framework, static or dynamic lib).
32
+ #
33
+ def library?
34
+ # Without a user_project, we can't say for sure
35
+ # that this is a library
36
+ return false if user_project.nil?
37
+ symbol_types = user_targets.map(&:symbol_type).uniq
38
+ raise ArgumentError, "Expected single kind of user_target for #{name}. Found #{symbol_types.join(', ')}." unless symbol_types.count == 1
39
+ [:framework, :dynamic_library, :static_library].include? symbol_types.first
40
+ end
41
+
30
42
  # @return [Boolean] True if the user_target's pods are
31
43
  # for an extension and must be embedded in a host,
32
44
  # target, otherwise false.
@@ -428,7 +428,8 @@ module Pod
428
428
  add_xctest(app_target) if @installer.pod_targets.any? { |pt| pt.spec_consumers.any? { |c| c.frameworks.include?('XCTest') } }
429
429
  app_project.save
430
430
  Xcodeproj::XCScheme.share_scheme(app_project.path, 'App')
431
- Xcodeproj::XCScheme.share_scheme(@installer.pods_project.path, pod_target.label)
431
+ # Share the pods xcscheme only if it exists. For pre-built vendored pods there is no xcscheme generated.
432
+ Xcodeproj::XCScheme.share_scheme(@installer.pods_project.path, pod_target.label) if shares_pod_target_xcscheme?(pod_target)
432
433
  end
433
434
 
434
435
  def add_swift_version(app_target)
@@ -669,6 +670,10 @@ module Pod
669
670
  add_result(:note, *args)
670
671
  end
671
672
 
673
+ def shares_pod_target_xcscheme?(pod_target)
674
+ Pathname.new(@installer.pods_project.path + pod_target.label).exist?
675
+ end
676
+
672
677
  def add_result(type, attribute_name, message, public_only = false)
673
678
  result = results.find do |r|
674
679
  r.type == type && r.attribute_name && r.message == message && r.public_only? == public_only
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.2.1.beta.1
4
+ version: 1.2.1.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: 2017-03-08 00:00:00.000000000 Z
14
+ date: 2017-04-05 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.2.1.beta.1
22
+ version: 1.2.1.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.2.1.beta.1
29
+ version: 1.2.1.rc.1
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: claide
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -207,7 +207,7 @@ dependencies:
207
207
  requirements:
208
208
  - - ">="
209
209
  - !ruby/object:Gem::Version
210
- version: 1.4.1
210
+ version: 1.4.3
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.4.1
220
+ version: 1.4.3
221
221
  - - "<"
222
222
  - !ruby/object:Gem::Version
223
223
  version: '2.0'
@@ -317,14 +317,14 @@ dependencies:
317
317
  requirements:
318
318
  - - "~>"
319
319
  - !ruby/object:Gem::Version
320
- version: 0.2.5
320
+ version: '1.1'
321
321
  type: :runtime
322
322
  prerelease: false
323
323
  version_requirements: !ruby/object:Gem::Requirement
324
324
  requirements:
325
325
  - - "~>"
326
326
  - !ruby/object:Gem::Version
327
- version: 0.2.5
327
+ version: '1.1'
328
328
  - !ruby/object:Gem::Dependency
329
329
  name: bacon
330
330
  requirement: !ruby/object:Gem::Requirement