Skip to content
This repository has been archived by the owner on Apr 14, 2021. It is now read-only.

Cache gems_size method result #1592

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions lib/bundler/resolver.rb
Original file line number Diff line number Diff line change
@@ -156,6 +156,7 @@ def successify(activated)

def start(reqs)
activated = {}
@gems_size = Hash[reqs.map { |r| [r, gems_size(r)] }]

resolve(reqs, activated)
end
@@ -176,7 +177,7 @@ def resolve(reqs, activated)
[ activated[a.name] ? 0 : 1,
a.requirement.prerelease? ? 0 : 1,
@errors[a.name] ? 0 : 1,
activated[a.name] ? 0 : gems_size(a) ]
activated[a.name] ? 0 : @gems_size[a] ]
end

debug { "Activated:\n" + activated.values.map {|a| " #{a}" }.join("\n") }
@@ -210,7 +211,13 @@ def resolve(reqs, activated)
# I have no idea if this is the right way to do it, but let's see if it works
# The current requirement might activate some other platforms, so let's try
# adding those requirements here.
reqs.concat existing.activate_platform(current.__platform)
dependencies = existing.activate_platform(current.__platform)
reqs.concat dependencies

dependencies.each do |dep|
next if dep.type == :development
@gems_size[dep] = gems_size(dep)
end

resolve(reqs, activated)
else
@@ -325,6 +332,7 @@ def resolve_requirement(spec_group, requirement, reqs, activated)
debug { " * #{dep.name} (#{dep.requirement})" }
dep.required_by.replace(requirement.required_by)
dep.required_by << requirement
@gems_size[dep] = gems_size(dep)
reqs << dep
end