diff options
| author | Mike McQuaid | 2017-07-30 18:42:06 +0100 |
|---|---|---|
| committer | GitHub | 2017-07-30 18:42:06 +0100 |
| commit | e1fd69de42b29b2a51786fe4509543e4f9ba69cb (patch) | |
| tree | e3844eb01546ceb110cb449ded7dd2d981326521 /Library/Homebrew/formula_installer.rb | |
| parent | e755505c70c52d707c83130c17ab37dd2b2e8d48 (diff) | |
| parent | 7ec05052003ecf6142d94aeaa62f4b4bd84a569d (diff) | |
| download | brew-e1fd69de42b29b2a51786fe4509543e4f9ba69cb.tar.bz2 | |
Merge pull request #2961 from MikeMcQuaid/preserve-link-on-upgrade-reinstall
Preserve link status on reinstall/upgrade.
Diffstat (limited to 'Library/Homebrew/formula_installer.rb')
| -rw-r--r-- | Library/Homebrew/formula_installer.rb | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index f2100a908..1da8c931a 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -37,10 +37,17 @@ 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 + mode_attr_accessor :verbose, :debug, :quieter, :keg_was_linked 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 @show_header = false @ignore_deps = false @only_deps = false @@ -525,6 +532,7 @@ class FormulaInstaller if df.linked_keg.directory? linked_keg = Keg.new(df.linked_keg.resolved_path) + keg_was_linked = keg.linked? linked_keg.unlink end @@ -543,6 +551,7 @@ class FormulaInstaller fi.verbose = verbose? fi.quieter = quieter? fi.debug = debug? + fi.keg_was_linked = keg_was_linked fi.installed_as_dependency = true fi.installed_on_request = false fi.prelude @@ -552,7 +561,7 @@ class FormulaInstaller rescue Exception ignore_interrupts do tmp_keg.rename(installed_keg) if tmp_keg && !installed_keg.directory? - linked_keg.link if linked_keg + linked_keg.link if keg_was_linked end raise else @@ -713,7 +722,13 @@ class FormulaInstaller end def link(keg) - if formula.keg_only? + link_formula = if @rack_was_present + keg_was_linked? + else + !formula.keg_only? + end + + unless link_formula begin keg.optlink rescue Keg::LinkError => e |
