From 1b3e7f0e277615cb63fedc1e5d844b5e1002b9d9 Mon Sep 17 00:00:00 2001 From: Laurentiu Palcu Date: Mon, 13 Jan 2014 10:01:53 +0200 Subject: lib/oe/package_manager.py: add deploy dir locking mechanism This is needed in order to serialize the index file creation when multiple do_rootfs tasks are running in the same time. (From OE-Core rev: cb03d15482569c2e56232c921526938dcecfdb68) Signed-off-by: Laurentiu Palcu Signed-off-by: Richard Purdie --- meta/lib/oe/package_manager.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'meta/lib/oe/package_manager.py') diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py index 93ca78acb2..f84644c62d 100644 --- a/meta/lib/oe/package_manager.py +++ b/meta/lib/oe/package_manager.py @@ -27,6 +27,8 @@ class PackageManager(object): def __init__(self, d): self.d = d + self.deploy_dir = None + self.deploy_lock = None """ Update the package manager package database. @@ -110,6 +112,21 @@ class PackageManager(object): self.install(complementary_pkgs.split(), attempt_only=True) + def deploy_dir_lock(self): + if self.deploy_dir is None: + raise RuntimeError("deploy_dir is not set!") + + lock_file_name = os.path.join(self.deploy_dir, "deploy.lock") + + self.deploy_lock = bb.utils.lockfile(lock_file_name) + + def deploy_dir_unlock(self): + if self.deploy_lock is None: + return + + bb.utils.unlockfile(self.deploy_lock) + + self.deploy_lock = None class RpmPM(PackageManager): def __init__(self): -- cgit 1.2.3-korg