Consolidate shared install and upgrade logic
This commit is contained in:
parent
11d030e897
commit
13e1457249
@ -5,6 +5,7 @@ require "diagnostic"
|
|||||||
require "fileutils"
|
require "fileutils"
|
||||||
require "hardware"
|
require "hardware"
|
||||||
require "development_tools"
|
require "development_tools"
|
||||||
|
require "upgrade"
|
||||||
|
|
||||||
module Homebrew
|
module Homebrew
|
||||||
# Helper module for performing (pre-)install checks.
|
# Helper module for performing (pre-)install checks.
|
||||||
@ -249,20 +250,6 @@ module Homebrew
|
|||||||
f.print_tap_action
|
f.print_tap_action
|
||||||
build_options = f.build
|
build_options = f.build
|
||||||
|
|
||||||
if !Homebrew::EnvConfig.no_install_upgrade? && f.outdated? && !f.head?
|
|
||||||
outdated_formulae = [f, *f.old_installed_formulae]
|
|
||||||
version_upgrade = "#{f.linked_version} -> #{f.pkg_version}"
|
|
||||||
|
|
||||||
oh1 <<~EOS
|
|
||||||
#{f.name} #{f.linked_version} is installed but outdated
|
|
||||||
Upgrading #{Formatter.identifier(f.name)} #{version_upgrade}
|
|
||||||
EOS
|
|
||||||
outdated_kegs = outdated_formulae.map(&:linked_keg)
|
|
||||||
.select(&:directory?)
|
|
||||||
.map { |k| Keg.new(k.resolved_path) }
|
|
||||||
linked_kegs = outdated_kegs.select(&:linked?)
|
|
||||||
end
|
|
||||||
|
|
||||||
fi = FormulaInstaller.new(
|
fi = FormulaInstaller.new(
|
||||||
f,
|
f,
|
||||||
options: build_options.used_options,
|
options: build_options.used_options,
|
||||||
@ -282,10 +269,17 @@ module Homebrew
|
|||||||
quiet: quiet,
|
quiet: quiet,
|
||||||
verbose: verbose,
|
verbose: verbose,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if !Homebrew::EnvConfig.no_install_upgrade? && f.outdated? && !f.head?
|
||||||
|
kegs = Upgrade.outdated_kegs(f)
|
||||||
|
linked_kegs = kegs.select(&:linked?)
|
||||||
|
Upgrade.print_upgrade_message(f, fi.options)
|
||||||
|
end
|
||||||
|
|
||||||
fi.prelude
|
fi.prelude
|
||||||
fi.fetch
|
fi.fetch
|
||||||
|
|
||||||
outdated_kegs.each(&:unlink) if outdated_kegs.present?
|
kegs.each(&:unlink) if kegs.present?
|
||||||
|
|
||||||
fi.install
|
fi.install
|
||||||
fi.finish
|
fi.finish
|
||||||
|
|||||||
@ -64,6 +64,24 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def outdated_kegs(formula)
|
||||||
|
[formula, *formula.old_installed_formulae].map(&:linked_keg)
|
||||||
|
.select(&:directory?)
|
||||||
|
.map { |k| Keg.new(k.resolved_path) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def print_upgrade_message(formula, fi_options)
|
||||||
|
version_upgrade = if formula.optlinked?
|
||||||
|
"#{Keg.new(formula.opt_prefix).version} -> #{formula.pkg_version}"
|
||||||
|
else
|
||||||
|
"-> #{formula.pkg_version}"
|
||||||
|
end
|
||||||
|
oh1 <<~EOS
|
||||||
|
Upgrading #{Formatter.identifier(formula.full_specified_name)}
|
||||||
|
#{version_upgrade} #{fi_options.to_a.join(" ")}
|
||||||
|
EOS
|
||||||
|
end
|
||||||
|
|
||||||
def upgrade_formula(
|
def upgrade_formula(
|
||||||
formula,
|
formula,
|
||||||
flags:,
|
flags:,
|
||||||
@ -83,11 +101,8 @@ module Homebrew
|
|||||||
keg_was_linked = keg.linked?
|
keg_was_linked = keg.linked?
|
||||||
end
|
end
|
||||||
|
|
||||||
formulae_maybe_with_kegs = [formula] + formula.old_installed_formulae
|
kegs = outdated_kegs(formula)
|
||||||
outdated_kegs = formulae_maybe_with_kegs.map(&:linked_keg)
|
linked_kegs = kegs.select(&:linked?)
|
||||||
.select(&:directory?)
|
|
||||||
.map { |k| Keg.new(k.resolved_path) }
|
|
||||||
linked_kegs = outdated_kegs.select(&:linked?)
|
|
||||||
|
|
||||||
if formula.opt_prefix.directory?
|
if formula.opt_prefix.directory?
|
||||||
keg = Keg.new(formula.opt_prefix.resolved_path)
|
keg = Keg.new(formula.opt_prefix.resolved_path)
|
||||||
@ -118,13 +133,7 @@ module Homebrew
|
|||||||
}.compact,
|
}.compact,
|
||||||
)
|
)
|
||||||
|
|
||||||
upgrade_version = if formula.optlinked?
|
print_upgrade_message(formula, fi.options)
|
||||||
"#{Keg.new(formula.opt_prefix).version} -> #{formula.pkg_version}"
|
|
||||||
else
|
|
||||||
"-> #{formula.pkg_version}"
|
|
||||||
end
|
|
||||||
oh1 "Upgrading #{Formatter.identifier(formula.full_specified_name)} " \
|
|
||||||
"#{upgrade_version} #{fi.options.to_a.join(" ")}"
|
|
||||||
|
|
||||||
fi.prelude
|
fi.prelude
|
||||||
fi.fetch
|
fi.fetch
|
||||||
@ -132,7 +141,7 @@ module Homebrew
|
|||||||
# first we unlink the currently active keg for this formula otherwise it is
|
# first we unlink the currently active keg for this formula otherwise it is
|
||||||
# possible for the existing build to interfere with the build we are about to
|
# possible for the existing build to interfere with the build we are about to
|
||||||
# do! Seriously, it happens!
|
# do! Seriously, it happens!
|
||||||
outdated_kegs.each(&:unlink)
|
kegs.each(&:unlink)
|
||||||
|
|
||||||
fi.install
|
fi.install
|
||||||
fi.finish
|
fi.finish
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user