lib/bundler/lazy_specification.rb in bundler-1.14.4 vs lib/bundler/lazy_specification.rb in bundler-1.14.5
- old
+ new
@@ -1,8 +1,7 @@
# frozen_string_literal: true
require "uri"
-require "rubygems/spec_fetcher"
require "bundler/match_platform"
module Bundler
class LazySpecification
Identifier = Struct.new(:name, :version, :source, :platform, :dependencies)
@@ -71,10 +70,17 @@
def __materialize__
search_object = Bundler.settings[:specific_platform] || Bundler.settings[:force_ruby_platform] ? self : Dependency.new(name, version)
@specification = if source.is_a?(Source::Gemspec) && source.gemspec.name == name
source.gemspec.tap {|s| s.source = source }
else
- source.specs.search(search_object).last
+ search = source.specs.search(search_object).last
+ if search && search.platform != platform && !search.runtime_dependencies.-(dependencies.reject {|d| d.type == :development }).empty?
+ Bundler.ui.warn "Unable to use the platform-specific (#{search.platform}) version of #{name} (#{version}) " \
+ "because it has different dependencies from the #{platform} version. " \
+ "To use the platform-specific version of the gem, run `bundle config specific_platform true` and install again."
+ search = source.specs.search(self).last
+ end
+ search
end
end
def respond_to?(*args)
super || @specification ? @specification.respond_to?(*args) : nil