build system: avoid race condition when creating dependency directories

This commit is contained in:
Moritz Bunkus 2018-01-08 19:59:44 +01:00
parent 0ed0a36bed
commit 635e546a58

View File

@ -5,6 +5,7 @@ require "fileutils"
$git_mutex = Mutex.new
$message_mutex = Mutex.new
$dir_mutex = Mutex.new
$action_width = 12
def puts(message)
@ -102,8 +103,10 @@ def runq_git(msg, cmdline, options = {})
end
def ensure_dir dir
File.unlink(dir) if FileTest.exist?(dir) && !FileTest.directory?(dir)
Dir.mkdir(dir) if !FileTest.exist?(dir)
$dir_mutex.synchronize {
File.unlink(dir) if FileTest.exist?(dir) && !FileTest.directory?(dir)
Dir.mkdir(dir) if !FileTest.exist?(dir)
}
end
def create_dependency_dirs