lib/rubygems/dependency_installer.rb in slimgems-1.3.9.3 vs lib/rubygems/dependency_installer.rb in slimgems-1.3.9.4

- old
+ new

@@ -147,15 +147,30 @@ deps.each do |dep| results = find_gems_with_sources(dep).reverse results.reject! do |dep_spec,| - to_do.push dep_spec + dep_met = false + installed_dep_spec = nil - @source_index.any? do |_, installed_spec| - dep.name == installed_spec.name and - dep.requirement.satisfied_by? installed_spec.version + @source_index.each do |_, installed_spec| + if (dep.name == installed_spec.name) && (dep.requirement.satisfied_by?(installed_spec.version)) + installed_dep_spec = installed_spec + dep_met = true + break + end end + + if !dep_met + to_do.push dep_spec + else + # Since we resolve dependencies transitively, if this installed + # gem is missing some dependencies, go ahead and try to do it, + # but for this exact version. + to_do.push installed_dep_spec + end + + dep_met end results.each do |dep_spec, source_uri| next if seen[dep_spec.name] @specs_and_sources << [dep_spec, source_uri]