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):
|
