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.
This commit is contained in:
		
							parent
							
								
									9d55446cd0
								
							
						
					
					
						commit
						044f4d947b
					
				@ -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