Merge pull request #2983 from MikeMcQuaid/tweak-preserve-link-on-upgrade-reinstall
Tweak preserve link status on reinstall/upgrade.
This commit is contained in:
commit
2aa56748c4
@ -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 " "}"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user