summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/utils.py')
-rw-r--r--bitbake/lib/bb/utils.py21
1 files changed, 12 insertions, 9 deletions
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py
index d3701acca7..18fc9f7252 100644
--- a/bitbake/lib/bb/utils.py
+++ b/bitbake/lib/bb/utils.py
@@ -246,15 +246,18 @@ def lockfile(name):
246 # This implementation is unfair since the last person to request the 246 # This implementation is unfair since the last person to request the
247 # lock is the most likely to win it. 247 # lock is the most likely to win it.
248 248
249 lf = open(name, "a+") 249 try:
250 fcntl.flock(lf.fileno(), fcntl.LOCK_EX) 250 lf = open(name, "a+")
251 statinfo = os.fstat(lf.fileno()) 251 fcntl.flock(lf.fileno(), fcntl.LOCK_EX)
252 if os.path.exists(lf.name): 252 statinfo = os.fstat(lf.fileno())
253 statinfo2 = os.stat(lf.name) 253 if os.path.exists(lf.name):
254 if statinfo.st_ino == statinfo2.st_ino: 254 statinfo2 = os.stat(lf.name)
255 return lf 255 if statinfo.st_ino == statinfo2.st_ino:
256 # File no longer exists or changed, retry 256 return lf
257 lf.close 257 # File no longer exists or changed, retry
258 lf.close
259 except Exception, e:
260 continue
258 261
259def unlockfile(lf): 262def unlockfile(lf):
260 """ 263 """