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 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}"

View File

@ -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