aboutsummaryrefslogtreecommitdiffstats
path: root/meta/lib/oe
diff options
context:
space:
mode:
authorPeter Kjellerstedt <peter.kjellerstedt@axis.com>2016-03-31 02:20:11 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-03-31 13:18:20 +0100
commite3b881d4168e5b02ff00f5c470ba472ab8bbc747 (patch)
tree3d03f7c72bc8af7e8735a126c6e4965181b7f30f /meta/lib/oe
parent4d949da965a99ab33798af49e5584c8bb9f0f626 (diff)
downloadopenembedded-core-e3b881d4168e5b02ff00f5c470ba472ab8bbc747.tar.gz
image.bbclass: Make unneeded packages for a read-only rootfs configurable
Previously the list of packages that are considered unneeded for a read-only rootfs was hardcoded. This made it impossible to, e.g., have shadow installed on a system with a read-only rootfs, but where /etc is mounted writable. This also lists ${VIRTUAL-RUNTIME_update-alternatives} rather than update-alternatives (as was previously the case) since this should actually remove the intended package. Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oe')
-rw-r--r--meta/lib/oe/rootfs.py23
1 files changed, 5 insertions, 18 deletions
diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py
index 0f835d311b..bfae1d8e89 100644
--- a/meta/lib/oe/rootfs.py
+++ b/meta/lib/oe/rootfs.py
@@ -238,28 +238,13 @@ class Rootfs(object):
self.d.getVar('IMAGE_ROOTFS', True),
"run-postinsts", "remove"])
- runtime_pkgmanage = bb.utils.contains("IMAGE_FEATURES", "package-management",
- True, False, self.d)
- sysvcompat_in_distro = bb.utils.contains("DISTRO_FEATURES", [ "systemd", "sysvinit" ],
- True, False, self.d)
image_rorfs = bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs",
- True, False, self.d)
- if sysvcompat_in_distro and not image_rorfs:
- pkg_to_remove = ""
- else:
- pkg_to_remove = "update-rc.d"
+ True, False, self.d)
if image_rorfs:
# Remove components that we don't need if it's a read-only rootfs
+ unneeded_pkgs = self.d.getVar("ROOTFS_RO_UNNEEDED", True).split()
pkgs_installed = image_list_installed_packages(self.d)
- pkgs_to_remove = list()
- for pkg in pkgs_installed:
- if pkg in ["update-rc.d",
- "base-passwd",
- "shadow",
- "update-alternatives", pkg_to_remove,
- self.d.getVar("ROOTFS_BOOTSTRAP_INSTALL", True)
- ]:
- pkgs_to_remove.append(pkg)
+ pkgs_to_remove = [pkg for pkg in pkgs_installed if pkg in unneeded_pkgs]
if len(pkgs_to_remove) > 0:
self.pm.remove(pkgs_to_remove, False)
@@ -273,6 +258,8 @@ class Rootfs(object):
post_uninstall_cmds = self.d.getVar("ROOTFS_POSTUNINSTALL_COMMAND", True)
execute_pre_post_process(self.d, post_uninstall_cmds)
+ runtime_pkgmanage = bb.utils.contains("IMAGE_FEATURES", "package-management",
+ True, False, self.d)
if not runtime_pkgmanage:
# Remove the package manager data files
self.pm.remove_packaging_data()