class Bundler::Resolver
def setup_solver
def setup_solver root = Resolver::Root.new(name_for_explicit_dependency_source) root_version = Resolver::Candidate.new(0) @all_specs = Hash.new do |specs, name| source = source_for(name) matches = source.specs.search(name) # Don't bother to check for circular deps when no dependency API are # available, since it's too slow to be usable. That edge case won't work # but resolution other than that should work fine and reasonably fast. if source.respond_to?(:dependency_api_available?) && source.dependency_api_available? matches = filter_invalid_self_dependencies(matches, name) end specs[name] = matches.sort_by {|s| [s.version, s.platform.to_s] } end @all_versions = Hash.new do |candidates, package| candidates[package] = all_versions_for(package) end @sorted_versions = Hash.new do |candidates, package| candidates[package] = filtered_versions_for(package).sort end @sorted_versions[root] = [root_version] root_dependencies = prepare_dependencies(@requirements, @packages) @cached_dependencies = Hash.new do |dependencies, package| dependencies[package] = Hash.new do |versions, version| versions[version] = to_dependency_hash(version.dependencies.reject {|d| d.name == package.name }, @packages) end end @cached_dependencies[root] = { root_version => root_dependencies } logger = Bundler::UI::Shell.new logger.level = debug? ? "debug" : "warn" [root, logger] end