From a628c15afde8fb1bcf441b9737df908821fc6873 Mon Sep 17 00:00:00 2001 From: Xu Cheng Date: Mon, 17 Aug 2015 22:49:57 +0800 Subject: [PATCH] lock keg during migration --- Library/Homebrew/migrator.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Library/Homebrew/migrator.rb b/Library/Homebrew/migrator.rb index 82af17f023..2ab5fc2956 100644 --- a/Library/Homebrew/migrator.rb +++ b/Library/Homebrew/migrator.rb @@ -1,4 +1,5 @@ require "formula" +require "formula_lock" require "keg" require "tab" require "tap_migrations" @@ -132,6 +133,7 @@ class Migrator begin oh1 "Migrating #{Tty.green}#{oldname}#{Tty.white} to #{Tty.green}#{newname}#{Tty.reset}" + lock unlink_oldname move_to_new_directory repin @@ -147,6 +149,8 @@ class Migrator puts e.backtrace if ARGV.debug? puts "Backuping..." ignore_interrupts { backup_oldname } + ensure + unlock end end @@ -320,4 +324,16 @@ class Migrator def backup_old_tabs old_tabs.each(&:write) end + + def lock + @newname_lock = FormulaLock.new newname + @oldname_lock = FormulaLock.new oldname + @newname_lock.lock + @oldname_lock.lock + end + + def unlock + @newname_lock.unlock + @oldname_lock.unlock + end end