aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/keg.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/keg.rb')
-rw-r--r--Library/Homebrew/keg.rb15
1 files changed, 11 insertions, 4 deletions
diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb
index e2719582d..f1275e748 100644
--- a/Library/Homebrew/keg.rb
+++ b/Library/Homebrew/keg.rb
@@ -109,13 +109,20 @@ class Keg
end
keg_names = kegs.map(&:name)
- kegs_by_name = kegs.group_by(&:to_formula)
+ kegs_by_source = kegs.group_by { |k| [k.name, Tab.for_keg(k).tap] }
+
remaining_formulae.each do |dependent|
required = dependent.missing_dependencies(hide: keg_names)
- required.select! { |f| kegs_by_name.key?(f) }
- next unless required.any?
- required_kegs = required.map { |f| kegs_by_name[f].sort_by(&:version).last }
+ required_kegs = required.map do |f|
+ f_kegs = kegs_by_source[[f.name, f.tap]]
+ next unless f_kegs
+
+ f_kegs.sort_by(&:version).last
+ end
+
+ next unless required_kegs.any?
+
return required_kegs, [dependent.to_s]
end