diff --git a/Library/Homebrew/cmd/reinstall.rb b/Library/Homebrew/cmd/reinstall.rb index 4d42564c11..94096d2dd4 100644 --- a/Library/Homebrew/cmd/reinstall.rb +++ b/Library/Homebrew/cmd/reinstall.rb @@ -23,6 +23,7 @@ module Homebrew def reinstall_formula(f) if f.opt_prefix.directory? keg = Keg.new(f.opt_prefix.resolved_path) + keg_had_linked_opt = true keg_was_linked = keg.linked? backup keg end @@ -38,7 +39,7 @@ module Homebrew fi.build_bottle = ARGV.build_bottle? || (!f.bottled? && f.build.bottle?) fi.interactive = ARGV.interactive? fi.git = ARGV.git? - fi.keg_was_linked = keg_was_linked + fi.link_keg = keg_was_linked if keg_had_linked_opt fi.prelude oh1 "Reinstalling #{f.full_name} #{options.to_a.join " "}" diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb index cb6e6a5aba..1cdb497cf6 100644 --- a/Library/Homebrew/cmd/upgrade.rb +++ b/Library/Homebrew/cmd/upgrade.rb @@ -101,6 +101,12 @@ module Homebrew end def upgrade_formula(f) + if f.opt_prefix.directory? + keg = Keg.new(f.opt_prefix.resolved_path) + keg_had_linked_opt = true + keg_was_linked = keg.linked? + end + formulae_maybe_with_kegs = [f] + f.old_installed_formulae outdated_kegs = formulae_maybe_with_kegs .map(&:linked_keg) @@ -118,6 +124,7 @@ module Homebrew fi.options &= f.options fi.build_bottle = ARGV.build_bottle? || (!f.bottled? && f.build.build_bottle?) fi.installed_on_request = !ARGV.named.empty? + fi.link_keg = keg_was_linked if keg_had_linked_opt if tab fi.installed_as_dependency = tab.installed_as_dependency fi.installed_on_request ||= tab.installed_on_request diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 242502194d..a673853384 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -37,17 +37,11 @@ class FormulaInstaller mode_attr_accessor :show_summary_heading, :show_header mode_attr_accessor :build_from_source, :force_bottle mode_attr_accessor :ignore_deps, :only_deps, :interactive, :git - mode_attr_accessor :verbose, :debug, :quieter, :keg_was_linked + mode_attr_accessor :verbose, :debug, :quieter, :link_keg def initialize(formula) @formula = formula - @rack_was_present = formula.rack.directory? - @keg_was_linked = if formula.linked_keg.directory? - keg = Keg.new(formula.linked_keg.resolved_path) - keg.linked? - else - false - end + @link_keg = !formula.keg_only? @show_header = false @ignore_deps = false @only_deps = false @@ -532,6 +526,7 @@ class FormulaInstaller if df.linked_keg.directory? linked_keg = Keg.new(df.linked_keg.resolved_path) + keg_had_linked_keg = true keg_was_linked = linked_keg.linked? linked_keg.unlink end @@ -551,7 +546,7 @@ class FormulaInstaller fi.verbose = verbose? fi.quieter = quieter? fi.debug = debug? - fi.keg_was_linked = keg_was_linked + fi.link_keg = keg_was_linked if keg_had_linked_keg fi.installed_as_dependency = true fi.installed_on_request = false fi.prelude @@ -722,13 +717,7 @@ class FormulaInstaller end def link(keg) - link_formula = if @rack_was_present - keg_was_linked? - else - !formula.keg_only? - end - - unless link_formula + unless link_keg begin keg.optlink rescue Keg::LinkError => e diff --git a/Library/Homebrew/test/bottle_hooks_spec.rb b/Library/Homebrew/test/bottle_hooks_spec.rb index 78ccfa47ba..e70b558a18 100644 --- a/Library/Homebrew/test/bottle_hooks_spec.rb +++ b/Library/Homebrew/test/bottle_hooks_spec.rb @@ -12,8 +12,7 @@ describe Homebrew::Hooks::Bottles do local_bottle_path: nil, bottle_disabled?: false, some_random_method: true, - linked_keg: Pathname("foo"), - rack: Pathname("bar"), + keg_only?: false, ) end