diff options
| author | Mike McQuaid | 2017-07-30 21:44:43 +0100 | 
|---|---|---|
| committer | Mike McQuaid | 2017-07-30 21:44:43 +0100 | 
| commit | 044f4d947bd7f75efcab427716769697c0fa0b10 (patch) | |
| tree | 2cc1d858ab6f85584393a2eca768404df60939c6 | |
| parent | 9d55446cd065801b16af11fc492895eb178262d2 (diff) | |
| download | brew-044f4d947bd7f75efcab427716769697c0fa0b10.tar.bz2 | |
Tweak preserve link status on reinstall/upgrade.
Treat a `brew install` command as normal i.e. link by default unless
keg-only and only specify whether a keg should be linked when upgrading
or reinstalling. Also, adjust the naming accordingly so it's more
obvious that this is the case.
| -rw-r--r-- | Library/Homebrew/cmd/reinstall.rb | 3 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/upgrade.rb | 7 | ||||
| -rw-r--r-- | Library/Homebrew/formula_installer.rb | 21 | ||||
| -rw-r--r-- | Library/Homebrew/test/bottle_hooks_spec.rb | 3 | 
4 files changed, 15 insertions, 19 deletions
| diff --git a/Library/Homebrew/cmd/reinstall.rb b/Library/Homebrew/cmd/reinstall.rb index 4d42564c1..94096d2dd 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 cb6e6a5ab..1cdb497cf 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 242502194..a67385338 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 78ccfa47b..e70b558a1 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 | 
