Revert "keg: fallback to missing_deps if deps not in tab"
This reverts commit da1caba17c624f03fa8e6fbe59683f57fb7ac17a.
This commit is contained in:
parent
ae3f53a1ec
commit
452691528d
@ -1,7 +1,6 @@
|
|||||||
require "extend/pathname"
|
require "extend/pathname"
|
||||||
require "keg_relocate"
|
require "keg_relocate"
|
||||||
require "formula_lock"
|
require "formula_lock"
|
||||||
require "diagnostic"
|
|
||||||
require "ostruct"
|
require "ostruct"
|
||||||
|
|
||||||
class Keg
|
class Keg
|
||||||
@ -298,33 +297,14 @@ class Keg
|
|||||||
end
|
end
|
||||||
|
|
||||||
def installed_dependents
|
def installed_dependents
|
||||||
installed_kegs = Formula.installed.flat_map(&:installed_kegs)
|
Formula.installed.flat_map(&:installed_kegs).select do |keg|
|
||||||
installed_kegs_and_tabs = installed_kegs.map { |k| [k, Tab.for_keg(k)] }
|
Tab.for_keg(keg).runtime_dependencies.any? do |dep|
|
||||||
kegs_by_tab_deps_presence = installed_kegs_and_tabs.group_by do |_, tab|
|
|
||||||
!tab.runtime_dependencies.nil?
|
|
||||||
end
|
|
||||||
[true, false].each { |v| kegs_by_tab_deps_presence[v] ||= [] }
|
|
||||||
|
|
||||||
kegs_by_tab_deps_presence[true].select! do |_, tab|
|
|
||||||
tab.runtime_dependencies.any? do |dep|
|
|
||||||
# Resolve formula rather than directly comparing names
|
# Resolve formula rather than directly comparing names
|
||||||
# in case of conflicts between formulae from different taps.
|
# in case of conflicts between formulae from different taps.
|
||||||
dep_formula = Formulary.factory(dep["full_name"])
|
dep_formula = Formulary.factory(dep["full_name"])
|
||||||
dep_formula == to_formula && dep["version"] == version.to_s
|
dep_formula == to_formula && dep["version"] == version.to_s
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
remaining_kegs_and_tabs = kegs_by_tab_deps_presence[false]
|
|
||||||
remaining_formulae = remaining_kegs_and_tabs.map { |k, _| k.to_formula }
|
|
||||||
|
|
||||||
# Expensive if installed_dependents of multiple kegs are being checked
|
|
||||||
deps = Homebrew::Diagnostic.missing_deps(remaining_formulae, [name])
|
|
||||||
remaining_kegs_and_tabs.select! do |keg, _|
|
|
||||||
keg_deps = deps[keg.to_formula.full_name]
|
|
||||||
keg_deps && keg_deps.any?
|
|
||||||
end
|
|
||||||
|
|
||||||
kegs_by_tab_deps_presence.values.flatten(1).map { |k, _| k }
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def find(*args, &block)
|
def find(*args, &block)
|
||||||
|
|||||||
@ -339,29 +339,8 @@ class InstalledDependantsTests < LinkTests
|
|||||||
tab.write
|
tab.write
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_unknown_dependencies
|
|
||||||
dependencies nil
|
|
||||||
|
|
||||||
bar = formula "bar" do
|
|
||||||
url "bar-1.0"
|
|
||||||
depends_on "foo"
|
|
||||||
end
|
|
||||||
stub_formula_loader bar
|
|
||||||
|
|
||||||
assert_equal [@dependent], @keg.installed_dependents
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_no_dependencies
|
def test_no_dependencies
|
||||||
dependencies []
|
dependencies []
|
||||||
|
|
||||||
# Make sure formula dependencies aren't checked when dependencies are
|
|
||||||
# recorded in the tab.
|
|
||||||
bar = formula "bar" do
|
|
||||||
url "bar-1.0"
|
|
||||||
depends_on "foo"
|
|
||||||
end
|
|
||||||
stub_formula_loader bar
|
|
||||||
|
|
||||||
assert_empty @keg.installed_dependents
|
assert_empty @keg.installed_dependents
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user