From f0fe88b89f2b89e2fa7038580578f216aab1e34d Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Fri, 27 Apr 2018 16:55:44 +0100 Subject: package_manager: expand the removal list for RPM If package management is disabled we remove the state and configuration for the package manager after the rootfs has been populated. This list wasn't complete and the DNF/RPM configuration files were left behind. As we've added files to the list (and not just directories), expand the backup/restore package management state code to handle this. (From OE-Core rev: c8a6422457b4d29e6afd1e193b8b921287472137) Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- meta/lib/oe/package_manager.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'meta') diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py index 2d8aeba037..1cba5ee968 100644 --- a/meta/lib/oe/package_manager.py +++ b/meta/lib/oe/package_manager.py @@ -668,7 +668,7 @@ class RpmPM(PackageManager): self.saved_packaging_data = self.d.expand('${T}/saved_packaging_data/%s' % self.task_name) if not os.path.exists(self.d.expand('${T}/saved_packaging_data')): bb.utils.mkdirhier(self.d.expand('${T}/saved_packaging_data')) - self.packaging_data_dirs = ['var/lib/rpm', 'var/lib/dnf', 'var/cache/dnf'] + self.packaging_data_dirs = ['etc/rpm', 'etc/rpmrc', 'etc/dnf', 'var/lib/rpm', 'var/lib/dnf', 'var/cache/dnf'] self.solution_manifest = self.d.expand('${T}/saved/%s_solution' % self.task_name) if not os.path.exists(self.d.expand('${T}/saved')): @@ -832,7 +832,10 @@ class RpmPM(PackageManager): for i in self.packaging_data_dirs: source_dir = oe.path.join(self.target_rootfs, i) target_dir = oe.path.join(self.saved_packaging_data, i) - shutil.copytree(source_dir, target_dir, symlinks=True) + if os.path.isdir(source_dir): + shutil.copytree(source_dir, target_dir, symlinks=True) + elif os.path.isfile(source_dir): + shutil.copy2(source_dir, target_dir) def recovery_packaging_data(self): # Move the rpmlib back @@ -842,9 +845,10 @@ class RpmPM(PackageManager): if os.path.exists(target_dir): bb.utils.remove(target_dir, True) source_dir = oe.path.join(self.saved_packaging_data, i) - shutil.copytree(source_dir, - target_dir, - symlinks=True) + if os.path.isdir(source_dir): + shutil.copytree(source_dir, target_dir, symlinks=True) + elif os.path.isfile(source_dir): + shutil.copy2(source_dir, target_dir) def list_installed(self): output = self._invoke_dnf(["repoquery", "--installed", "--queryformat", "Package: %{name} %{arch} %{version} %{name}-%{version}-%{release}.%{arch}.rpm\nDependencies:\n%{requires}\nRecommendations:\n%{recommends}\nDependenciesEndHere:\n"], -- cgit v1.2.3-54-g00ecf