From: Richard Purdie Date: Wed, 19 Jan 2011 11:01:54 +0000 (+0000) Subject: bitbake/utils.py: Add option of holding shared lockfiles X-Git-Tag: 2011-1~2845 X-Git-Url: https://code.ossystems.io/gitweb?a=commitdiff_plain;h=7857834691868b7f48f732ee78d8770f5473ff68;p=openembedded-core.git bitbake/utils.py: Add option of holding shared lockfiles Signed-off-by: Richard Purdie --- 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): for lock in locks: bb.utils.unlockfile(lock) -def lockfile(name): +def lockfile(name, shared=False): """ Use the file fn as a lock file, return when the lock has been acquired. Returns a variable to pass to unlockfile(). @@ -413,6 +413,10 @@ def lockfile(name): logger.error("Error, lockfile path is not writable!: %s" % path) sys.exit(1) + op = fcntl.LOCK_EX + if shared: + op = fcntl.LOCK_SH + while True: # If we leave the lockfiles lying around there is no problem # but we should clean up after ourselves. This gives potential @@ -427,7 +431,7 @@ def lockfile(name): try: lf = open(name, 'a+') fileno = lf.fileno() - fcntl.flock(fileno, fcntl.LOCK_EX) + fcntl.flock(fileno, op) statinfo = os.fstat(fileno) if os.path.exists(lf.name): statinfo2 = os.stat(lf.name)