Pass the tab to FormulaInstaller
Callers of FormulaInstaller now usually unlink the existing keg prior to running the installer. However, Tab.for_formula uses the LinkedKeg record to obtain the tab. Since we need the tab to persist install options across upgrades, we must start creating the Tab object before unlinking the old keg and passing it to the FormulaInstaller. Fixes Homebrew/homebrew#11086. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
This commit is contained in:
parent
9076037a0d
commit
1bc6313694
@ -49,9 +49,10 @@ module Homebrew extend self
|
|||||||
end
|
end
|
||||||
|
|
||||||
def upgrade_formula f
|
def upgrade_formula f
|
||||||
|
tab = Tab.for_formula(f)
|
||||||
outdated_keg = Keg.new(f.linked_keg.realpath) rescue nil
|
outdated_keg = Keg.new(f.linked_keg.realpath) rescue nil
|
||||||
|
|
||||||
installer = FormulaInstaller.new f
|
installer = FormulaInstaller.new(f, tab)
|
||||||
installer.show_header = false
|
installer.show_header = false
|
||||||
|
|
||||||
oh1 "Upgrading #{f.name}"
|
oh1 "Upgrading #{f.name}"
|
||||||
|
|||||||
@ -7,13 +7,15 @@ require 'bottles'
|
|||||||
|
|
||||||
class FormulaInstaller
|
class FormulaInstaller
|
||||||
attr :f
|
attr :f
|
||||||
|
attr :tab
|
||||||
attr :show_summary_heading, true
|
attr :show_summary_heading, true
|
||||||
attr :ignore_deps, true
|
attr :ignore_deps, true
|
||||||
attr :install_bottle, true
|
attr :install_bottle, true
|
||||||
attr :show_header, true
|
attr :show_header, true
|
||||||
|
|
||||||
def initialize ff
|
def initialize ff, tab=nil
|
||||||
@f = ff
|
@f = ff
|
||||||
|
@tab = tab
|
||||||
@show_header = true
|
@show_header = true
|
||||||
@ignore_deps = ARGV.include? '--ignore-dependencies' || ARGV.interactive?
|
@ignore_deps = ARGV.include? '--ignore-dependencies' || ARGV.interactive?
|
||||||
@install_bottle = install_bottle? ff
|
@install_bottle = install_bottle? ff
|
||||||
@ -111,9 +113,10 @@ class FormulaInstaller
|
|||||||
end
|
end
|
||||||
|
|
||||||
def install_dependency dep
|
def install_dependency dep
|
||||||
|
dep_tab = Tab.for_formula(dep)
|
||||||
outdated_keg = Keg.new(dep.linked_keg.realpath) rescue nil
|
outdated_keg = Keg.new(dep.linked_keg.realpath) rescue nil
|
||||||
|
|
||||||
fi = FormulaInstaller.new dep
|
fi = FormulaInstaller.new(dep, dep_tab)
|
||||||
fi.ignore_deps = true
|
fi.ignore_deps = true
|
||||||
fi.show_header = false
|
fi.show_header = false
|
||||||
oh1 "Installing #{f} dependency: #{dep}"
|
oh1 "Installing #{f} dependency: #{dep}"
|
||||||
@ -179,8 +182,7 @@ class FormulaInstaller
|
|||||||
|
|
||||||
args = ARGV.clone
|
args = ARGV.clone
|
||||||
unless args.include? '--fresh'
|
unless args.include? '--fresh'
|
||||||
previous_install = Tab.for_formula f
|
args.concat tab.used_options unless tab.nil?
|
||||||
args.concat previous_install.used_options
|
|
||||||
args.uniq! # Just in case some dupes were added
|
args.uniq! # Just in case some dupes were added
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user