Changed cache usage behavior.
1. Running `brew linkage some_package` does not set the cache. 2. Running `brew linkage --cached some_package` when `DatabaseCache.empty?` returns `true` should build the cache. 3. Running `brew linkage --cached some_package` when `DatabaseCache.empty?` returns `false` should use the cache.
This commit is contained in:
parent
360a301503
commit
010207b982
@ -25,7 +25,7 @@ module Homebrew
|
||||
ohai "Checking #{keg.name} linkage" if ARGV.kegs.size > 1
|
||||
|
||||
use_cache = ARGV.include?("--cached") || ENV["HOMEBREW_LINKAGE_CACHE"]
|
||||
result = LinkageChecker.new(keg, database_cache.db, use_cache)
|
||||
result = LinkageChecker.new(keg, database_cache, use_cache)
|
||||
|
||||
if ARGV.include?("--test")
|
||||
result.display_test_output
|
||||
|
@ -68,7 +68,7 @@ module FormulaCellarChecks
|
||||
|
||||
DatabaseCache.use(:linkage) do |database_cache|
|
||||
use_cache = !ENV["HOMEBREW_LINKAGE_CACHE"].nil?
|
||||
checker = LinkageChecker.new(keg, database_cache.db, use_cache, formula)
|
||||
checker = LinkageChecker.new(keg, database_cache, use_cache, formula)
|
||||
|
||||
next unless checker.broken_library_linkage?
|
||||
output = <<~EOS
|
||||
|
@ -1529,7 +1529,7 @@ class Formula
|
||||
|
||||
undeclared_deps = DatabaseCache.use(:linkage) do |database_cache|
|
||||
use_cache = !ENV["HOMEBREW_LINKAGE_CACHE"].nil?
|
||||
linkage_checker = LinkageChecker.new(keg, database_cache.db, use_cache, self)
|
||||
linkage_checker = LinkageChecker.new(keg, database_cache, use_cache, self)
|
||||
linkage_checker.undeclared_deps.map { |n| Dependency.new(n) }
|
||||
end
|
||||
|
||||
|
@ -613,7 +613,7 @@ class FormulaInstaller
|
||||
# Updates the cache for a particular formula after doing an install
|
||||
DatabaseCache.use(:linkage) do |database_cache|
|
||||
break if database_cache.empty?
|
||||
LinkageChecker.new(keg, database_cache.db, false, formula)
|
||||
LinkageChecker.new(keg, database_cache, false, formula)
|
||||
end
|
||||
|
||||
# let's reset Utils.git_available? if we just installed git
|
||||
|
@ -3,11 +3,16 @@ require "formula"
|
||||
require "linkage_cache_store"
|
||||
|
||||
class LinkageChecker
|
||||
def initialize(keg, db, use_cache = false, formula = nil)
|
||||
def initialize(keg, database_cache, use_cache = false, formula = nil)
|
||||
@keg = keg
|
||||
@formula = formula || resolve_formula(keg)
|
||||
@store = LinkageStore.new(keg.name, db)
|
||||
flush_cache_and_check_dylibs unless use_cache
|
||||
|
||||
if use_cache
|
||||
@store = LinkageStore.new(keg.name, database_cache.db)
|
||||
flush_cache_and_check_dylibs unless database_cache.db.key?(keg.name)
|
||||
else
|
||||
flush_cache_and_check_dylibs
|
||||
end
|
||||
end
|
||||
|
||||
def display_normal_output
|
||||
@ -45,7 +50,7 @@ class LinkageChecker
|
||||
end
|
||||
|
||||
def undeclared_deps
|
||||
@undeclared_deps ||= store.fetch_type(:undeclared_deps)
|
||||
@undeclared_deps ||= store.nil? ? [] : store.fetch_type(:undeclared_deps)
|
||||
end
|
||||
|
||||
private
|
||||
@ -55,37 +60,37 @@ class LinkageChecker
|
||||
# 'Hash-type' cache values
|
||||
|
||||
def brewed_dylibs
|
||||
@brewed_dylibs ||= store.fetch_type(:brewed_dylibs)
|
||||
@brewed_dylibs ||= store.nil? ? {} : store.fetch_type(:brewed_dylibs)
|
||||
end
|
||||
|
||||
def reverse_links
|
||||
@reverse_links ||= store.fetch_type(:reverse_links)
|
||||
@reverse_links ||= store.nil? ? {} : store.fetch_type(:reverse_links)
|
||||
end
|
||||
|
||||
def broken_deps
|
||||
@broken_deps ||= store.fetch_type(:broken_deps)
|
||||
@broken_deps ||= store.nil? ? {} : store.fetch_type(:broken_deps)
|
||||
end
|
||||
|
||||
# 'Path-type' cached values
|
||||
|
||||
def system_dylibs
|
||||
@system_dylibs ||= store.fetch_type(:system_dylibs)
|
||||
@system_dylibs ||= store.nil? ? [] : store.fetch_type(:system_dylibs)
|
||||
end
|
||||
|
||||
def broken_dylibs
|
||||
@broken_dylibs ||= store.fetch_type(:broken_dylibs)
|
||||
@broken_dylibs ||= store.nil? ? [] : store.fetch_type(:broken_dylibs)
|
||||
end
|
||||
|
||||
def variable_dylibs
|
||||
@variable_dylibs ||= store.fetch_type(:variable_dylibs)
|
||||
@variable_dylibs ||= store.nil? ? [] : store.fetch_type(:variable_dylibs)
|
||||
end
|
||||
|
||||
def indirect_deps
|
||||
@indirect_deps ||= store.fetch_type(:indirect_deps)
|
||||
@indirect_deps ||= store.nil? ? [] : store.fetch_type(:indirect_deps)
|
||||
end
|
||||
|
||||
def unnecessary_deps
|
||||
@unnecessary_deps ||= store.fetch_type(:unnecessary_deps)
|
||||
@unnecessary_deps ||= store.nil? ? [] : store.fetch_type(:unnecessary_deps)
|
||||
end
|
||||
|
||||
def dylib_to_dep(dylib)
|
||||
@ -235,9 +240,9 @@ class LinkageChecker
|
||||
opoo "Formula unavailable: #{keg.name}"
|
||||
end
|
||||
|
||||
# Helper function to reset dylib values when building cache
|
||||
# Helper function to reset dylib values
|
||||
def reset_dylibs!
|
||||
store.flush_cache!
|
||||
store&.flush_cache!
|
||||
@system_dylibs = Set.new
|
||||
@broken_dylibs = Set.new
|
||||
@variable_dylibs = Set.new
|
||||
@ -251,7 +256,7 @@ class LinkageChecker
|
||||
|
||||
# Updates data store with package path values
|
||||
def store_dylibs!
|
||||
store.update!(
|
||||
store&.update!(
|
||||
system_dylibs: system_dylibs,
|
||||
variable_dylibs: variable_dylibs,
|
||||
broken_dylibs: broken_dylibs,
|
||||
|
Loading…
x
Reference in New Issue
Block a user