Missing libraries now report corresponding missing formulae
This commit is contained in:
parent
8634f19107
commit
9642485e73
@ -12,7 +12,7 @@ class LinkageChecker
|
|||||||
@formula = formula || resolve_formula(keg)
|
@formula = formula || resolve_formula(keg)
|
||||||
@brewed_dylibs = Hash.new { |h, k| h[k] = Set.new }
|
@brewed_dylibs = Hash.new { |h, k| h[k] = Set.new }
|
||||||
@system_dylibs = Set.new
|
@system_dylibs = Set.new
|
||||||
@broken_dylibs = Set.new
|
@broken_dylibs = Hash.new { |h, k| h[k] = Set.new }
|
||||||
@variable_dylibs = Set.new
|
@variable_dylibs = Set.new
|
||||||
@indirect_deps = []
|
@indirect_deps = []
|
||||||
@undeclared_deps = []
|
@undeclared_deps = []
|
||||||
@ -21,6 +21,10 @@ class LinkageChecker
|
|||||||
check_dylibs
|
check_dylibs
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def dylib_to_dep(dylib)
|
||||||
|
dylib.sub("#{HOMEBREW_PREFIX}/opt/", "").sub("#{HOMEBREW_CELLAR}/", "").split("/")[0]
|
||||||
|
end
|
||||||
|
|
||||||
def check_dylibs
|
def check_dylibs
|
||||||
checked_dylibs = Set.new
|
checked_dylibs = Set.new
|
||||||
@keg.find do |file|
|
@keg.find do |file|
|
||||||
@ -41,7 +45,7 @@ class LinkageChecker
|
|||||||
@system_dylibs << dylib
|
@system_dylibs << dylib
|
||||||
rescue Errno::ENOENT
|
rescue Errno::ENOENT
|
||||||
next if harmless_broken_link?(dylib)
|
next if harmless_broken_link?(dylib)
|
||||||
@broken_dylibs << dylib
|
@broken_dylibs[dylib_to_dep(dylib)] << dylib
|
||||||
else
|
else
|
||||||
tap = Tab.for_keg(owner).tap
|
tap = Tab.for_keg(owner).tap
|
||||||
f = if tap.nil? || tap.core_tap?
|
f = if tap.nil? || tap.core_tap?
|
||||||
@ -86,12 +90,14 @@ class LinkageChecker
|
|||||||
next true if Formula[name].bin.directory?
|
next true if Formula[name].bin.directory?
|
||||||
@brewed_dylibs.keys.map { |x| x.split("/").last }.include?(name)
|
@brewed_dylibs.keys.map { |x| x.split("/").last }.include?(name)
|
||||||
end
|
end
|
||||||
missing = []
|
missing = Set.new
|
||||||
@broken_dylibs.each do |str|
|
@broken_dylibs.each do |key, value|
|
||||||
|
value.each do |str|
|
||||||
next unless str.start_with?("#{HOMEBREW_PREFIX}/opt", HOMEBREW_CELLAR)
|
next unless str.start_with?("#{HOMEBREW_PREFIX}/opt", HOMEBREW_CELLAR)
|
||||||
missing << str.sub("#{HOMEBREW_PREFIX}/opt/", "").sub("#{HOMEBREW_CELLAR}/", "").split("/")[0]
|
missing << dylib_to_dep(str)
|
||||||
end
|
end
|
||||||
unnecessary_deps -= missing
|
end
|
||||||
|
unnecessary_deps -= missing.to_a
|
||||||
[indirect_deps, undeclared_deps, unnecessary_deps]
|
[indirect_deps, undeclared_deps, unnecessary_deps]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user