Support to remove the preload-rw packages.
authorwanchao-xu <wanchao.xu@samsung.com>
Mon, 2 Sep 2024 09:03:06 +0000 (17:03 +0800)
committerwanchao-xu <wanchao.xu@samsung.com>
Tue, 3 Sep 2024 02:30:32 +0000 (10:30 +0800)
Change-Id: I332bcc322a7aa8e0741cdd91ca006a408944c819
Signed-off-by: wanchao-xu <wanchao.xu@samsung.com>
plugins/backend/zypppkgmgr.py

index 88742c634dbfe52ea9b13da64b316c966f3d7a4b..bbaee014e6ade487e9fbd002cc37694aa276b29c 100644 (file)
@@ -1136,11 +1136,15 @@ if [ -n "$pkgs" ]; then
     rpm -e --allmatches $pkgs
     if [ -f /usr/bin/pkgcmd ]; then
       for pkg in $pkgs; do
-        info=$(pkgcmd -l --global | grep $pkg)
-        pkgid=$(echo ${info#*pkgid} | awk -F ' ' '{print $1}' | sed 's/.*\\[\\(.*\\)\\].*/\\1/')
+        result=$(pkgcmd -l --global | grep -m 1 $pkg)
+        pkgid=$(echo ${result#*pkgid} | awk -F ' ' '{print $1}' | sed 's/.*\\[\\(.*\\)\\].*/\\1/')
         if [ -n "$pkgid" ]; then
-          pkgtype=$(echo ${info#*pkg_type} | awk -F ' ' '{print $1}' | sed 's/.*\\[\\(.*\\)\\].*/\\1/')
           echo "Uninstalling preload $pkgtype package $pkgid ..."
+          pkginfo=$(pkginfo --pkg $pkgid)
+          pkgtype=$(echo "$pkginfo" | grep "Type:" | awk -F ': ' '{print $2}')
+          preload=$(echo "$pkginfo" | grep "Preload:" | awk -F ': ' '{print $2}')
+          readonly=$(echo "$pkginfo" | grep "Readonly:" | awk -F ': ' '{print $2}')
+          options=""
           if [[ $pkgtype == 'tpk' ]]; then
             cmd='/usr/bin/tpk-backend'
           elif [[ $pkgtype == 'wgt' ]]; then
@@ -1148,8 +1152,15 @@ if [ -n "$pkgs" ]; then
           else
             cmd='/usr/bin/unified-backend'
           fi
+          if [[ $preload == "1" ]]; then
+            if [[ $readonly == "1" ]]; then
+              options="--preload"
+            else
+              options="--preload-rw"
+            fi
+          fi
           if [ -f $cmd ]; then
-            $cmd -d $pkg --preload --force-remove
+            $cmd -d $pkg $options --force-remove
           else
             echo "$cmd is not installed"
             exit 1