Fix formula/linkage_checker infinite recursion

This commit is contained in:
Alyssa Ross 2018-03-12 09:20:24 +00:00
parent af682d2d63
commit 0a2f0ab456
No known key found for this signature in database
GPG Key ID: 6CF064D149E3ABDB
2 changed files with 22 additions and 21 deletions

View File

@ -1491,6 +1491,26 @@ class Formula
declared_runtime_dependencies | undeclared_runtime_dependencies
end
def declared_runtime_dependencies
recursive_dependencies do |_, dependency|
Dependency.prune if dependency.build?
Dependency.prune if !dependency.required? && build.without?(dependency)
end
end
def undeclared_runtime_dependencies
if optlinked?
keg = Keg.new(opt_prefix)
elsif prefix.directory?
keg = Keg.new(prefix)
else
return []
end
linkage_checker = LinkageChecker.new(keg, self)
linkage_checker.undeclared_deps.map { |n| Dependency.new(n) }
end
# Returns a list of formulae depended on by this formula that aren't
# installed
def missing_dependencies(hide: nil)
@ -1833,26 +1853,6 @@ class Formula
private
def declared_runtime_dependencies
recursive_dependencies do |_, dependency|
Dependency.prune if dependency.build?
Dependency.prune if !dependency.required? && build.without?(dependency)
end
end
def undeclared_runtime_dependencies
if optlinked?
keg = Keg.new(opt_prefix)
elsif prefix.directory?
keg = Keg.new(prefix)
else
return []
end
linkage_checker = LinkageChecker.new(keg, self)
linkage_checker.undeclared_deps.map { |n| Dependency.new(n) }
end
# Returns the prefix for a given formula version number.
# @private
def versioned_prefix(v)

View File

@ -63,7 +63,8 @@ class LinkageChecker
formula.build.without?(dep)
end
declared_deps = formula.deps.reject { |dep| filter_out.call(dep) }.map(&:name)
recursive_deps = keg.to_formula.runtime_dependencies.map { |dep| dep.to_formula.full_name }
recursive_deps = keg.to_formula.declared_runtime_dependencies
.map { |dep| dep.to_formula.full_name }
declared_dep_names = declared_deps.map { |dep| dep.split("/").last }
indirect_deps = []
undeclared_deps = []