Fix matchcompiler failure in case of parallel build
During parallel build, multiple processes will try to create build_dir in parallel, so the build will fail. Fix that by calling makedirs unconditionally and ignoring errors from it. If there's actual problem with directory creation, it'll be caught later by isdir() check.
This commit is contained in:
parent
d88745805f
commit
94d39f6e91
|
@ -22,6 +22,7 @@ import sys
|
|||
import re
|
||||
import glob
|
||||
import argparse
|
||||
import errno
|
||||
|
||||
|
||||
class MatchCompiler:
|
||||
|
@ -667,8 +668,16 @@ def main():
|
|||
sys.exit(-1)
|
||||
|
||||
# Create build directory if needed
|
||||
if not os.path.exists(build_dir):
|
||||
try:
|
||||
os.makedirs(build_dir)
|
||||
except OSError as e:
|
||||
# due to race condition in case of parallel build,
|
||||
# makedirs may fail. Ignore that; if there's actual
|
||||
# problem with directory creation, it'll be caught
|
||||
# by the following isdir check
|
||||
if e.errno != errno.EEXIST:
|
||||
raise
|
||||
|
||||
if not os.path.isdir(build_dir):
|
||||
raise Exception(build_dir + ' is not a directory')
|
||||
|
||||
|
|
Loading…
Reference in New Issue