summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/bb/utils.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/bb/utils.py b/lib/bb/utils.py
index ccafda19e..82e5dc427 100644
--- a/lib/bb/utils.py
+++ b/lib/bb/utils.py
@@ -402,7 +402,7 @@ def fileslocked(files):
for lock in locks:
bb.utils.unlockfile(lock)
-def lockfile(name, shared=False):
+def lockfile(name, shared=False, retry=True):
"""
Use the file fn as a lock file, return when the lock has been acquired.
Returns a variable to pass to unlockfile().
@@ -418,6 +418,8 @@ def lockfile(name, shared=False):
op = fcntl.LOCK_EX
if shared:
op = fcntl.LOCK_SH
+ if not retry:
+ op = op | fcntl.LOCK_NB
while True:
# If we leave the lockfiles lying around there is no problem
@@ -442,6 +444,8 @@ def lockfile(name, shared=False):
lf.close()
except Exception:
continue
+ if not retry:
+ return None
def unlockfile(lf):
"""