diff options
Diffstat (limited to 'bitbake/lib/bb/utils.py')
| -rw-r--r-- | bitbake/lib/bb/utils.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py index 40b5f2f3dc..5dc7e766f5 100644 --- a/bitbake/lib/bb/utils.py +++ b/bitbake/lib/bb/utils.py | |||
| @@ -399,7 +399,7 @@ def fileslocked(files): | |||
| 399 | for lock in locks: | 399 | for lock in locks: |
| 400 | bb.utils.unlockfile(lock) | 400 | bb.utils.unlockfile(lock) |
| 401 | 401 | ||
| 402 | def lockfile(name): | 402 | def lockfile(name, shared=False): |
| 403 | """ | 403 | """ |
| 404 | Use the file fn as a lock file, return when the lock has been acquired. | 404 | Use the file fn as a lock file, return when the lock has been acquired. |
| 405 | Returns a variable to pass to unlockfile(). | 405 | Returns a variable to pass to unlockfile(). |
| @@ -413,6 +413,10 @@ def lockfile(name): | |||
| 413 | logger.error("Error, lockfile path is not writable!: %s" % path) | 413 | logger.error("Error, lockfile path is not writable!: %s" % path) |
| 414 | sys.exit(1) | 414 | sys.exit(1) |
| 415 | 415 | ||
| 416 | op = fcntl.LOCK_EX | ||
| 417 | if shared: | ||
| 418 | op = fcntl.LOCK_SH | ||
| 419 | |||
| 416 | while True: | 420 | while True: |
| 417 | # If we leave the lockfiles lying around there is no problem | 421 | # If we leave the lockfiles lying around there is no problem |
| 418 | # but we should clean up after ourselves. This gives potential | 422 | # but we should clean up after ourselves. This gives potential |
| @@ -427,7 +431,7 @@ def lockfile(name): | |||
| 427 | try: | 431 | try: |
| 428 | lf = open(name, 'a+') | 432 | lf = open(name, 'a+') |
| 429 | fileno = lf.fileno() | 433 | fileno = lf.fileno() |
| 430 | fcntl.flock(fileno, fcntl.LOCK_EX) | 434 | fcntl.flock(fileno, op) |
| 431 | statinfo = os.fstat(fileno) | 435 | statinfo = os.fstat(fileno) |
| 432 | if os.path.exists(lf.name): | 436 | if os.path.exists(lf.name): |
| 433 | statinfo2 = os.stat(lf.name) | 437 | statinfo2 = os.stat(lf.name) |
