aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike McQuaid2017-07-30 21:44:43 +0100
committerMike McQuaid2017-07-30 21:44:43 +0100
commit044f4d947bd7f75efcab427716769697c0fa0b10 (patch)
tree2cc1d858ab6f85584393a2eca768404df60939c6
parent9d55446cd065801b16af11fc492895eb178262d2 (diff)
downloadbrew-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.rb3
-rw-r--r--Library/Homebrew/cmd/upgrade.rb7
-rw-r--r--Library/Homebrew/formula_installer.rb21
-rw-r--r--Library/Homebrew/test/bottle_hooks_spec.rb3
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