Merge pull request #8500 from scpeters/upgrade_check_already_broken_dependents
upgrade: check for already broken dependents
This commit is contained in:
commit
eb09a09b66
@ -120,14 +120,30 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
private_class_method :upgrade_formula
|
private_class_method :upgrade_formula
|
||||||
|
|
||||||
|
def check_broken_dependents(installed_formulae)
|
||||||
|
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
|
||||||
|
end
|
||||||
|
|
||||||
def check_installed_dependents(args:)
|
def check_installed_dependents(args:)
|
||||||
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 = check_broken_dependents(installed_formulae)
|
||||||
|
|
||||||
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?
|
||||||
|
|
||||||
@ -168,17 +184,7 @@ module Homebrew
|
|||||||
|
|
||||||
# Assess the dependents tree again now we've upgraded.
|
# Assess the dependents tree again now we've upgraded.
|
||||||
oh1 "Checking for dependents of upgraded formulae..." unless args.dry_run?
|
oh1 "Checking for dependents of upgraded formulae..." unless args.dry_run?
|
||||||
broken_dependents = CacheStoreDatabase.use(:linkage) do |db|
|
broken_dependents = check_broken_dependents(installed_formulae)
|
||||||
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
|
|
||||||
if broken_dependents.blank?
|
if broken_dependents.blank?
|
||||||
if args.dry_run?
|
if args.dry_run?
|
||||||
ohai "No currently broken dependents found!"
|
ohai "No currently broken dependents found!"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user