Fix bugs on upgrade script 75/147275/2
authorJunghyun Yeon <jungh.yeon@samsung.com>
Sun, 3 Sep 2017 23:39:01 +0000 (08:39 +0900)
committerSemun Lee <semun.lee@samsung.com>
Mon, 11 Sep 2017 23:10:54 +0000 (23:10 +0000)
- Signature file has removed by previous platform for security purpose
  so there are no way to determine privilege level while upgrading.
- So, now upgrade script will make file which stores root cert value
  each package and installer will retrieve it at runtime when there are
  no signature file to read.
- After migration, cert db will be migrated directly into pkg cert db.
- Remove chsmack in script.
- Now tpk related functions will handle rpm packages, too.

Change-Id: I2ec688c94876c903e82274a2eefd63290514578b
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
data/updates/upgrade_to_30000.sh.in

index f62ca77..fa0c31f 100644 (file)
@@ -89,37 +89,20 @@ function move_user_tpk_ro_files(){
        local package=$1
        cp -af $OPT_USR_APPS/$package $DEFAULT_PKG_APP_LOCATION/
        chown -R $DEFAULT_RO_OWNER_GROUP $DEFAULT_PKG_APP_LOCATION/$package
-       chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package
-       chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/bin
-       chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/lib
-       chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/res
-       chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package/shared
 
 }
 
 function move_user_tpk_rw_files(){
        local package=$1
-       mkdir -m 751 $DEFAULT_USER_APPS_RW/$package
-       chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_USER_APPS_RW/$package
-       mkdir $DEFAULT_USER_APPS_RW/$package/shared
-       chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package
-
-       mv $DEFAULT_PKG_APP_LOCATION/$package/cache $DEFAULT_USER_APPS_RW/$package/
-       mv $DEFAULT_PKG_APP_LOCATION/$package/data $DEFAULT_USER_APPS_RW/$package/
-       chmod g+s $DEFAULT_USER_APPS_RW/$package/data
-       chmod 771 $DEFAULT_USER_APPS_RW/$package/data
-       mv $DEFAULT_PKG_APP_LOCATION/$package/shared/data $DEFAULT_USER_APPS_RW/$package/shared/
-       mv $DEFAULT_PKG_APP_LOCATION/$package/shared/trusted $DEFAULT_USER_APPS_RW/$package/shared/
-
-       chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package/cache
-       chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/data
-       chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package/shared
-       chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/shared/data
-
-       chsmack -r -t -a $TRUSTED_LABEL $DEFAULT_USER_APPS_RW/$package/shared/trusted
-       chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::SharedRO $DEFAULT_USER_APPS_RW/$package/shared/data
-       chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/cache
-       chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/data
+
+       local target="$DEFAULT_USER_APPS_RW/$package"
+       local source="$OPT_USR_APPS/$package"
+
+       rm -rf $source/shared/cache
+       cp -Rf $source/cache/* $target/cache/
+       cp -Rf $source/data/* $target/data/
+       cp -Rf $source/shared/* $target/shared/
+       rm -rf $source
 }
 
 function copy_user_tpk_manifest(){
@@ -129,14 +112,13 @@ function copy_user_tpk_manifest(){
 
 function move_user_tpk_files(){
        echo "#move user TPK's files"
-       echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type='tpk' COLLATE NOCASE;" |
+       echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type COLLATE NOCASE IN ('tpk', 'rpm');" |
        sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE
 
        while read package
        do
                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
@@ -147,38 +129,19 @@ function move_user_wgt_ro_files(){
        local package=$1
        cp -af --no-preserve=ownership $OPT_USR_APPS/$package $DEFAULT_PKG_APP_LOCATION/
        chown -R $DEFAULT_RO_OWNER_GROUP $DEFAULT_PKG_APP_LOCATION/$package
-       chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package
-       chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/bin
-       chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/res
-       chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package/shared
-       chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_PKG_APP_LOCATION/$package/tmp
 }
 
 function move_user_wgt_rw_files(){
        local package=$1
-       mkdir -m 751 $DEFAULT_USER_APPS_RW/$package
-       chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_USER_APPS_RW/$package
-
-       mkdir -m 751 $DEFAULT_USER_APPS_RW/$package/shared
-       mkdir -m 751 $DEFAULT_USER_APPS_RW/$package/cache
-
-       chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package
-
-       mv $DEFAULT_PKG_APP_LOCATION/$package/data $DEFAULT_USER_APPS_RW/$package/
-       mv $DEFAULT_PKG_APP_LOCATION/$package/shared/data $DEFAULT_USER_APPS_RW/$package/shared/
-       mv $DEFAULT_PKG_APP_LOCATION/$package/shared/trusted $DEFAULT_USER_APPS_RW/$package/shared/
-       chmod 751 $DEFAULT_USER_APPS_RW/$package/shared/trusted
-       chmod g+s $DEFAULT_USER_APPS_RW/$package/data
-       chmod 771 $DEFAULT_USER_APPS_RW/$package/data
 
-       chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/data
-       chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package/shared
-       chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/shared/data
+       local target="$DEFAULT_USER_APPS_RW/$package"
+       local source="$OPT_USR_APPS/$package"
 
-       chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/cache
-       chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/data
-       chsmack -r -t -a $TRUSTED_LABEL $DEFAULT_USER_APPS_RW/$package/shared/trusted
-       chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::SharedRO $DEFAULT_USER_APPS_RW/$package/shared/data
+       rm -rf $source/shared/cache
+       cp -Rf $source/cache/* $target/cache/
+       cp -Rf $source/data/* $target/data/
+       cp -Rf $source/shared/* $target/shared/
+       rm -r $source
 }
 
 
@@ -191,24 +154,11 @@ function move_user_wgt_files(){
        do
                echo "processing user wgt $package..."
                move_user_wgt_ro_files $package
-               move_user_wgt_rw_files $package
        done < $DB_RESULT_FILE
        rm -f $DB_RESULT_FILE
 
 }
 
-function remove_previous_files(){
-       echo "#remove files from previous location"
-       echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE;" |
-       sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE
-
-       while read package
-       do
-               rm -rf $OPT_USR_APPS/$package
-       done < $DB_RESULT_FILE
-       rm -f $DB_RESULT_FILE
-}
-
 function initdb(){
        echo "#pkg_initdb"
        pkg_initdb --ro --partial-rw
@@ -246,21 +196,14 @@ function move_preload_pkg_userdata(){
        while read package
        do
                echo "processing preload pkg $package..."
-               cp -af $OPT_USR_APPS/$package $DEFAULT_USER_APPS_RW/
-               chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package
-               chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/data
-               chmod g+s $DEFAULT_USER_APPS_RW/$package/data
-               chmod 771 $DEFAULT_USER_APPS_RW/$package/data
-               rm -rf $OPT_USR_APPS/$package
-
-               chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_USER_APPS_RW/$package
-               chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/cache
-               chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/data
-               if [ -d $DEFAULT_USER_APPS_RW/$package/shared/trusted ];
-               then
-                       chsmack -r -t -a $TRUSTED_LABEL $DEFAULT_USER_APPS_RW/$package/shared/trusted
-               fi
-
+               local source="$OPT_USR_APPS/$package"
+               local target="$DEFAULT_USER_APPS_RW/$package"
+               rm -rf $source/shared/cache
+               cp -Rf $source/cache/* $target/cache/
+               cp -Rf $source/data/* $target/data/
+               cp -Rf $source/shared $target/shared/
+
+               rm -rf $source
        done < $DB_RESULT_FILE
        rm -f $DB_RESULT_FILE
 }
@@ -312,13 +255,13 @@ function disable_user_pkg(){
 
 function remove_backup_db(){
        rm $PARSER_BACKUP_DB_PATH
-       # TODO(jungh.yeon temp block)rm $CERT_BACKUP_DB_PATH
+       rm $CERT_BACKUP_DB_PATH
 }
 
 function init_user_tpk_preload_rw_packages() {
        echo "#init tpk preload rw packages"
        echo ".separator \" \"
-           SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_preload='true' COLLATE NOCASE AND package_type='tpk';" |
+           SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_preload='true' COLLATE NOCASE AND package_type COLLATE NOCASE IN ('tpk', 'rpm');" |
        sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE
 
        while read package
@@ -330,6 +273,7 @@ function init_user_tpk_preload_rw_packages() {
                tpk-backend -y $package --preload-rw
                rm -f $CERT_TEMP_FILEPATH/$package.txt
                migrate_cert_info $package
+               move_user_tpk_rw_files $package
        done < $DB_RESULT_FILE
        rm -f $DB_RESULT_FILE
 }
@@ -344,6 +288,7 @@ function init_user_wgt_preload_rw_packages() {
        do
                echo "init wgt preload rw package $package..."
                wgt-backend -y $package --preload-rw
+               move_user_wgt_rw_files $package
        done < $DB_RESULT_FILE
        rm -f $DB_RESULT_FILE
 }
@@ -438,7 +383,6 @@ function insert_cert_info() {
        fi
 
        query=$query" WHERE package='$package'"
-       echo "debugging query is [$query]"
        sqlite3 $CERT_DB_PATH "$query"
 }
 
@@ -487,6 +431,7 @@ function init_user_tpk_packages() {
                rm -f $CERT_TEMP_FILEPATH/$package.txt
 
                migrate_cert_info $package
+               move_user_tpk_rw_files $package
        done < $DB_RESULT_FILE
        rm -f $DB_RESULT_FILE
 }
@@ -501,6 +446,7 @@ function init_user_wgt_packages(){
        do
                echo "init user wgt package $package..."
                wgt-backend -y $package
+               move_user_wgt_rw_files $package
        done < $DB_RESULT_FILE
        rm -f $DB_RESULT_FILE
 }
@@ -522,7 +468,6 @@ remove_unregistered_pkg
 
 move_user_tpk_files
 move_user_wgt_files
-remove_previous_files
 
 initdb
 init_user_tpk_packages