upgrade: check for already broken dependents

After upgrading a formula, it currently checks for
broken dependents after upgrading any outdated dependents.
If there are no outdated dependents, it exits early
and doesn't check for broken dependents.
This adds an earlier check for already broken dependents
so they can be fixed even if there are no outdated dependents.
This commit is contained in:
Steve Peters 2020-08-26 08:53:47 -07:00
parent 9396ccf974
commit bdfaaf7940

View File

@ -124,10 +124,22 @@ module Homebrew
installed_formulae = FormulaInstaller.installed.to_a installed_formulae = FormulaInstaller.installed.to_a
return if installed_formulae.empty? return if installed_formulae.empty?
already_broken_dependents = CacheStoreDatabase.use(:linkage) do |db|
installed_formulae.flat_map(&:runtime_installed_formula_dependents)
.uniq
.select do |f|
keg = f.opt_or_installed_prefix_keg
next unless keg
LinkageChecker.new(keg, cache_db: db)
.broken_library_linkage?
end.compact
end
outdated_dependents = outdated_dependents =
installed_formulae.flat_map(&:runtime_installed_formula_dependents) installed_formulae.flat_map(&:runtime_installed_formula_dependents)
.select(&:outdated?) .select(&:outdated?)
return if outdated_dependents.blank? return if outdated_dependents.blank? && already_broken_dependents.blank?
outdated_dependents -= installed_formulae if args.dry_run? outdated_dependents -= installed_formulae if args.dry_run?