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]

(From OE-Core rev: 6151d69875f3f4f097b6e2fdef2a0f3ab391e2fd)

Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Laurentiu Palcu
2014-03-28 12:10:44 +02:00
committed by Richard Purdie
parent a5994c0837
commit a56d8e9ede

View File

@@ -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()