diff options
Diffstat (limited to 'bitbake/lib/bb/utils.py')
-rw-r--r-- | bitbake/lib/bb/utils.py | 21 |
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 | ||
259 | def unlockfile(lf): | 262 | def unlockfile(lf): |
260 | """ | 263 | """ |