[OE-core] [PATCH V3] rootfs.py: allow removal of support packages

Stephano Cetola stephano.cetola at linux.intel.com
Mon Jul 11 17:55:29 UTC 2016


For images not containing a package manager, this allows the removal of support
packages based on the REMOVE_PKG_SUPPORT variable. Packages that will be
uninstalled include: update-rc.d, base-passwd, shadow, run-postinsts, and
update-alternatives.

Signed-off-by: Stephano Cetola <stephano.cetola at linux.intel.com>
---
 meta/lib/oe/rootfs.py | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py
index ed0bab1..6939dce 100644
--- a/meta/lib/oe/rootfs.py
+++ b/meta/lib/oe/rootfs.py
@@ -253,6 +253,24 @@ class Rootfs(object, metaclass=ABCMeta):
 
         image_rorfs = bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs",
                                         True, False, self.d)
+        runtime_pkgmanage = bb.utils.contains("IMAGE_FEATURES", "package-management",
+                                        True, False, self.d)
+
+        if (not runtime_pkgmanage and self.d.getVar('REMOVE_PKG_SUPPORT', True) == "1"
+                and delayed_postinsts is None):
+            # Remove components that we don't need if we're not going to install
+            # additional packages at runtime
+            pkgs_installed = image_list_installed_packages(self.d)
+            unneeded_pkgs = ["update-rc.d", "base-passwd", "shadow",
+                    "update-alternatives", "run-postinsts"]
+            unneeded_pkgs.extend(self.d.getVar("ROOTFS_BOOTSTRAP_INSTALL",
+                True).split(","))
+            pkgs_to_remove = [pkg for pkg in pkgs_installed if pkg in unneeded_pkgs]
+
+            if len(pkgs_to_remove) > 0:
+                bb.warn("removing packages")
+                self.pm.remove(pkgs_to_remove, False)
+
         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()
@@ -271,8 +289,6 @@ class Rootfs(object, metaclass=ABCMeta):
         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()
-- 
2.9.0




More information about the Openembedded-core mailing list