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