From 411d15d40754d1630ba974026d85f7df38f88e90 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Sat, 14 Jan 2012 20:03:30 -0600 Subject: [PATCH] Unlink old keg when upgrading dependencies Installing a formula via `brew install` may trigger upgrades of its dependencies if the dependencies are installed but outdated. However, we never unlinked the existing keg in FormulaInstaller#install_dependency which caused the link step to fail. Signed-off-by: Jack Nagel --- Library/Homebrew/formula.rb | 5 +++++ Library/Homebrew/formula_installer.rb | 1 + 2 files changed, 6 insertions(+) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 9b3c0ac5f3..4256cfb776 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -156,6 +156,11 @@ class Formula ARGV.formulae.include? self end + def linked_keg + keg = Pathname.new(HOMEBREW_REPOSITORY/"Library/LinkedKegs"/@name) + if keg.exist? then Keg.new(keg.realpath) else nil end + end + def installed_prefix head_prefix = HOMEBREW_CELLAR+@name+'HEAD' if @version == 'HEAD' || head_prefix.directory? diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index c2c04c8f3d..deee2b9563 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -67,6 +67,7 @@ class FormulaInstaller fi.show_header = false oh1 "Installing #{f} dependency: #{dep}" fi.install + dep.linked_keg.unlink if dep.linked_keg fi.caveats fi.finish end