[oe-commits] Chen Qi : image.bbclass: uninstall package only if it's already installed

git at git.openembedded.org git at git.openembedded.org
Tue Sep 24 10:50:26 UTC 2013


Module: openembedded-core.git
Branch: master-next
Commit: b86dc63bc87763119fce8286f37f44361da824d0
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=b86dc63bc87763119fce8286f37f44361da824d0

Author: Chen Qi <Qi.Chen at windriver.com>
Date:   Sun Sep 22 09:34:18 2013 +0000

image.bbclass: uninstall package only if it's already installed

Remove a package from rootfs only if it's already installed. Also,
if a package is uninstalled, remove it from installed_pkgs.txt.

[YOCTO #5169]

Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
Signed-off-by: Saul Wold <sgw at linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>

---

 meta/classes/image.bbclass |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 246a4db..7650594 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -513,7 +513,17 @@ rootfs_uninstall_unneeded () {
 			if [ -e ${IMAGE_ROOTFS}${sysconfdir}/init.d/run-postinsts ]; then
 				remove_run_postinsts=true
 			fi
-			rootfs_uninstall_packages update-rc.d base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}
+
+			# 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
 
 			# Need to remove rc.d files for run-postinsts by hand since opkg won't
 			# call postrm scripts in offline root mode.



More information about the Openembedded-commits mailing list