Use cache if HOMEBREW_LINKAGE_CACHE exists in formula_cellar_checks and formula. Make functions private in LinkageChecker.

This commit is contained in:
Andrew R. McBurney 2018-05-06 15:55:33 -04:00
parent 494bb624cc
commit d3120c0206
3 changed files with 44 additions and 42 deletions

View File

@ -67,7 +67,8 @@ module FormulaCellarChecks
keg = Keg.new(formula.prefix)
DatabaseCache.new(:linkage) do |database_cache|
checker = LinkageChecker.new(keg, database_cache, false, formula)
use_cache = !ENV["HOMEBREW_LINKAGE_CACHE"].nil?
checker = LinkageChecker.new(keg, database_cache, use_cache, formula)
next unless checker.broken_library_linkage?
output = <<~EOS

View File

@ -1528,7 +1528,8 @@ class Formula
return [] unless keg
DatabaseCache.new(:linkage) do |database_cache|
linkage_checker = LinkageChecker.new(keg, database_cache, false, self)
use_cache = !ENV["HOMEBREW_LINKAGE_CACHE"].nil?
linkage_checker = LinkageChecker.new(keg, database_cache, use_cache, self)
break linkage_checker.undeclared_deps.map { |n| Dependency.new(n) }
end
end

View File

@ -10,46 +10,6 @@ class LinkageChecker
flush_cache_and_check_dylibs unless use_cache
end
# 'Hash-type' cache values
def brewed_dylibs
@brewed_dylibs ||= store.fetch_type(:brewed_dylibs)
end
def reverse_links
@reverse_links ||= store.fetch_type(:reverse_links)
end
def broken_deps
@broken_deps ||= store.fetch_type(:broken_deps)
end
# 'Path-type' cached values
def system_dylibs
@system_dylibs ||= store.fetch_type(:system_dylibs)
end
def broken_dylibs
@broken_dylibs ||= store.fetch_type(:broken_dylibs)
end
def variable_dylibs
@variable_dylibs ||= store.fetch_type(:variable_dylibs)
end
def undeclared_deps
@undeclared_deps ||= store.fetch_type(:undeclared_deps)
end
def indirect_deps
@indirect_deps ||= store.fetch_type(:indirect_deps)
end
def unnecessary_deps
@unnecessary_deps ||= store.fetch_type(:unnecessary_deps)
end
def display_normal_output
display_items "System libraries", system_dylibs
display_items "Homebrew libraries", brewed_dylibs
@ -84,10 +44,50 @@ class LinkageChecker
!@broken_dylibs.empty? || !@broken_deps.empty?
end
def undeclared_deps
@undeclared_deps ||= store.fetch_type(:undeclared_deps)
end
private
attr_reader :keg, :formula, :store
# 'Hash-type' cache values
def brewed_dylibs
@brewed_dylibs ||= store.fetch_type(:brewed_dylibs)
end
def reverse_links
@reverse_links ||= store.fetch_type(:reverse_links)
end
def broken_deps
@broken_deps ||= store.fetch_type(:broken_deps)
end
# 'Path-type' cached values
def system_dylibs
@system_dylibs ||= store.fetch_type(:system_dylibs)
end
def broken_dylibs
@broken_dylibs ||= store.fetch_type(:broken_dylibs)
end
def variable_dylibs
@variable_dylibs ||= store.fetch_type(:variable_dylibs)
end
def indirect_deps
@indirect_deps ||= store.fetch_type(:indirect_deps)
end
def unnecessary_deps
@unnecessary_deps ||= store.fetch_type(:unnecessary_deps)
end
def dylib_to_dep(dylib)
dylib =~ %r{#{Regexp.escape(HOMEBREW_PREFIX)}/(opt|Cellar)/([\w+-.@]+)/}
Regexp.last_match(2)