[oe-commits] Laurentiu Palcu : lib/oe/package_manager.py: add deploy dir locking mechanism

git at git.openembedded.org git at git.openembedded.org
Tue Feb 11 11:56:59 UTC 2014


Module: openembedded-core.git
Branch: master-next
Commit: cb03d15482569c2e56232c921526938dcecfdb68
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=cb03d15482569c2e56232c921526938dcecfdb68

Author: Laurentiu Palcu <laurentiu.palcu at intel.com>
Date:   Mon Jan 13 10:01:53 2014 +0200

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.

Signed-off-by: Laurentiu Palcu <laurentiu.palcu at intel.com>

---

 meta/lib/oe/package_manager.py | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index 93ca78a..f84644c 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):



More information about the Openembedded-commits mailing list