diff options
Diffstat (limited to 'Library/Homebrew/cmd')
| -rw-r--r-- | Library/Homebrew/cmd/reinstall.rb | 8 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/upgrade.rb | 3 |
2 files changed, 7 insertions, 4 deletions
diff --git a/Library/Homebrew/cmd/reinstall.rb b/Library/Homebrew/cmd/reinstall.rb index 98160579e..4d42564c1 100644 --- a/Library/Homebrew/cmd/reinstall.rb +++ b/Library/Homebrew/cmd/reinstall.rb @@ -23,6 +23,7 @@ module Homebrew def reinstall_formula(f) if f.opt_prefix.directory? keg = Keg.new(f.opt_prefix.resolved_path) + keg_was_linked = keg.linked? backup keg end @@ -37,6 +38,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.prelude oh1 "Reinstalling #{f.full_name} #{options.to_a.join " "}" @@ -46,7 +48,7 @@ module Homebrew rescue FormulaInstallationAlreadyAttemptedError # next rescue Exception - ignore_interrupts { restore_backup(keg, f) } + ignore_interrupts { restore_backup(keg, keg_was_linked) } raise else backup_path(keg).rmtree if backup_path(keg).exist? @@ -57,7 +59,7 @@ module Homebrew keg.rename backup_path(keg) end - def restore_backup(keg, formula) + def restore_backup(keg, keg_was_linked) path = backup_path(keg) return unless path.directory? @@ -65,7 +67,7 @@ module Homebrew Pathname.new(keg).rmtree if keg.exist? path.rename keg - keg.link unless formula.keg_only? + keg.link if keg_was_linked end def backup_path(path) diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb index 548c3b6ed..cb6e6a5ab 100644 --- a/Library/Homebrew/cmd/upgrade.rb +++ b/Library/Homebrew/cmd/upgrade.rb @@ -106,6 +106,7 @@ module Homebrew .map(&:linked_keg) .select(&:directory?) .map { |k| Keg.new(k.resolved_path) } + linked_kegs = outdated_kegs.select(&:linked?) if f.opt_prefix.directory? keg = Keg.new(f.opt_prefix.resolved_path) @@ -153,7 +154,7 @@ module Homebrew ensure # restore previous installation state if build failed begin - outdated_kegs.each(&:link) unless f.installed? + linked_kegs.each(&:link) unless f.installed? rescue nil end |
