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:
Jack Nagel 2012-03-23 13:05:08 -05:00
parent 9076037a0d
commit 1bc6313694
2 changed files with 8 additions and 5 deletions

View File

@ -49,9 +49,10 @@ module Homebrew extend self
end
def upgrade_formula f
tab = Tab.for_formula(f)
outdated_keg = Keg.new(f.linked_keg.realpath) rescue nil
installer = FormulaInstaller.new f
installer = FormulaInstaller.new(f, tab)
installer.show_header = false
oh1 "Upgrading #{f.name}"

View File

@ -7,13 +7,15 @@ require 'bottles'
class FormulaInstaller
attr :f
attr :tab
attr :show_summary_heading, true
attr :ignore_deps, true
attr :install_bottle, true
attr :show_header, true
def initialize ff
def initialize ff, tab=nil
@f = ff
@tab = tab
@show_header = true
@ignore_deps = ARGV.include? '--ignore-dependencies' || ARGV.interactive?
@install_bottle = install_bottle? ff
@ -111,9 +113,10 @@ class FormulaInstaller
end
def install_dependency dep
dep_tab = Tab.for_formula(dep)
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.show_header = false
oh1 "Installing #{f} dependency: #{dep}"
@ -179,8 +182,7 @@ class FormulaInstaller
args = ARGV.clone
unless args.include? '--fresh'
previous_install = Tab.for_formula f
args.concat previous_install.used_options
args.concat tab.used_options unless tab.nil?
args.uniq! # Just in case some dupes were added
end