diff --git a/Library/Homebrew/dev-cmd/linkage.rb b/Library/Homebrew/dev-cmd/linkage.rb index 391a129365..fe733e6a32 100644 --- a/Library/Homebrew/dev-cmd/linkage.rb +++ b/Library/Homebrew/dev-cmd/linkage.rb @@ -1,4 +1,4 @@ -#: * `linkage` [`--test`] [`--reverse`] [`--rebuild`] : +#: * `linkage` [`--test`] [`--reverse`] [`--cached`] : #: Checks the library links of an installed formula. #: #: Only works on installed formulae. An error is raised if it is run on @@ -10,8 +10,8 @@ #: If `--reverse` is passed, print the dylib followed by the binaries #: which link to it for each library the keg references. #: -#: If `--rebuild` is passed, flushes the `LinkageStore` cache for each -#: 'keg.name' and forces a check on the dylibs. +#: If `--cached` is passed, print the cached linkage values stored in +#: HOMEBREW_CACHE, set from a previous `brew linkage` run require "cache_store" require "linkage_checker" @@ -24,7 +24,8 @@ module Homebrew ARGV.kegs.each do |keg| ohai "Checking #{keg.name} linkage" if ARGV.kegs.size > 1 - result = LinkageChecker.new(keg, database_cache, ARGV.include?("--rebuild")) + use_cache = ARGV.include?("--cached") || ENV["HOMEBREW_LINKAGE_CACHE"] + result = LinkageChecker.new(keg, database_cache, use_cache) if ARGV.include?("--test") result.display_test_output diff --git a/Library/Homebrew/extend/os/mac/formula_cellar_checks.rb b/Library/Homebrew/extend/os/mac/formula_cellar_checks.rb index 14be2f3b7e..f7e3a16935 100644 --- a/Library/Homebrew/extend/os/mac/formula_cellar_checks.rb +++ b/Library/Homebrew/extend/os/mac/formula_cellar_checks.rb @@ -66,7 +66,7 @@ module FormulaCellarChecks return unless formula.prefix.directory? keg = Keg.new(formula.prefix) - DatabaseCache.new(:linkage) { |database_cache| LinkageChecker.new(keg, database_cache, true, formula) } + DatabaseCache.new(:linkage) { |database_cache| LinkageChecker.new(keg, database_cache, false, formula) } return unless checker.broken_dylibs? output = <<~EOS diff --git a/Library/Homebrew/linkage_checker.rb b/Library/Homebrew/linkage_checker.rb index 0cf05441ea..a21d3a7cd5 100644 --- a/Library/Homebrew/linkage_checker.rb +++ b/Library/Homebrew/linkage_checker.rb @@ -6,11 +6,11 @@ require "linkage_cache_store" class LinkageChecker attr_reader :keg, :formula, :store - def initialize(keg, db, rebuild_cache = false, formula = nil) + def initialize(keg, db, use_cache = false, formula = nil) @keg = keg @formula = formula || resolve_formula(keg) @store = LinkageStore.new(keg.name, db) - flush_cache_and_check_dylibs if rebuild_cache + flush_cache_and_check_dylibs unless use_cache end # 'Hash-type' cache values