diff options
Diffstat (limited to 'lib/rubygems/resolver.rb')
-rw-r--r-- | lib/rubygems/resolver.rb | 104 |
1 files changed, 49 insertions, 55 deletions
diff --git a/lib/rubygems/resolver.rb b/lib/rubygems/resolver.rb index 51a11fed47..115c716b6b 100644 --- a/lib/rubygems/resolver.rb +++ b/lib/rubygems/resolver.rb @@ -1,7 +1,8 @@ # frozen_string_literal: true -require_relative 'dependency' -require_relative 'exceptions' -require_relative 'util/list' + +require_relative "dependency" +require_relative "exceptions" +require_relative "util/list" ## # Given a set of Gem::Dependency objects as +needed+ and a way to query the @@ -10,14 +11,14 @@ require_relative 'util/list' # all the requirements. class Gem::Resolver - require_relative 'resolver/molinillo' + require_relative "vendored_molinillo" ## # If the DEBUG_RESOLVER environment variable is set then debugging mode is # enabled for the resolver. This will display information about the state # of the resolver while a set of dependencies is being resolved. - DEBUG_RESOLVER = !ENV['DEBUG_RESOLVER'].nil? + DEBUG_RESOLVER = !ENV["DEBUG_RESOLVER"].nil? ## # Set to true if all development dependencies should be considered. @@ -37,8 +38,6 @@ class Gem::Resolver ## # List of dependencies that could not be found in the configured sources. - attr_reader :missing - attr_reader :stats ## @@ -48,8 +47,7 @@ class Gem::Resolver attr_accessor :skip_gems ## - # When a missing dependency, don't stop. Just go on and record what was - # missing. + # attr_accessor :soft_missing @@ -74,7 +72,7 @@ class Gem::Resolver case sets.length when 0 then - raise ArgumentError, 'one set in the composition must be non-nil' + raise ArgumentError, "one set in the composition must be non-nil" when 1 then sets.first else @@ -105,7 +103,6 @@ class Gem::Resolver @development = false @development_shallow = false @ignore_dependencies = false - @missing = [] @skip_gems = {} @soft_missing = false @stats = Gem::Resolver::Stats.new @@ -114,7 +111,7 @@ class Gem::Resolver def explain(stage, *data) # :nodoc: return unless DEBUG_RESOLVER - d = data.map {|x| x.pretty_inspect }.join(", ") + d = data.map(&:pretty_inspect).join(", ") $stderr.printf "%10s %s\n", stage.to_s.upcase, d end @@ -124,7 +121,7 @@ class Gem::Resolver data = yield $stderr.printf "%10s (%d entries)\n", stage.to_s.upcase, data.size unless data.empty? - require 'pp' + require "pp" PP.pp data, $stderr end end @@ -144,7 +141,7 @@ class Gem::Resolver activation_request = Gem::Resolver::ActivationRequest.new spec, dep, possible - return spec, activation_request + [spec, activation_request] end def requests(s, act, reqs=[]) # :nodoc: @@ -153,10 +150,10 @@ class Gem::Resolver s.fetch_development_dependencies if @development s.dependencies.reverse_each do |d| - next if d.type == :development and not @development - next if d.type == :development and @development_shallow and + next if d.type == :development && !@development + next if d.type == :development && @development_shallow && act.development? - next if d.type == :development and @development_shallow and + next if d.type == :development && @development_shallow && act.parent reqs << Gem::Resolver::DependencyRequest.new(d, act) @@ -170,29 +167,28 @@ class Gem::Resolver reqs end - include Molinillo::UI + include Gem::Molinillo::UI def output - @output ||= debug? ? $stdout : File.open(IO::NULL, 'w') + @output ||= debug? ? $stdout : File.open(IO::NULL, "w") end def debug? DEBUG_RESOLVER end - include Molinillo::SpecificationProvider + include Gem::Molinillo::SpecificationProvider ## # Proceed with resolution! Returns an array of ActivationRequest objects. def resolve - locking_dg = Molinillo::DependencyGraph.new - Molinillo::Resolver.new(self, self).resolve(@needed.map {|d| DependencyRequest.new d, nil }, locking_dg).tsort.map(&:payload).compact - rescue Molinillo::VersionConflict => e + Gem::Molinillo::Resolver.new(self, self).resolve(@needed.map {|d| DependencyRequest.new d, nil }).tsort.map(&:payload).compact + rescue Gem::Molinillo::VersionConflict => e conflict = e.conflicts.values.first raise Gem::DependencyResolutionError, Conflict.new(conflict.requirement_trees.first.first, conflict.existing, conflict.requirement) ensure - @output.close if defined?(@output) and !debug? + @output.close if defined?(@output) && !debug? end ## @@ -212,7 +208,7 @@ class Gem::Resolver matching_platform = select_local_platforms all - return matching_platform, all + [matching_platform, all] end ## @@ -227,7 +223,6 @@ class Gem::Resolver def search_for(dependency) possibles, all = find_possible(dependency) if !@soft_missing && possibles.empty? - @missing << dependency exc = Gem::UnsatisfiableDependencyError.new dependency, all exc.errors = @set.errors raise exc @@ -246,7 +241,7 @@ class Gem::Resolver sources.each do |source| groups[source]. - sort_by {|spec| [spec.version, Gem::Platform.local =~ spec.platform ? 1 : 0] }. + sort_by {|spec| [spec.version, spec.platform =~ Gem::Platform.local ? 1 : 0] }. # rubocop:disable Performance/RegexpMatch map {|spec| ActivationRequest.new spec, dependency }. each {|activation_request| activation_requests << activation_request } end @@ -274,7 +269,6 @@ class Gem::Resolver end def allow_missing?(dependency) - @missing << dependency @soft_missing end @@ -318,30 +312,30 @@ class Gem::Resolver private :amount_constrained end -require_relative 'resolver/activation_request' -require_relative 'resolver/conflict' -require_relative 'resolver/dependency_request' -require_relative 'resolver/requirement_list' -require_relative 'resolver/stats' - -require_relative 'resolver/set' -require_relative 'resolver/api_set' -require_relative 'resolver/composed_set' -require_relative 'resolver/best_set' -require_relative 'resolver/current_set' -require_relative 'resolver/git_set' -require_relative 'resolver/index_set' -require_relative 'resolver/installer_set' -require_relative 'resolver/lock_set' -require_relative 'resolver/vendor_set' -require_relative 'resolver/source_set' - -require_relative 'resolver/specification' -require_relative 'resolver/spec_specification' -require_relative 'resolver/api_specification' -require_relative 'resolver/git_specification' -require_relative 'resolver/index_specification' -require_relative 'resolver/installed_specification' -require_relative 'resolver/local_specification' -require_relative 'resolver/lock_specification' -require_relative 'resolver/vendor_specification' +require_relative "resolver/activation_request" +require_relative "resolver/conflict" +require_relative "resolver/dependency_request" +require_relative "resolver/requirement_list" +require_relative "resolver/stats" + +require_relative "resolver/set" +require_relative "resolver/api_set" +require_relative "resolver/composed_set" +require_relative "resolver/best_set" +require_relative "resolver/current_set" +require_relative "resolver/git_set" +require_relative "resolver/index_set" +require_relative "resolver/installer_set" +require_relative "resolver/lock_set" +require_relative "resolver/vendor_set" +require_relative "resolver/source_set" + +require_relative "resolver/specification" +require_relative "resolver/spec_specification" +require_relative "resolver/api_specification" +require_relative "resolver/git_specification" +require_relative "resolver/index_specification" +require_relative "resolver/installed_specification" +require_relative "resolver/local_specification" +require_relative "resolver/lock_specification" +require_relative "resolver/vendor_specification" |