| Index: gclient_utils.py
 | 
| diff --git a/gclient_utils.py b/gclient_utils.py
 | 
| index 918b489c7b3e244f0b4adfd34a5986f66934d8ba..e65893468469fed10c25c2c1f031d2075f8a7123 100644
 | 
| --- a/gclient_utils.py
 | 
| +++ b/gclient_utils.py
 | 
| @@ -171,6 +171,26 @@ def rmtree(path):
 | 
|  RemoveDirectory = rmtree
 | 
|  
 | 
|  
 | 
| +def safe_makedirs(tree):
 | 
| +  """Creates the directory in a safe manner.
 | 
| +
 | 
| +  Because multiple threads can create these directories concurently, trap the
 | 
| +  exception and pass on.
 | 
| +  """
 | 
| +  count = 0
 | 
| +  while not os.path.exists(tree):
 | 
| +    count += 1
 | 
| +    try:
 | 
| +      os.makedirs(tree)
 | 
| +    except OSError, e:
 | 
| +      # 17 POSIX, 183 Windows
 | 
| +      if e.errno not in (17, 183):
 | 
| +        raise
 | 
| +      if count > 40:
 | 
| +        # Give up.
 | 
| +        raise
 | 
| +
 | 
| +
 | 
|  def CheckCallAndFilterAndHeader(args, always=False, **kwargs):
 | 
|    """Adds 'header' support to CheckCallAndFilter.
 | 
|  
 | 
| 
 |