From 635e546a5812c5db2fa3bb03869ad4f41fc2fd8b Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Mon, 8 Jan 2018 19:59:44 +0100 Subject: [PATCH] build system: avoid race condition when creating dependency directories --- rake.d/helpers.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/rake.d/helpers.rb b/rake.d/helpers.rb index 64299b618..ba99c1b9e 100644 --- a/rake.d/helpers.rb +++ b/rake.d/helpers.rb @@ -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