diff options
-rw-r--r-- | lib/bundler/spec_set.rb | 42 |
1 files changed, 35 insertions, 7 deletions
@@ -37,7 +37,7 @@ module Bundler specs_for_dep.first.dependencies.each do |d| next if d.type == :development - incomplete = true if d.name != "bundler" && lookup[d.name].empty? deps << [d, dep[1]] end else @@ -45,7 +45,7 @@ module Bundler end if incomplete && check - @incomplete_specs += lookup[name].any? ? lookup[name] : [LazySpecification.new(name, nil, nil)] end end @@ -64,7 +64,9 @@ module Bundler valid_platform = lookup.all? do |_, specs| spec = specs.first matching_specs = spec.source.specs.search([spec.name, spec.version]) - platform_spec = GemHelpers.select_best_platform_match(matching_specs, platform).find(&:matches_current_metadata?) if platform_spec new_specs << LazySpecification.from_spec(platform_spec) @@ -90,9 +92,20 @@ module Bundler platforms end def [](key) key = key.name if key.respond_to?(:name) - lookup[key].reverse end def []=(key, value) @@ -167,7 +180,7 @@ module Bundler end def what_required(spec) - unless req = find {|s| s.dependencies.any? {|d| d.type == :runtime && d.name == spec.name } } return [spec] end what_required(req) << spec @@ -193,8 +206,16 @@ module Bundler sorted.each(&b) end private def sorted rake = @specs.find {|s| s.name == "rake" } begin @@ -213,8 +234,9 @@ module Bundler def lookup @lookup ||= begin - lookup = Hash.new {|h, k| h[k] = [] } @specs.each do |s| lookup[s.name] << s end lookup @@ -228,6 +250,8 @@ module Bundler def specs_for_dependency(dep, platform) specs_for_name = lookup[dep.name] matching_specs = if dep.force_ruby_platform GemHelpers.force_ruby_platform(specs_for_name) else @@ -240,7 +264,11 @@ module Bundler def tsort_each_child(s) s.dependencies.sort_by(&:name).each do |d| next if d.type == :development - lookup[d.name].each {|s2| yield s2 } end end end |