Fix upgrade script 10/133810/6
authorJunghyun Yeon <jungh.yeon@samsung.com>
Tue, 13 Jun 2017 10:47:19 +0000 (19:47 +0900)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Thu, 15 Jun 2017 05:47:10 +0000 (14:47 +0900)
- copy manifest of user tpk file to manifest location to be initialized
  by pkg_initdb
- get user wgt packages and invoke backend to be initialized
- Add initialization of restriction db

Change-Id: If92bfdd7346f5ce2e30e00c1d920b23a285ed993
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
data/700.pkgmgr.patch.sh.in

index cb154b9ac59e733cadfecc8a5c1f158998a4d091..e845d9c71ef6491ba70c2323446d642eebaf6096 100644 (file)
@@ -39,6 +39,8 @@ TIZEN_MANIFEST=tizen-manifest.xml
 OWNER_SYSTEM_SHARE=owner:system_share
 TRUSTED_LABEL=User::Author::1
 
+RESTRICTION_DBPATH=/var/lib/package-manager
+RESTRICTION_DBNAME=restriction.db
 #----------------------------------
 # upgrade script for pkgmgr
 #----------------------------------
@@ -48,6 +50,15 @@ function backup_db(){
        mv $PARSER_DB_PATH $PARSER_BACKUP_DB_PATH
 }
 
+function create_restriction_db(){
+       echo "#create restriction db"
+       local restriction_db=$RESTRICTION_DBPATH/$RESTRICTION_DBNAME
+       mkdir -p $RESTRICTION_DBPATH
+       echo "PRAGMA journal_mode=WAL;
+               CREATE TABLE restriction (uid INTEGER NOT NULL, pkgid TEXT NOT NULL, mode INTEGER NOT NULL, UNIQUE(uid, pkgid));" |
+       sqlite3 $restriction_db
+}
+
 function remove_modified_manifest(){
        echo "#remove modified manifest"
        rm -rf $DEFAULT_PKG_MANIFEST_LOCATION/*
@@ -55,10 +66,15 @@ function remove_modified_manifest(){
 
 function remove_unregistered_pkg(){
        #remove pkg folder which is not registered at pkg db
-       rm -rf $OPT_USR_APPS/media-server
-       rm -rf $OPT_USR_APPS/org.tizen.indicator_Shm
-       rm -rf $OPT_USR_APPS/org.tizen.sound-player
-       rm -rf $OPT_USR_APPS/tmp
+       ls $OPT_USR_APPS/ | while read FOLDER
+       do
+               result=$(sqlite3 $PARSER_BACKUP_DB_PATH "SELECT COUNT(*) FROM package_info WHERE package='$FOLDER';")
+               if [ $result != "1" ]
+               then
+                       echo "delete unregistered package directory $OPT_USR_APPS/$FOLDER"
+                       rm -r $OPT_USR_APPS/$FOLDER
+               fi
+       done
 }
 
 function move_user_tpk_ro_files(){
@@ -103,6 +119,11 @@ function move_user_tpk_rw_files(){
        rm -rf $DEFAULT_PKG_APP_LOCATION/$package/shared/cache
 }
 
+function copy_user_tpk_manifest(){
+       local package=$1
+       cp $DEFAULT_PKG_APP_LOCATION/$1/$TIZEN_MANIFEST $DEFAULT_PKG_MANIFEST_LOCATION/$package.xml
+}
+
 function move_user_tpk_files(){
        echo "#move user TPK's files"
        echo "SELECT package FROM package_info WHERE package_preload='false' COLLATE NOCASE AND package_type='tpk' COLLATE NOCASE;" |
@@ -113,6 +134,7 @@ function move_user_tpk_files(){
                echo "processing user tpk $package..."
                move_user_tpk_ro_files $package
                move_user_tpk_rw_files $package
+               copy_user_tpk_manifest $package
        done < $DB_RESULT_FILE
        rm -f $DB_RESULT_FILE
 }
@@ -254,7 +276,7 @@ function disable_preload_pkg(){
 
        while read package
        do
-               echo "disable preload tpk, rpm $package..."
+               echo "disable preload pkg $package..."
                tpk-backend -D $package --preload
        done < $DB_RESULT_FILE
        rm -f $DB_RESULT_FILE
@@ -283,8 +305,10 @@ function disable_user_pkg(){
 
        while read package type
        do
+               echo "disable user pkg $package..."
+               echo "$type-backend -D $package"
                $type-backend -D $package
-               done < $DB_RESULT_FILE
+       done < $DB_RESULT_FILE
        rm -f $DB_RESULT_FILE
 }
 
@@ -292,8 +316,31 @@ function remove_backup_db(){
        rm $PARSER_BACKUP_DB_PATH
 }
 
+function init_user_wgt_packages(){
+       echo "#init user wgt packages"
+       echo ".separator \" \"
+           SELECT package FROM package_info WHERE package_preload='false' COLLATE NOCASE AND package_type='wgt';" |
+       sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE
+
+       while read package
+       do
+               echo "init user wgt package $package..."
+               wgt-backend -y $package
+       done < $DB_RESULT_FILE
+       rm -f $DB_RESULT_FILE
+}
+
+function migrate_external_info(){
+       echo "#migrate external storage info"
+       echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup;
+               UPDATE package_info set installed_storage='installed_external' WHERE package IN (SELECT package FROM backup.package_info WHERE installed_storage='installed_external' COLLATE NOCASE);" |
+       sqlite3 $PARSER_DB_PATH
+}
+
 backup_db
 
+create_restriction_db
+
 remove_modified_manifest
 remove_unregistered_pkg
 
@@ -301,11 +348,13 @@ move_user_tpk_files
 move_user_wgt_files
 
 initdb
+init_user_wgt_packages
 
 remove_files_for_deleted_packages
 move_preload_pkg_userdata
 
 disable_preload_pkg
 disable_user_pkg
+migrate_external_info
 
 remove_backup_db