reinstall: don't build bottles unnecessarily.

Apply the same changes from #6066.

Also apply the same logics from `brew upgrade` to preserve
`installed_as_dependency`/`installed_on_request` settings
when reinstalling formulae.
This commit is contained in:
Xu Cheng 2019-04-26 15:28:57 +08:00
parent e18c5c1291
commit 1dfdc5c2ec
No known key found for this signature in database
GPG Key ID: B19F15830AB4E690

View File

@ -10,6 +10,7 @@ module Homebrew
def reinstall_formula(f, build_from_source: false) def reinstall_formula(f, build_from_source: false)
if f.opt_prefix.directory? if f.opt_prefix.directory?
keg = Keg.new(f.opt_prefix.resolved_path) keg = Keg.new(f.opt_prefix.resolved_path)
tab = Tab.for_keg(keg)
keg_had_linked_opt = true keg_had_linked_opt = true
keg_was_linked = keg.linked? keg_was_linked = keg.linked?
backup keg backup keg
@ -22,11 +23,16 @@ module Homebrew
fi = FormulaInstaller.new(f) fi = FormulaInstaller.new(f)
fi.options = options fi.options = options
fi.build_bottle = ARGV.build_bottle? || (!f.bottle_defined? && f.build.bottle?) fi.build_bottle = ARGV.build_bottle?
fi.interactive = ARGV.interactive? fi.interactive = ARGV.interactive?
fi.git = ARGV.git? fi.git = ARGV.git?
fi.link_keg ||= keg_was_linked if keg_had_linked_opt fi.link_keg ||= keg_was_linked if keg_had_linked_opt
fi.build_from_source = true if build_from_source fi.build_from_source = true if build_from_source
if tab
fi.build_bottle ||= tab.built_bottle?
fi.installed_as_dependency = tab.installed_as_dependency
fi.installed_on_request = tab.installed_on_request
end
fi.prelude fi.prelude
oh1 "Reinstalling #{Formatter.identifier(f.full_name)} #{options.to_a.join " "}" oh1 "Reinstalling #{Formatter.identifier(f.full_name)} #{options.to_a.join " "}"