From 7857834691868b7f48f732ee78d8770f5473ff68 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 19 Jan 2011 11:01:54 +0000 Subject: bitbake/utils.py: Add option of holding shared lockfiles Signed-off-by: Richard Purdie --- bitbake/lib/bb/utils.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'bitbake/lib') 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) -- cgit v1.2.3-54-g00ecf