class Bundler::Resolver
def solve_versions(root:, logger:)
def solve_versions(root:, logger:) solver = PubGrub::VersionSolver.new(source: self, root: root, logger: logger) result = solver.solve result.map {|package, version| version.to_specs(package) }.flatten.uniq rescue PubGrub::SolveFailure => e incompatibility = e.incompatibility names_to_unlock, names_to_allow_prereleases_for, extended_explanation = find_names_to_relax(incompatibility) names_to_relax = names_to_unlock + names_to_allow_prereleases_for if names_to_relax.any? if names_to_unlock.any? Bundler.ui.debug "Found conflicts with locked dependencies. Will retry with #{names_to_unlock.join(", ")} unlocked...", true @base.unlock_names(names_to_unlock) end if names_to_allow_prereleases_for.any? Bundler.ui.debug "Found conflicts with dependencies with prereleases. Will retrying considering prereleases for #{names_to_allow_prereleases_for.join(", ")}...", true @base.include_prereleases(names_to_allow_prereleases_for) end root, logger = setup_solver Bundler.ui.debug "Retrying resolution...", true retry end explanation = e.message if extended_explanation explanation << "\n\n" explanation << extended_explanation end raise SolveFailure.new(explanation) end