linkage_checker: handle missing formulae.

This commit is contained in:
Mike McQuaid 2018-04-25 10:26:02 +01:00
parent 3c0443123f
commit c167614797

View File

@ -62,10 +62,17 @@ class LinkageChecker
next false unless dep.optional? || dep.recommended? next false unless dep.optional? || dep.recommended?
formula.build.without?(dep) formula.build.without?(dep)
end end
declared_deps = formula.deps.reject { |dep| filter_out.call(dep) }.map(&:name) declared_deps = formula.deps.reject { |dep| filter_out.call(dep) }.map(&:name)
runtime_deps = keg.to_formula.declared_runtime_dependencies
recursive_deps = runtime_deps.map { |dep| dep.to_formula.name }
declared_dep_names = declared_deps.map { |dep| dep.split("/").last } declared_dep_names = declared_deps.map { |dep| dep.split("/").last }
recursive_deps = formula.declared_runtime_dependencies.map do |dep|
begin
dep.to_formula.name
rescue FormulaUnavailableError
nil
end
end.compact
indirect_deps = [] indirect_deps = []
undeclared_deps = [] undeclared_deps = []
@brewed_dylibs.each_key do |full_name| @brewed_dylibs.each_key do |full_name|
@ -77,13 +84,16 @@ class LinkageChecker
undeclared_deps << full_name undeclared_deps << full_name
end end
end end
sort_by_formula_full_name!(indirect_deps) sort_by_formula_full_name!(indirect_deps)
sort_by_formula_full_name!(undeclared_deps) sort_by_formula_full_name!(undeclared_deps)
unnecessary_deps = declared_dep_names.reject do |full_name| unnecessary_deps = declared_dep_names.reject do |full_name|
name = full_name.split("/").last name = full_name.split("/").last
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
[indirect_deps, undeclared_deps, unnecessary_deps] [indirect_deps, undeclared_deps, unnecessary_deps]
end end