diff options
Diffstat (limited to 'meta/lib/oe/rootfs.py')
-rw-r--r-- | meta/lib/oe/rootfs.py | 55 |
1 files changed, 30 insertions, 25 deletions
diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py index c554f22fbe..19aef2a1de 100644 --- a/meta/lib/oe/rootfs.py +++ b/meta/lib/oe/rootfs.py | |||
@@ -137,34 +137,39 @@ class Rootfs(object): | |||
137 | self.d.getVar('IMAGE_ROOTFS', True), | 137 | self.d.getVar('IMAGE_ROOTFS', True), |
138 | "run-postinsts", "remove"]) | 138 | "run-postinsts", "remove"]) |
139 | 139 | ||
140 | # Remove unneeded package-management related components | 140 | runtime_pkgmanage = bb.utils.contains("IMAGE_FEATURES", "package-management", |
141 | if bb.utils.contains("IMAGE_FEATURES", "package-management", | 141 | True, False, self.d) |
142 | True, False, self.d): | 142 | if not runtime_pkgmanage: |
143 | return | 143 | # Remove components that we don't need if we're not going to install |
144 | # additional packages at runtime | ||
145 | if delayed_postinsts is None: | ||
146 | installed_pkgs_dir = self.d.expand('${WORKDIR}/installed_pkgs.txt') | ||
147 | pkgs_to_remove = list() | ||
148 | with open(installed_pkgs_dir, "r+") as installed_pkgs: | ||
149 | pkgs_installed = installed_pkgs.read().split('\n') | ||
150 | for pkg_installed in pkgs_installed[:]: | ||
151 | pkg = pkg_installed.split()[0] | ||
152 | if pkg in ["update-rc.d", | ||
153 | "base-passwd", | ||
154 | self.d.getVar("ROOTFS_BOOTSTRAP_INSTALL", True) | ||
155 | ]: | ||
156 | pkgs_to_remove.append(pkg) | ||
157 | pkgs_installed.remove(pkg_installed) | ||
158 | |||
159 | if len(pkgs_to_remove) > 0: | ||
160 | self.pm.remove(pkgs_to_remove, False) | ||
161 | # Update installed_pkgs.txt | ||
162 | open(installed_pkgs_dir, "w+").write('\n'.join(pkgs_installed)) | ||
144 | 163 | ||
145 | if delayed_postinsts is None: | 164 | else: |
146 | installed_pkgs_dir = self.d.expand('${WORKDIR}/installed_pkgs.txt') | 165 | self._save_postinsts() |
147 | pkgs_to_remove = list() | ||
148 | with open(installed_pkgs_dir, "r+") as installed_pkgs: | ||
149 | pkgs_installed = installed_pkgs.read().split('\n') | ||
150 | for pkg_installed in pkgs_installed[:]: | ||
151 | pkg = pkg_installed.split()[0] | ||
152 | if pkg in ["update-rc.d", | ||
153 | "base-passwd", | ||
154 | self.d.getVar("ROOTFS_BOOTSTRAP_INSTALL", True) | ||
155 | ]: | ||
156 | pkgs_to_remove.append(pkg) | ||
157 | pkgs_installed.remove(pkg_installed) | ||
158 | |||
159 | if len(pkgs_to_remove) > 0: | ||
160 | self.pm.remove(pkgs_to_remove, False) | ||
161 | # Update installed_pkgs.txt | ||
162 | open(installed_pkgs_dir, "w+").write('\n'.join(pkgs_installed)) | ||
163 | 166 | ||
164 | else: | 167 | post_uninstall_cmds = self.d.getVar("ROOTFS_POSTUNINSTALL_COMMAND", True) |
165 | self._save_postinsts() | 168 | execute_pre_post_process(self.d, post_uninstall_cmds) |
166 | 169 | ||
167 | self.pm.remove_packaging_data() | 170 | if not runtime_pkgmanage: |
171 | # Remove the package manager data files | ||
172 | self.pm.remove_packaging_data() | ||
168 | 173 | ||
169 | def _run_intercepts(self): | 174 | def _run_intercepts(self): |
170 | intercepts_dir = os.path.join(self.d.getVar('WORKDIR', True), | 175 | intercepts_dir = os.path.join(self.d.getVar('WORKDIR', True), |