summaryrefslogtreecommitdiff
path: root/lib/bundler/resolver.rb
diff options
context:
space:
mode:
authorSamuel E. Giddins <segiddins@segiddins.me>2014-11-05 10:55:18 -0800
committerSamuel E. Giddins <segiddins@segiddins.me>2014-11-24 11:03:49 -0800
commitf64ab56dafe22fe96e4665a3c3232a147bdb52fd (patch)
tree0be4a838abf5581b36e41e8c49b4d2f6a7781fba /lib/bundler/resolver.rb
parentb788d910f29fb8ed6858fc4999d8257e2df7865d (diff)
downloadbundler-f64ab56dafe22fe96e4665a3c3232a147bdb52fd.tar.gz
[Resolver] Update Molinillo
Diffstat (limited to 'lib/bundler/resolver.rb')
-rw-r--r--lib/bundler/resolver.rb27
1 files changed, 16 insertions, 11 deletions
diff --git a/lib/bundler/resolver.rb b/lib/bundler/resolver.rb
index 96fc737326..6d304c7b7b 100644
--- a/lib/bundler/resolver.rb
+++ b/lib/bundler/resolver.rb
@@ -156,17 +156,17 @@ module Bundler
" either #{names.join(' or ')} and try again."
end
- def before_resolution
- end
- def after_resolution
- end
- def indicate_progress
- end
-
- private
+ # def before_resolution
+ # end
+ # def after_resolution
+ # end
+ # def indicate_progress
+ # end
include Molinillo::UI
+ private
+
include Molinillo::SpecificationProvider
def dependencies_for(specification)
@@ -181,6 +181,7 @@ module Bundler
# puts dependency
# puts index.search(dependency, nil)
results = index.search(dependency, @base[dependency.name])
+ locked_requirement = (vertex = @base_dg.vertex_named(dependency.name) && vertex.requirement)
if results.any?
version = results.first.version
nested = [[]]
@@ -191,7 +192,8 @@ module Bundler
end
nested.last << spec
end
- nested.map { |a| SpecGroup.new(a) }
+ groups = nested.map { |a| SpecGroup.new(a) }
+ !locked_requirement ? groups : groups.select { |sg| locked_requirement.satisfied_by? sg.version }
else
[]
end
@@ -218,11 +220,14 @@ module Bundler
def sort_dependencies(dependencies, activated, conflicts)
dependencies.sort_by do |dependency|
name = name_for(dependency)
+ search = search_for(dependency)
+ last = search.last
+ nested_dependencies = last ? last.dependencies_for_activated_platforms.count : 1
[
activated.vertex_named(name).payload ? 0 : 1,
- @prereleases_cache[dependency] ? 0 : 1,
+ @prereleases_cache[dependency.requirement] ? 0 : 1,
conflicts[name] ? 0 : 1,
- search_for(dependency).count,
+ activated.vertex_named(name).payload ? 0 : (search.count * Math.sqrt(nested_dependencies) ),
]
end
end