summaryrefslogtreecommitdiffstats
path: root/meta/lib/oe/rootfs.py
diff options
context:
space:
mode:
authorHongxu Jia <hongxu.jia@windriver.com>2014-01-26 18:09:47 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-02-11 11:53:41 +0000
commita49d9f8fc55e74491a34cf7f64d8d43cfc420c77 (patch)
tree5980eba1b79e000667ced94cba5ab9fdc9bc7f2c /meta/lib/oe/rootfs.py
parent9efc87a056fcb433b307d6228c763dd13a709b35 (diff)
downloadpoky-a49d9f8fc55e74491a34cf7f64d8d43cfc420c77.tar.gz
rootfs.py: fix uninstall uneeded pkgs failed
The refactor of shell function rootfs_uninstall_unneeded is incorrect, it should check and update the installed_pkgs.txt file for the existance of the packages that were removed. ... rootfs_uninstall_unneeded () { if ${@base_contains("IMAGE_FEATURES", "package-management", "false", "true", d)}; then if [ -z "$(delayed_postinsts)" ]; then # All packages were successfully configured. # update-rc.d, base-passwd, run-postinsts are no further # use, remove them now remove_run_postinsts=false if [ -e ${IMAGE_ROOTFS}${sysconfdir}/init.d/run-postinsts ]; then remove_run_postinsts=true fi # Remove package only if it's installed pkgs_to_remove="update-rc.d base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}" for pkg in $pkgs_to_remove; do # regexp for pkg, to be used in grep and sed pkg_regexp="^`echo $pkg | sed 's/\./\\\./'` " if grep -q "$pkg_regexp" ${WORKDIR}/installed_pkgs.txt; then rootfs_uninstall_packages $pkg sed -i "/$pkg_regexp/d" ${WORKDIR}/installed_pkgs.txt fi done ... (From OE-Core rev: 9cdecb3935962653733705ad6313558bfd4fda29) Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oe/rootfs.py')
-rw-r--r--meta/lib/oe/rootfs.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py
index be9761c0d9..e884e47733 100644
--- a/meta/lib/oe/rootfs.py
+++ b/meta/lib/oe/rootfs.py
@@ -121,10 +121,23 @@ class Rootfs(object):
121 121
122 delayed_postinsts = self._get_delayed_postinsts() 122 delayed_postinsts = self._get_delayed_postinsts()
123 if delayed_postinsts is None: 123 if delayed_postinsts is None:
124 self.pm.remove(["update-rc.d", 124 installed_pkgs_dir = self.d.expand('${WORKDIR}/installed_pkgs.txt')
125 "base-passwd", 125 pkgs_to_remove = list()
126 self.d.getVar("ROOTFS_BOOTSTRAP_INSTALL", True)], 126 with open(installed_pkgs_dir, "r+") as installed_pkgs:
127 False) 127 pkgs_installed = installed_pkgs.read().split('\n')
128 for pkg_installed in pkgs_installed[:]:
129 pkg = pkg_installed.split()[0]
130 if pkg in ["update-rc.d",
131 "base-passwd",
132 self.d.getVar("ROOTFS_BOOTSTRAP_INSTALL", True)
133 ]:
134 pkgs_to_remove.append(pkg)
135 pkgs_installed.remove(pkg_installed)
136
137 if len(pkgs_to_remove) > 0:
138 self.pm.remove(pkgs_to_remove, False)
139 # Update installed_pkgs.txt
140 open(installed_pkgs_dir, "w+").write('\n'.join(pkgs_installed))
128 141
129 if os.path.exists(self.d.expand("${IMAGE_ROOTFS}${sysconfdir}/init.d/run-postinsts")): 142 if os.path.exists(self.d.expand("${IMAGE_ROOTFS}${sysconfdir}/init.d/run-postinsts")):
130 self._exec_shell_cmd(["update-rc.d", "-f", "-r", 143 self._exec_shell_cmd(["update-rc.d", "-f", "-r",