From 6151d69875f3f4f097b6e2fdef2a0f3ab391e2fd Mon Sep 17 00:00:00 2001 From: Laurentiu Palcu Date: Fri, 28 Mar 2014 12:10:44 +0200 Subject: rootfs.py: add new cleanup method This commit adds a new _cleanup() internal method that will be called at the end of rootfs creation, so that each backend can delete various files that were probably generated during rootfs postprocess execution, etc. [YOCTO #6049] Signed-off-by: Laurentiu Palcu Signed-off-by: Richard Purdie --- meta/lib/oe/rootfs.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'meta/lib/oe') diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py index 0e6c8bc2f0..3eac3c947d 100644 --- a/meta/lib/oe/rootfs.py +++ b/meta/lib/oe/rootfs.py @@ -50,6 +50,15 @@ class Rootfs(object): def _handle_intercept_failure(self, failed_script): pass + """ + The _cleanup() method should be used to clean-up stuff that we don't really + want to end up on target. For example, in the case of RPM, the DB locks. + The method is called, once, at the end of create() method. + """ + @abstractmethod + def _cleanup(self): + pass + def _exec_shell_cmd(self, cmd): fakerootcmd = self.d.getVar('FAKEROOT', True) if fakerootcmd is not None: @@ -117,6 +126,8 @@ class Rootfs(object): self._generate_kernel_module_deps() + self._cleanup() + def _uninstall_uneeded(self): if base_contains("IMAGE_FEATURES", "package-management", True, False, self.d): @@ -358,6 +369,13 @@ class RpmRootfs(Rootfs): for pkg in registered_pkgs.split(): self.pm.save_rpmpostinst(pkg) + def _cleanup(self): + # during the execution of postprocess commands, rpm is called several + # times to get the files installed, dependencies, etc. This creates the + # __db.00* (Berkeley DB files that hold locks, rpm specific environment + # settings, etc.), that should not get into the final rootfs + self.pm.unlock_rpm_db() + class DpkgRootfs(Rootfs): def __init__(self, d, manifest_dir): @@ -431,6 +449,9 @@ class DpkgRootfs(Rootfs): def _log_check(self): pass + def _cleanup(self): + pass + class OpkgRootfs(Rootfs): def __init__(self, d, manifest_dir): @@ -694,6 +715,10 @@ class OpkgRootfs(Rootfs): def _log_check(self): pass + def _cleanup(self): + pass + + def create_rootfs(d, manifest_dir=None): env_bkp = os.environ.copy() -- cgit v1.2.3