Phillip Smyth pushed to branch mac_fixes at BuildStream / buildstream
Commits:
- 
5c286bf0
by knownexus at 2018-09-19T12:55:53Z
2 changed files:
Changes:
| ... | ... | @@ -117,4 +117,4 @@ class Platform(): | 
| 117 | 117 |              resource.setrlimit(resource.RLIMIT_NOFILE, (soft_limit, hard_limit))
 | 
| 118 | 118 |  | 
| 119 | 119 |      def create_artifact_cache(self, context, *, enable_push=True):
 | 
| 120 | -        return CASCache(context=context, *, enable_push=enable_push) | |
| 120 | +        return CASCache(context=context, enable_push=enable_push) | 
| ... | ... | @@ -35,6 +35,7 @@ import tempfile | 
| 35 | 35 |  import itertools
 | 
| 36 | 36 |  import functools
 | 
| 37 | 37 |  from contextlib import contextmanager
 | 
| 38 | +from stat import S_ISDIR
 | |
| 38 | 39 |  | 
| 39 | 40 |  import psutil
 | 
| 40 | 41 |  | 
| ... | ... | @@ -328,27 +329,25 @@ def safe_remove(path): | 
| 328 | 329 |      Raises:
 | 
| 329 | 330 |         UtilError: In the case of unexpected system call failures
 | 
| 330 | 331 |      """
 | 
| 331 | -    if os.path.lexists(path):
 | |
| 332 | - | |
| 333 | -        # Try to remove anything that is in the way, but issue
 | |
| 334 | -        # a warning instead if it removes a non empty directory
 | |
| 335 | -        try:
 | |
| 332 | +    try:
 | |
| 333 | +        if S_ISDIR(os.lstat(path).st_mode):
 | |
| 334 | +            os.rmdir(path)
 | |
| 335 | +        else:
 | |
| 336 | 336 |              os.unlink(path)
 | 
| 337 | -        except OSError as e:
 | |
| 338 | -            if e.errno != errno.EISDIR:
 | |
| 339 | -                raise UtilError("Failed to remove '{}': {}"
 | |
| 340 | -                                .format(path, e))
 | |
| 341 | - | |
| 342 | -            try:
 | |
| 343 | -                os.rmdir(path)
 | |
| 344 | -            except OSError as e:
 | |
| 345 | -                if e.errno == errno.ENOTEMPTY:
 | |
| 346 | -                    return False
 | |
| 347 | -                else:
 | |
| 348 | -                    raise UtilError("Failed to remove '{}': {}"
 | |
| 349 | -                                    .format(path, e))
 | |
| 350 | 337 |  | 
| 351 | -    return True
 | |
| 338 | +        # File removed/unlinked successfully
 | |
| 339 | +        return True
 | |
| 340 | + | |
| 341 | +    except OSError as e:
 | |
| 342 | +        if e.errno == errno.ENOTEMPTY:
 | |
| 343 | +            # Path is non-empty directory
 | |
| 344 | +            return False
 | |
| 345 | +        elif e.errno == errno.ENOENT:
 | |
| 346 | +            # Path does not exist
 | |
| 347 | +            return True
 | |
| 348 | + | |
| 349 | +    raise UtilError("Failed to remove '{}': {}"
 | |
| 350 | +                    .format(path, e))
 | |
| 352 | 351 |  | 
| 353 | 352 |  | 
| 354 | 353 |  def copy_files(src, dest, *, files=None, ignore_missing=False, report_written=False):
 | 
